Jump to content

CWatson

Members
  • Posts

    308
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by CWatson

  1. For this particular scenario, you could have a Timer (see Definitions tab, Elements button on panel). The timer would define the time(s) that an event is triggered - for example if the simulation starts at 12 am, then you could have the first timer event at 5 hours (5 am) and then every 12 hours after that (5 pm, 5am, 5pm, etc.). The 'event' that the entity would wait for would then be TimerName.Event. You could use a Decide step before putting the entity into the Wait step, then the event would be automatically fired at a given time by the Timer element. (instead of by a Fire step).
  2. You could create multiple entity types through a single Source by using data tables and product mix- see the SimBit titled EntityFollowsSequenceWithTable.spfx. This would create entities based on the product mix specified in the JobTable data table. To create multiple of a specific type (man/woman) entering at a single time in a source, you could just simply create one type (man) and then use add-on process logic and a Create step to create the other type (woman) and have them continue processing.
  3. Work Schedules can also be applied to other Fixed objects, such as Server, Combiner, Separator, as well as stationary resources. I suppose the question would be - how do you generate your entities (arrival table, time varying arrivals, interarrival rates, etc.) and what would you like to happen to entities when the 'model' is off shift -- do you stop creating entities/orders - what happens to in progress materials (do they clear out like a bank at end of day or stay in system like a mfg plant.
  4. Currently we don't have the options to fast forward or reset through processes. You could try to add your own step (see user defined steps in help) using our API. I'll add this to our list of user suggestions as well. Thanks for the feedback!
  5. In the example that I showed above, I didn't have the vehicle picking up the entity from the Source for movement to the Servers, thus, I didn't include the Output@Source1 in the sequence tables for the vehicle. That is why your entities don't get picked up at the source. To fix this, include the entire route that the vehicle will move when taking product/picking up from Server1 within a data table. Include the entire route that the vehicle should move when taking product/picking up from Server2 within a different data table. To change between the tables, you need to decide WHEN to make the change. In the example above, it was when the vehicle was requested to take an entity from server to sink, thus at the Output node of the server - Entered add on process. You may then decide to do this also at the output node of the source - and will need to check the destination location of the entity (server1, server2) to determine how to change the vehicle path table.
  6. The vehicle Routing Type would be 'Fixed Route' and the Route Sequence to 'SequenceTable1'. Set the initial value for the VehiclePath state variable to '1'. Also, within BOTH of the transfer nodes exiting the servers, within the Entered add-on process, add a similar process to the above (Decide/SetRow/Assign) to look at the output queue size, the current setting for the VehiclePath, to SetRow to the appropriate sequence table, and then Assign the VehiclePath to the current sequence table used. Let me know if you have any additional problems.
  7. First of all, given you have a model (similar to what you have) as shown below - you would have 2 sequence tables for the vehicle. Also, add a state variable to the model (initialized at value 1) that will be assigned and indicate which sequence the vehicle is following (i.e., named VehiclePath in this case). Within the output node of the entity requesting the vehicle, you can use the SetRow step to assign the alternate sequence under certain conditions (in this example, only if the queue is larger and the sequence hasn't already been set) - the key here is that the SetRow be set for Object Type of 'SpecificObjectorElement' (under Advanced Options) where the Object or Element is 'Vehicle1'. Once set, change the VehiclePath to the appropriate sequence (1 or 2).
  8. Try using a Function within the Definitions window to define the Filter Expression - it seems to take 'Candidate' (table expressions don't) - this function should be able to be referenced within the Filter Expression and the SearchStep.
  9. One option would be to have an arrival table, instead of fitting the data to a distribution - the arrival table would include the time that the arrival occurs (based on your table above) and then you would reference the arrival table from the Source using Arrival Mode == 'Arrival Table'. With an arrival table, you could also include an Arrival Time Deviation (Source - under Other Arrival Stream Options) property as a distribution, which would add some randomness to the arrival time. Another option is to use the Arrival Mode == 'Time Varying Arrival Rate' where you would specify a Rate Table (Data tab) that would include varying rates for different times of day. The interval size and number of intervals can be easily changed. The Rate (events per time period) would include the mean of an exponential distribution and would allow the rates to change hourly or every x hours. You may wish to review a few of the Sample SimBit Solutions (Support ribbon) under the Arrival Logic category of SimBits for more options.
  10. We have a SimBit named 'AddAndRemoveServerCapacity' that includes 6 servers and decision logic to turn on/off the server capacity based on the number of entities in the various lines for the 'open' servers. Monitor Elements within the Definitions window are used to evaluate the lines and a common process is used to turn on capacity.
  11. You could use a Search step with matching condition criteria specified perhaps? Not sure exactly what you are doing within model, but the Search step can search entities in queues for various criteria as well.
  12. A custom vehicle that has been enhanced to allow a worker specification for 'driving' or moving along with the vehicle - and it includes two models that use the custom vehicle - one in manufacturing application and one in healthcare application.
  13. In addition, we've added the capability to have various Simio objects 'automatically' created in their physical x/y/z locations from data tables. For an example of this, see the SchedulingDiscretePartProduction.spfx example (Support ribbon / Examples) and review the Resources data table. A column of type 'Object Type' of Object Reference specifies the type of object to create. An 'Object Type' column, Resource Name, then uses that 'ObjectType' column as its property ObjectType with the Default Value Instantiation set to 'AutoCreateInstance'. The XLocation / ZLocation columns are then used within the Initial Object Offset properties. Moving the node (or whatever object) within the Facility window then changes the XLocation/ZLocation values. This table automatically generated the Facility window contents.
  14. It looks like the Assembly server has the wrong capacity (currently based on Adjustments capacity property instead of Assembly capacity property).
  15. There is a SimBit (see Support ribbon, Sample SimBit Solutions) named 'RemoveFromAllocationQueue' that uses a execute step/additional process to determine if the entity has waited for 5 minutes and if so, will remove it from the queue and have it exit. You could use a similar concept, except change the delay time to 2 minutes and instead of removing it from the queue, reassigning the priority (or first determining if it is a premium customer and then resetting the priority of the entity in the queue. You have the option of removing/inserting back into the queue if you need to have it do any other tasks as well.
  16. You can use two Create steps within a process to create two different types of entities and simply destroy the original entity when you no longer need it. Assign step can be used to assign information to the new entities that you may wish to transfer from the original entity.
  17. We have a number of SimBits that include processing data within tables - perhaps search Sample SimBit Solutions (Support Ribbon) and look under the Data Tables section for multiple examples and see what may be similar to what you are trying to do.
  18. Simio doesn't have "Link" type lists, however, we do have functions for nodes which would allow you access to the various links that are incoming or outgoing from that node. Depending upon your objectives for having these links, you could create output table information related to the node/link lists. So, for example, let's say you have a Source that contains 3 outgoing links. You could, within a process at the start of the simulation, use the Search step to search NodeOutputBoundLinks for the Output@Source* node and add that information to an output table (the node name as one column, the links as another column) by using the AddRow step to add a row to the output table, and Assign step to assign OutputTableName.LinkColumnName equal to the Link found in the Search step, for example. Again, not sure what information you are trying to gather related to the links, but this is one possible way to get a listing of links either inbound or outbound from a node.
  19. We have a SimBit titled 'SelectServerWithShortestLine' in which there are 3 servers to select between and the output node for the Source provides the logic for the selection. The Server input nodes are put into a NodeList named 'Servers'. This list is then used to select between the members based on a Selection Goal 'SmallestValue' based on the expression 'Candidate.Node.AssociatedStationLoad'. The associated station 'load' is defined as the sum of current entities en route to the node intending to enter the stations, plus the current entities already arrived to the node but still waiting to enter the stations, plus the current entities occupying the stations. This can be used whether or not the capacity of the input buffers is specified for the Servers.
  20. Yes, in Simio sprint 159, which was published at the end of July, we enhanced the RemoveRows step so that you can remove an active row in an output table, based on the object type specified, such as associated object, token, etc.
  21. First, in a table, list the part types, in order, that you would like, i.e., PartA, PartB, PartC, then PartD in a column. In the Definitions window, add a new integer state (named 'Index' for example) with default value of 1. This can be used to loop through the table rows (and reset to 1 once you create the last one). Then, within the Source, use the TableName.ColumnName' as the Entity Type. Within the Table Row Referencing / Before Creating Entities, set the Table Name and then use the 'Index' integer state as the Row Number. In the state assignments before exiting, simply increase the integer state value - you can use simply a Math.If(Index == 4, 1, Index+1) - or you can use the max rows in the table if you aren't sure how many items in table.
  22. What you can do is within the Worker object's 'Evaluating Seize Request' add-on process, create a process. This process will then be called each time the worker is deciding whether to take on the entity seize request being made (if not, it will try again next time worker becomes available). Add the following steps to the process: Add a Decide step with Expression 'Entity.Location.Parent == Server2 && (Server1.InputBuffer.Contents > 0) ' - the Entity.Location.Parent will determine if the requesting entity is at Server2 and if so, if the Server1.InputBuffer has anyone in it - and if so, that means there are higher priority items to be worked on at the Server1. From the True exit of the Decide , add an Assign step to assign the State variable 'Token.ReturnValue' to be the value of 'False' or '0'. This means that the entity request for the worker will be false (for this particular evaluation) - when the queue at Server1 resides, and the evaluation is again done, the token will exit the False exit of the Decide and the entity at Server2 will be able to seize the worker.
  23. Yes, you can have a data table that has multiple columns. One column may contain the various values for the entity state, where another may be the new state value (or a formula for calculating the new state value). The Search step can be used to search the table, based on the current entity state matching the state value of the table column. You may wish to review SearchTableUponEnteringObject and SearchTables simbits for more information on the Search step working with table information.
  24. What you can do is as follows: 1) add a node list (including all your destination options) for each of your entity types 2) add a table that includes an Entity object reference column (make sure to change the Auto-set Table Row Reference property to 'True') as well as a Node List object reference column. add the entity name and associated node list you want to reference into the same row for each 3) within the definitions window, add a Routing Group element - here, specify the 'TableName.NodeListProperty' as the Destination Node List Property. 4) within the output node where you make the decision - specify the Entity Destination Type as 'Use Custom Routing Group' and then specify your Routing Group Name (from 3 above).
  25. If you set up the tasks within the Task Sequence to be of Process Type 'Process Name' where the processing logic/delay is specified within a specific process, you could then use the Interrupt step to interrupt the process (given that the Delay step within the process has the Interruptible property set to 'True'.
×
×
  • Create New...