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

  • Days Won


Everything posted by GFurtado

  1. This option was released on Sprint 191 on June.
  2. Add a state in your report using the State Statistic element. If you need that each server report its own state, it's best to create a custom server and add a State Statistic element inside it. Check the attached model for reference. State on report.spfx
  3. Why won't they empty? Are the nodes closed? If you have a process that opens the flow nodes, try triggering this process with an Execute step.
  4. Try using ModelEntity.BatchMembers in your processing time expression. I believe it'll work.
  5. It should be the default unit Cubic Meters per Hour. If you assign a new unit to an object property, Simio's backend will continue to calculate using the default unit; Watch out for bottlenecks. Maybe there is a low flow rate node holding the whole system.
  6. There's a lot of ways to solve this. Wait step is one of them. I made an example using the Monitor element (check the attached model). When the monitor sees that all four tank are full, it runs a process to empty them. If the Split Allocation Rule property in the Output Flow Control of your flow nodes is set to Evenly If Possible, then you shouldn't be having this problem, unless your pipe is messing up with the math. But if want to force a value to transfer, you could create another monitor monitoring Output@YourTank.FlowRegulator.CurrentVolumeFlowOut that shuts the valve when your desired volume flows out. FillingTanks.spfx
  7. Set Output Link Rule property of your node to By Link Weight. Then set Selection Weight property of your links to Entity.State and 1-Entity.State. This means that when Entity.State = 1 (True), one link weight will be 1 and the other 0, and vice-versa when Entity.State = 0 (False). Check the attached model for reference. ByLinkWeight.spfx
  8. Create processes that are triggered by YourTank.Full and YourTank.Empty events and set the Output@YourTank.FlowRegulator.Enabled to True or False to open or close the tank's valve. Silimar to how I did in this other post. Also, Output@YourTank.FlowRegulator.CurrentMaximumFlowRate might be useful if you're having trouble your tank's flow rate. Keep us posted if you need more help.
  9. At some point I would start looking for a SCADA system, write it in Python or anything outside Simio. A Simio Engineer would be better suited to help you, but I still believe you could build this inside Simio (maybe through an API?). I manage to build a very ugly version of this that kinda works. It's not real real-time, because I still need to click on the manual import button (I don't know how to help you with this). I set my source's Arrival Mode to On Event; Create a process with a Decide step that checks if the table received a new value: If it received a new value, trigger SourceEvent; If it didn't, check again a second later. As I said, it's not very elegant, but I hope it inspires you to find the right solution.
  10. Updating the data mid-run isn't a good simulation practice, unless you're building some gimmicky application. But I manage to work this out with this little guy in the Table Ribbon. Have you tried it yet?
  11. You change entities symbol through thier ModelEntity.Picture state. Select your entity and Add Additional Symbol in the Symbol tab; Customize the new symbol however you want; Look for servers State Assignment; Assign a new value to ModelEntity.Picture (0: default symbol; 1: new symbol). Check the attached model in this post if you need help. Change Entity Picture.spfx
  12. Alternatively, you could limit the number of entities created by the source. Check Maximum Arrivals property under your source's Stopping Conditions.
  13. I'm not sure, because I never done this course. Maybe something like this?
  14. If you right-click on the Standard Library you'll see a Show Deprecated Objects option. The Workstation should appear in your library after that, but you could try to solve this using servers instead as a bonus challenge.
  15. Let me see if I understood correctly. You want something like this? Create a Timer Element and set its Time Offset to a referenced property: Then create a process that ends the run (through the EndRun step) when the timer triggers:
  16. If you look at the list of animations of a symbol (as shown in my previous reply), you'll see the animation 21 (Sleep), assuming you're looking at a animated person symbol. So set the Current Animation Index of your ModelEntity to something like this: Math.If( condition when your entity is bed , 21 , index of the animation when it's not in bed )
  17. It is possible to reference a column in a expression property ( e.g.: Table1[1].Separator1 ) But I suggest: Working with Work Schedules on your Data tab Or rearrange your table to include a Object Instance Property column containing all your servers, following by Integer Property column with its capacities. This should make the referecing easier.
  18. Change animation by setting a number or a expression on your object's Current Animation Index property. You can check its symbol available animation by right-clicking your object and selecting List of Animations of Active Symbol. In the Drawing tab, draw your wall using polyline or curve, set the Object Height and apply the texture by clicking in the wall. Check these two attached images for a better understanding.
  19. Every station comes with three events: .Exited, .Entered and .CapacityChanged. So the triggering event of an entity finishing processing in a server is Server.Processing.Exited.
  20. The expression State.InitialValue might help you, but I believe you can't reset every value of the array at the same time (I might be wrong). In this case, you'd need to set multiple assignments or loop in a process.
  21. That might sound counterintuitive, but entities are alternating between 0.0 and 3.0 m/s in a discreet manner. They don't have acceleration or deceleration. They are not slower, they are full-stopping before entering the node. (Difference distance/diference time) = average speed. Movement.Rate returns that instant speed, which are either 0.0 (full stop) or 3.0 (desired speed). You can verify this by looking at the label attached to the entity. I'm not experienced enough in Simio to help you creating an entity capable of smoothly decelerate, but you could calculate the average speed between two nodes (check the attached model). EntitySpeed2.spfx
  22. Desired speed means maximum speed. When there is nothing restricting the entity, it'll travel at its desired speed. If entity's desired speed is 1.4 and the path maximum speed is 2.0, the entity will travel at 1.4. If entity's desired speed is 1.4 and the path maximum speed is 1.0, the entity will travel at 1.0. Initial Desired Speed is a property. Every entity starts at this speed. You can change it mid-run by assigning a new value to the Desired Speed state. It is a constant speed, unless you code it otherwise somehow. Yes, unless the entity is restricted by the path maximum speed or slower entities blocking the path. Use the expression ModelEntity.Movement.Rate. ModelEntity.DesiredSpeed returns the entity's current maximum speed, not that instant speed. ___________________________________________ I tried to compile all my answers in a single model. Check the file attached at my post. EntitySpeed.spfx
  23. Each entity running on a model is actually an instance of another model (a model entity). You'll se each individual distance travaled if you add an attached label on your ship entity, or else you'd need to reference that particular instance somehow. In the model attached in this post, I get the distance traveled of the last entity created. You also could set a "checkpoint" that assigns ModelEntity.TotalDistanceTraveled to a state whenever that entity goes through it. AttachedLabel.spfx
  24. Do entities choose the server randomly? In this case you could set the Outbound Link Rule to By Link Weight. Then set the connectors weight to its respective cashier current capacity. So when the cashier's capacity equals zero, the entity has a 0% chance of choosing that cashier.
  25. If the parent entity knows how many bags belongs to they, you could set this expression in combiner's Batch Quantity property, something like my new attached model. Then you set the bag and passager IDs in the Ranking Rule property. Match Quantity.spfx
  • Create New...