Jump to content

Welcome to the Simio Forum

Welcome to the Simio Forum! Experience the full experience of the forum by becoming a Simio Insider!


New Software Release

Our latest release, Simio 10.174, will be live in July 2018!

Save the Date!

Simio Sync is May 14-15, 2018! More details coming next month.

All Activity

This stream auto-updates     

  1. Past hour
  2. Today
  3. JBeltran

    More popular 3d FORMAT?

    Hi Jeff, Most formats you list (and others) are suited for CAD/CAE and are difficult to handle into a process simulation-oriented environment. Probably the effort should be put in ensuring compatibility with the Collada neutral format (*.DAE) with an eye kept on the upcoming BIM protocol (IFC files). Regards,
  4. Do we have plan to introduce more 3D format that is also quite popular in the market , I list some of them . a few of them quite popular ... Rhino *.3dm Cult3D *.cd Google Earth *.kmz IGES *.iges Object Propertities (*.csv) STEP *.stp XAML *.xaml VRML *.wrl *.vrml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Thanks!
  5. Yesterday
  6. Last week
  7. Could I request that you guys look into how much effort it would require to "expose" submodel and object properties as experiment controls directly and automatically. This capability would be EXTREMELY helpful for a potential use case for SIMIO I'm currently exploring within my organization. Sean
  8. While I think all approaches mentioned above are good depending on the situation, I'll mention one more advanced approach, perhaps just for the educational value. While most people think of balking and reneging as a Server-type of option, it is actually implemented as a feature on every Station. So another approach, particularly if you encountered this situation a lot, might be to subclass the Server and change the properties of the Processing station to implement reneging on that station.
  9. No process Logic required other than two blocks in the onRunInitialised process. 😉
  10. Using process logic it can easily be done yes, but the idea here is to have the functionality without requiring process logic.
  11. We really need to sort out the colour pallette on the drawing board. It is a nightmare to have to click and recolor, opposed to specifying by name. Further, (to demonstrate the before mentioned point), what would be of GREAT value is if we can have a property to dynamically colour/recolour an entity (i.e. specified as a name ~ expression property), opposed to have to utilise the attached color pallete and click through the symbols.
  12. I realise this aesthetics but this is what sells the solution as comprehensive... What would be great if we can have a "percentage " unit of measure, as well as display of the UOM (as per attached) (i..e. planning boards, dashboards, experimenter, etc)
  13. I suggest to improve the documentation on Dashboard, that bring a lot of competitiveness in presentation. thanks a lot!
  14. Ability to define population count of transporters defined in associated data table (with auto-set table row reference set to true). Currently a model setup as such gives error that it doesn't know which table row to use.
  15. Expose "current symbol index" property in an object definition. This is needed for proper symbol assignment of table instantiated fixed objects.
  16. If timer elements are referenced (or auto generated) in a data table, upon that timer triggering a process, the corresponding process token and/or associated object should have an active reference to the data table row.
  17. Ability to assign a process to be triggered by a timer element in the timer element properties.
  18. Thanks for the help. I came up with another solution, let me know what you think: The Entity has reached end of queue and is about to begin processing. In Server-Before Processing state assignments I recalculate .TimeTillDeath. At this time I will also give them a .TreatmentTime = random.exp(x). Actual server processing time is Min(ModelEntity.TimeTIllDeath, ModelEntity.TreatmentTime) Once they leave the station, my routing is based on if TimeTillDeath < Treatment Time. If that is true, then they had effectively died at end of service and are sent to a sink. I can see how this would fudge some of the Server stats in the results page, but I am not concerned about actual treatment times there. Let me know if i'm missing something.
  19. What would be of considerable help is if we can: Change and customise the colours of the line itself (as per attached). Have the option to dynamically hide zero value entries. Shade the area under the line. For this type of functionality to resonate operationally, its all about colour coding in order to draw inference at a glance. Thanks !!
  20. Bardok

    Pickers not avoiding colision

    Ok I have just found the option of "allow passing" in path. Solved. Now only the processing time issue left.
  21. Bardok

    Pickers not avoiding colision

    Hi Gocken, thanks for the reply. I cant have transfer points because transportes are not supposed to transfer what they are holding to each other. They must do the three sequences in a continuous movement and in the shortest time possible (lean principles). Essentially i) they cant transfer what they have picked to another transporter ii) they cant pass in front of a transporter that has started a run previously. As for your second advice, I am using combiners and I will try your approach. There is only one type of entity entering the member input combiner, if use this method does it mean that for each batching unit (member) a new time will be generated? Basically what I want is that the 4 products that are to be collected (the batch units), each generate a random processing time, and that the total processing time at that combiner is the accumulate of the 4 values generated. (Basically what i want to simulate is the time the worker spends by retrieving each product from the shelf, being each shelf a combiner).
  22. Earlier
  23. An alternate approach is to place a monitor element which looks at the TimeTillDeath State variable. If this reaches zero, within the monitor element you may choose to execute a user defined process named "proc_WhateverYouWantToCallIt". Within this process, I will use the "remove" block if the entity is in a queue, or simply just utilise the "destroy" block. You may have to utilise the aforementioned blocks with a conditional "search" block as to ensure the correct entity is destroyed. Hope this helps.
  24. With a decide step just before the release step in my process logic, I was able to test if the worker is seized. The condition I used is : ServerName.Processing.Contents.FirstItem.SeizedResources.Contains(WorkerName[1]). So thanks a lot! It's exactly what I needed!
  25. First define a real state variable to your modelentity named "livingtime" after its creation. Then make a copy of your modelentity and send the copy of modelentity to a process (maybe called as death_process). Place a delay step and set delay time as modelentity.livingtime. Of course the original one should go its way. Then place a search step and find the original modelenity in the system when the time is up at delay step (while finding the original entity you should set a match condition such as candidate.modelentity.ID==modelentity.ID etc. I am not sure whether the ID's of both entities are same, you should try. If it does not work you should try to match creation times of them (both should be same) or any other user defined state variables or properties). If the search is succesful make necessary controls (i.e., if it owned any resource release them etc.) by placing necessary steps following found branch. You should remove and transfer the found modelentity (it is the original one) to appropriate place. At the end you should place a destroy step following the original branch or even transfer it to appriate place. It depends on your goals.
  26. gocken

    Pickers not avoiding colision

    For your first problem you can place transfer nodes at intersections of lines. By this way the vehicles have to wait each other. and the collisions will be avoided. For your second problem, (I assume that you are using workstation object) you should define an expression property to each modelentity (i.e., processingtime) then assign each modelentity a processing time from its probability distribution. Then while processing them (at a workstation object) set operation quantity as 1 and Processing Time as modelentity.processingtime.
  27. How can I schedule a randomly distributed death event for each entity, and pull them out of the system (or perhaps route to a "mortality" sink) if it occurs before they have already left? Somewhat similar to reneging, but I need mortality to be possible during a service, not only in queues. If an entity is removed from service, I also need the seized resources to be released. What I have tried so far: When an entity is created, I provide them with a state variable for TimeTillDeath, lets say exponential(2) hours. This is a real number, not a datetime. As they enter each queue, I set the reneg trigger as ModelEntity.TimeTillDeath subtract any elapsed time since creation, min 0. This works to model mortality while they are waiting for service, but not during a service. Any help is appreciated, KO
  28. First of all hi to everyone. This is my first post in this community, hope we can share some ideas. Currently im building a model that represents the feeding of a mixed model assembly line. One component of this processe is a picking procedure in a decentralized warehouse. I will share my ideas on the warehouse process and what I have accomplished so far, to receive some feedback of this is the best procedure or not. Problem Description: A rectangular warehouse, where there are various locations with diferent products in vertical shelves there are various products that must be picked and delivered to an AGV. In this warehouse there are three types of sequences that must be collected in a sequenced manner (e.g sequnces 1 -> sequence 2 -> sequence 3) each sequence have multiple picking lists incorporated. Picker cannot pass in front of each other as this will distrub the sequence chain that must be delivered to the AGV. Accomplished so far: The warehouse and the order which sequences are done, are as depicted in the figure attached. So basically consists of three sources that generate the three types of sequences, located in different places. Than the picker collects this parent entity and goes from location to location as specified in a given sequence table. Each location is a combiner where the parent entity (the one from the source) batches other entities that enter at the member input node (i.e the products to be collected). I was able to make the transporter being seized along the three sequences with the aid of the request same transporter simbit, and by seizing each worker at the combiner as the batching process is done. Problems: I have the workers follow "the network path if possible" and "avoid colisions" still the transporters are able to pass in front of each other (probably because at each combiner i have four diferente nodes, two from the combiner and two basix nodes). Is there a way to fix this? Second problem refers to the batching process time. I have the process time following a probalistic distribution function. But there are locations where more than one product is collected (i.e batch quantity >1). Is it possible to generate na independent random time for each product picked at the same location? At the moment I have the randomly generated time multiply by the batch quantity but this is not advisable. Thanks in advance, later I will try to post some prints of the model itself. For now i provide a very simple schematic representing the warehouse and picking sequences. Sorry for any bad spelling.
  1. Load more activity