Jump to content

CWatson

Members
  • Posts

    308
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by CWatson

  1. There is an Interrupt step that will allow you to stop processing for higher priority (or whatever reason) entities. See several SimBits that are available including Interruptible Operator, Interrupting Across Multiple Servers and Interrupting Server with Multiple Capacity. These show various examples of having higher priority type jobs interrupt processing of other jobs currently being processed on a Server or with an Operator. SimBits can be found within the Support ribbon by pressing the Sample SimBit Solutions button. You can then search Interrupt either in the Basic or Advanced Search area.
  2. One way to do this would be to start with a vehicle with the Initial Number In System property set to '0' or '1'. Then, in the OnRunInitialized process at start of simulation, use a Delay step then Create step to Create a new vehicle into the system (causing the number in system to be increased). Make sure to use a Transfer step to transfer the new Vehicle to the appropriate node upon creation. Keep in mind also that Vehicles can be created, but not destroyed. This will allow you then to stagger your vehicle start.
  3. If you'd like to attach a copy of your model, we can take a look or you could send it to support@simio.com.
  4. In the Search step, if you are trying to search the entities within the member input buffer, you should have the Collection Type set to 'QueueState' and then the Queue State Name set to 'CombinerName.MemberInputBuffer.Contents'. I don't think that queue is automatically in the pull down list, but you can type the name in directly. This will then search only the entities in that queue and provide a token exit out of the found representing each (given you set the Limit property to Infinity to search for all entities in the queue and not just the first one).
  5. If the processing time specified at the server (with capacity > 1) is based on the entity type (A/C), the processing time value itself is determined when the entity has capacity at the server and enters the processing area and starts the processing delay. So, for example, let's say both entity A and entity C entered at the same time (into a multiple capacity server). Given that there is capacity, entity A would delay for processing time for A, where entity C would delay for processing time for C - given the Processing Time property of the Server somehow evaluates the entity type - either through a table entry row based on the entity type or entity attribute, etc.
  6. If the EntityA is an instance of ModelEntity, for example, the model contains entities of type EntityA, EntityB, and EntityC, then you could have a Decide step as the first step in the process that says Conditional "Is.EntityA" and only that type of entity will go out the True exit and perform the steps following, while others will exit the False and if you do nothing, the process will not continue for those other entity tokens. If EntityA is an actual specific entity, such as EntityA.139, for example, and you somehow know earlier than Server processing which entity it is, you could use a State (Definitions window) of type Object Reference / Entity to store the exact entity and use that within the Decide step into the process.
  7. You may wish to look at the SimBit that we have named InterruptingServerWithMultipleCapacity. In that example, the server delay time (processing time) is interrupted for other entities with higher priority for processing. You could instead have a duplicate entity for each one processing that delays for the 'maximum allowable' time and then interrupts the actual entity processing to go to alternative sink. Alternatively, you could have a single 'logic type' entity that on occasion checks the status of those processing entities for anyone processing past the 'maximum allowable' time and have it interrupted.
  8. You can do that with the Task Sequences within our Server object. You can also find more examples of using Task Sequences using the SimBits search. First, place a Server and change the Process Type to ‘Task Sequence’ and enter the Processing Tasks repeating property editor. Y our processing steps would be similar to those you specified: Task 1 – specify the Processing Time and under Resource Requirements, indicate that you need WorkerA Task 2- specify the Processing Time and under Resource Requirements, indicate that you need WorkerB Task 3 – specify the Processing Time …. and so on These tasks will all be performed before the entity leaves the Server.
  9. First of all, you will need a Sequence Table (Definitions tab / Tables window) - select Add Sequence Table. In the Sequence column, you would list the order of servers/locations the entities will travel - for example, Input@Server1, Input@Server2, Input@Server1, Input@Sink would cause the entity to visit Server1 twice. Next, in the same table, add an Expression type of column where you will store the processing time information at each corresponding step. This way, the processing time at Input@Server1 may be different with each step (and visit to the same server). Within the ModelEntity, set the Initial Sequence property to the sequence table name. Within each transfer node (exit of the Source and Servers), change the Entity Destination Type to 'By Sequence'. Processing Time at each Server should then reference the 'SequenceTable.ProcessingTimeColumn'. See several of the SimBits that contain sequences, including EntityFollowsSeqeunceWithTable.spfx.
  10. If you have an Entity object name for each exam type, for example, you could first have a table that contains a entity object reference type column that is 'Set Column as Key' with another column in same table (expression likely) to store the processing distribution associated with each entity type. Then, in another table, add a date/time column to use as your arrival table, with a second column that is a 'Foreign Key' column that references table 1 entity key column. Then you can have each separate arrival reference one of the entity types specified.
  11. You could have the top order numbers listed in a Data Table, with a column for the types/number of entities within the order in other columns (using relational tables). The Create step can be used to create the 'sub-entities' or individual order pieces that have to go through Servers - use the table or set a state variable on the entity to store the top order number for the entity and combine based on that top order number.
  12. Please attach a copy of your model to this post, or send the model to support@simio.com. Thanks
  13. From the Source creation point, you could have two paths - the first path connects to a TransferNode, where the second path connects to a 'StopOver' Server, for example. The Selection Weight property for the path to the StopOver server would be 0.05 (5% of entity flow), whereas the Selection Weight property for the path to the TransferNode would be 0.95 (95% of entity flow). From the StopOver server, you could connect a path to that same TransferNode. From the TransferNode, set the Destination Type to 'Specific' and the Node Name to the destination node state of the entity.
  14. It depends on what type of data you are referring to - for example, some statistics, such as time in system for the various entity types, can be found automatically within the pivot grid, under the Object Type of ModelEntity and the various Object Names (Type1, Type2, Type3, Type4). These statistics would include the Number in System, Time in System (Flowtime), Throughput (NumberCreated and NumberDestroyed) - all by type of entity. Additionally, statistics are generated on the Paths (number and flowtimes on links), as well as at Servers and other fixed objects (number processing, number/time in inputbuffers). For more specific entity statistics at various areas within the system, you could use the Write step (under User Defined steps) to write out specific entity data to a file by using this step in the Processes window at any point(s) in the process.
  15. RandomValue is the function you likely want to use, such that you use the expression "Table1.ExpressionProperty1.RandomValue" to select a value from one of the rows (not RandomRow).
  16. One easy way to do this would be to create a second 'Real' type column within the first table, Table1, named Proc (like the Table2 column) which includes the minutes for processing corresponding to each arrival time. Then, within the Server Processing Time property, use Table1.Proc (newly created column). When the entity is first created using the Table1.Arrival column for the arrival time, that entity has then an associated row in that table. Therefore, when you reference Table1.Proc, it will use that entity's corresponding row. Alternatively, to use the two separate tables, you would need to first set the entity row reference for Table2 (perhaps using a SetRow step within a process based on the entity as it enters, such as SetRow - Table Name = Table2, Row Number = Source1.EntityArrivals.EventCount, which is the 'count' of entities as they are created).
  17. To have multiple sequences all listed in a single column in a table (i.e., input@Server1, input@Server2, input@Sink, input@Server3, input@Server4, input@Sink could be actually 2 different sequences in one table column) - the entity starts at the source and after creation (created entity add on process), you could have a process that has a Decide step with a given probability (.5, as example). Then a SetRow step that will set the entity's row in the sequence to that ONE before you wish to start (at start of simulation, entity row is 0 so when it hits a 'By Sequence' it will start at 1, then 2, etc.) - so if you have the above 6 rows (input@Server1, etc.) and you want some to start going to input@Server3, input@Server4, input@Sink, you would set the row for that entity to 3, therefore, when it hits a 'By Sequence' routing at the source, it will start row 4, which will send it to input@Server3. Alternatively, as mentioned in an earlier post, we have quite a few SimBits that show how to use Sequences. Namely the EntityFollowsSequenceWithTable has multiple sequences from a single source in several tables that can be set up easily.
  18. You can use the Worker's Idle Action property to send the worker, for example, to the home location (where it starts) - then, once the worker gets there, within the home node Entered add-on process, you can check to make sure there are no other entities waiting for the worker (in the time it took the worker to move to the home location). This can be done with a Decide step that checks "Worker1[1].VisitRequestQueue == 0". Then, if the worker allocation queue is zero (meaning no entities waiting), you can Create an entity (of either type or another third type) that will Seize the worker and request it to move to the TransferNode1, Delay for some amount of time and then Release the worker.
  19. In the latest version of Simio sprint 123, you can keep workers 'reserved' upon dropping off at a workstation/server and also upon completing processing within the secondary resources section. The 'Keep Reserved If' option within the TransferNode object when an entity is being transferred from one area to another (i.e., the waiting area to the workstation) can be specified as 'True' (or 1). The worker will then be reserved to complete processing at the workstation. If you need the worker to stay at the workstation and move the entity to the sink, the add-on processes with Seize/Release steps can be used for the worker allocation (and 'Keep Reserved If' option). Within the Server object, this feature is automatically built into the secondary resources. This will allow workers to 'move' an entity from one waiting location to a server area, process that entity, then move back to the waiting area for the next.
  20. If you can send a copy of your model to support@simio.com, we'd be happy to look at it and offer suggestions. Having a copy of the model will assure that we understand how you are currently modeling your system so that we may determine the appropriate steps.
  21. The Source's 'Time Varying Arrival Rate' Arrival Mode uses the Rate Table to specify the average number of arrivals per hour (or time period). As noted in the Rate Tables and Source - Discussion and Examples help, the rate tables use a non-stationary Exponential distribution to calculate the rate based on the rate specified in the table - therefore, some hours you may get 20 entities, while other hours you may get 21 and others 18, etc.
  22. The syntax of this Search looks right based on what you said you'd like to do. If you are still having problems with the model, feel free to attach it to the forum post or send it to support@simio.com. Thanks
  23. If the vehicle arrives at a destination (which was the entity destination), you can change the destination of the entity by first using a Search step to search the Collection Type of 'QueueState' and the Queue State Name of 'Vehicle.RideStation.Contents' (in the 'Entering' add on process of the node it is in, for example) - leave Search Type as 'Forward' and no Match Condition - it will find the entity (if there is just 1) that is riding on the vehicle. Then, from the Found exit, you can use the SetNode step to set the entity destination to the new location you want it to go to - also, use the SetNode to change the vehicle destination to that same location as well so it doesn't continue on its way to the original destination, but will also drop off the entity at the correct location. See small example attached. ChangeEntityDestination.spfx
  24. If you have an Index Variable Name named 'Testing' for example, you can initially set the 'Testing' value to 1 let's say to start the Find step. Within the Find step, you can have the Starting Index be 'Testing' (which would initially be 1) and Ending Index be the max value of the state variable dimension you are searching. Then, when a matching value (based on your condition) is Found and you do whatever calculations using 'Testing' value (which would be the index into the array), you can Assign 'Testing' to be 'Testing+1' so that you start the search at that point in the vector/array, given you don't increase the value over the Ending Index. Then connect the Assign step back into the Find step to start the Find again, this time starting at the new starting index.
  25. The main issue is that the entities are making the decision about which sink to go to well in advance of getting the single vehicle in the system. Therefore, the sink may fail anytime between that decision and the vehicle arriving and the entity will still have the same DestinationNode specified. I will send additional information through technical support incident.
×
×
  • Create New...