brenobos Posted September 16, 2013 Share Posted September 16, 2013 I am modeling a Flexible Manufacturing System (attached), where different parts are produced by different machines. I have many different entities (about 40 part types) that follow each one a different process sequence. Each part type pass through around 10~15 process. My problem was due, for each process, a entity could be processed by different machines. For instance, the part type A has the following sequence: M1 OR M2 ->> M3 OR M4 and so on. In order to solve that, I used a sequence table with a sequence of nodes. Then, in each node, I put a listnode with the possible candidates for the next step, as suggested by David Sturrock in the Facebook group. It worked very well. My problem now is that, when the vehicle pick the entity and follow to the next transfernode (to make a decision), this vehicle has to wait another one to pick up the entity and take it to the next machine, i. e., the vehicle which take the entity till the transfernode cannot take it to the machine. I really would appreciate if u could help me. Best Regards, Breno Souza Federal University of São Carlos FMS v0.0.1.0.spfx Link to comment Share on other sites More sharing options...
gdrake Posted September 19, 2013 Share Posted September 19, 2013 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. Link to comment Share on other sites More sharing options...
brenobos Posted September 20, 2013 Author Share Posted September 20, 2013 Thank you Glenn! I'm a new simio user and I don't know exactly how to use the step process. Could you explain me how to implement steps 2-4 of your approach? Thanks! Breno Link to comment Share on other sites More sharing options...
gdrake Posted September 20, 2013 Share Posted September 20, 2013 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) Link to comment Share on other sites More sharing options...
brenobos Posted September 23, 2013 Author Share Posted September 23, 2013 Thank you very much Glenn. I did what you said. However, when the 'Evaluating Transport Request' add-on process trigger reject a rider, how I can assign the current vehicle to continue the task? Im my model, the rider is being rejected and the current vehicle is freezed. One more doubt. In the 'Unloaded' add-on process trigger I only need that the vehicle continue the task until the next machine and not until the whole sequence be completed. How can I evaluate that? My model is attached. Thanks a lot! Breno. FMS v0.0.1.0.spfx Link to comment Share on other sites More sharing options...
IAhmad Posted February 6, 2014 Share Posted February 6, 2014 Hi, I have this simple problem in which these two parts follow sequence of first going to server 1, then to server 2 and then sink. I want that both parts should have different processing times at both servers i-e part 1 at server 1= 1 minutes and at server 2 = 2 minutes, similarly part 2 at server 1 = 2 minute and part 2 at server 2 = 1 minutes. I have tried using sequence tables for both parts and then making a separate table for processing time, it is still giving error of "error in evaluating processing time". The routing login property for both entities has been selected as "by sequences" my model is attached with the mail zalaalatl.spfx Link to comment Share on other sites More sharing options...
dsturrock Posted February 6, 2014 Share Posted February 6, 2014 IAhmad, There are many approaches to solving this problem. I suggest you explore the series of four SimBits named "EntityFollowsSequence..." for a complete discussion of the alternatives. You chose to use separate, but non-relational tables. You told it to get a value from somewhere in a table, neglected to tell it which row (e.g. Table1[1].processingtime) or establish any relationship between the entity and a particular row in the table. One way to do the latter is: Link to comment Share on other sites More sharing options...
Recommended Posts