Jump to content

gocken

Members
  • Posts

    369
  • Joined

  • Last visited

  • Days Won

    32

Posts posted by gocken

  1. You can place some enough transfer nodes at different distances and directions (In freespace it will be hard to stop modelentity object and seize the server object. This can be quite challenging task). Then you can randomly send the modelentities to one of these transfer nodes (This is for sending entities some vector away from the source). Then, define an entered add-on process trigger for each transfer nodes and place a move step onto this add-on process. In resource movement request of this step define object type specific (or from list), object name any server (or from list you set), and destination node as the transfer node itself. Then, you can try seize step to or transfer step to send the entity onto server object. You have to try some options. 

  2. You should use data tables for creating such a large number of modelentities. You can populate your data table by binding it to an excel file or a database etc.. Then, examine the "Inventory Replenish" related simbits for how to increase and decrease inventory levels of each part. You can determine specific inventory replenishment policy accordingly as well. 

  3. In fact everthing is ok except you did not placed the subclassed sink objects (mysink type objects) into the facility layout. Probably you forgot to drag them from the project library (at the left bottom window) to the facility layout. I attached the fixed version of the same file. Do not hesitate for asking more. 

    cutoff.spfx

    • Thanks 1
  4. Hi Nadere, I assume that in "Data" tab you have defined a data table. Select "Data" tab. From "Schema" ribbon insert a "State" type data column from by selecting "Property" dropdown list. Now, you should be able to include "Sink.StaNumberEntered" state variable. Do not hesitate for asking more.

      

  5. In the attached model, entities are dispatched according to some "Mysink" objects' inputbuffer entered cutoff values (predetermined values). I intentionally put these cutoff values values in the table to show how you can use state variables inside a table. Also, I intentionally place some steps seperately to increase understandability of the model. Due to having limited time I did not test the model. You can fine tune the model and develop it in a more compact manner. 

    Time In System considering cutoff values.spfx

  6. First, you should define a "NodeReferenceState" on ModelEntity. After finding the appropriate sink to send use "set node" step to assign the found sink's input node as the destination node of the entity (ModelEntity.NodeReferenceState=input@sinkx). Then, do not use transfer step. Instead, set the entity destination type property of source object as specific and also set node name property as ModelEntity.NodeReferenceState. By this way each entity will find its own way via the links you defined. 

    • Thanks 1
  7. You can define "NodeInstanceProperty"s or a "NodeListProperty" on modelentity. If you define "NodeInstanceProperty"s on modelentity you should assign entity's sequence seperately in upper level model by assining particular sequences to each "NodeInstanceProperty". If you define a "NodeListProperty" on model entity you should assign the a list of sequences (which is previously known and exist in upper level model) to this "NodeListProperty". It seems you should define "NodeInstanceProperty"s and select appropriate servers dynamically and assign them to each "NodeInstanceProperty". 

  8. You can predetermine the length of a timeslot then the number of timeslots. By multiplying length of the timeslot with the number of timeslots you can calculate the total simulation time. At the beginning of each timeslot you can trigger a process by using a timer element for performing any task within that timeslot. Note that, you should set the iterval lenth of the timer element to the legth of each timeslot.

    • Thanks 1
  9. 3 hours ago, Nadere said:

    Thank you so much for your help. I have one more question. Since Path3.DesiredSpeed is equal to 5 m/s. why is the value of the Status Label greater than 5 m/s?  

    Thanks,

    Nadere

    EntitySpeed4_me (1).spfx 280.96 kB · 1 download

    Because we assign the speed of path 3 and 5 to PathXXX.Contents.NumberWaiting at assign3 step of process 1 which is triggered whenever an entity enters node A. As I said in my previous post this expression may not serve your purposes. This is only for illustrative purposes. Here the message is you can increase all existing entities' speed (but all of them at the same time) on path 3 and path 5 whenever the process1 is triggered. Also, you can trigger process 1 by using monitor elements (which seems more suitable for your purposes).  For example, using a monitor element you can track the number of entities on each path seperately and whenever this value crosses some treshold value (got congested) you can trigger process1 using monitor element. Note that in your attached model status labels shows how many enitities exist on each path. At the end, change the assignment expression of assign3 step of process1 accordingly.  

    • Like 1
  10. As far as I know you can not accelerate the speed of an entity on any link? you should use tricky solutions to overcome this difficulty. 

    One of the trick is setting the speed of entities to infinity right after entering node a. then changing the desired speed of path 3 and path 5 to some meaningful values. In the attached model this trick is applied. Note that the assigned values (i.e., Path3.Contents.NumberWaiting) should be replaced by any reasonable values. This assignment is only for illustrative puposes. Note that by this way we made the speed of modelentities limitless but at the same time we limit their speed with the speed of paths.

    you can do any other tricks as well... One of them maybe changing the type of the modelentities right after entering path 3 and path 5 (say path3_modelentities and path5_modelentities) by creating a copy of the associatedobject. Be sure to destroy the original one. And then whenever you need to increase their speed you should search their population by a search step and then assign appropriate speeds to them individually. These are the ones that come to my mind at the moment, but you can find some better methods by pondering.

     

    EntitySpeed4_me.spfx

    • Thanks 1
  11. Quote

    You also could set a "checkpoint" that assigns ModelEntity.TotalDistanceTraveled to a state whenever that entity goes through it.

    The best way to collect such an statistic which belongs to modelentity's is to assign it to a model state variable. You should determine when to collect them appropriately. In your case it seems you have just two points to collect this statistic. 1) when it arrives its destination(s) (total loaded delivery distance) 2) before destroying it (total loaded and unloaded delivery distance).

    AttachedLabel (2).spfx

×
×
  • Create New...