Jump to content

GFurtado

Members
  • Posts

    81
  • Joined

  • Last visited

  • Days Won

    15

Everything posted by GFurtado

  1. Each ContainerEntity has its own ContainerEntity.DesiredSpeed. You can assign a new value to it whenever you like.
  2. Check a SimBit named Choose Alternate Sequence. It creates a process containing the Set Row step to change the current sequence table.
  3. Try using a similar logic to the model I attached. I created a chain of states where one updates the next one, and you can easily access their values. Change to the state you want to memorize and when/where you want to trigger it. Passing TimeStamps.spfx
  4. I would suggest to expand this model I sent before by creating new states inside your ModelEntity. Two states when the entity leaves a station (one updates the station name and one updates the time it left). A state when the entity enters a station. Maybe another states registering how many rows in your sheet were written. The columns of your sheet would be ModelEnity.FromStation, ModelEntity.ToStation and (ModelEntity.TimeLeftStation - TimeNow). Let me know if you need help building this model.
  5. Wait, actually this doesn't work. Check the attached model: Create a new ContainerEntity with a string state named whatever you like; Assign NewContainerEntity.NewStringState = Filler.Name when entering the filler. Use this expression any time you need the name of the last station that entity visited. Get Station Name.spfx
  6. ModelEntity.CurrentStation.Name Be aware that this will return an error in the case the entity is not at a station.
  7. ModelEntity.CurrentStation might help you. Alternatively: You could register the object in an ObjectReference state or its name in a string state, depending on what you want to do with this information.
  8. Sure. It depends on your model logic/design. I would suggest using Server1.Failure.Active expression as a process time parameter. This expression return 1 when Server1 stops due a failure, otherwise it returns 0.
  9. Open your ModelEntity and add a new Real State variable named TimeInServer1 or whatever; Set ModelEntity.TimeInServer1 = TimeNow when the entity enters Server1; Set ModelEntity.TimeInServer1 = TimeNow - ModelEntity.TimeInServer1 when the entity exits Server1; Set Server2 processing time to ModelEntity.TimeInServer1 * E + delay (hours). Check the attached model for some extra help. Register Server1 Processing Time.spfx
  10. It is possible. There's several ways to solve this. It is just a matter of model designing. Some tips: 1. You can use expressions like TimeNow or ModelEntity.TimeInSystem to check how much time processing time has passed. 2. Interrupt step might help you remove the entity from the process. 3. A State inside the ModelEntity will help your entities to take the right path or take the right decisions. Open you entity model, create a boolean state named Failed (or whatever the name you like), set ModelEntity.Failed to True or False, and use this same expression to steer you entity to the right direction. 4. Be creative. Your solution heavily depends on your problem.
  11. Ok, in this case, I tried to solve it using a regular Data Table. Maybe not the prettiest solution, but check the attached model. I used the TimeNow expression to check what day is it and assigned the Entities per Arrival property to that day's row of the data table. Arrival.spfx
  12. Is there a reason you're using a Rate Table instead of the good ol' Interarrival Time?
  13. I set ModelEntity.Priority = X at Output@SourceX State Assignments property, but it could be assigned anywhere before the server.
  14. Entities are prioritized in server according to the server Ranking Rule. Check my attached model. I set Entity1 priority to 1, Entity2 priority to 2 and told the server to prioritize the ModelEntity with the highest priority value. You can play with that logic to prioritize everything the way you want. entity priority.spfx
  15. I believe you can't create of vector of elements. Although, you can create a element reference state vector, which might be helpful. Your best bet would probably be modelling your process logic to trigger events through the Fire step, instead of using a timer. Or maybe adding a timer inside a object model, so every instance of that object has its own timer.
  16. Check my attached model. Is that what you're looking for? I created a Expression Property in Object2 and set its value to the Object1_1 state. State Transfer.spfx
  17. Check my attached model. I'm not sure if this was the best approach, but it works. I created two events: One is triggered 100 times to executes another process 100 times. Each process will run its own Delay step and fire the second event to trigger the source. Let me know if this isn't what you need. 100 entities.spfx
  18. This option was released on Sprint 191 on June.
  19. 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
  20. Try using ModelEntity.BatchMembers in your processing time expression. I believe it'll work.
  21. 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
  22. 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.
  23. 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?
  24. 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
  25. Alternatively, you could limit the number of entities created by the source. Check Maximum Arrivals property under your source's Stopping Conditions.
×
×
  • Create New...