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!


New Software Release

Our latest release, Simio 11, is here!


  • Content Count

  • Joined

  • Last visited

Everything posted by rthiesing

  1. I would recommend reading up on State Statistics (Definitions Window) in the Help because that will likely meet your needs.
  2. This might not meet your needs exactly but hopefully it can provide some ideas that can help you move forward. You can use the Work Schedules in Simio and the Value column in these schedules, to dictate which Server the worker should go to during that hour. This example also uses the Evaluate Seize Attempt process on the Worker so that the Worker rejects all of the jobs that are not at the appropriate Server. If you wanted to Subclass the Server, you could add a Property to it and then check to see if the current Schedule Value matches the property on the Server, instead of using the Server names, like this example does. WorkerHourlyRotation.spfx
  3. Yes, you can reference a model state within the ModelEntity logic. In order to do this, the ModelEntity object will need to be aware of the model's state variable and to do this, you must create a property on the ModelEntity object definition. The property should be a State Property and this can be found under the list of Standard Properties. Within the ModelEntity's process logic, you would use this new State Property to pull in the latest value of that state. When you place down an instance of the ModelEntity into the Facility window of the Model, you will need to populate that new State Property on the ModelEntity instance with the model state that you want to "send into" the ModelEntity's logic.
  4. Adam, I have attached a small model where you can easily test out your Task Sequence numbers and see if you've constructed them correctly. There is a data table where you can list your tasks and the sequence number you've assigned. This data table contains two state columns that record the starting and ending time of each task. This should provide a nice way to test out your sequence numbering. I tweaked your sequencing numbers from the last example you submitted and saved it in this test model that is attached. Take a look and see if this is what you were expecting and if not, perhaps this model will be helpful as you try and construct the correct numbering scheme. This was built in version 132. TestYourTaskSequence.spfx
  5. I've attached a document which contains a general algorithm that can be used to create Task Sequences in Simio. Task Sequence Diagram Labeling Algorithm.docx
  6. You would need to use an Add On Process to assign the current Task Name to a String State and then use that String State in the Status Label. Each task has a property with two Add On Process triggers so you can make assignments right before or after the task begins.
  7. You will need to add an Object Reference Property onto your submodel and have your seize step point to that property. When you place the submodel into the other model, you'll indicate which population of worker that particular submodel should seize by populating the value of that Object Property with the worker population.
  8. I'd recommend that you look into the DbConnect User Defined element, which can be found under User Defined in the Elements ribbon, in the Definitions window. The steps DbQuery, DbRead and DbWrite all work with this user defined Element. They can be found in the Processes window, under the User Defined category of Steps.
  9. I would suggest that you create four new States in the model, one for each type of entity, to keep track of the number of each type that have entered the InputBuffer of Workstation2. Next, create another column in your table that is a StateProperty column. Populate this column with the four new States that you created. In the State Assignment property of Workstation2, in the OnEntered assignment, you can increment the appropriate State by simply setting the State Variable Name to Table1.StateProperty and the New Value to Table1.StateProperty + 1. Because the appropritate row is already set in the table, Simio will know which State variable to update, depending on what type of entity has just entered the Workstation.
  10. Industrial Case Studies Track at WinterSim 2014 This is an opportunity for professionals across all industries to share real world simulation projects and learn how simulation is increasing productivity and efficiencies in business today. Do you have a simulation project that you’d like to share with your colleagues but you do not have time to write an entire paper? Or perhaps you missed the paper submission deadline for the Winter Simulation Conference (WSC) 2014? If you can summarize the project in a short 2 page abstract and a brief 30 minute presentation, then you should submit an extended abstract to the Industrial Case Studies track! If your case study is selected, it will appear in the final program of WSC, on the WSC Archive website and you will have the opportunity to present your case study at this year’s conference in Savanah, Georgia. The Industrial Case Studies Track serves as a multidisciplinary forum for professionals to share what they have learned modeling real world problems using simulation. The abstract should, at a minimum, describe the problem, the simulation methods used, the results, and the impact/benefits of the project. Find a link to the submission site here: http://wintersim.org/2014/authors.html Abstracts can be submitted beginning June 1, 2014. The deadline for submissions is August 18, 2014. Questions can be directed to the Track Coordinator, Renee Thiesing at rthiesing@simio.com
  11. Unless I'm mistaken, it sounds like you might just want to delete the queue so the animation doesn't appear when an entity is in the queue. If you do not want entities to appear in the Processing queue when they are being processed, you can just delete the queue so that the animation does not appear. This will not delete the actual queue/station itself, but just the animation of the entities in that queue.
  12. The difference between Copy to Edit and Subclassing from the library is that when a change is made to the original object's definition, an object that was copied is not updated with the new changes in the original object's definition. Whereas a subclassed object will inherit the changes to all processes that were not "overridden". There are some items in the object that are greyed out and cannot be overwritten when it’s been subclassed. In this case, the only way to change these things is use the Copy To Edit functionality.
  13. The Server is currently set up to look at the table to find it's processing time, but you haven't told the server which row to look at in the table. Therefore, you need to put some logic into the model to check the current value of the model property and based on that value, set the correct row in the table. One example for how to do this would be to create an Add On Process in the "Run Initialized" Add On Process Trigger of the Server. In this process, you would place a Search step that searches that Table. It would have a Match Condition of rpUserOption == tabUserOptionInfo.UserOption so that it finds the row that matches the current value of the model property. And then you would create a new State variable and put that State variable in the Save Index Found property of the Search step. This will save off the row number. Place a Set Row step in the original segment leaving the Search Step and put the State Variable into the Row Number property so that you are setting the correct row for that Server object. Thank you
  14. What appears to be happening is that both the original token leaving the Original segment and the new token, leaving the Found segment, are both associated with the same Entity and therefore the Transfer Steps are trying to transfer the same entity. This is shown in the Trace when it says which entity it is trying to transfer. Therefore, when the second Transfer step attempts the transfer, it says that it cannot transfer because the entity is already in the middle of being transferred. It is difficult to determine why the process logic is having both tokens transfer the same entity, but the first thing I would suggest that you check is whether or not the Search step is finding the correct entity during it's search. Or if you are using the Entity Type property of the Transfer Step to transfer a specific entity, you might look to make sure you are transferring the correct entity.
  15. The small step that you are missing is in addition to assigning acceleration, you also need to assign an acceleration duration. This is done by assigning a value to "Modelentity.Movement.AccelerationDuration". Let us know if you have additional questions on this.
  16. In your scenario, you probably don't want to use Sequences to route your parts, like the RPS Example model does. You might need to control some of your routing in process logic, especially if you want to save off information on which machine a part used and then re-route to that machine later. You set a Destination of an entity with the SetNode step. You might also just control routing with paths and nodes, like in the One Queue for Multiple Servers SimBit. In order to save off information about which machine an entity used, you would create an Object Reference State on the ModelEntity object definition and then save off a reference to the machine where it processed. See Object Reference on Entity Simbit for more information. If a part needs to be processed at a machine more than once, you might use a State on the entity to keep track of how many times it has been processed at that machine.
  17. I would suggest taking a look at the CONWIP SimBit to see if that might be helpful. I believe it creates entities upon initialization and then creates new entities based on an event, such as when something leaves a workstation.
  18. As someone mentioned above, the reason that the other entities are still located in the EntryQueue and not in the Contents queue is because you are not ending the transfer into the station. You should create a new process and in the Process properties, find the "Triggering Event" property and enter YourStationName.Entered so that this new process is triggered whenever something enters the station. In this new process, place an EndTransfer step. That is all that is needed in this process. After this, you should see all the entities in the Contents queue and then you can search this queue for your match.
  19. Here is what is happening. It’s easiest to see exactly what is going on if you ensure that ALL paths have “allow passing” set to “false”. It might also be helpful to animate the Batch Members queue on each entity so you can see what it batched to what. Combiner1 output: [blue [brown]] Combiner3 output: [Pink [Green]] Combiner2 output: [blue [brown], [Pink [Green]]] So – both Pink[Green] and [brown] are batched to Blue. And the separation would be: Separator1 output: [blue] leaves the top. [brown], [Pink [Green]] leave the bottom. (If your path’s all are set to “allow passing=false” then you’ll see that both a brown and a pink leave the member output of the Separator. ) Separator3 output: [brown] leaves the top and he has nothing batched so nothing was separated from him. [Pink] leaves the top and [Green] leaves the bottom after being separated from [Green]. Again, if your path’s all are set to “allow passing=false” then you’ll see that both a brown and a pink leave the parent output (top) of the Separator. ) Separator6 output: [brown] leaves the top and he has nothing batched so nothing was separated from him. [Pink] also leaves the top and he also has nothing batched so nothing was separated from him. Separator7 output: [Green] leaves the top because Green is the only one that came here and nothing was batched to it so it leaves the top and nothing leaves the bottom.
  20. In the model you attached, you haven't set a pointer to a row in the Orders table and therefore when the entity arrives at Cell1 and is told to find it's processing time in the Orders table, it cannot read data from that table since it doesn't know which row to read. I noticed that each entity instance has it's Initial Sequence set to point to a Sequence table, but that is not the same as setting a row reference to a data table. A simple fix to get this model working is to go into each Source instance and set the Table Name property under the On Created Entity property category to "ORDERS" and set an appropriate row number - a value of 1 for the SourceGR1 and a value of 2 for SourceGR2. Now that an entity is set to reference a specific row in the Orders table, the correct processing time will be found at Cell1.
  21. You are not doing anything wrong. At this point in time, the financials in Simio take negative values and set them to 0.0. So if you want to model income, you'd need to stick with state variables. We will discuss whether or not to make a change to the financials to accept negative values.
  22. We have taken official note of this request. Thank you for the input.
  23. Perhaps consider subclassing the Worker object and giving it some new properties - "ProbabilityOfArrivingLate" and "MinutesLateToShift" And then Override the OnCapacityChanged process of your new Worker and place a Decide Step right after the Decide that checks if its coming back OnShift and have it check the probability of arriving late and then put a Delay Step for the times when it should Delay for being late and then continue on with normal logic after that point. There might be other changes for you to make to get statistics correct, etc but that is just a general idea for modeling this.
  24. It was built in Sprint 67, the build that is currently posted to Simio Insiders in the Downloads forum. Have you tried opening it in that version?
  25. It is not possible to change the Length of a Link in your process logic.
  • Create New...