Jump to content


Simio Insiders
  • Posts

  • Joined

  • Last visited

  • Days Won


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. 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.
  5. 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
  6. 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.
  7. 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
  8. 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.
  9. 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.
  10. Adam, Instead of having the TransferNode reference a NodeList property on the entity, could you have it reference a NodeListProperty in a Table? So, instead of having a Node Property in the Table, have a NodeListProperty instead. And populate the Table with NodeList1, NodeList2, etc. Have your TransferNode reference Table2.NodeListProperty1 and then depending on what row the incoming entity has set to that Table, they'll select the appropriate NodeList. And when you want to change which node list an entity uses, you just change their row reference into that table. I made a few small changes to you model and attached it. In this example, I have two state variables that set the row of the entity as it's leaving the Source so when you want to change which row is assigned, you just change the state variable. Its built in sprint 90. Let me know if you have questions or if this doesn't meet your needs. DynamicRoutingPriority_simio.spfx
  11. Update: As of Sprint 65, the software now contains DateTime functions that return a number representing a minute, hour, day, month or year based on a datetime input (such as TimeNow). There are also additional functions that convert a datetime to/from a string and those that let you determine which day of the week, month or year corresponds to a given datetime. See Help for more information on these new functions. Examples of these functions are: DateTime.Month(datetime) - which will return the month component, expressed as an integer between 1 and 12, for the specified datetime value (if you want the month of the current simulation time, put TimeNow in the parenthesis). DateTime.DaysInMonth(month, year) - which will return the number of days in the specified month and year. Specify the month as a number ranging from 1 to 12 and the year as a number ranging from 1 to 9999. DateTime.ToString(datetime) - which will return a formatted datetime string for the specified numeric datetime value. For example, 02/08/2012 00:00:21.
  • Create New...