Leaderboard
Popular Content
Showing content with the highest reputation since 07/01/2018 in all areas
-
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 Forum & Insiders | Simio. 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.com5 points
-
3 points
-
Hello, I am trying to use git to track changes when working on Simio projects collaboratively. For this I am saving the project as *.simproj and the resulting file and folder structure looks good. But there are too many time stamp changes that make it difficult to track the "important" changes. For example, I only changed the location of the DefaultEntity in the model and hit save. The resulting changes are shown in the attached screenshot, with 20 files shown as changed. The main changes are related to the time stamp. Is there a way to configure Simio such that fewer files will be affected by each change? Thank you. Annika2 points
-
Hi Annika, Check out the Support Source Control option in the Project Properties. (Right click the project in the Navigation Window to access Project Properties)2 points
-
Thanks Devdatta, That's a great contribution.2 points
-
Simio’s neural network implementation allows the import and export of ONNX files, which ensure that Simio is compatible with many machine learning frameworks. This format is well-documented, and there are many third-party packages and applications that can help you convert machine learning models to/from ONNX, or to open and view ONNX files. The attached document provides a basic summary for several of these packages, including tensorflow-onnx, onnx2pytorch, and Netron. Please note that none of these packages are affiliated with Simio, so any issues or limitations of these packages can be discussed on the package’s GitHub page. ONNX Format Utilities.pdf2 points
-
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. ***********************************************************************************2 points
-
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.zip2 points
-
Pls refer to below paper for integrating simio and M/L algorithms. very good read. SIMIO和机器学习算法的整合框架【AI】Aston大学Andrew Greasley博士.pdf2 points
-
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.spfx2 points
-
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 Pascal2 points
-
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.2 points
-
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!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. Mark2 points
-
Thank you .. this is amazing stuff. By the way, is it possible to import and export Process step as well?2 points
-
Is there an example or a SimBit which shows how to do this?2 points
-
We would like to let everyone join Simio Insiders, but since some of the topics discuss unreleased competitive advantages, you must first agree that you won't "borrow" Simio ideas and share them with our competitors. If you can agree to that then please request membership in Simio Insiders at our signup page. Note that free emails such as hotmail and yahoo may not be accepted. We will contact you when your request to join Simio Insiders is approved. Welcome to the group.2 points
-
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
-
Updated version where slug conveyor can be used as a standalone slug build conveyor. Set the Merge property on the conveyor to False to use as standalone conveyor. Ending node for slug section should be a slug node. Make sure that the initial traveler capacity of the slug node should be 0. ConveyorLibrary _V2.spfx1 point
-
This is problematic in Simio because Simio considers only entity length (not width) and only when on a Path or Conveyor. I think the first thing to do is fix the nose to tail problem. If you happen to use Conveyors to model this, there are built-in features to manage spacing while stopped and different spacing while moving. But unfortunately Conveyors are limited to a single direction, so are perhaps not appropriate if this is a bi-directional taxiway. If you are using Paths, you can fix this by making each plane longer when you draw it. For example, if you are drawing a plane that is 50M long and you want it to stay at least 10M behind the plane in front of it, place a nearly invisible dot about 10M in front of the plane's nose, making the total plane length (including safety spacing) be 60M. Although Simio will still put the entities nose to tail, there will be a 10M safety spacing between the physical planes. The problem of conflict at merge points is a bit more tedious to fix. I'd recommend a resource-based approach, like illustrated in the SimBit in Merging Conveyors Controlled by Gate. You can use this approach even when using Paths.1 point
-
So lets say task B is dependent on Task A, hence Task A has sequence value 10 and Task B has sequence value 20 (Task A preceeds TaskB). Task A branch type should be conditional and for the condition formula should be written in to the "condition or probability" fieldç For Task B enter the processing time and other data as usual. If the auto-cancel trigger is set to "All immediate predecessors cancelled" (as it is by default), Task B will be cancelled if the condition for Task A didnt return true value. Hope this helps1 point
-
To make an entity wait until the runway is free what you could do is set the Initial Traveler Capacity of the Runway path to 1. This way entities will wait at the node before entering the path. I did not understand the first question, but if you need entities to visually appear behind one another, set Allow Passing to False on the path. Alternatively, you could use conveyor instead of path to make entities allign and respect some distance. Hope it helps.1 point
-
Well, first thing, you don't need your entities to be bouncing between the output and the input of your server like that. If you want to use it as sort of storage, set both the processing time and the capacity to infinity. After that, at the moment that the parent entity enters the combiner "Parent Entered" you could search the queue of your storage using a search step with something like "Server1.Processing.Contents", with the condition of "Candidate.ModelEntity.State == ModelEntity.State", release the server and transfer what have been found to the output. You need to take some care on some situations, like what if the parent entity arrives first at the combiner then the member at the storage? And some care with batching quantities aswell. But I think you can handle it.1 point
-
Make sure SimioAPI.dll, SimioAPI.Extensions.dll and SimioAPI.Graphics.dll are not in the ...\Documents\SimioUserExtensions folder. If there are older version of these DLL in this folder, you will get this error message. It is best practice to not have these DLL in this folder. If there are not in this folder, Simio will find them in its executable folder. If you create your own Visual Studio project and compile into this folder, make sure you set the "Copy Local" == False.1 point
-
MOSIMTEC is looking for smart people to solve interesting problems for the world’s leading organizations. MOSIMTEC uses simulation modeling to help our clients understand the best ways to solve their most complex challenges. At MOSIMTEC, you will work on exciting projects covering a wide range of domains including material handling, mining, chemical processing, manufacturing, supply chains, maritime and port operations, and healthcare. You will be joining a diverse team of passionate individuals that can support your growth as a simulation consultant. Entry to early career positions will be located in Herndon, VA or Nashville, TN. Occasional travel to client locations or company-wide meetings will be required. Learn more & apply at: https://www.indeed.com/cmp/Mosimtec-1/jobs1 point
-
Hello, We are evaluating Simio and really like what we see from exploring the Simio Personal Edition. Custom Dashboards are a high priority for us and we appreciate the fact that Simio seems to allow creation of custom dashboards from within a model; however, we would like to know if Simio allows the creation of custom dashboards that are portable from model to model. For example, we would like to: Create a dashboard that displays a chart depicting activity cost per entity (for a selectable set of entities) over the simulation period. Reuse/import this dashboard into any model to display the activity cost per entity over the simulation period (for a selectable set of entities). Two questions: Is this possible with Simio? If yes, which edition(s) of Simio support this capability? Thanks in advance! Donovan1 point
-
Hi, There is not a direct function to access how much Processing Time is left for an entity in the Processing Station, however you can use a workaround that I have attached in a model. The ability to access the function you are referring to in your post is on our Product Backlog, but not being able to access the direct function makes this difficult to achieve. Once you save off the time remaining in a ModelEntity level State Variable, you can use a separate process to compare the value to the "certain amount" that it could exceed and then perform other steps following that. All the best, Caleb CheckRemainingProcessingTime.spfx1 point
-
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.spfx1 point
-
Hi Glen, I need your support for an error that I have to manage very often. My company set an automatic backup on One Drive and that is creating problem to load your Add-In. The body of the error is the following: Exception in loading types from 'C:\Users\username\OneDrive \documents\.\SimioUserExtensions\ExportImportModelAddIn.dll', message: 'Could not load file or assembly 'file:///C:\Users\username\OneDrive\documents\SimioUserExtensions\ExportImportModelAddIn.dll' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)' Loading 'C:\Users\username\OneDrive\documents\.\SimioUserExtensions\ExportImportModelAddIn.dll' may have failed because the DLL was copied from another computer and has been blocked by Windows. To unblock it, copy the file to a user writable directory, right click on it and select Properties, on the General tab, click Unblock, then click OK, and then copy it back to your UserExtensions folder if necessary. Off course the file is unblocked, do you have some suggestion to fix it? Simio version is 11.197.19514.01 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, SET1 point
-
I think setting the exclusion expression property of the tally1 step as TallyStatistic1.Lastrecordedvalue == 0 will work for u?.1 point
-
1 point
-
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
-
1 point
-
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, Liz1 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! George1 point
-
Alternatively, you could limit the number of entities created by the source. Check Maximum Arrivals property under your source's Stopping Conditions.1 point
-
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.1 point
-
Kindly check the attached model for how to search the lowest value , kindly note the lowest value maybe more than 1, so I first search out the lowest value and check again if there is many copies of the lowest value..... all the best! →→→→❤ Model_totalRollContainer_JZ(2).spfx1 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. Tom1 point
-
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
-
You can predetermine the length of a timeslot then the number of timeslots. By multiplying length of the timeslot with the number of timeslots you can calculate the total simulation time. At the beginning of each timeslot you can trigger a process by using a timer element for performing any task within that timeslot. Note that, you should set the iterval lenth of the timer element to the legth of each timeslot.1 point
-
1 point
-
1 point
-
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. Petr1 point
-
I ran into a problem with writing data to a MySQL database table from Simio. The issue was MySQL was complaining about the String representation of a node (Node.Name) that I was trying to write to a VARCHAR() type database column using the DBExecute Step (using native sql in the SQL Statement). The error was something on the lines of "Unknown Column in field list". Found the answer on a mySQL posting. The solution is to surround the String value with a single quote (') character when writing it out to using a DBExecute statement. MySQL thinks it reading a column name instead of an actual value (wierd!). For instance, if I wanted to write the String "ABC" to a VARCHAR column, I should instead write "'ABC'" (adding a single quote on either sides of the String). If I wanted to write the Node name to the VARCHAR column, I should write "'" + Node.Name + "'" I thought this might be helpful and save others valuable time debugging.1 point
-
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
-
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.1 point
