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!

Didn't find what you were looking for? Try searching for:

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • Simio Public Forums
    • Welcome and How To Become a Simio Insider
    • Discussions
    • Simio News and Announcements
    • Simio Product Details
    • Simio-Related Positions Desired or Positions Available
  • Forums for Simio Insiders Only (See Public Forums Welcome topic to sign up)
    • SI Help Getting Started
    • SI General Discussions
    • SI Downloads
    • SI Shared Items
    • SI New Feature and Enhancements Submission and Voting
    • SI Ideas & Suggestions
    • SI Bugs and Issues
    • SI Performance Tips
    • SI Challenge Applications
    • SI Non-US Cultures
    • SI User Interface
    • SI Material Handling
    • SI Student Competition
    • SI Educational
    • SI Objects
    • SI Animation and Visualization
    • SI Reporting and Analysis
    • SI Agent Based Modeling
    • SI Scheduling
    • SI Emulation
    • SI Optimization
    • SI API


  • Files
    • Academic Information
    • Product Information
    • Case Studies

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start



About Me












Found 22 results

  1. Yeah I will caution you against your approach as it is the entity's Destination property that resides in the the transporter's ride queue which dictates the transporters steering behavior. I will subsequently leave that entity in the ride station. If you need the transporter to pickup more than one entity, simply increase its capacity.
  2. Typically, there will be an entity residing on the conveyor that would request the vehicle for pickup - at that time, you could have logic within the Evaluating Transport Request add-on process of the vehicle that will evaluate the entity request(s) based on the capacity of a single or group of conveyors and other entities. The Evaluating Transport Request would either accept or reject the requesting entity on the conveyor requesting the vehicle.
  3. Hi Petr Thank you for your hint. I have no created a subclass of entity and added a station with a queue to the new class. So it can pickup other objects.
  4. Hi I want to modelling the following problem: A source1 is creating Entities which are wander in free space. Another source2 is creating other Entities. This entities acts as firefighters and should be able to pick up other entities which are created from source1. When an entity of source1 has a value of a specified property below a minimal-value (the health) it should be picked up by a firefighter-entity which was created from source2. Can someone give me some hints, how I can modeling the firefighter-entity to pickup other entities? - Thank you for your help. Best Regards, Thomas
  5. Hi, If you look at the model trace, you will notice that the said process is associated with a model entity and not a transporter. Within the 'PickUp' step's advanced options, you have to specify transporter type and currently it is set to 'Associated Object' which in this case is a model entity. Since the Pick Up step is looking for a transporter you are getting this error. One solution is to define a 'transporter reference state' and then using an 'Assign' step at the beginning of the process assign 'vehicle', to it, this will assign the current vehicle to the 'transporter reference state'. Then change the 'Transporter Type' property of the 'Pick Up' step to 'Specific' and 'Transporter Name' to the 'Transporter Reference State' that you created. Thanks,
  6. Dear all, I have this problem: When an transporter is empty, he first has to search if there is an entity somewhere waiting to be picked up with the state: "Scan2=true". I tried to model this with the following process: - First decide if the vehicle is empty? - Search if there is an entity with this state waiting in his own VisitRequestQueue (search in Vehicle.visitrequestqueue for the match condition Candidate.ModelEntity.Scan2 == True) - Search is if there is an entity waiting in the rest of the model (search in Global.VisitRequestQueue for the match condition Candidate.ModelEntity.Scan2 == True) - If he found them, he has to pick them up, otherwise he has to continue with his normal routine. But i get the following error: Could somebody help me out? I also included the model. Model(5.5.2016).spfx
  7. While I'm sure you could do this using vehicles, it sounds like whet you described might be modeled easier by simply having two types of entities: Buses and Passengers. Use the Combiner to let buses pickup passengers and the separator to drop off passengers.
  8. Hi, If I understand correctly, the vehicle must first be released before it will pick up the entity to transport it. See attached model. Alternatively you can set the vehicle's home node to the node you want it wait at. Just set the vehicle default to go to home node and set the home node to the pickup node. Regards, Imre Model1_fix.spfx
  9. Alan is correct. So the best choice is to make the entities smart and each knows where it is going. A more difficult approach is to use a custom vehicle object that "knows" about inventory status and allocation strategy and has process logic that will replace the standard pickup/dropoff logic to implement that logic. But vehicle is a rather complex object and I cannot recommend this approach.
  10. Hey guys, first of all, thanks for the contribution on these forums, I have learned a lot from the SimBit solutions along with forum threads. Herewith my first post/question: Based on the Vehicle Fixed Route SimBit, I've set up the following model: There are specific pickup/drop-off locations in each of the vehicles' fixed routes. Entities entering at the various Sources will each be allocated a destination location Sinks randomly (ie. at Source_1 Output Node the destination is randomly selected from a DestinationList, which contains all destination nodes). Enities in the right-side loop are only picked up by Vehicle 1, and entities in the left-hand loop are picked up by Vehicle 2. Sequence Allocated to Vehicle 1: Output@Source_1 -- Input@Sink_1 -- Input@Sink_3 -- Input@Sink_5 -- TransferNode1 Sequence Allocated to Vehicle 2: Output@Source_2 -- Input@Sink_2 -- TransferNode1 -- Input@Sink_4 Of course some entities' destinations in the right-hand loop are set to destination sinks on the left-hand loop, i.e. Source 1 entity destination is set to Sink 4, and vv. In this case I would like Vehicle 1 to transfer this specific entity to Vehicle 2 via TransferNode1, after which Vehicle 2 can drop the entity off at Sink 4. There can even be sort of a "swap" of entities which need to go to destinations not in its original vehicle's route/sequence. I've tried setting up a process where Vehicle 1 stops at TransferNode1, checks if entities need to be transferred, and if so, waits for Vehicle 2 which then picks up the entity from TransferNode1. Actually I don't know where to start with this process, or if I'm even thinking in the correct direction? Any ideas? Thanks in advance
  11. Breno: Go to the 'Add-On Process Triggers' property category of the Vehicle object. Perhaps use the 'Loaded' add-on process trigger to execute a process that assigns an entity state variable reference variable equal to the entity just loaded (e.g., Assign: CurrentEntityReservingVehicle1=Entity). Perhaps use the 'Unloaded' add-on process trigger to execute a process that clears the entity state variable reference if the vehicle has unloaded the entity into the last destination in its sequence (e.g., Decide: Entity.Sequence.CurrentJobStep==Entity.Sequence.NumberJobSteps...if True then Assign: CurrentEntityReservingVehicle1=Nothing). Perhaps use the 'Evaluating Transport Request' add-on process trigger to execute a decision process that only allows the vehicle to pickup a new rider unless the rider is its reserving entity or there is no reserving entity (e.g., Assign: Token.ReturnValue = CurrentEntityReservingVehicle1==Nothing || CurrentEntityReservingVehicle1==Entity)
  12. Possible approach is to: 1) Define an entity reference state variable storing a pointer to a reserved entity for a vehicle. 2) For the 'Evaluating Transport Request' add-on process of the vehicle, only accept a transport request if the entity reference state variable is 'Nothing' or is the currently active entity assigned to the vehicle. Thus, the vehicle can only pickup that assigned entity until that reference variable is cleared. 3) When you pick up a new entity, assign the vehicle's entity reference pointer to that entity. 4) When you drop of an entity at the last destination in its sequence, clear the vehicle's entity reference pointer.
  13. lhu123, Your model is working -- transport requests are rejected. However, pickup requests (at the node itself) are not, so the vehicle picks entities up. This is because you have not modified the vehicles 'OnEvaluatingRiderAtPickup' process. The standard library vehicle calls the 'Evaluating Transport Request' add on from both the OnEvaluatingTransportRequest and OnEvaluatingRiderAtPickup processes. To bring this logic into the vehicle, you will need to subclass both processes.
  14. Yes, but in your case the entity seizes the worker. I want the worker to deliberatly pickup the entity, drop it in a queue for example and pickup her at some future time (another problem is how to define this future time, i.e. when?) and process it at a server for instance. This is possible? Possible scenario: The Clerk selects the Town Planning work items that she will undertake today although she only commence working on them at some future time.
  15. This should be possible using the onSeizeRequest and onTransportRequest add-on processes. You can have a worker 'reject' a request from an entity based on the workers states/position/etc. Later you may need to use the planVisit/selectVisit steps to trigger the worker to go pickup the entity.
  16. It is possible to a Worker deliberatly pickup entities and process them at some future time? Edit: I want to model a common pattern on workflow execution in which a resource (human) has the ability to undertake a work item deliberatly without needing to commence working on it immediatly.
  17. To avoid all that searching, would this work? Consider a custom vehicle with an integer state variable called LoadSize (or something like that) that represents the number of 20' slots loaded. It would always have a value of 0-4. The Loaded add-on process would increment this by 1 or 2 depending on the load just processed. The Evaluating Transport Request would compare the size of the potential load against LoadSize to accept or reject pickup. If you allow 2 20' loads on the top level, then the table would be: LoadSize Candidate Action 0 Any Accept 1 20' Accept 40' Reject (not stackable yet) 2 Any Accept 3 20' Accept 40' Reject (not enough space) 4 Any Reject (no space) If you only allow the 20s on the bottom, then even simpler: LoadSize Candidate Action 0 Any Accept 1 20' Accept 40' Reject (not stackable yet) 2 20' Reject 40' Accept I think this would be pretty simple to implement with a few Decides (and no searching).
  18. Modeling multiple cranes on a common (shared) runway is hard to do well. Still harder when you take into account acceleration, crane blocking, and good 3D animation. If you have encountered this problem, here is a solution. For standard bridge crane movement, we recommend the simpler Crane object in the Extras library. But if you need the underhung cranes with cabs moving between bays, read on... The Simio Crane Library is a collection of objects designed for modeling multiple cranes operating simultaneously in a bay. The library is provided as an example of complex material handling using the standard features of Simio. The Crane library may be used in conjunction with the Simio Standard Library, and Crane pickups are done using the standard TransferNode (e.g. the output side of a Server). Crane drop-offs can be done at either a BasicNode or TransferNode. The Crane Library can also be used with custom libraries as long as they support rider pickups using the standard transporter ride features. The Crane Library consists of objects representing the Bay, Bridge, Cab, Lift, and Crane (the end effecter that actually picks up and drops off the item). These objects are combined together to model multiple cranes moving in a single bay. The separation of objects in this way allows you to use your own symbol for each component. A Crane movement occurs by first rising up from the pickup node to a specified travel height, traveling laterally at that height, and then lowering down to the specified drop-off node. All travel is done through free space without the need to explicitly draw a network. The Crane library also fully supports independent acceleration/deceleration and the ability for one crane to cause another blocking crane to move out of the way. The above library file is now obsolete. Instead, download the library posted closest to the bottom topics. 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. But 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.
  19. The change of the capacity of the worker/vehicle happens automatically internally. Thus, within the 'OnCapacityChanged' process, when the capacity is 0 (off shift), you would have to assign a variable flag saying that you were changing the capacity manually, then manually change it back to the 1 (which would in turn immediately trigger another token to enter the process that you would need to dispose if the 'flag' is on). Then, within the logic after you change the capacity back to 1, you would need to loop around and see if you have all the outstanding entities for pickup. Then set the 'flag' back and reset the capacity back to 0 when the request queue is empty (or whatever conditions you decide).
  20. My first idea is to pick up a set of entities, take them to a dummy node, set the ride capacity of the vehicle to 0 ( to avoid picking up any other riders), drop off the entities, place them in a storage queue based on a user-defined rank, remove them from this storagequeue and send them to another dummy node, set the selectvisit destination of the original vehicle to this latest dummy node and set the ride capacity back to what it was so that it can pickup the entities it previously had. Haven't implemented it yet. Do you see any issues with this?
  21. I've come to notice that vehicles or workers will take on objects that request a visit/move and then will drop off the entities in the order that the objects were pickup up (/allocated rider capacity). Is there anyway to drop off the objects in a different order? I can't see any clear options for changing this strategy. I guess i am also going to start playing around with the default underlying processes to see if I can change this logic.
  22. 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
  • Create New...