Liz MillarSimio Employee
Posts posted by Liz Millar
Unfortunately you are not able to concatenate those pieces together to get a State Variable reference that will work. You can really only piece things together, or search through and find part of something within a name, with a String. Strings are not able to be understood as a State Variable reference, nor converted to something that could be understood.
Instead, I might suggest an approach with a Data Table. Although this adds a tedious step of putting everything in to a Data Table, it then becomes really easy to Search the Data Table for the State Variable you are looking for.
I attached an example model for you to investigate. In this model, you need the Data Table with a String Column so that the Search step can look through this collection of Strings and find the String that Contains certain substrings. See the Search's Match Condition property and the String Contains function.
Also, the Data Table could contain a State Property column which then references the State Variables you created in the Definitions tab. Or, you could use the State Columns and Assign the values right to the column.
Valero Energy is needing to hire a Business Intelligence Analyst – Simulation Developer at our San Antonio, TX Headquarters. The position will support the Transportation department by developing data analytic, algorithm, simulation and optimization models. One of the key responsibilities will be to develop refinery logistics simulation models using Simio Enterprise software. Applications can be submitted here: http://valero.taleo.net/careersection/jobdetail.ftl?job=22001OQ&lang=en
The entity is requesting a ride from the vehicle and the vehicle will seize the driver if available. However, if the vehicle is unable to seize the driver, it will reject the ride request and the entity will move to the Global Visit Request Queue, as you are seeing. You can attempt to have the Vehicle check again if it can now pick up the entity, and it will run the process to check if a driver is available. To have the Vehicle check the Global Request Queue to see if it can give a ride, use a PlanVisit step. Ensure that the Vehicle, in this case Vehicle_A, is the object executing this step.
By default, the Vehicles are not aware if the Driver they need becomes available. You might consider using a Subscribe step on the Vehicle's OnInitialized process. This Subscribe step can watch for an Event and if that Event occurs, can trigger a related process.
For example, the Vehicle might wait for the Driver.Released Event. When this Event occurs Process1 could run. In Process1, the Vehicle could execute the PlanVisit step.
For more information, I recommend the Help pages in the Simio Reference Guide titled "PlanVisit" and "Subscribe".
Our forum now includes Ranks and Badges! These are obtained by participating in certain activities on the forum. Points help you increase your Rank. You can receive points the following ways:
· Commenting or replying on a post = 5 points
· Posting new content = 5 points
· Following an item = 2 points
· Gaining a follower = 2 points
· Giving a Reaction = 1 point
· Receiving a Reaction = 1 point
A Badge is an achievement unlocked by reaching milestones. For example, you can receive a badge for your 1st, 10th, or 500th comment or reply on a post! Discover other ways to collect badges by being an active member on our forum.
Please keep in mind that our forum is a space for Simio users to communicate and share ideas. While you will see Simio employees participating in some areas of the forum, there is no guarantee that your post will be addressed by the Simio team. Therefore, if you would like information on educational opportunities or our product offerings, please contact email@example.com. If you require technical product support, please contact firstname.lastname@example.org.
Storing this information in a Data Table and using a Search step might be the best approach. The Search expression will probably need to look for a specific Group and also check that the MaterialName is in stock. If the Table is listed in priority order, you will need to just Search forward until the criteria is met. You will either need to execute the Search step a few times and have a variable for the Group letter, or just have three separate Search steps specifying the exact group.
I would recommend using a Data Table. One column could have all your entity types defined. The next column could be a Tally Statistic Element Reference Property. This column would match up the Tally statistic you want to correspond with the Entity Type. You could choose to auto-create these Tally Statistics from the Data Table. If you change the Tally Statistic Property's column Reference Type property from 'Reference' to 'Create', this will make the Tally Statistics for you. I recommend the Help page "Table-Based Elements (Auto-Create)" in Simio for more information.
If your Entity Instances noted in the Data Table are unique, no duplicates, you can set that column as a Key. With that column as a Key, you could use just the Tally step and use the RowForKey expression. RowForKey will allow a key input to search for in that column. If the model entity is driving the process, you could use an expression like this for the Tally Statistic Name 'Table1[Table1.EntityInstanceProperty1.RowForKey(ModelEntityReference)].TallyStatisticProperty'.
Since it seems this process will be on the OnRunEnding, it will not have a reference to a specific entity, so you will most likely need a Search step to find the entities still in the system. I would set the Search step to find Infinite things and let each entity reference exit on the found branch. If the EntityInstanceProperty column in your Data Table has the Auto-set Table Row Reference property to 'True', the entities will already know the row reference and your Tally step Tally Statistic Name property could be 'Table1.TallyStatisticProperty'.
With your current approach, you need a way to aggregate the distance traveled per each entity. Each entity in the population is collecting their own distance traveled, but on the Output Statistic, you are looking at just the Instance, ProductA. The Instance will not automatically aggregate the population's values. If you were to specify a specific population index, for example ProductA.DistanceFunction, the Output Statistic would return the 5th entity in the population's distance function and you should see a value. However, making an Output Statistic for each population index would be inefficient and tedious to collect.
I recommend using a global/model level State Variable. This State Variable could be summed as a ProductA entities leave the system. So the Product A entities will continue to collect their individual distance traveled as you have set it up, but then prior to exiting through the Sink, add their distance traveled to a running total State Variable. That total could then be divided by the number of entities destroyed giving you an average distance traveled.
I recommend using a Notify step with the expression Token.AssociatedObject.Name prior to your Assign step. This will read out the associated object that is executing the process with your Assign step. It might be that the Entity is not the object executing that process. If your entity is not executing the process, you might want to find another process trigger or Search for the entity in the population. If its a process that could be triggered by an entity, or another object, say a Worker, you could start your process with a Decide step that filters out the non-ModelEntity objects. This could be as simple as checking 'Is.ModelEntity' with the Decide step.
I recommend checking out the SimBit, found in the Support ribbon in Simio, titled "Hierachy with Tables". This could show you an idea of how you might use a Repeat Group Property to read in a Data Table at the parent model in to the sub model.
We are currently updating our forum space!
During this time, your posts may be moved from their original location.
Here is one way to find your posts and their new location:
1. Go to your Profile. You can do this by selecting your profile picture in the upper right hand corner, or select your name in the upper right hand corner and then select Profile in the drop down:
2. Your profile should contain a collection of your posts. You can select your post's title to be direct to its current location.
3. The top of the page will list the forum path location.
Hi! Please keep all student competition related questions in the SI Student Competition Forum. While others can answer this question, that would take the fun out of the competition! If we feel it is a fair question, the answer will be supplied there.
I recommend you take a look at a standard Vehicle object and compare the VehicleX3 to see the updates that were made. Only 6 new Properties were added to the standard Vehicle to make VehicleX3. The numerous other Properties were inherited from the Vehicle and were not changed. There are other small changes for the States, Events, and Elements as well. Doing a comparison between the standard Vehicle and VehicleX3 will be the most beneficial way for you to learn.
Additionally, all the updated Process Logic in VehicleX3 has been colored. Any grey process steps were inherited from the standard Vehicle.
********************* FOR VERSION 191 AND LATER *******************************
In Sprint 191, a change was made to the Seize step's On Seized Process and the Release step's On Released Process which impacted the Token Associated and Context Objects. This change effects the logic in VehicleX. For use in Simio versions 190 and earlier, please use the files at the top of this thread.
Attached is an updated VehicleX (now VehicleX3) for use in Simio 191 and later, as well as the updated examples using VehicleX3.
VehicleX3 now will reject an Entity's Transport Request if an operator is not available for that vehicle. This prevents entities from seizing and waiting for an unmanned vehicle.
John, I too believe Task Sequences could be very useful for your project. For example, for the multiple patient types coming in, you could utilize a Branch Type of 'Conditional' in your Task Sequence so to only use a certain workflow for that type of patient. There is a general description of Conditional and Probabilistic Branching in the Simio Reference Guide Help page titled "TaskSequence" along with some other helpful information on Task Sequences.
Additionally, I recommend you take a look at the SimBits titled "Task Sequence and Worker In Table (from project Task Sequence And Worker)" and "Using Relational Tables to Define Task Resource Lists". If you investigate how Task Sequences are used in these examples, I believe you will find some methods that might help you in your modeling endeavors.
If Task Sequences still do not help you achieve your goals, it would be helpful to have more details on what you are trying to do. I think writing your own steps should be resorted to later after other options have been exhausted. If you email in to email@example.com we can continue our conversation.
1) One option to try would be to create a Function in your Model with the Expression property being Conveyor_Custom.CapacityCalculation. This Function could then be placed in each of your Conveyor_Custom Initial Traveler Capacity property and would not need to be renamed each time.
2) It seems the issue might stem from the NumberOfCells property and not the CapacityCalculation. It could be helpful to revisit how you have defined the NumberOfCells property and where you are using it.
Server Capacity Depends on # of Seized Resources
in SI General Discussions
I would investigate the Server property called Initial Capacity. This sets how many units of capacity are going to be available for the Server. You could also change this during the run by Assigning the Server's CurrentCapacity State Variable.
I suggest checking out the SimBit titled "Worker Uses Work Schedule". You can access the SimBits in the Support ribbon in Simio. In this SimBit, I recommend changing the Initial Capacity for the Servers. You could set them to '6' or any value. When you run, you will see that the entities only move into the Process Station when they have successfully Seized the Secondary Resource. So even though there is 6 units available only 1 will be use when the Worker is able to process the entity. You can also experiment with giving the Worker a different Initial Number In System value so there can be more Workers. You will still see the same behavior; the number of entities that move into the Server for processing will be the number of Workers that were available to be seized.