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

Everything posted by jkirby

  1. For the month of April, the username of our Exceptional Simio Insider is..... *drum roll* gocken What qualifies someone to be Simio Insider of the Month? A person who: Actively engages in the Simio Insider forum by providing helpful information to others. Provides shareable demonstration models or example code. Asks thought provoking question about simulation and simulation-based planning and scheduling. gocken, we will send you your certificate via email. Happy posting!
  2. Hello, One approach you could use is have an initial capacity of 0 at the Enfriado servers to hold the entities in the input buffer queues. During the entered event of the input nodes of the Enfriado servers, you could insert the tokens into a storage element. And a "controlling" server could then use process logic triggered by a scan step that determines if the number of entities in the input buffer queues are greater than 1, that would perform a search of those Storage.queue for the Entity with the longest processing time. To determine the processing time, one has to track it. The real state variable on the ModelEntity, ModelEntity.RealStateVariable, would be created and TimeNow would be assigned before processing. Then that is assigned TimeNow - ModelEntity.RealStateVariable after it processes at the previous servers. Once the entity is found from the storage queue, a transfer step would take that entity and pass it to the Cortador server's input node. The search step could look for Candidate.ModelEntity.RealState1 using a Backward search type and a limit of 1. Once the entity is transferred, the entity can be removed from the storage element. Judy
  3. For the month of April, the username of our Exceptional Simio Insider is..... *drum roll* jzhou What qualifies someone to be Simio Insider of the Month? A person who: Actively engages in the Simio Insider forum by providing helpful information to others. Provides shareable demonstration models or example code. Asks thought provoking question about simulation and simulation-based planning and scheduling. jzhou, we will send you your certificate via email. Happy posting!
  4. You cannot hold an token associated with an entity at the SetNode step in a process. The token can be held at a Wait step or Scan step.
  5. Hi Walter, You should be able to change the Max Scenarios in your Experiment to greater than 300. If you want more scenarios. If you are unable to change that parameter, please contact us at support@simio.com and let us know. Thank you, Judy
  6. That would be great if you would share those here. Thank you, Judy
  7. Hi Kevin, I prefer to use Servers instead of Workstations. You can try this approach. During the failed event of the Server, I search the Resource Owners of the server. Then search the Seized Resources of that Resource owner (the entity), then I decide if the worker is seized. If so, then release it. If I need another worker or resource available when the server is repaired then on the repaired event, I search for the Resource owner of the server again, the entity, and have that entity seize the resource/worker. If it is a worker and I want to move that worker to the server's input node and there is more than one server that fails and repairs, then I use the Input arguments of that process, create a state variable for the server instance. I can then tell the seize step to use the node, ServerStateVariableName.Server.Input. I hope this approach gives you some insights as to how to model your system. Judy
  8. I recommend looking at the SimBit called TableReferenceInRepeatingProperty.pdf. You can reference your data table on your server object for the processing times by right clicking on the Processing time property of the server object. Then select Set Reference Property. Click on the DataTableName.ColumnName that you want to have the server point to. The other option is to use the Math.If( ) expression. To find out more about it's syntax, please read the section called Math Functions in the help documentation. Judy
  9. Hi Wicha, I recommend taking a look at our Flow Concepts SimBit. It demonstrates the basics of our Flow Library. To access the SimBits, click on the Support tab to access the Support ribbon. Click on the Sample SimBits Solution button. You can do a search on the word 'Flow' to find all of the SimBits pertaining to Flow. Judy
  10. For the month of March, the username of our Exceptional Simio Insider is..... *drum roll* Elkherbawy What qualifies someone to be Simio Insider of the Month? A person who: Actively engages in the Simio Insider forum by providing helpful information to others. Provides shareable demonstration models or example code. Asks thought provoking question about simulation and simulation-based planning and scheduling. Elkherbawy, please find your certificate attached to this post. Happy posting!
  11. Costing or financials isn't available for the flow library. You can add your costs to the model. And calculate your costs by adding your own cost rates in. One approach I found is to calculate the costs at the end of the run on a FlowSink for example. During the Run Ending Add-On Process Trigger Event, I assign the Input@FlowSinkNameHere.FlowRegulator.CurrentVolumeFlowIn to a variable using an expression to calculate out the costs. You could even write out that expression at the end to a file if you want.
  12. The Standard Library has built in costing. In order to take advantage of that, when you assign the FlowRegulator to be enabled, you can seize a resource that uses costing or a costing rate. Then release the FlowRegulator when you disable it.
  13. One approach to try to make the data table work is using an expression as a column. e.g. Math.If(Worker.ResourceOwners.FirstItem.Location.Parent.Server==Server1,1,Worker.ResourceOwners.FirstItem.Location.Parent.Server==Server2,2,0) Then, in the Allocated event add on process logic use an assign step and assign Worker.Cost.Rate to be TableName.ExpressionProperty. Have your data table be Column1 the Object Instance Property and then Expression Column. Making sure that the Object Instance Property has the Auto Set Table Row Reference to True. The entity is the resource owner of the worker when it's being seized at a server. So, the expression looks at the location of the entity. You can reuse the Allocated Process for any workers that have conditional costing and add the worker and the math.if expression to the data table.
  14. I'm not certain what you mean by policies. Do you mean events that would cause an evacuation of entities leaving an area? Or do you mean how they might leave an area?
  15. Hello, I'm not exactly certain what you are trying to do. But if you are trying maintain a certain number of entities at a location, you might want to use monitors and create vehicles. Or you can use scan steps at your Source nodes to release entities. Typically, it's the entity that summons the vehicle. It sounds as if you want to change the standard behavior of the vehicle. Entities make ride requests for vehicles from nodes or stations and then the vehicle evaluates that request to determine if it will accept it's ride reservation. You could have a monitor look at the "zone" or server. If the number of entities falls below a certain number, an event would trigger a process to create entities at a source and the entities at the source could request a ride to the desired zone or server. At least that's one approach to try.
  16. Continuation of follow up question: Good morning, I was wondering what subribbon it would be under to generate a second product at a server station. For example, if a saw table received a piece of lumber, and cuts it, piece A would continue down path A, and piece B down B. I cannot get the seperator to operate without first having a combiner, and the lumber is coming from in as a single entity. Also, what ribbon would i be able to find timers under? Thanks. Response: The Timer is an Element and can be found in the Definitions tab. If you need a different type of entity, you will have to drag a ModelEntity from the Standard Library into the Facility view and then define it as say product 2. The Separation Mode of the Separator object will need to be Create New (No Copying) and then the quantity of the new entity and finally, which type of entity. So, the second product (new entity type) would then leave the separator from the Member Output node and the original entity would leave from the Parent. Thank you, Judy
  17. Hello, You could use a timer that's set for noon each day and then use that timer's event to trigger a process to do a search for that entity at a server and transfer it to that input node of an inspection server. You would want to consider if you need to suspend processing at the original server as well. Perhaps look at the SimBit Worker uses Work Schedule to Interrupt Working Off Shift.spfx for the interrupt portion if that is needed. Judy
  18. Hello Ahmed, You still have your vehicles set to Network only. But there aren't any paths/networks to follow at all for it. It can't travel from one place to the other without them. Therefore, distance traveled is 0. You could place two nodes at each end of the server and have your vehicles move back and forth between those in free space. You'd have to set your vehicles' initial travelmode to Freespace Only. Next, you have some issues with your logic. Entities are trying to seize the resources/vehicle. You have your tasks set to seize SomeProperty.HasValue. The .HasValue only checks to see if there is a value in the property. Which it does. But the check is more like a Boolean. 1 or 0. It is not a value or quantity. Then you have the number of units of capacity for each vehicle only set to 1 because work schedule. Which is fine. But even if you take the .HasValue off, you are trying to seize more units of capacity than one. Since your vehicles never have that capacity (remember ride capacity and resource capacity are different things) your order will never finish processing and will always be behind. I would worry about the logic of your model. I have modified your model to over simplify things. Which I recommend doing first. Then building upon that. Get an entity to travel from the start to finish before adding lots of other factors in. In the modified model (saved in10.165) , you can see that you have set a Target. The Scheduled finish date versus the actual finish date are tied together. As far as constraints, you will see that in the Planning tab, after running the Create Plan button, there is under the Tasks of Section1 where the Constraints are shown. See image. In this case, it's the resource arrival of a vehicle. I hope this information helps. Thank you, Judy Model 1 Modified.spfx
  19. Hello Ahmed, First, you have your vehicle network only. And there aren't enough paths or links for it to travel on in the correct directions. I would set it to network if possible for now until you resolve this and you have some of your nodes with Outbound Travel Mode set to Network Only. But the vehicle is having the most issues with the fact that it is being required to be in two places at once and the processing of the entity at the servers will never complete. The first entity goes into the Unloading Server. You have it being moved as a secondary resource to the input node at the server in your task requirements. Then, you have the server itself requiring the AggregateTipperTruck to move to the output node as it is required. The resource capacity for the vehicle can be seized twice and successfully complete processing at the server. I hope this helps point you in the right direction. Judy
  20. How about using a state variable to count the amount of entities that have come out of your source and use another state variable in the source's Entities Per Arrival property? You can fire an event when the "count" state variable has reached a certain number that will assign the variable that you used for the Entities Per Arrival in an associated process to that same fired event. And when a new parent exits from the node of it's source you can check to see if the variable is set to 0. If it is, then assign it to 1 again. Judy
  21. Hello vavei5, When you say you want your source to stop, do you mean permanently or temporarily? You can do either. Judy
  22. You could use a separator that copies your patient entities and have a worker be a required secondary resource. The worker would be kept in reserve for the member entity and would take it to another server where it would be processed. This server would also require using the same Worker as a secondary resource. Judy
  23. Rather than a combiner you could use a server and from the output node change the Outbound Link Rule to By Link Weight. Then for whichever type of Paths you are using change the Selection Weight to whatever percentage values you want. If you have the same type of entities this will work very well. Judy
  24. Hi Zhouyaoxue, If you want to get a good look at the Process logic within a Vehicle in Simio, you can subclass the Vehicle object. Also, create a very basic transporter model, run the trace while stepping through or running the model. I hope this helps answer your question or at least provides a jumping off point. Judy
  25. jkirby

    Worker Priority

    Hello vavei5, You could use the Evaluating Seize Request Add-On Process for your worker. In the Decide step the expression Global.VisitRequestQueue.NumberWaiting>0 will evaluate if there are any entities in the Transporter Visit Request queues. Then use the Assign step to set the Token.ReturnValue to False. For an additional example using the Evaluating Seize Request Add-On Process, please look at the SimBit model called Moveable Operator or MoveableOperator.spfx. Judy
  • Create New...