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!


All Activity

This stream auto-updates     

  1. Yesterday
  2. Hi All,

    I am repeatedly getting this (attached picture) error in my Simio Model, what could be the probable cause and what should I make sure so that this problem does not repeat?

    I have added transfer, end transfer step in my process logic.

    I also have made sure I have enough storage capacity and also enough vehicles to complete the transfer.

    any suggestions would be helpful.

    Thank you :)


  3. Last week
  4. 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).
  5. ps: is there a way to add a label or change a label's expression while the model is running?
  6. Hey!! I have container entities that are waiting to enter a filler. I need (for visualization and logical purposes) the allow passing property of the paths be FALSE, but, when I do this, I can't find the expression that returns the number of container entities waiting on the path to get inside the input buffer of the filler. I am attaching a picture that will clarify the problem. In this scenario, I need an expression that returns 4. I have tried many expressions and none seem to work. Does anybody know how to achieve this? Thank you very much!
  7. Hi All,


    I am trying to look as to how can we create experiments with various schedules in the SIMIO experiment tab.

    Currently I am not using RPS version.

    I have created a schedules for various servers using Simio process logic and schedule table for each server.  I am able to run one schedule and see the resulting performance, but it would be interesting to see how the changes to the sequence of orders changes the performance.  How could I set up experiments to make changes to the sequences in the tables?

  8. Earlier
  9. 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
  10. 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
  11. Hi Jim, Unfortunately, at this time, there is not a way to reference a column name with a string variable. The column needs to be directly specified by name (like MyTable.ColumnName) or you could specify the cell by the table row and column index (like MyTable[RowIndex, ColumnIndex]). The indexes can be State Variables that evaluate to an integer. The caveat is that you can not just specify the column index, the row index needs to be there as well. So assuming you can assign the row, one approach to consider is creating an integer State Variable to save the column index. A Math.If expression could check the group name string, and assigns the integer variable the corresponding column index. Then place the integer variable in the Table column Index. Happy Modeling! Liz
  12. 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
  13. Hello! One suggestion is to use Key/Foreign relational tables to accomplish your goal. If you have a table that defines your unique entities, you could then set the entity column as a Key. In the Task Sequence Data Table, you could then add the Foreign Key column to specify which rows pertain to the specific entity. This could limit which rows in the Task Table the Entity will have a reference to. Happy modeling, Liz
  14. Probably your Matlab version is different from the step. Please check your step's matlab version (from which forum did you download your step) There is a step for Matlab 2017a in this discussion:
  15. I am not aware of any better way from Simio itself. I believe there may be some bulk writing procedures available through the API, but I don't have expertise there. Perhaps post a question in the API forum?
  16. Is there a way to keep them in the loop until the transport arrives, there will never be a point where they are done with the loop until the transport gets there. Right now if they are in the loop I can assign them a modelentity state variable (boolean), then when a vehicle arrives it initiates a process that has a search step with the search condition modelentity.BooleanStateVariable==1 with a return limit of the capacity of the vehicle. the found entities must either interrupt the task or process they are currently doing depending on where they are in the loop and be moved by a worker to the evac node. If that seams like a plausible solution, I just need a process step that can completely cancel a task sequence because the interrupt and suspend steps do not seem to apply to tasks. Once the task sequence is suspended the modelentities should flow to the destination node no problem after leaving the server.
  17. Hi gocken, Thank you for your reply and your attention to this problem! The current method that adds a breakpoint after 'CallMATLAB' function works in my project. Before Simio runs MATLAB, Simio will send out needed data to SQL server and then call MATLAB function. MATLAB receives the data through the database, implements the algorithm, and writes the data into the database. The Simio program pauses at the step that Simio reads the MATLAB results from the database. I have validated the .dll file with a simple MATLAB program that plays a music file and it works. Because the Simio API is a little complex, I just use the code from https://www.sciencedirect.com/science/article/pii/S1569190X16301356 and recomplie that to obtain the .dll. Through this example, I also found Simio continues running after the matlab file is executed Otherwise, if I didn't pause the Simio after the MATLAB function is called, it generates error like this I also find that when the MATLAB program is running, it will open a MATLAB command window. If you don't pause, sometimes the MATLAB is still running when the command window exists, and Simio also begins to run before that window closes, and it will generate the same error like abov e. So I guess I have to pause it to let MATLAB program finishes. I have attached the UserStep.cs that generates CallMatlab.dll. If you have any further idea on this problem, I am really glad to know that. Again, thanks for your reply and idea on this problem. Shu UserStep.cs
  18. If I were you I would define a storage element. Then, if the patients are finished with their loop I send them to storage (you can think of it as a waiting room). Then, when the vehicle is available I should check the storage (with a search step) and if exist get the patients on the vehicle. Does it work for you?
  19. The answer is no! If you call MATLAB via user generated MATLAB step simio will temporarily suspend till the outgoing token will return (with a value or not). If you add a breakpoint, simio will come to a "full stop". This means simio can not send any token to run/call matlab/codes. Most likely your problem is that the matlab user defined step does not work properly. If it works properly you need not to stop simio anyway. Try to locate the required files appropriately or check your visual studio edition etc.? I am not sure what is the problem but the .dll file can be outdated?
  20. We are building a model of a medical facility where some patients need to be evacuated out of the model using a vehicle. In its current state, when a patient is in the ward or ICU, it will be determined if they need to evacuate. While they are waiting for an evacuation transport, they will be in a task sequence loop. We would like some way for the patient to seize a spot on the transport, perform the tasks loops, and once the transport arrives at the facility transfer node, the patients break out of their loop, and seize a worker to be carried to the vehicle. We have patients looping correctly and workers carrying the patients to the transport node, but they are not waiting for the vehicle to arrive. Having a condition that breaks the loop when the vehicle is in the loading node is not working because as it leaves its current node does not update quickly enough so entities go to the node that then are not picked up. A potential solution we found was to use the MinimumDwellTimeExpired State variable for the Evac transport in the loop conditional (If transport is dwelling then do not continue the loop and get routed to the transport, if it is not dwelling stay in the loop), however this variable is not public with no apparent way to make it so. We have also tried to make a function in the vehicle to try and mirror the state variable value, but this also did not seem to work as it does not update during the run.
  21. Hi, jdoran I have the same problematic as you. I looked at the model presented by DanSpice but my problem is that the Server seizing my Worker is located in a submodel. Did you manage to fix this issue? Thank you, Maude
  22. Pausing Simio can be implemented by add a breakpoint after the step that calls MATLAB function and continue the model manually after the MATLAB program is finished.
  23. To pause Simio can be implemented by add a breakpoint after the step that calls MATLAB function and continue the model after the MATLAB program is finished.
  24. OK, and maybe I stumbled upon off shift rule "finish work already started" in process logic... am I on the right track?
  25. OK I used worker transport logic to "dwell until full" for my transporting 2 entities.
  26. Other questions: What expression would tell the worker to ALWAYS transport two entities? I want my workers to finish all server runs before going on lunch break or end of shift. Entities will never be unattended nor will workers be interrupted to restart server time later. What's a good solution for that?
  27. I found the answer to the first part of my question however I have not found a solution to the second part and am getting an error reading "Unable to get value of property server.ProcessingTasks.TaskSequenceNumber.
  28. Is there a way I can concatenate string in table for e.g. Col 1 of table 1 has name "Simio" Col 2 of table 1 has name "Simulation" I need to create col 3 in table 1 that says "Simio-Simulation" One way is I do it outside Simio and then import but don't want to do that
  1. Load more activity
  • Newsletter

    Want to keep up to date with all our latest news and information?
    Sign Up
  • Create New...