Jump to content

dsturrock

Simio Employee
  • Posts

    1,654
  • Joined

  • Last visited

  • Days Won

    52

Everything posted by dsturrock

  1. I just updated the library in the original post and included some examples. We welcome your feedback.
  2. Here is a note from one of our developers:
  3. The standard student version is limited to creating 5 object definitions. So I recommend using add-on processes to create custom object behavior. While it is possible to add a failure to any object, this requires some expertise to do so. Resources already have failures and states built-in. I would recommend seizing and releasing a resource using add-on processes and then applying the failures to that resource. Timer is just one way to create an event. Events can be triggered in many ways. For example, you could use the OnRunInitialized process in your model and have a series of Delay -> Fire steps (or more complex logic) to trigger a series of events.
  4. The easiest way is to select it when you actually use it. On the TransferNode use a Selection Goal of Random. Or in a Process use the Route step. You could also list your nodes in a table instead of a list and randomly select the row of that table.
  5. The Transportation Library provides a collection of objects for modeling cargo transportation using trains, trucks, boats, pipes, and robots. The Tanker object is sub-classed from Vehicle and used to transport discrete and flow entities between node locations. The Tanker has all the same functionality as Vehicle, except it has been extended to have weight and volume limits. In addition to standard discrete pickups and drop offs, the Tanker can also perform continuous flow pickups and drop-offs using a Dock object. The Dock object provides support for flow into and out of entities and vehicles (like a Tanker or HopperCar) supporting flow. The Dock is seized/released by the Tanker/HopperCar during loading/unloading operations at the Dock. The Dock may also follow a Work Schedule. The Pipe object may be used to model continuous flow through a fully filled pipe. In contrast to the FlowConnector the Pipe requires time for the flow material to travel. The Pipe can be used to connect flow between Tanks or between a Dock and a Tank to more accurately model the travel time of material flow from one location to another. This is particularly useful in applications where heavy liquids are transported over long distances through a pipe. The Railcar, Locomotive, and HopperCar objects represent various types of train-related vehicles. Train movements are modeled by defining a track network comprised of ControlNode and Track objects, over which trains move. A train is a linked sequence of RailCars, where the first RailCar in the sequence is a Locomotive. The RailCar can represent a wide range of train cars including freight cars, cabooses, passenger cars, etc. In addition a HopperCar is special RailCar that is provided to support fill/empty operations at a Dock. The HopperCar is a RailCar with the added functionality of a Tanker. The RailCars can be linked together in any order; for example a train might contain two or more Locomotives. The RobotBase, RobotLowerArm, RobotUpperArm, and RobotHand objects are the components used to model a multi-axis robot. The RobotHand is specified as the transporter and the movements of the other robot components are automatically calculated to support the required hand movement. Like all Simio-provided libraries, this library is open so you can look at how it was built, learn from it, and subclass your own objects to improve them. The Transportation Library was created totally by deriving its objects from other Simio objects and then supplementing with Process Logic. No C++, Java, or other user code was required to write or use these objects. And you can also customize the behavior to match your own needs. Unlike our built-in libraries, this is not fully supported (although we can provide some help) and we may not continue enhancing it, particularly if we decide to build this capability into the base Simio products. We are anxious to receive your feedback on this library. Here is a zip file containing the library, documentation, and a few examples. Updated 2014-01-23 - The InputFlow node's Initial Maximum Flow Rate property on the Dock object was not being used to regulate the rate the Tanker was filled. This has been Fixed. The rate the Tanker is filled can now be adjusted using the InputFlow node's Initial Maximum Flow Rate property. Updated 2014-02-17 - Updates to the Tanker and Dock objects Updated 2014-03-17 - Updates to HopperCar and Locomotive behavior when dropping off. Also bug fixes. Updated 2014-03-19 - Bug fixes - Loaded car no longer takes off on its own after loading, but waits to be picked up by the locomotive and The Loaded add-on process now runs after the loading is complete. Updates 2014-04-07 - Added ability to allow a RailCar to request a Locomotive. See example DropPickTrain_DetatchToLoadUnload.spfx Updates 2014-04-17 - Bug Fixes to previous update Updates 2015-03-23 - Bug Fixes to previous update TransportationLibrary.zip
  6. 1) You may have accidentally turned them off using the Queues button on the Visibility ribbon. 2) If they are indeed hidden under your floor plan, you can temporarily (or permanently) move the floor to a lower elevation using the Shift-drag in the 3D facility window. That should expose the grid lines and the queues.
  7. Cstein, Are you using 5.96 or later so that the experiment reports error messages as it should? If not, updating may resolve your problem. In interactive mode: Ensure that you are using exactly the same values for ALL controls (aka referenced properties). By default, interactive mode only creates replication #1. If you want interactive mode can run a different replication. If you are getting an error in replication 3 for example, change the replication number to 3 in Run Ribbon -> Advanced Options -> Randomness -> Replication Number.
  8. Thanks Mark, very useful information. RE: FYI, the problem with errors not being reported in the experiment window was a bug that has been fixed in 6.96.
  9. Depending on the software version you are using it is either a bit kludgy or very easy. The easy approach is to use the new animated symbols (e.g. Library\People\Animated\Male). A few of these symbols have a prone pose that could be used by assigning ModelEntity.Animation to the selected value. After placing an animated symbol right click on it and select List Animations of Active Symbol to see the available animations. If you have older software or cannot find the animation you need, then you need to find or create your own symbol or use the Symbols panel on the Project Window to copy the ones from that example (e.g., BedWithMan and ManLyingDown).
  10. SBrizi - A vehicle symbol is no different than other symbols. Use the same 5 steps from the first post above.
  11. For the reneging try the approach used in the SimBit RemoveFromAllocationQueue. For the Balking add a Decide at the beginning of process Server1_Entered.
  12. There are many ways to do this depending on the details. The SimBit OverflowWIP illustrates one approach using secondary resources. Or you could do something with events as illustrated in SimBit RegeneratingCombiner. Possibly the easiest is to represent the Stock as a 0 processing time Server with an infinite output buffer, and have a connector (or path with capacity 1) to MoldingA. MoldingA might have a 0 capacity input buffer. So each time a part leaves MoldingA, another part would leave the Stock to take its place.
  13. To continue the above post regarding referencing. Rule 1) States are generally referenced in the form ., for example Entity.Priority. Rule 2) You can only reference a property or state at the level it was defined, or on an object derived from that. For example Entity.Priority and ModelEntity.Priority are both valid. But Entity.Picture is not valid because the Picture state was defined on ModelEntity and is not defined on Entity. Rule 3) For the greatest flexibility it is best to use the object definition on which the state was defined. For example you will note that if you use a Ranking Rule of FIFO on a Server (or many other objects) the default expression is Entity.Priority. You could easily change that to ModelEntity.Priority and it would work equally well in most models. But if your model has another entity definition, say SpecialEntity, that went through that Seize, you would get an error. Why? Because when Simio attempted to evaluate the expression ModelEntity.Priority it would fail because SpecialEntity is not a ModelEntity. But the default expression Entity.Priority will still work because SpecialEntity is derived from Entity and in fact is an Entity.
  14. Entity is an object definition and is a base object, i.e. one of the fundamental building blocks that other objects are built with. Its properties and states are defined as part of the Simio engine and are not under user control. Costs and Priority are examples of states that are defined on Entity. ModelEntity is an object definition derived from Entity. It contains all of the properties, states, and behaviors that an Entity has, plus more. For example a ModelEntity contains Picture and Animation states and the OnEnteredFreeSpace process that are not defined on Entity. DefaultEntity is not an object definition, but is rather an Instance of the ModelEntity object definition. So it has all the characteristics of a ModelEntity, but each instance can have its own property values. You can see in this screen shot (from ModelEntity > Definitions > States) that Priority is a state inherited from Entity, but Picture is a state defined on ModelEntity. You might search Help on Hierarchy for additional information.
  15. Look at the SimBit SelectEntityTypeFromTable for a simple example. Look at example RPsixample for a more comprehensive example.
  16. On my machine both performed identically (about 1.5 seconds). You are not crazy - it's just your computer is playing head games with you. I cannot explain why they would run different on your machine.
  17. Did you run it exactly as I sent it, unmodified? Did you execute it from the experiment window, resetting before each run? Did you have anything else running on your computer? For example in such short runs if your email decided to download a big file it could take processor time. I believe that was due to the days versus week mistake I made.
  18. First, if you are not running XP, then I highly recommend updating to .Net 4.5 - this can make a dramatic difference in Simio execution speed. Second, I made an error in my model - I accidently ran one for 5200 weeks and the other for 5200 days. Perhaps you did something similar because 3 of the 4 models in your project had different run durations as well. I fixed that problem and while I was at it illustrated 4 different approaches to this simple model. All had periodic activity every hour for 5200 weeks (100 years). All at least track the number of activities logged (873,601 events) by adding an Integer State, an Assign to that state, and an OutputStatistic to make it display in the results. The approaches vary based on the objects involved. The approaches using objects provide additional statistics. If you run them in the Experiment window you can look to the Pivot Grid to verify results. RunTime Approach 42 sec Facility model (Source-Connector-Sink) 13 sec Process that creates objects (Create-Destroy) 3.2 sec Process with Tokens (no entity objects) created by Timer 1.7 sec Process with single Token (no entity objects) that recycles hourly Sorry for the confusion. I hope this helps.AcademicTestModel.spfx
  19. Out of all that discussion, you managed to attribute to me something I didn't even say. I did give tips above like: But you apparently disregarded that advice when you did: You are obviously not building your test models entirely in processes. Are you using .Net 4.5? I built the model above the way you did and it took about 7 sec on my computer to run an experiment of 100 years. The process approach to the same model took under 1 sec to run (7 times faster). And of course if you wanted to run multiple replications, up to 16 concurrent replications would still require only about 1 sec (over 100 times faster). Here is that model:AcademicTestModel.spfx So, the short answer to your question "Is there something I can do to make Simio run faster?" is YES.
  20. SSS was used as shorthand for Source-Server-Sink. Actually no, the difference/advantages I cited were in comparison to products like Arena. Arena does not have objects, it's modules have no intelligence, it's entities are much like Simio tokens, Simio entities are MUCH more sophisticated, Simio has built-in statistics calculations, ... . A process/tokens approach in Simio is the only thing remotely comparable. Simio objects are so much more sophisticated that REAL systems can be more accurately modeled in Simio in less than half the time. The products are only superficially similar so why would one expect them to execute at the same speed? This is like comparing a car and a jet going 1000' down a runway and declaring the car "faster". But if your journey involves traveling 1000 miles and carrying 100 passengers, I think your conclusion would be much different. For such a simple problem, I'm sure you could program a solution in assembly code that would run MUCH faster. Why don't people do that? Because it would take too long to build the model and they value their modeling time and time to solution, more than the computer time. If your study is looking to see how solving a trivial academic problem in different ways can impact execution speed, then you should probably include the assembly code solution. But if your analysis involves any measure of how people solve real problems, then I think you need to start with a real problem and measure all aspects of project performance. Writing this is rather odd for me because within Simio staff I am often on the opposite site of this argument. I am continually (and successfully) arguing that we should put more time into optimizing Simio to make it run even faster. And in fact, at least quarterly we put significant effort into improving Simio execution speed, so Simio is getting steadily faster. But the other side of this argument is that computers keep getting faster, so the execution speed tends to take care of itself (particularly considering the cloud) and we can better serve our customers by improving the product features to permit even faster and more accurate modeling of real projects.
  21. I tend to agree with your colleagues. Simio is probably not the fastest executing product, in part because it has so much built into it that other products don't have. When you do trivial models you don't see that, but when you do "real" models you will. Computer time is cheap; skilled modeler time is not. If you can do a typical project in 2 weeks in Simio versus 6 weeks with a competing project what is that 4 weeks of time saved worth? What is the benefit of producing answers (and the resulting savings) sooner? And what is it worth to be able to model something accurately that would have been approximated in other products? To take your assertion from above, what if Simio happened to take 6X (say 60 minutes versus 10 minutes) to replicate that typical project? In the worst case to do 30 reps would take 30 hours of unattended computer time versus 5 hours. Who cares? You are still seeing your results more than 3 weeks earlier with dramatically reduced effort. Given that Simio can use multiple processors and most competitors don't, on a common quad processor machine there is little difference (8 hours vs 5 hours). And if you take advantage of Simio's ability to use up to 16 external processors, then Simio can actually produce results in less than half the time (2 hours versus 5 hours). All of that is assuming that 6X figure you used is accurate on a real system model - which I tend to doubt. The point is, as a modeler my top concerns include: --Can I model the situation accurately enough to generate meaningful results? --How much skill and effort (my time) does it require to do so? --How long (calendar time) until I can provide an answer to my stakeholders? In most applications I feel that Simio provides the best answer to the above questions.
  22. Email me directly and I'll be glad to provide feedback, perhaps even some modeling advice if desired. Or you might post it here and also get feedback from others who might have interest in your work.
  23. There are lots of videos now available on the Simio web pages: Introduction to Simio Simulation | Simio http://www.simio.com/about-simio/learn-how-to-use-simio-simulation-software.html Academic Program Overview | Simio http://www.youtube.com/user/SimioSimulation
  24. In terms of verification, that must certainly be done. Since you are attempting to help educate others you have several burdens to prove: 1) That the problem is real and significant 2) That your solution actually provides a correct solution to the problem, and 3) That you have illustrated a good (ideally the best) solution to the problem. The actual verification/validation process is too involved to discuss here - I suggest that you consult any good simulation textbook (Simio & Simulation by Kelton, Smith, Sturrock is my obvious recommendation .) But in general, all that is done outside of the SimBit. Due to the size and clarity goals of SimBits, they must be kept as small and simple as possible, so only items needed to explain and illustrate the ideas should be included. I look forward to seeing your submissions. If you can get us anything before October 1, 2013 you might even see it in the version 6 major release and get Bragging Rights that might even help with your thesis.
×
×
  • Create New...