Jump to content
Simio Forum

Welcome to the Simio Forum

Welcome to the Simio Forum! Experience the full experience of the forum by becoming a Simio Insider! You must be an Insider to post on any forum!


  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • Simio Public Forums
    • Welcome and How To Become a Simio Insider
    • Discussions
    • Simio News and Announcements
    • Simio Product Details
    • Simio-Related Positions Desired or Positions Available
  • Forums for Simio Insiders Only (See Public Forums Welcome topic to sign up)
    • SI Help Getting Started
    • SI General Discussions
    • SI Downloads
    • SI Shared Items
    • SI New Feature and Enhancements Submission and Voting
    • SI Ideas & Suggestions
    • SI Bugs and Issues
    • SI Performance Tips
    • SI Challenge Applications
    • SI Non-US Cultures
    • SI User Interface
    • SI Material Handling
    • SI Student Competition
    • SI Educational
    • SI Objects
    • SI Animation and Visualization
    • SI Reporting and Analysis
    • SI Agent Based Modeling
    • SI Scheduling
    • SI Emulation
    • SI Optimization
    • SI API


  • Simio Calendar


  • Files
    • Academic Information
    • Product Information
    • Case Studies

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start



About Me












Found 518 results

  1. In response to your first question you can use PathA.Contents.NumberWaiting to get the total number of trucks currently on the path. Note that this will provide all trucks on the path (including ones that are still in motion).
  2. A way of achieving what you describe here is to create Column 3 as String State Column. Then you can utilise the OnRunInitialised Process to concatenate the contents of Col 1 & Col 2 using an assign step as follows: Table1[1].StringState1 = Table1[1].StringProperty1 + "-" + Table1[1].StringProperty2
  3. My model currently reads tasks from a table and I am trying to model material consumption. For each task there are groups of materials: A, B, C, and priority values: 1, 2, 3. To complete a task, only one material type from each group A, B, and C must be consumed, and the order they are consumed in should be based of the priority. For example, if task one had entries like the table below, if all materials were available, materials 1,4,6 would be consumed. If material 1 was no longer available materials 2,4,6 would be used, and if material 6 was not available the task could not be done. The material requirement section in the processing task editor does not seem to support groupings and priority and was wondering if anyone had an idea on how to accomplish this. Task MaterialName Group Priority Quantity Task1 Material1 A 1 1 Task1 Material2 A 2 2 Task1 Material3 A 3 1 Task1 Material4 B 1 1 Task1 Material5 B 2 3 Task1 Material6 C 1 1
  4. Hello! In your Destroy step, when you reference EntBB[1], you are referencing the entity that has been assigned the first index in the entity population. The indexes of the entity population are based on the current number in the system and are constantly changing due to entities being created and destroyed. I would avoid referencing the entities by their population index. The nBBRouter_Entered Process will first be triggered by the Worker who is dropping off the entity. If the entity is dropped off, the entity will then enter the Transfer Node and trigger the same process. Depending when you want the entity to be destroyed, you have a few options. One option is to add a Decide step to check if the Token executing this process belongs to the Work or the entity. If it is the entity, you can destroy it as it will destroy the object associated with the Token executing the process. If it is the Worker, you might do nothing so that the Worker can enact its default logic and drop off the entity at the node. You might consider adding the SetNode step to be triggered at another point in time after the entity has been dropped off. Another option is to not allow the Worker to unload the entity and instead destroy the entity from the Worker's Ride Station. In the nBBRouter_Entered Process, you might add a Search step to look through the Worker's Ride Station contents. If the Search step finds an entity there, it will then make a corresponding Token that will exit on the Found branch. On the Original branch, the Token belonging to the Worker will resume. Happy modeling! Liz
  5. We are currently working on entity routing through a medical facility. There are individual servers that represent areas within the facility where patient type, current location, probability, and destination (Input node of next server) are all in one table as one column each. After processing we want to subset the table to only have the specific ModelEntity type, correct current location, and then use TableName.ProbabilityColumn.RandomRow on the subset table to find the destination location. We have not found a functional way to subset the table.
  6. Hello, guys, I do not know how to determine if a detached queue contains a certain kind of entity. I create an element station1 and a detached queue which sets the queue state as Station1.Contents. In Decide step, the station1.contents only returns the number of objects in the station, and I cannot use contains(obj) after station.contents, even though contains(obj) is a function for QueueState and Station.Contents should return the queue of entities currently located in the station, according to the help documentation. Is there any method to access the candidates or objects in the self-defined station? Thank you! Shu
  7. Note: WkA and WkB essentially do the same thing, so I'm essentially just explaining WkA on the seizing worker to make things simpler. What needs to happen: I need Wk1 to wait until WkA is at the output node before processing the entity. Then resume movement (to go to input of BPICK) only after the event of Output@APICKRiderWaiting (basically the processing finished; I found it only works when I use the wait for rider waiting). The same thing needs to happen with BPICK. Then Wk1 needs to head back to nRouter. Current State & Problems: Right now it does not wait to process the entity until WkA/B gets there. I have tried adding that as a row in the events more logic, but it doesn't work. I have also tried putting a Wait step with that as it's event before the other Wait. However, Wk1 still gets to APICK/BPICK and immediately the entity is processed. Wk1 does however work on not moving on until the entity is processed. One problem with that though is that Wk1 does not go back to nRouter after finishing at BPICK. I have tried several things like setting node, but perhaps I didn't have that step in the right place. Both entities have a destination by the way. This next photo is showing the seizing of the worker. The decide and execute steps refer to interrupting processes but all those still include the seizing step you see here. I have also attached my model in case you need to run or see it. It may be hard to follow all the logic on other add-on processes other than the ones I showed you. I have other problems in other areas, but this problem I'm posting about is not that affected by the other problems of the model I think. Though honestly, if you find that you may have a solution or fixes in basic logic to those (because its glaring) then by all means, share them. ((And yes, I have looked at InterruptibleOperator simbit as well as other Interrupting example simbits but am still confused on the whole thing.)) ModelForQuestionCOPY5v.3.spfx Thank you!
  8. Hello Insiders, I'm new to Simio and having trouble modelling the simulation for my Master Thesis. I would like to model an assembly line with two servers. Both have 3 fixed tasks and one shared task - which can be executed by server1 as his last task or by server2 as his first task. If the task is executed by server1 or server2 should be decided for every entity according to a rule (e.g.: if there are more than 2 entities waiting in the queue at Server2, the task should be executed by server1, otherwise by server 2.) Now I used the Processing Task Editor, where I modeled Task 4 at server1 with a conditional branch type, but I'm struggling to formulate the condition. Similarly, at server2 I would like to model that the first task of this server should only be executed, when the Task4 isn't executed at server1. I would really appreciate every help!
  9. I'm having trouble at the interruption step. Yes, I have looked at InterruptibleOperator, InterruptingServerWithMultipleCapacity, InterruptingAcrossMultipleServers. Despite all of that, I still cant figure it out. What I want to happen: Worker1 carries both entites and drops at respective servers (A/B PICK) and doesn't leave until processed. WorkerA/B stops whatever its doing (though it does not stop if transporting) and is siezed when Worker1 brings the entity to A/B PICK. Worker1 moves on and WorkerA/B does what it needs to. Here's the deal in WorkerA/B areas: The worker stays with an entity at serverA/B. Th worker can be interrupted at that process and go to A/BPICK to process the newer entity. The worker can't work on that newer entity right now because there is already an entity in serverA/B. So the newer entity waits at A/BPICK. At the gluing servers, the workers only have to get the entity into the processing state, but after that can go grab an entity waiting at A/BPICK and start it at serverA/B. Once the gluing process is done, it should be a priority to stop working at serverA/B and go take the entity at end of the gluing server to the sink. Then goes back to working at serverA/B. And the cycle continues. Here's a youtube video of what happens: Here's my add-on processes. I'm only concerned with A path because I can figure out B from A. ^ The idea was to turn the EntA at one of processes that are interrupted to yellow to symbolize the interruption of that entity^ ModelForQuestionCOPY4FORUM.spfx
  10. Hi LizMB, I have a few specific recommendations for you below, but generally I suggest looking into the SimBit models provided on Simio's Support Ribbon. A PDF opens with each model that contains a detailed description, so they are a great tool for learning specific approaches and techniques. A few that I believe are related to your particular problem are "Moveable Operator", "Interruptible Operator","Keeping Worker Reserved", and "Entity Follows Sequence". Worker1 carries both entities to their respective nodes and leaves them in their respective stations after worker(A/B) "checks them" (I used a delay to simulate this check) and then Worker1 moves on. For this objective, I suggest setting up your drop off stations A and B as a Servers. Use the Processing Time property to represent the "check" while seizing both workers needed (see the Operator related SimBit for more information). Make sure all entities are assigned a sequence, so Worker 1 knows where to drop them off. The worker(A/B) only picks up the entity if needed. So if the worker was with another entity in process (like Srv(A/B)), he would go check the new entity so that worker1 can move on, but would return to finish out the first entity to the end. Assign entities that enter the pick up stations a higher priority, and interrupt the Workers at SrvA and Srvb if a pick up task arrives (See Interruptible Operator for more information). Ensure that the Workers have the needed paths to travel to all of the destinations required in all directions. Currently, WorkerA and WorkerB cannot travel to the Outputs of the Servers. Other suggestions: Look into using a Timer Element that could trigger the entity creations at SrcA and SrcB. That should remove the need for Source1 and Sink1. If the Worker's travel doesn't need to be defined by a path, I suggest setting the Initial Travel Mode to 'Free Space Only'. The error message you are receiving is related to the Add-on Processes on the A and B nodes. Whenever Worker 1 enters either of those nodes the process is triggered and tries to complete the process with relation to the Worker. Restructuring the model with Servers in this area should help you get around this issue. Thanks, Ryan
  11. I have a model where there are 4 servers with Processing Count Based failures. So every 5 cycles, the specific machine has a lockout and needs to be serviced by a worker. I am trying to have status label that shows how many cycles are left before the machine goes into lockout. I am having trouble figuring out the logic for it.
  12. Hi All, is there a way to make the server waiting for two (or any defined number) entities to begin the processing? I would like the server to begin processing only when two entities has arrived. Then the two entities leaves the server at the same time, and other two begin being processed. Can I do it without defining a process?
  13. Thank you for your replying, this SimBit define only one failure in the reliability logic properties(Processing Time Based Failure) and one by using Add-on process logic (Processing Count Based Failure). However, in this model I need to define seven types of failure event (Processing Time Based Failure), and seven type for time to repair only for one server, each failure type has its own failure and repair distribution, is there approach in simio can define this? For example for first server, time to failure and time to repair distribution as follow: Time to Failure: Loglogistic(2.62 , 0.67) , Weibull(208 , 0.62) , Lognormal(152 , 14) , Weibull(7.63 , 1.188) , Exponential(500) , Exponential(597) , Generalized Gamma(0.01 , 0.15) Time to repair: Lognormal(4.45 , 3.69) , Loglogistic(1.37 , 0.26) , Generalized Gamma(0.483 , 0.013) , Weibull(7.2 , 1.8) , Loglogistic(1.37 , 0.26) , Loglogistic(2.1 , 0.1) , Lognormal(6.4 , 4.9)
  14. You can create a customized server, where you can store the entities in the processing station, with processing time as zero and at the output node of the server make the ride on capacity as true. Also in add on process trigger for transport request you can choose the waiting for vehicle by stacking number. Stacking_RideRequest.spfx
  15. Hi M_A, The sequences in your table are never assigned to the entities before or as they are created. Assigned the sequences by selecting the entity instances in the Facility view, and set the Initial Sequence property under Routing Logic to 'Sequence1'. Also, the Entity Destination Type property on all of your Transfer Nodes, including the outputs nodes of all Servers, must be set to 'By Sequence' in order for the entities to follow the sequence appropriately. Here are a few other things I noticed while looking over the model: All of your Servers only have the capacity to process 1 entity at a time, so for your case only one employee can work in that area at one time. As soon as each employee is done working they will request a pick up 1 at a time. May not be what you are looking for here. The processing times at the Servers aren't linked to the table. You can link them by setting them to 'Sequence1.ProcessingTime'. Be sure to set the appropriate units in the column properties of ProcessTimes. It is hard to see the network that is available for the Vehicle, so one more thing to check is that the Vehicle has all of the needed paths to pick up and drop off the entities. Thanks, Ryan
  16. I have an application where a single entity gets worked on by two different operators at the same time with different completion times. This occurs on 10+ workstations in the flow line in the application. What is the best mechanism to model this in Simio? Ideally, I would like to be able to adjust the processing time of each operator to engage in line balancing, and the ability to create standard WIP processes. Thanks, Aytac
  17. Hi M_A, It is difficult to determine what could be causing this without seeing the model. Here are a few things I suggest investigating: Ensure that your model run time is set run long enough for all of your entities to flow through your system. To test this, I would set your model run time to Infinity, and create 1 set of 35 employees. Then see how long it take for the model to cycle through all entities. You may be able to use some Animation at this step to see where the entities are getting stuck. Along with #1, I suggest turning on the Model Trace and reviewing the steps taken for each of your employees and the bus. If you are using an unbounded random distribution (for example a normal distribution) for any of your processing times, then the result of that distribution could be something very large. You should be able to see if that is the case within your Model Trace review as well. Lastly, make sure all of your Transfer Nodes are set to route By Sequence and require the bus for transport. Hope this helps. Thanks, Ryan
  18. Hi M_A, 1. This is one is a bit difficult to provide direction on without seeing how the rest of the model is structured. If all your processing times are deterministic and you are using a sequence table to route your entities, then you should be able to add the lunch break into the sequence. Similarly, make sure the sink is included at the end of all your entity sequences. Also, make sure the model run time is long enough to process all employees. That may be why they aren't showing up at the sink. 2. Change your interarrival time to 12 hours, and set your Maximum arrivals to 2. Thanks, Ryan
  19. SpiceSimu, It looks like you are off to a great start, here are some ideas to consider. First, let's talk about changeover: Consider using a Server instead of the deprecated Workstation object. At the Server, you can use Task Sequences to model set-up (i.e. sequence dependent set-up), as a specific task. Take a look at the SimBit called ServerWithSequenceDependentSetup. Remember, you can access SimBits via the Support ribbon, or by finding the following directory on your machine: <C:\Users\Public\Documents\Simio\SimBits>. When you use an approach like the one above, you will see statistics about set-up reported in Results (tab) > Pivot Grid. Relevant results will be displayed, by default, at the fixed object (e.g. Server > Resource State > TimeSetup) and the changeover logic element. About the idea of processing in batches, you might start by exploring the Combiner and Separator objects. I suggest that you look into SimBit CombineThenSeparate. In your model, you may have multiple Combiners or a single Combiner with table references. Our Combiner object requires a Parent Entity, you could consider this an order or a box for your parts/products. I hope this information helps! Happy modeling. [/] Alex
  20. Thanks gocken. By setting up two timers and alternating between them I've managed to stop and start, but with fixed time intervals, whereas the intervals need to be partially random. I attach my attempt. I would appreciate any ideas. Eventually I hope to have a number of such entities, each with different timing, in a processing chain. Development 02.spfx
  21. Hello, I can't seem to open your model, but here is a simple example to illustrate updating flow when processing starts or ends. You can change the rate of flow through the flownode by applying similar state assignments using the Output@Tank1.FlowRegulator.CurrentMaximumFlowRate expression. Dynamically Update Flow.spfx
  22. Hello, I am trying to create a model involving fluid flow and machine setup. So I have one model with flow source, tank and flow sink and another model with source, server and sink with part. I want to dynamically update my fluid flow rate out of the tank whenever any part arrives at the server. For example if the inter arrival rate of part to server is 10 mins and processing time is 2 mins then I want to start my flow through the tank at 10 mins and my flow should stop after the part leaves the server i.e. 10+2 =12 min. Simply stated I want the flow out of the tank to stop when there is no parts to be processed and start when the part processing start. Any help would be really appreciated. Thanks for any help in advance. Model_04272020.spfx
  23. Dave, Thanks very much for your kind reply! I will take a look. Our intent is to do the "right" thing experimentally and initialize a bunch of task time states up front into the entities. This will mean carrying all those state values along through the processing. Since the number of entities is not particularly large at any one time I assume Simio will handle it. Best Regards, Jim
  24. Hi, We have a model where we have multiple entity states. This creates interface challenges in defining and populating these states or changing many of them at a time. My question is, can the UI be bypassed in some way using some kind of batch operations? For example suppose I want to assign 150 entity states using string construction and naming conventions easily set up in a spreadsheet. Is there a way to define all those states and import them from a file rather than hand editing each one in the Definitions UI? Another example is I want to set large numbers of these states at appropriate points in processing. Is there any way to do so by just importing name value pairs from a file rather than hand editing each one and copy pasting from a spreadsheet built up accordingly. Thanks Very Much, Jim
  25. One approach would be to use an Output Table. There is a nice example provided in the UsingAddRowAndOutputTable SimBit. Keep in mind that each individual processing task has its own State Assignments and Add-On Process Triggers for 'Task Ready', 'Starting Task' and 'Finished Task' - these may be helpful in the endeavor. Happy modeling! Adam
  • Create New...