Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 07/01/2018 in all areas

  1. 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
    3 points
  2. This post contains additional files associated with the paper "Agent-base modeling and simulation in Simio" by Thomas Kehl. The additional files include the original paper, an installer for the Simio Agent Library, the Simio Agent Library user extension, and further documentation. These files were created by Thomas Kehl and are not endorsed or supported by Simio LLC. Note also that these files were published with the paper in 2018 and might be out of date. 1585821475_SimioAgentBasedModeling-ThomasKehl.zip
    2 points
  3. Pls refer to below paper for integrating simio and M/L algorithms. very good read. SIMIO和机器学习算法的整合框架【AI】Aston大学Andrew Greasley博士.pdf
    2 points
  4. 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
    2 points
  5. 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
    2 points
  6. Thank you .. this is amazing stuff. By the way, is it possible to import and export Process step as well?
    2 points
  7. 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.
    2 points
  8. People often want to model two or more vehicles or entities moving together. There are a few components to this: 1) Seizing the resource appropriately - can be done in processes, but often best done within the vehicle object to make the modeling easier. Here, a vehicle has 4 properties added to support use of an operator. 2) Animating them moving together - the picture below shows use of a second queue animated on the custom vehicle. 3) In some cases, you also need the "driver" to be shown moving. The Attached Animation Speed illustrated below, accomplishes that. I have attached a model that uses a custom vehicle object to model a wheelchair which is "driven" (pushed) by a person to pick up a patient. *********** FOR VERSION 190 AND EARLIER ************************************* VehicleWithDriver.spfx You could use the same approch, possibly with just animation changes, to model something like a truck or forklift that requires a driver. In fact, I just added a second model to that same project that illustrates use in manufacturing (e.g. a lift truck and driver).VehicleWithDriver.spfx VehicleWithDriver.spfx *********************************************************************************** ************** FOR VERSION 191 AND LATER *********************************** VehicleX3.spfx VehicleWithDriver_VehicleX3_Examples.spfx For more information on the update, see the post below. ***********************************************************************************
    1 point
  9. Check the SimBit project called "Neural Networks" for a detailed example of this new feature.
    1 point
  10. Good to know Simio has embeded ANN in new sprint
    1 point
  11. Hi Alen, I have attached a model with two different approaches to this question. 1. RateTableApproach - the arrival data is stored within a Rate Table. Note: The Rate (events per hour) is influenced by offsets from when the model begins its run, not by the hour of the day. For example, a model begins its run at clock time 7:00:00, the first entry with a Starting Offset of Day 1, 00:00:00 and Ending Offset of Day 1, 01:00:00 would actually correspond to clock time 7:00:00-8:00:00 and not 00:00:00-01:00:00. 2. ProcessLogicApproach - the Arrival Mode is 'Interarrival Time' which is turned on and off via an Add-On Process. Note: You will need to set the Delay step up to correctly account for the clock time you wish to delay before turning on/off arrivals. All the best, Caleb SourceWorkingAsPerTheWorkScheduleForServerAndWorker.spfx
    1 point
  12. A demo model on how to create sub-classed object with moving part, collect stats and show on dashboard. Have fun! ParkingEntryAndExitBoomGates.spfx
    1 point
  13. 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.
    1 point
  14. Hi Cam.laboy, I mean you have to define new customer types and include sink objects into their sequences. I attach a picture of how to revise probabilities of these new customers. Hope it helps.
    1 point
  15. 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?
    1 point
  16. To answer your question specifically with regards to the MultiEchelonSupplyChain example, the OnReplenishOrder process that you see in the process logic of the data table driven example is automatically executed by the Inventory elements when the inventory detects the need to replenish. Go to Definitions -> Elements and click on the Inventory elements and you will see where that process is being referenced. The ShippingReceivingLogic process is being executed when an entity enters any of the BasicNodes placed in the Facility View. For example, click on the DistributionCenter node and in the Add-On Processes -> Entered property you will see the name of that process befiling referenced. The TryFulfillOrder process is executed by the OnCustomerOrder process using an Execute step, which is in term triggered by a customer order arrival. Note that If you are trying to figure out where the name of a process is being referenced, you might go to Project Home in the ribbon UI and go to the Search window. And then search for the name of the process in the model, and it will show you the locations where it is being referenced.
    1 point
  17. Hi Alberto, I recommend you take a look at a standard Vehicle object and compare the VehicleX3 to see the updates that were made. Only 6 new Properties were added to the standard Vehicle to make VehicleX3. The numerous other Properties were inherited from the Vehicle and were not changed. There are other small changes for the States, Events, and Elements as well. Doing a comparison between the standard Vehicle and VehicleX3 will be the most beneficial way for you to learn. Additionally, all the updated Process Logic in VehicleX3 has been colored. Any grey process steps were inherited from the standard Vehicle. Happy modeling, Liz
    1 point
  18. 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.
    1 point
  19. 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.
    1 point
  20. Hello, Would you be able to provide background on your use case? My first response would be no, but I"m curious what your use case is. I believe we should be able to find a solution (perhaps using a function) if you can provide a little background on the use case. Thanks, Jason
    1 point
  21. This option was released on Sprint 191 on June.
    1 point
  22. 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
    1 point
  23. 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
    1 point
  24. 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?
    1 point
  25. 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.
    1 point
  26. Simio has a number of enabling features that are not widely known. When you save a project file, most people use the .spfx extension which is a compressed binary file. But if you would like to take advantage of a version control software (VCS), you generally want the VCS to manage versioning and file compares and file compression, itself. Simio has a multi-file project format referred to with a .simproj extension, which is designed with exactly that purpose in mind. Ths format involves a single key simproj file and a related set of folders that contains the uncompressed version of all the included components. This allows VCS to recognize when a small change to your model is made that it only needs to save that small change and not the entire model. While this works with any VCS, internally at Simio we use Tortoise SVN (http://tortoisesvn.net/) which works quite well for us. Simio also has some built-in features to help track and maintain model/library versions. If you right-click on an object (a model) and select "Properties" you will see a set of model properties for that object including Version. This version number is referenced when loading this object as part of a library to help evaluate if an object has been changed and if the change should be accepted (more on this below). Some additional model properties including Description, Keywords, and Categories. These are available in your model, plus they are available externally. For example the Sample SimBit Solutions interface uses these properties to help you quickly find a SimBit of interest. Some of them are also used in the Model Documentation Report. Speaking of which, the Model Documentation Report is designed to provide a quick way of examining all non-default parameters in your project. It can be useful to instructors evaluating assignments or as a way to record or share a snapshot of your model data. If you click on your Project name in the navigation window, the click on Models and the Edit ribbon you will see various options for subclassing, cloning, and copying library objects. These options, while subtle, give you greater control over how the lineage of an object wil be handled. You will also see options on this ribbon to protect your object from viewing and editing, and also to describe changes that have been made with the latest version.
    1 point
  27. 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
    1 point
  28. You can sum the "NumberOfRollContainers" whenever a member entity enters the combiner object by using "on member entering" property under "state assignments" section. Then, set this total to the "TotalRollContainers" state variable of the parent objet by using "before exiting" property of combiner object.
    1 point
  29. Is this what you are looking for? As attached! Best regards/Jeff Model_totalRollContainer_JZ.spfx
    1 point
  30. Have you tried State == Nothing ? You could also create a decoy object and assign it on run innitialized.
    1 point
  31. 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
    1 point
  32. You can assign each entity an individual ModelEntity.Priority and set your Combiner to only match entities with the same priority. Check my attached model to see an example. Match Priority.spfx
    1 point
  33. 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!
    1 point
  34. 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.....
    1 point
  35. 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.
    1 point
  36. 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.
    1 point
  37. 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
    1 point
  38. Hi Team, Good morning, I have a question that I need support. On my simulation under Planning tab then Entity workflow I see the Orders that I created, but also some other items that I don't know where those came from. that is using resources. for example, I highlight on the picture attached on red color. OrderWIP01 is waiting for the grinder [1] on the finish1_1, when I looked for it, I saw that is on Phx4.89. What is that Phx4.89? Phx4 is one of the names of the entities. but why does appear as entity and not as a Order? At the moment I looking for why to increase the output, as the simulation is giving me 17 unit per shift, but engineering said that it should be around 20. I want to make sure the simulation is done correctly. Thanks in advance. Regards, Htatton Arm-boom-draft-R1-test-092718-Test-Scheduled-3tacking.spfx
    1 point
  39. 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.
    1 point
  40. I think "TheCombinersName.MemberInputBuffer.Contents.AverageTimeWaiting" is the expression you are looking for. -Adam
    1 point
  41. Is there an example or a SimBit which shows how to do this?
    1 point
  42. until
    Visit us at Booth #29!
    1 point
  43. It seems the best way to achieve to what u want is to define three storage elements (called barstorage, gridstorage, sheetstorage) just before the combiner object or combiner node. Whenever an entity is put into any of these storages check the the condition u defined (i.e., exactly 4 bars, 4 grids and 8 sheets are exist in the individiual storage) is valid. If the condition is satisfied remove appropriate number entities (exactly 4 bars, 4 grids and 8 sheets) from appropriate storage by using search and remove step and transfer them to combiner object from standard library (or even combiner node object you get from forum) to combine them all. Else wait for the condition to be met. By this way you are able to collect some extra statistics from storages (averge waiting times and average number of each materials in the storage etc...).
    1 point
  44. 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)
    1 point
  45. 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
    1 point
  46. 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).
    1 point
  47. First of all, I won’t argue with you at all – I would also like to see Simio have more intuitive behavior in our Standard Library objects. But perhaps my explanation below will make it a little bit more intuitive. But the good news is that, unlike other products that limit the behavior to one of a few predefined choices: 1) In Simio your choices are unlimited - it is not too difficult to make it behave exactly as you want. The OnCapacityChanged add-on process (or related processes like On Shift and Off Shift) can use the Interrupt, Suspend, and Resume Steps as illustrated in several SimBits. 2) If you want some behavior to be your default behavior, just create a custom object with that behavior. If you think about the built-in behavior as follows it might help… PARADIGM: A resource of capacity > 1 still represents a single resource, but just has the ability to process multiple concurrent entities. But it still only has a single state (Idle, Busy, Failed, …), e.g. if it is failed, the entire resource is failed (all capacity units), and if it is off-shift (e.g. capacity=0) all units are off-shift. REDUCING CAPACITY: When capacity available is reduced below the current number of busy units, there are many possible valid behaviors depending on your system. The default behavior of our standard library is simply to finish working on the current entity, and then take the unit off-line. But you can use the tools mentioned above to change that default. For example, you might implement some behavior that says “if I am within 10 minutes of completion, go ahead and complete it, otherwise record its remaining time, add 5 minutes of restart time, then put it at the beginning of the waiting entities”. OFF-SHIFT: When a resource is taken off-shift (capacity=0) all units are off-shift. Current Standard Library behavior causes all processes to be suspended (Suspend/Resume Steps) while it is off-shift. This essentially means that everything is “frozen” in place. The entities are not removed from the resource, but rather just suspended so no progress is made during the off-shift period. When the off-shift period is complete (e.g. capacity > 0) then all the entities resume exactly where they left off. Unfortunately that last phrase is what causes the unexpected behavior when you suspend at one capacity and then resume at another lower capacity. You are essentially combining the two above paragraphs. You suspend all activity while off-shift, then after you resume, you will behave as though you had just reduced the units in service, which under the default behavior says keep working on the entities in process until they are completed. In your case, it sounds like you would want to add content to the On Shift process so that if capacity is set to less than the number busy, that you would want to Interrupt the remaining entities and send them back to the entry queue. And then perhaps build that behavior into a custom Server object and use that object routinely.
    1 point
×
×
  • Create New...