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!



Popular Content

Showing content with the highest reputation since 06/25/2018 in all areas

  1. 2 points
    Hello, I have attached a model to demonstrate my approach to this problem. I utilized states and add-on processes to manage the ride capacity of the Vehicle, and a table reference to define the ride capacity required for each entity type. Thanks, Ryan Varying Entity Ride Capacity.spfx
  2. 2 points
    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
  3. 2 points
    Thank you .. this is amazing stuff. By the way, is it possible to import and export Process step as well?
  4. 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
  5. 1 point
    Power BI & Simio Webinar - May 2020 Enhancing your Simio Results using Power BI MORE INFO AND REGISTRATION About the Webinar Simulation modeling has many benefits, namely its ability to forecast and predict multiple scenarios. Simio does an incredible job of providing the user with incredible results, and Power BI enhances these results with useful insights and visualizations. This webinar will provide the benefits of using Power BI for Simio outputs, optimizing your analytics, and giving you a better understanding for decision-making purposes. What will be covered Overview of Power BI benefits with Simio Simulation models Real-world case study of a Simio project using Power BI dashboards Questions and answers for people attending the webinar More details Date: 28 May 2020 Time: 10:00 PT / 17:00 GMT Duration: 1 hour Location: Microsoft Teams (link on registration) Price: Free Hosts Jaco Botha Pr Eng, Managing Director, SE Marco Agas, Webinar Host, SET Presenters Nicolas Finn, Power BI / Simio Trainer, SET Hulda Viljoen, Simulation Engineer, SET
  6. 1 point
  7. 1 point
    since exclusion property checks the expression at the start of the simulation run to determine if this step should be excluded from the run my suggestion does not work. simply omit this suggestion:( and thus decide step before the tally step best suits your purpose.
  8. 1 point
    Please note that space is limited, click the link below soon to register: MORE INFO AND REGISTRATION
  9. 1 point
    To the best of my knowlegde every process can be enable or disable by using ProcessName.Enabled. You can assign this state variable true at the beginning of the three hour period (not a must but probabily using a timer element) and false at the and of the three hour period. I hope it works?
  10. 1 point
    yes, it works if the sink objects are in the course of these customer entities.
  11. 1 point
    simply increase your customer types as credit card and cash payers. For example, expand your table by includeing customer1creditcard and customer1cash, customer2creditcard and customer2cash, customer3creditcard and customer3cash? Also, rearrange their probabilities, sequences, etc. as well. Is it ok?
  12. 1 point
    Hi! Please keep all student competition related questions in the SI Student Competition Forum. While others can answer this question, that would take the fun out of the competition! If we feel it is a fair question, the answer will be supplied there.
  13. 1 point
    As we approach our final stage of our bachelor studies, it is necessary to write a bachelor thesis. In this context we are developing a Simio Plugin, which enables advanced model-management and more important, model-comparison. Our main objective is to provide the Simio Community a properly working Plugin, which improves the modelling process itself and the usability within large Simio-projects. What could you expect? Functionality We separate the plugin in two logical components. The first one is called Modelmanagement. The features of this component are the following: • Versioning models • Clone an existing model The interesting part on this feature is the clone mechanic. You are now able to create an identic clone of an existing Simio-model, which can be altered afterwards. This functionality is key to the comparison process. With this clone-function, each clone now represents a version of your base-model. The clones can be altered autonomically. It enables to test and experiment with the behavior of your model, without many workarounds. It may help you to even optimize your model. The second and more focused feature is the ModelComparer. Once you are done cloning and altering your models, this feature helps you to compare several experiments. The comparison isn’t only limited to experiments within one model, you can compare all the cloned experiments as well. Our model-comparison compares responses of several, different experiments. You can now compare all your clones to determine which one is the most efficient. What are we delivering at this point and why? Attached to this post you can find several files. To ease the installation and setup process of the Plugin, we also created an installer. The installer will setup the required changes and files for our Plugin. It is easy to use and enables the full functionality, like a normal software-installer. Second, we wrote a short manual to show you the features of the Plugin and illustrated it with pictures. Our goal is to gahter feedback as early as possible. Currently, we are in the middle of development and are eager to improve the tool even more. We ask you for your feedback, because it is very important for us to find out, if the tool is viable, how its usability is and if the provided functionality is even appreciated within the community. As we mentioned we are halfway through the development-process, the possibility is given, that some bugs or errors may occur. We also would be very pleased if you could take the time to report these and your experience with the tool and fill in the online survey. Your feedback is very appreciated! Link to the online Survey: http://30raqy.findmind.ch Thank you, Philipp Bütikofer Anthony Delay HSR - Hochschule für Technik Rapperswil Oberseestrasse 10 8640 Rapperswil ModelComparison.zip UserManual.pdf SimioToolsInstaller.zip
  14. 1 point
    ********************* FOR VERSION 191 AND LATER ******************************* In Sprint 191, a change was made to the Seize step's On Seized Process and the Release step's On Released Process which impacted the Token Associated and Context Objects. This change effects the logic in VehicleX. For use in Simio versions 190 and earlier, please use the files at the top of this thread. Attached is an updated VehicleX (now VehicleX3) for use in Simio 191 and later, as well as the updated examples using VehicleX3. VehicleX3 now will reject an Entity's Transport Request if an operator is not available for that vehicle. This prevents entities from seizing and waiting for an unmanned vehicle. *************************************************************************************** VehicleX3.spfx VehicleWithDriver_VehicleX3_Examples.spfx
  15. 1 point
    You can use seperate servers (each has 1 capacity) each represents individual firms. Create entities (raw products) via a data table where you should also include one column (a node property from object reference property) to represent where the created entity will be processed (as its destination). Then at the output node of the source object set entity destination type property to specific. Then set node name to Table1.NodeInstanceProperty1. The entities will be routed appropriately.
  16. 1 point
    Entities are prioritized in server according to the server Ranking Rule. Check my attached model. I set Entity1 priority to 1, Entity2 priority to 2 and told the server to prioritize the ModelEntity with the highest priority value. You can play with that logic to prioritize everything the way you want. entity priority.spfx
  17. 1 point
    Check my attached model. Is that what you're looking for? I created a Expression Property in Object2 and set its value to the Object1_1 state. State Transfer.spfx
  18. 1 point
    Hi Alb, What I would suggest is for you to use process logic to create your order entities rather than a source. The Create process step can be used to create entities just like a source, and you can put in logic that looks up the percentages. I would also suggest you use timers or perhaps a source to just create trigger entities that tells your model when to fire events (perform logic). For example, in your above case, perhaps have a source that creates an entity at 7pm, 7:30pm, and 8pm. These entities then trigger the process to be executed that decides the percentage of entities to be created at each time.
  19. 1 point
    I'm pretty sure paths accept only numerical values, but I see some alternatives: Change your entity's speed instead. Halfing the speed of your entity is the same thing that doubling the path length. Remove the path, set the transfer node Outbound Travel Mode to Free Space, and play with the Relocate Object user-defined step to change the position of your nodes. It is a wacky solution, but it might work. This add-in helped me when I had a similar problem before. It might help you too.
  20. 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
  21. 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?
  22. 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.
  23. 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!
  24. 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.
  25. 1 point
    place a delay step with a constant time (for example 5 minutes) in the same add-on process and examine the results?
  26. 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
  27. 1 point
    Do we have a newer version of ExtraLib ,with the release of Simio V11.........?Thanks
  28. 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.
  29. 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
  30. 1 point
    Desired speed means maximum speed. When there is nothing restricting the entity, it'll travel at its desired speed. If entity's desired speed is 1.4 and the path maximum speed is 2.0, the entity will travel at 1.4. If entity's desired speed is 1.4 and the path maximum speed is 1.0, the entity will travel at 1.0. Initial Desired Speed is a property. Every entity starts at this speed. You can change it mid-run by assigning a new value to the Desired Speed state. It is a constant speed, unless you code it otherwise somehow. Yes, unless the entity is restricted by the path maximum speed or slower entities blocking the path. Use the expression ModelEntity.Movement.Rate. ModelEntity.DesiredSpeed returns the entity's current maximum speed, not that instant speed. ___________________________________________ I tried to compile all my answers in a single model. Check the file attached at my post. EntitySpeed.spfx
  31. 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
  32. 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?
  33. 1 point
    examine AddAndRemoveServerCapacity simbit. you will find a similar logic but you have to extend the logic by including worker object.
  34. 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.
  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
    you can use a search step in an appropriate process (you can create a new process or use an add-on process where needed). In the search step you should search the queustate of modelentity.batchmember. Here you can set a match condition if required. If you do not want to set a match condition the search step will search the first 9 entities in the batch (I assume that the batch quantity is 30. If it is a different value Math.Ceiling(Combiner.BatchQuantity*0.3) expression will be evaluated and will be round up the next integer. (You can use math.floor function as well.) Then in the assign step set the required statevariable of modelentity to the new value.
  37. 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....
  38. 1 point
    Jay, I have attached the revised model. If you examine the model I have followed somewhat different way to achieve your goals. Resource (1).spfx
  39. 1 point
    I have taken a glance at your model. At first look your timer element needs to be revised and you should not change the capacity a resource via a user-defined state variable. Use resource.currentcapacity state variable. I have revised your model and it looks like working. Due to having no more time I could not deeply analysed. see attached file. Resource.spfx
  40. 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.
  41. 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.
  42. 1 point
    I have changed the logic of the server 2's add-on process you included and add an additional search condition to output@server1. Also, delete all others. It seems it works like you want. see how it is? if there are any other issues do not hesitate to ask further pls. RoutingProblem_Myway.spfx
  43. 1 point
    I have created a simple model that I believe may have solved this problem. I used a dynamic selection rule of largest value first. I then multiplied the entity priority by the time in system. This expression can be extended to include other factors like the equation in the OP. Visually watching the model, it does as expected. If anyone has any suggestions or a better way to model this, feel free to share! I attached the example model. Example Model.spfx
  44. 1 point
  45. 1 point
    Hello everyone, I kindly request your help, i would like to change my software version, from 32 to 64 bits. Do i need to uninstall my SIMIO software? I want to do this because with my actual version some of my models do not run. I highly appreciate your comments on this. Greetings!!!
  46. 1 point
  47. 1 point
    This script will combine output files from Experiments that use the Write Step. It will average the cells across all selected sheets, and is designed to work with .CSVs that are the same shape. In R Studio, the code needs to be ran as "source" y = 1 x = 1 fileIterate = 1 readline(prompt="Press Enter To Select Files: ") fileSave <- choose.files(default = "", caption = "Select files", multi = TRUE, filters = Filters, index = nrow(Filters)) readline(prompt="Press Enter To Select Output Folder: ") outputFolder <- choose.dir(default = "", caption = "Select folder") fileName <- readline(prompt="Enter Output File Name: ") buildFile <- read.csv(fileSave[fileIterate], header = TRUE, sep = ",") fileIterate = fileIterate + 1 while(fileIterate <= length(fileSave)) { holderFile <- read.csv(fileSave[fileIterate], header = TRUE, sep = ",") while( y <= ncol(buildFile)){ while(x <= nrow(buildFile)){ buildFile[x,y] <- mean(holderFile[x,y],buildFile[x,y]) x = x + 1; } y = y +1; x = 1; } x = 1 y = 1 fileIterate = fileIterate + 1 } fileName <- paste(fileName, ".csv") outputTheFile <- paste(outputFolder, fileName,sep = "\\") write.csv(buildFile, file = outputTheFile)
  48. 1 point
    I understand why this is confusing. I think the main confusion arises because your station has a capacity greater than 1. The Simio paradigm is that a resource with capacity > 1 is still a single resource with a single Resource State, but just has the ability to process more than one entity at a time. So if any unit of the resource is in use the resource state is busy, if all units are idle the resource state is idle. With the above paradigm in mind, the ResourceState statistics are not describing individual entity interactions, but rather are describing the transition of the entire resource (all units combined) between those states. The resource enters the Processing (busy) state when 1 or more units become busy. It leaves that state and enters the Starved (Idle) state when all units become idle. The average time in spent in that (1 or more units) busy state was 55.5133 minutes per transition. This accounted for 6994 minutes total or 69.39% of the time. The resource transitioned between the busy and idle states 126 times. By contrast, the Processing (station) statistics are telling you about the entities that enter and leave the processes. There were an average of 1.28 entities in the processing station. The average entity was "held" (processing) in the Processing station for 25.99 minutes. 501 entities were processed. You didn't ask about Capacity utilization, but that also can be tricky to interpret when capacity > 1, especially if the capacity varies over time (which yours apparently does not). Perhaps the easiest to understand is UnitsUtilized. This tells you that of the 10 units available an average of 1.289 and a maximum of 8 were in use. UnitsScheduled is the same type of statistic, but records how the number of units scheduled to be available varies over time. The Scheduled Utilization is the most common statistic telling you basically the ratio of the above numbers. It is a little more complicated than that, but that is beyond this topic.
  49. 1 point
    The Combiner object in the standard library assumes that you have a parent entity representing a box or container and members representing the parts that are combined into the parent. In some cases you don't want to have a parent, you just have a number of entities that you want to temporarily join together and process as one. The attached project contains an object of type Node that represents a very simple Combiner and a TestModel to illustrate how it works. The node simply asks for a Batch Size and then holds the incoming entities until that batch size is reached. It creates a "normal" batch so it can be used with the Separator as long as you treat all outbound entities as the same. CombinerNode.spfx Requires Sprint 5.80 or later.
  50. 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.
  • Create New...