Jump to content

dsturrock

Administrator
  • Posts

    1,652
  • Joined

  • Last visited

  • Days Won

    51

Everything posted by dsturrock

  1. Simio does not have a distribution for a time series, but there are other ways: For example, let's say you are assigning length, but that average length increases by 1 inch each hour. You could use an expression like: Random.Triangular(12+TimeNow, 16+TimeNow, 20+Timenow) which at time 0 would give you a mode of 16, gradually increasing to a mode of 17 after 1 hour and to 26 after 10 hours. If it is not a linear increase, you could put values in a table and at successive times read from a different row in the table: Random.Normal(MyTable[CurrentIndex].CurrentMean,5) Or you could use a lookup table and put time and value pairs in the lookup table: Random.Normal(MyLookupTable[TimeNow]
  2. If you know WHEN you want entities to arrive in addition to WHAT (e.g. PartA at time 1.5, PartB at time 1.8, ...) then put that data in an Arrivals table (a normal table that has an arrival time column) and use the Source Arrival Mode of Arrival Table. If instead you want random arrival times with specified parts, use an approach like found in SelectEntityTypeFromTable but use a sequential row number instead of the RandomRow function.
  3. Assuming that you are using the word submodel to represent an independently defined object (say WorkCenter) that will be placed in another object (say Plant). In your WorkCenter, every time you reference a resource that is not defined within the scope of WorkCenter, you must define it as a Referenced Property (right click on the property name). In general, you would set the value of that property when the instance of WorkCenter is placed in Plant, so you are "passing in" the name of the object. If you KNOW the object name ahead of time, then you may get away with a trick... when you define the Referenced Property, give it a default value of the object defined in the parent (Plant) object. This will display as an error in the WorkCenter object, but that error will be resolved when WorkCenter is placed in Plant which contains the object. UsingObjectDefinedInParentObject.spfx
  4. You might look at the SimBit named TransferLine.
  5. You made this a bit too complicated. I just used a resource (Resource1) who's capacity (1) represents the number of trucks allowed in that zone - I seize before it can enter the zone and release just before it leaves. That might be enough, but since you also want to hold that truck until all its pallets are processed, I added a Wait just before the release. Every time a pallet leaves it triggers this wait to check the condition. When the last pallet has left, the Wait is cleared and the release is allowed. No custom events are needed. wait.spfx
  6. While you could use the Math.IF(...) expression, another way might be to have a table with the node in one column and the loading time in another column.
  7. There are lots of early adopters doing this (or starting to do it) because Simio is ideally suited for SmartFactory operations. Here's a short summary from a WSC presentation.
  8. The Extras Library has now become a formal part of the product, e.g. it is automatically installed and loaded. Postings here prior to 2021 may reference older or obsolete versions of the library. The Extras Library contains: --a simplified and easier to use version of our Cranes library --an Elevator object for modeling a multi-floor single elevator or bank of elevators. --Lift Truck with a lifting mechanism that travels to a specified height --Rack object to store entities at customizable heights --Multi-axis Robot object that picks and places with automatic path calculation We are anxious to hear your feedback on using the Extras library.
  9. Ever want to track statistics periodically, like by hour, shift, day, or week? I created this pair of objects for a customer about a year ago, then forgot to do anything with it. Perhaps others will find this to be useful. The solution is two objects, one for states and one for tallies, that allow you to flexibly designate periodic statistics on any interval, can skip periods (like off shift times), provides an optional plot, and provides the choice of logging or output file. I frankly don't recall how complete this was when I left it, but I'm sharing it in the hopes that others can benefit from this work and possibly even complete/improve it and reshare with others. Enjoy! PeriodStatisticObjects.spfx
  10. This problem recently captured my attention on social media: Here's my solution (video):WhichTank_SolutionBySimio.mp4 Here's my solution (Simio model):WhichTankWillFillFirst.spfx
  11. If you want a solution to a problem, it is best to post your questions inside Simio Insiders where we can post files with the response. I tried what I think you are doing and it worked fine for me, aside from the fact that the expression you used creates 1 arrival per event between 6-11am, 2 arrivals any time after that (because 10:59:59 has an hour that is still <= 10). I used your expression in the Entities Per Arrival property, created entities hourly on the half hour, and it produced 1 entity at a time until 11:30, when it produced 2.
  12. They are similar statistics except that the first statistic looks at the resource state as it changes over time ... successive "busy" states with no state change between them (e.g. there is no idle time) are considered to be a single busy state. For the second statistic each entity is recorded separately. For example, if you have a model that creates exactly 2 entities at time zero and has exactly one minute of processing time, then [Resource] > Resource State > TimeProcessing will have a single observation of 2 minutes and Processing > Holding Time > Time In Station will have two observations of 1 minute each.
  13. A slightly more efficient and easier to read version of the same logic: Math.If(((DateTime.Hour(TimeNow)>6)&&(DateTime.Hour(TimeNow)<=10)), (1-p1), 0 ) Or shorter: ((DateTime.Hour(TimeNow)>6)&&(DateTime.Hour(TimeNow)<=10))*(1-p1)
  14. You probably want to add logic to the EvaluateTransportRequest add-on process. Each time an entity attempts to get on the elevator this would be called and you would simple reject the request if the effective capacity has been met.
  15. One approach is to put logic in the "Off Shift" add-on process logic that would check to see if the queue has contents, and if so, set the server capacity back to 1. The you would need to wait an hour (probably Execute another process) and reset capacity to 0. If the pivot table already contains what you want, then use the Export button to export to Execl. If not, call the ExcelWrite step from a process at the right time to write out all the information you need.
  16. The default server comes with default animation of each state. Perhaps you can change the picture of the failed or offshift state to a white dot and just change the server to failed or off-shift when you don't want to see it.
  17. There are many ways to do this. In that same SimBit, if you look into the definition of MyVehicle, near the bottom you will find a process named StartChargingBattery. One way is to simply change the properties of that Decide step.
  18. Yes they can. But perhaps you won't need to -- the Cranes in the Extras library do a much better job avoiding deadlocks.
  19. Yes, I believe it is. If you do not need the "underhung" ability to move cranes from one bridge to another, then I suggest that you instead use the Cranes object in the Extras library. This newer library is simpler, has a few more features, and is more robustly tested. http://www.simio.com/forums/viewtopic.php?f=36&t=2478
  20. In 9.148 and later we introduced Reneging functions that make this easier. And one of our SimBits is very close to your request. Search the help or SimBits for "Reneg"
  21. Yes, you can use the tool/technique discussed here: http://www.simio.com/forums/viewtopic.php?f=36&t=904
  22. Sorry, but no. While you can define your own steps, other than the "user-defined" steps provided as examples, the coding behind our steps is not available. The best we can offer is the description that is in help.
  23. I'd consider using a Materials (element) approach. See SimBit ScheduledMaterialArrivals for providing your initial garden contents. See SimBit WorkStationWithMaterialConsumptionAndReplenish for how to reorder (regrow) your garden.
  24. I would consider what would happen in the real system, and then model that. Assuming in your described situation that the order quantity (5) is not enough to bring to the desired reorder point (32), I would think the real system would: 1) Immediately place enough orders to achieve or exceed the minimum reorder point (e.g. place at least 2 orders of 5). That would be done with a Decide before placing the order(s) -or- 2) Place an order and when that is received, Decide if I have met the reorder point. If not, immediately place another order. Repeat.
  25. The "brute force" way is to set up 32 controls (16 half hour sessions x 2 positions) and let OptQuest vary those controls to seek optimum. To do this you would manually create 32 properties and then manually type those property names into the value field for each half hour of a day pattern. A more elegant, but time consuming, way might be to come up with some strategies for varying the workers (e.g. you probably would not vary from 1 to 5, then back to 1, in 3 consecutive periods) and them optimize which strategy is best.
×
×
  • Create New...