Jump to content

Search the Community

Showing results for 'original token'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Simio Public Forums
    • Welcome and How To Become a Simio Insider
    • Simio News and Announcements
    • Simio Product Details
    • Simio-Related Positions Desired or Positions Available
    • Help Getting Started with Simio
  • Forums for Simio Insiders Only (See Public Forums Welcome topic to sign up)
    • SI General Discussions
    • SI Sprint Releases
    • SI Shared Items
    • SI Ideas and Suggestions
    • SI Known Issues and Workarounds
    • SI Performance Tips
    • SI Non-US Cultures
    • SI Student Competition
    • SI Educational
    • SI Libraries and Objects
    • SI Animation and Visualization
    • SI Distributions, Functions, and Expressions
    • SI Simio Tabs
    • SI Experimentation and Optimization
    • SI Functional Approaches
    • SI Industries / Domains
    • SI Types of Simulation
    • SI Emulation
    • SI API

Categories

  • Files
    • Academic Information
    • Product Information
    • Case Studies

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me


First Name


Last Name


Company/University Name


OCCUPATION


ICQ


WEBSITE


YAHOO


AOL


LOCATION


FACEBOOK


GOOGLEPLUS


SKYPE


TWITTER


YOUTUBE

  1. That's right... use maximize expression with the Search step, set limit to 1 (default). The new token will be associated with the row. Alternatively, you can save the row index using the advanced properties of the search step. The Search step feels like the most powerful step in Simio to me...
  2. I want to publicly thank: James Doran, Mining Systems Modeler, Anglo American James has made tremendous contributions to this forum. His tagline reads: Resident Problem Synthesiser and he has done plenty of that... he has often been a pain in the, um, er, keyboard as he pushes and stretches Simio to do more things with it. Sometimes this means reporting bugs or asking difficult to answer questions . But more often he identifies opportunities to improve Simio and posts them to give us a permanent record as well as the opportunity to collect other user feedback. Along the way James has accumulated a great knowledgebase and he is always forthcoming to share that knowledge with others. He often steps in to answer problems posted by novices and experts alike and often contributes to interesting discussions. On behalf of Simio and our user form members - THANK YOU JAMES DORAN! You have made significant contributions to both the Simio forum and the Simio software. A small token of our appreciation is on its way to you.
  3. New version at the original forum post: http://www.simio.com/forums/viewtopic.php?f=35&t=977
  4. I would abandon using Simio's built-in elements and do this all in a process with repeat groups plus delay steps and custom token states as you describe in Option 1. You could use the search step to spawn a new token for each row in the repeat group which would provide scalability, which then gets a delay time randomized according to an input distribution for that row of the repeat group. At the end of the delay time it would trigger a failure. These tokens effectively become your timers instead of using timer elements. The failure could suspend this 'timer' process such that the other delays stop counting during a timer. This token would then loop back on itself, having a different delay again. However, my conclusion (but not implemented yet) was that I would use the 'non-scalable' approach. The reason for this is that adding more than 2-3 failure distributions is getting overly complex/detailed and isn't likely to add value and could even possibly subtract from it! Not only that but I've found that when I combine different types of events (in reality, not modelled) they almost always result in some fairly good erlang/exponential/log-normal distributions. These only need to be split out to remove multiple peaks rather than getting to the exact causes. Not only that, but I've often found that failure data (not models) is recorded very poorly, and often mis-reported. For example a 'slow operation' is instead recorded as a failure. Alternatively, short failures are not recorded at all because the operators are busy fixing the problem. Because of this going into the level of detail you've described is going beyond the quality of the data. If you actualy trust your failure data, by all means go to town with the scalable approach. If you were part of my firm, I would give you feedback along the lines of "never trust failure data" However, a colleague of mine does feel differently so this is not a hard and fast rule -- just my experience.
  5. The attached model illustrates 2 concepts: 1st the ability to pick up Entities mid-route, 2nd how to create a 2 Task Selection Strategy when deciding who to pick up. In this model, there are high priority Entities (illustrated by the red Entities) that are created at HiPrioSource. These Entities are to be loaded first, even with low priority Entities waiting. And when the high priority Entity is loaded the vehicle takes it directly to the sink. However, when a low priority Entity is loaded, the vehicle is supposed to stop and pick up any other waiting low priority Entities that are waiting along the vehicle’s route to the sink. So, to maximize the number of Entities loaded, the vehicle wants to pick up at the farthest location (LowPrioSource1) so that it can pick up any waiting Entities as it passes through LowPrioSource2. Now the Vehicle chooses the next Entity to pick up based on its Task Selection Strategy where it can be Largest/Smallest Priority or Largest/Smallest Distance – but it can’t be both. In this example, we want to FIRST make the decision based on Priority, THEN if we know its low priority we want to base it on Largest Distance. Because we want to first base it on Priority we set the Task Selection Strategy to Highest Priority. This means that it will handle the first tier of the decision process for us. Creating the second tier requires us to customize the Standard Library Vehicle. So we subclass a Vehicle and add an Entity Reference State called ‘NextEntityToPickup’. Then we Override the OnVisitingNode Process in this new vehicle and about 2/3s of the way through the process, after Decide-IfIdel and before the Plan Visit-NewTransportationTask we place a Search step. This Search Step searches the QueueState ‘MyVehicle.CurrentNetwork.VisitRequestQueue’ (the queue of all waiting Entities) with a Search Type of ‘MaximizeReturnValue’ with a Return Value Expression of ‘MyVehicle.NetworkDistanceTo.Node(Candidate.Entity.CurrentNode)’ – meaning the Entity that is farthest away from me. This Step will find the farthest Entity out of all waiting Entities, so on the Found Branch we assign NextEntityToPickup the value of ‘Object’ – meaning the specific Entity that is farthest away. *Note, we have to reset the NextEntityToPickup State before this Search. Now, in the OnEvaluatingTranportRequest Add-on process we place a Decide Step with the following expression ‘Math.If((MyVehicle.ResourceState==0) && (MyVehicle.NextEntityToPickup != Nothing), MyVehicle.NextEntityToPickup == Entity, True)’ and a Reject Assignment on the False Branch. So, this expression says If the MyVehicle is Idle and there IS a value for NextEntityToPickup, Then “am I the next Entity to pick up?” (which gets evaluated by every Entity), if it is not idle or there is no value for NextEntityToPickup then continue on – the vehicle will pick you up. So, this combination of letting the Vehicle handle the Priority mixed with Finding > Assigning > and Checking the Farthest Entities will give you the 2 tiered Task Selection that was desired. Also, don’t forget that this Vehicle is supposed to pick up low priority Entities Mid-Route. Doing this requires further Customization of the OnVisitingNode Process. Right after the Execute-Entered Add-On Process Step we placed a Search Step that checks to see if there is any High Priority Entities in the Ride Station. If the Ride Station has a High Priority Entity OR it is completely empty, the process will continue on as normal. If the Ride Station is NOT empty and it is carrying a Low Priority Entity, that means we can try to pick up more Entities along the way. To do this, we just force the Vehicle to try to DropOff/PickUp at this node (which it would not do normally, unless it was at the dropoff node). If there are no Entities to pick up or drop off at this node, both the Pickup and Dropoff Nodes will fail and the token will eventually route itself out of the process and the Vehicle will continue on. If there are waiting Entities, the vehicle is forced to pick them up by avoiding the logic that would normally tell the Vehicle to exit the node. Custom Pickup Process.zip
  6. As you have discovered (and I discussed in my post above), running an experiment puts Simio in its fastest run mode possible. And in this mode it will automatically distribute the replications and scenarios across all of your processors/cores. This alone can provide dramatic speedups. If you have Team Edition, you can actually extend that to use spare processing power in your work group. So if you have 4 quad-processor machines available on your local network, you can run up to 16 simultaneous replications or scenarios. In terms of modeling, the most dramatic improvement you could make is to build your model at a lower level. The model you described is simple to model entirely in a single process with steps: (begin) - Seize - Delay - Release - Tally - (end) with the process triggered by a Timer element and using TallyStatistics elements for any token-related statistics like Time In System. You would not even need to create any entities, it could all be done using tokens which are smaller and faster. The process approach should be many times faster.
  7. Yes. Runtime is a capability for a model to be run by someone who does not have a Simio license. Let's review some version capability: -- Models created in Simio Design Edition can be run by anyone with a commercial license, but cannot be run by someone with a academic or evaluation software. -- Models created in Simio Team or Enterprise Edition can be run by anyone with a commercial license, but can also be run by someone with evaluation software. -- Evaluation software is similar to the commercial version except that it cannot save models and can only load models that are prepared using Enterprise Edition. And it cannot execute programmatic interfaces (an advanced feature). Evaluation software can be freely downloaded from the Simio.com web site. So if you use Simio Team or Enterprise Edition, you can distribute your models to anyone else and they can run the models using software that they can legally use for free. The runtime user can load your model, run it interactively to view the animation, and even change the model at will. But they cannot save any model changes. To do that requires a commercial version. You (the model builder) can further restrict what the runtime user can do, if you wish, by protecting parts of your original model. So if your desire is to distribute a model for experimentation in the interactive mode only, you can protect the model so they can only change only the properties that you expose. Simio imposes no limits to the number of models you can distribute or the number of people you distribute to. And you are free to distribute outside of your organization if you choose. And there is no charge for any such distribution.
×
×
  • Create New...