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!


Popular Content

Showing content with the highest reputation since 10/18/2018 in all areas

  1. 2 points
    Thanks for visiting our Simio User's Forum. This forum has been created to: 1) Share information about Simio, 2) Provide a way for users to communicate with each other and with us, and 3) Provide a mechanism for us to to hear your ideas so we can make the best product possible. Guests If you are Guest (visiting without having registered), you are welcome to browse all our public forums, but we request that you first join our Simio Insiders group before you view the private areas or can post on any areas. Simio Insiders I encourage you to become more involved as a Simio Insider. Insiders will have full access to browse and post in an extended set of forums available just for you. You will find more information on this in Why Become a Simio Insider. There is one more category of membership that is a little harder to achieve. Simio Team Members (employees) are identified as such when we post so you know that we are providing the straight scoop. (This is not to imply by any means that we are always right ) Finally, if you have any other questions about how the forum works, I encourage you to consult the "FAQ" item from the main Forums menu (top center). Again, welcome to the forum. I am always anxious to hear your feedback (positive or negative) and any ideas on how we can improve this forum or our products. Email me anytime using dsturrock at simio.com
  2. 1 point
    I've include my suggestion in the model attached. I assigned low priorities to each vehicle types. Then, select vehicles according to these priorities. It seems it works? SmallModel.spfx
  3. 1 point
    Hello Pascal! Thank you so much for your reply! I tried the method you proposed this weekend and it worked quite well! It fixes the issue with updating the table too! So I'd like to thank you and @GFurtado for your replies! Without your help I'm sure I wouldn't have being able to fix this! Have a great day! Best to both! George
  4. 1 point
    Hi George, I know the normal ways, to create an entity from a table are: 1) Use a timer with the date/time table for a trigger for a own process or 2) A source with the arrival table option. If you want to create entities, maybe you can make a loop process like GFurtado with an Read-Step/Excel-Step and then you can use the Create-Step of Simio. Then you can check with an Decide-Step "TimeNow >= value" for example and create your Entity. With this option you can use FastForward too. With an lower delay time it is near the real time. Maybe this could be a solution for your problem. Because, then you dont need a third party tool to click on import. I checked the Simio API and I dont find something about a trigger for the Simio buttons or a button click event, what we can use for the problem. It would be nice, if there is an API to "use" the button click processes. For example, to import one or all tables again. Maybe a professional Simio API developer know more and can write here. Have a nice day! Best regards Pascal
  5. 1 point
    Hi jord41, Simio loads the bound tables once during the initialization in the Simio tables. Data access requires a lot of computing time. (More for writing as reading). I see that you only have 1 column of integer values. My recommendation is that you do not import the table into a Simio table. It's best to create an integer or real state of type vector. Then you use e.g. the Read-Step or the ExcelRead-Step. In conjunction with a timer or the sample example loop of GFurtado you can load the data at intervals. I think that this could be a solution. At least that's how I would do it if I had to work with real-time data. Normally, such real-time data is written to a SQL database by a PLC or something like that. Then you can use the SQL steps anytime in Simio. Best regards Pascal
  6. 1 point
    At some point I would start looking for a SCADA system, write it in Python or anything outside Simio. A Simio Engineer would be better suited to help you, but I still believe you could build this inside Simio (maybe through an API?). I manage to build a very ugly version of this that kinda works. It's not real real-time, because I still need to click on the manual import button (I don't know how to help you with this). I set my source's Arrival Mode to On Event; Create a process with a Decide step that checks if the table received a new value: If it received a new value, trigger SourceEvent; If it didn't, check again a second later. As I said, it's not very elegant, but I hope it inspires you to find the right solution.
  7. 1 point
    Updating the data mid-run isn't a good simulation practice, unless you're building some gimmicky application. But I manage to work this out with this little guy in the Table Ribbon. Have you tried it yet?
  8. 1 point
    Drag and drop an ModelEntity into the facility layout. Then, select ModelEntity and see "Maximum number in system limit" property under "Population" section of properties window. Set this property as how many entities you desire throughout the simulation run.
  9. 1 point
    I am trying to look for entities, of certain types, in a queue of a server to transfer them to a server. I am using the following: Collection type: QueueState Queue State name: Server1.AllocationQueue Search Type: Forward Match condition: ModelEntity.EntityType.Is.productA || ModelEntity.EntityType.Is.productB Search Expression: EMPTY. I know for a fact that the queue does contain entities of types ProductA and ProductB but the search step cannot find them. What am I missing here? Thanks!
  10. 1 point
    Change animation by setting a number or a expression on your object's Current Animation Index property. You can check its symbol available animation by right-clicking your object and selecting List of Animations of Active Symbol. In the Drawing tab, draw your wall using polyline or curve, set the Object Height and apply the texture by clicking in the wall. Check these two attached images for a better understanding.
  11. 1 point
    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
  12. 1 point
    A sample is attached. Time In System.spfx
  13. 1 point
    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.
  14. 1 point
    No, it seems your add-on process is working correctly. How do you transfer the entities to the sink? It seems there is not time advancement between creation and disposing the entities.
  15. 1 point
    place a delay step with a constant time (for example 5 minutes) in the same add-on process and examine the results?
  16. 1 point
    Hi Tom, thanks for your help! I've found a solution on my own in the meantime (probably not as sophisticated as yours but it works well). I additionally modelled a small version of the lift itself and created a wait process. The triggering event is "vehicle exits Node X". I used the process for my servers ("after processing"). So whenever a chair exits the node, the gates will open. This is actually quite close to reality where the gate opening interval is not fixed but depends on the speed of the lift and the point in time when an empty chair arrives. All the best, Nico
  17. 1 point
    Hi Nico, I haven't tried this out, so I can't guarantee this to work, but you could specify a Timer that goes off every 7.2 seconds. Additionally, you'd create a process that runs on the triggering event with the name of that Timer. This process Assigns a new value of 1 to Schranke1...Schranke6.CurrentCapacity. I'm unsure whether a delay is required for the entities to move through the system, but I'd try adding a Delay of Math.Epsilon after this Assign step, to ensure they do. Then, with a new Assign step, change the CurrentCapacity of Schranke 1 through 6 back to 0. You may have to change the Initial capacity of all your gates to 0 in the Facility window. Also, make sure you change the Off Shift Rule to finish work that has already started, on all your gates. Hope this works. Tom
  18. 1 point
    OutputBuffer is 0, ModelEntity balked due to being blocked into Source.Output Buffer.
  19. 1 point
    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.
  20. 1 point
    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
  21. 1 point
    That might sound counterintuitive, but entities are alternating between 0.0 and 3.0 m/s in a discreet manner. They don't have acceleration or deceleration. They are not slower, they are full-stopping before entering the node. (Difference distance/diference time) = average speed. Movement.Rate returns that instant speed, which are either 0.0 (full stop) or 3.0 (desired speed). You can verify this by looking at the label attached to the entity. I'm not experienced enough in Simio to help you creating an entity capable of smoothly decelerate, but you could calculate the average speed between two nodes (check the attached model). EntitySpeed2.spfx
  22. 1 point
    Check the server property Ranking Rule. This property determines the order entities are processed. Look at the attached model. I assign the Entity.Priority when it cames out of the sources and set my server to rank entities based on the Entity.Priority expression. I hope it helps. EntityPriority.spfx
  23. 1 point
    Yes, you can certainly model this in Simio, and can easily make it terminating. I would suggest reviewing any simulation textbook for verification and validation techniques. The general answer for number of replications is to run for a few (5-10?) replications and look at the half-width on your key output measures. If the HW is too wide, then run additional replications until all your key measures are at the precision you need.
  24. 1 point
    Actually I want to include input parameters in there as well.... Thought about writing some process logic to read through a table on run initialized, but I can't use a state for the rows to specifically look at for the starting/ending index for table value input parameters.
  25. 1 point
    Hi all, I met some questions in building the model. It seems a very general quesiton but I didn't find any solution from internet... I'm building a general workflow model. I want to decide the quantity of a server to optimize the workflow. I want to use experiments or optquest to get the 'best' number for each server. If I set the capacity type as Fixed, then I can set the initial capacity as ''referenced property'', then I can use this as control in experiments/optquest. However, I have a work schedule for each server now which means I couldn't set the capacity type as Fixed. And then I couldn't set capacity as ''referenced property''. I don't know how to control this capacity in my experiments/optquest. I know I can change the 'value'(which means the capacity) in workschedule table. But I can not change this number flexible in experiments... Or I don't know how to set this value as ''referenced property'' . Is there anyone who could help me with this? Thanks a lot!
  26. 1 point
    Maybe you could create several property of type 'Interger' and reference them in the value row..like below... and in the experiments you should be able to see them as controls to optimizer. Best regards/Jeff Zhou
  27. 1 point
    Dear Sean, you can create a new referenced property on WorkSchedule property of Server. and in Experiment windows reference to various pattern-based workschdule name. Best regards/Jeff
  28. 1 point
    You need to re-assign the x and z coords of the node during run time (i.e. Node.Location.X and Node.Location.Z).... Best way to do this is with a table with an object reference property.....
  29. 1 point
    We have an opportunity for an intermediate to advanced modeller to join us for both a Simio and Operational related role. Relocation to Australia/New Zealand is a prerequisite with Visa sponsorship provided. Please note that a minimum contract duration will be in play. Should you be interested, please pm me, or send your resume with contact details to mark@masterschedulingsolutions.com All conversations will be treated as confidential. Mark
  30. 1 point
    Heya, At the moment, I got a model in which trucks are following each other, and able to catch-up...till they reach a certain distance between each other. When they reach the desired distance I managed to set the same speed by using the following assign step: ModelEntity.Movement.Rate, new value: ModelEntity.NextEntityAheadOnLink.Movement.Rate. But whenever the entity ahead leaves the links, I obvioulsy get an error. So I would like to know how I let this entity check if there's any Entity ahead? Thanks in advance :).
  31. 1 point
    why do you use source? In Workstation 1_exited step you can just increase the currentrownumber by one using an assign step and use a create step just after this assign step, set its properties using any table (and also currentrownumber state variable). and transfer this entity to the appropriate place. you do not need to use source step?
  32. 1 point
    examine AddAndRemoveServerCapacity simbit. you will find a similar logic but you have to extend the logic by including worker object.
  33. 1 point
    1) You can find what the save index value means by trial and error. Assign this value to a state variable and place a breakpoint onto the search step. Then, when simulation stops at that breakpoint check the state variable's value. 2) you can use match conditons sequential by using "&&" and "||" mathematical operators. For example, a) match condition with "&&": candidate.modelentity.color="red"&& candidate.modelentity.timecreated<500. The search step will found a modelentity when the expression written for match condition evaluated to "true". Fot match condition to be "true" both conditions have to be "true" (the value of candidate.modelentity.color="red" must equal to 1 and the value of candidate.modelentity.timecreated<500 must equal to 1). If not then the match condition will be "false". The search step can not found any modelentity. b) match condition with "||": candidate.modelentity.color="red"|| candidate.modelentity.timecreated<500. The search step will found a modelentity when the expression written for match condition evaluated to "true". Fot match condition to be "true" one of the conditions have to be "true" (the value of candidate.modelentity.color="red" must equal to 1 OR the value of candidate.modelentity.timecreated<500 must equal to 1). If not then the match condition will be "false". The search step can not found any modelentity.
  34. 1 point
    a! You may refer to Simbits ‘serverusingtasksequcencewithdatatables_sequencedenpendentSetups
  35. 1 point
    If the entity is created (similar to the Bicycle Assembly example in Simio) using an arrival table where the arrival time is specified in the table, the entity will automatically be assigned the associated row in that table. To assign a row reference to an entity without such logic, you would have to have the entity enter an add-on process when it is created and then use the SetRow step to assign the entity an associated row in a given table. The GlobalCurrentRowNumber you mention above could be used as the RowNumber assigned for the entity within the SetRow step, provided there were no conflicts with relational tables.
  36. 1 point
    for your kind reference Model-Example3 Setup.spfx
  37. 1 point
    After testing a simple rectangle, I see that I can apparently only stretch textures on something like a box? Is this due to the UVW map of an object?
  38. 1 point
    Stations or storage queues....stick the base of the robot in a station or a storage queue that is situated inside the subclassed transporter....
  39. 1 point
    Classic age old problem that has been the source of many a wasted hour and frustration.... Try candidate.ModelEntity.EntityType.Is.productA || candidate.ModelEntity.EntityType.Is.productB Hope this helps...
  40. 1 point
    You asked for "a way to start/stop timers on a specific entity without creating a bunch of different events". As I understand it, Enable is just a switch that stops/starts the Timer clock. It has nothing to do with triggering events and does not require any events. So if you set a timer to fire in 60 minutes, then after 10 minutes disable the timer, the timer should fire its event 50 minutes after it is enabled.
  41. 1 point
    Is there a way to start/stop timers on a specific entity without creating a bunch of different events? The potential problem I see is that the reset timer event is general and would require a bunch of individual events.
  42. 1 point
    Thank you .. this is amazing stuff. By the way, is it possible to import and export Process step as well?
  43. 1 point
    Visit us at Booth #29!
  44. 1 point
    Interesting. But what does that mean in terms of being able to collect the cumulative "cost" at any point in time or by any specific resource through the use of a state? Is that just not possible?
  45. 1 point
    MultiFailureServer.spfx [/img] in response to the above thread: http://www.simio.com/forums/viewtopic.php?f=1&p=9187#p9187
  46. 1 point
    Please see attached. AWModel v7.spfx
  47. 1 point
    I always wanted an easy way to make my models look tidy. One of our developers created this add-in which can align and evenly distribute nodes or objects added to a list. I think usage is pretty easy and will help in building models with many nodes etc. Feel free to use it as a early christmas gift from LOGIO. SimioAlignAddon (2).rar Would be nice if someone in SIMIO will integrate the code into standart product in future, so we can just select multiple objects and align with rightclick. Petr
  48. 1 point
    Create a new project, go to ProjectHome ribbon, click load library button. Then, find and select your own model, simply click open to load it into Simio. You will see your model components (i.e., objects from your own library) at left with the name of your library (custom library).
  49. 1 point
    Simio is a simulation modeling framework based on intelligent objects. The intelligent objects are built by modelers and then may be reused in multiple modeling projects. Objects can be stored in libraries and easily shared. A beginning modeler may prefer to use pre-built objects from libraries; however the system is designed to make it easy for even beginning modelers to build their own intelligent objects for use in building hierarchical models. An object might be a machine, robot, airplane, customer, doctor, tank, bus, ship, or any other thing that you might encounter in your system. A model is built by combining objects that represent the physical components of the system. A Simio model looks like the real system. The model logic and animation is built as a single step. An object may be animated to reflect the changing state of the object. For example a forklift truck raises and lowers its lift, a robot opens and closes its gripper, and a battle tank turns its turret. The animated model provides a moving picture of the system in operation. Objects are built using the concepts of object orientation. However unlike other object oriented simulation systems, the process of building an object is very simple and completely graphical. There is no need to write programming code to create new objects. The activity of building an object in Simio is identical to the activity of building a model – in fact there is no difference between an object and a model. This concept is referred to as the equivalence principle and is central to the design of Simio. Whenever you build a model it is by definition an object that can be instantiated into another model. For example, if you combine two machines and a robot into a model of a work cell, the work cell model is itself an object that can then be instantiated any number of times into other models. The work cell is an object just like the machines and robot are objects. In Simio there is no way to separate the idea of building a model from the concept of building an object. Every model that is built in Simio is automatically a building block that can be used in building higher level models.
  50. 0 points
    Any additional thoughts out there?
  • Create New...