Jump to content

Leaderboard

Popular Content

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

  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 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.com
    5 points
  2. A demo model on how to create sub-classed object with moving part, collect stats and show on dashboard. Have fun! ParkingEntryAndExitBoomGates.spfx
    3 points
  3. 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. Annika
    2 points
  4. 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
  5. 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.pdf
    2 points
  6. 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
  7. 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
  8. Pls refer to below paper for integrating simio and M/L algorithms. very good read. SIMIO和机器学习算法的整合框架【AI】Aston大学Andrew Greasley博士.pdf
    2 points
  9. 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
  10. 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
    2 points
  11. 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
  12. 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
  13. 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
  14. Thank you .. this is amazing stuff. By the way, is it possible to import and export Process step as well?
    2 points
  15. Is there an example or a SimBit which shows how to do this?
    2 points
  16. 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
  17. 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
  18. You could improve this with a monitor inside a subclassed vehicle verifying the ResourceState change and executing a process to add the wages aswell. But for now, I think the solution above is fine.
    1 point
  19. @CChan the ability to use a Status Table for an Output Table was added to Sprint 262!
    1 point
  20. I have attached a simple model using model states to illustrate. I think it should work in a similar fashion using entity states. First, I define the states: Then use those states as Sequence destinations: Until you provide each of those states a value, the Sequence will make no sense and the entity won't know where to go. So on the Source I use an Assign to initialize all the values. This will direct the entity sequentially through Servers 1-4, and then to the Sink: Finally, just to illustrate the technique, on the output node of Server3, I interrupt the normal sequence by Assigning it to instead go to Server5 as its 4th step: If you convert these states to Entity states instead (I was just lazy), I think it should work the same but allow you to selectively override any Sequence Step at any time. UsingStatesInSequences.spfx
    1 point
  21. 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
  22. 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
  23. 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
  24. 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.0
    1 point
  25. 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
    1 point
  26. 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
  27. I think setting the exclusion expression property of the tally1 step as TallyStatistic1.Lastrecordedvalue == 0 will work for u?.
    1 point
  28. 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
  29. 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
  30. 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
  31. I set ModelEntity.Priority = X at Output@SourceX State Assignments property, but it could be assigned anywhere before the server.
    1 point
  32. I believe I got this working using the task sequence mentioned. Using a process with scan step seemed to do the trick so that the patient would block the ER until the OR freed. Thanks, Jim
    1 point
  33. 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
    1 point
  34. 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
  35. maybe you can use a vector for the list, as attached. Model Vector_JZ.spfx
    1 point
  36. 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
    1 point
  37. for your kind reference Model-Example3 Setup.spfx
    1 point
  38. 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.
    1 point
  39. Hope the attached model should work for you. Assign state to a specify number of entities.spfx
    1 point
  40. Hello! Is there any possible way to change the order of queue depend on the datetime state variable? I have datetime state variable; jut simply set 2018-10-07 0:00:00 There are two entities called partA and partB and they are created following arrival table which has release column. So,partA and partB go to inputbuffer of a server, but partA just wait in the inputbuffer, not goes into the server until 2018-10-07. after the specific time, all of the partA move to the front of the inputbuffer and enter the server. I'm trying to do that using new station where partA is transfered from the inputbuffer to until 2018-10-07. Does anyone have an idea? or can anyone model this situation? Thank you. Jay.
    1 point
  41. 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
  42. Hello, there! I'm quite new to Simio. I saw "SchedulingDiscretePartProduction" example recently and noticed that there was B2MML data schema which was very impressive. So, What i have wondered is whether the data schema in the example is exactly same as B2MML data schema. Or, are there some changes from original schema? In addition, does anybody know where to get some information about B2MML data schema? Thank you. Jay.
    1 point
  43. Either in the Load Time property or the Loaded add-on process trigger of the object (let's say Worker1) you could add an expression something like this: (Worker1[1].CurrentNode==TransferNode1)* 5 to get a delay of 5 only when at that specific node.
    1 point
  44. If you would like to be automatically notified about new postings to any Simio forum you should subscribe to the Forum by clicking the Follow button. This can be found at the top of every Forum topic (indicated by the red arrow in the screen shot below). Subscribing will ensure that you are among the first to know about each new posting. You can use the same technique to subscribe to any forum of interest to you to ensure that you get the latest news and have the opportunity to participate in any discussions.
    1 point
  45. The Transportation Library provides a collection of objects for modeling cargo transportation using trains, trucks, boats, pipes, and robots. The Tanker object is sub-classed from Vehicle and used to transport discrete and flow entities between node locations. The Tanker has all the same functionality as Vehicle, except it has been extended to have weight and volume limits. In addition to standard discrete pickups and drop offs, the Tanker can also perform continuous flow pickups and drop-offs using a Dock object. The Dock object provides support for flow into and out of entities and vehicles (like a Tanker or HopperCar) supporting flow. The Dock is seized/released by the Tanker/HopperCar during loading/unloading operations at the Dock. The Dock may also follow a Work Schedule. The Pipe object may be used to model continuous flow through a fully filled pipe. In contrast to the FlowConnector the Pipe requires time for the flow material to travel. The Pipe can be used to connect flow between Tanks or between a Dock and a Tank to more accurately model the travel time of material flow from one location to another. This is particularly useful in applications where heavy liquids are transported over long distances through a pipe. The Railcar, Locomotive, and HopperCar objects represent various types of train-related vehicles. Train movements are modeled by defining a track network comprised of ControlNode and Track objects, over which trains move. A train is a linked sequence of RailCars, where the first RailCar in the sequence is a Locomotive. The RailCar can represent a wide range of train cars including freight cars, cabooses, passenger cars, etc. In addition a HopperCar is special RailCar that is provided to support fill/empty operations at a Dock. The HopperCar is a RailCar with the added functionality of a Tanker. The RailCars can be linked together in any order; for example a train might contain two or more Locomotives. The RobotBase, RobotLowerArm, RobotUpperArm, and RobotHand objects are the components used to model a multi-axis robot. The RobotHand is specified as the transporter and the movements of the other robot components are automatically calculated to support the required hand movement. Like all Simio-provided libraries, this library is open so you can look at how it was built, learn from it, and subclass your own objects to improve them. The Transportation Library was created totally by deriving its objects from other Simio objects and then supplementing with Process Logic. No C++, Java, or other user code was required to write or use these objects. And you can also customize the behavior to match your own needs. Unlike our built-in libraries, this is not fully supported (although we can provide some help) and we may not continue enhancing it, particularly if we decide to build this capability into the base Simio products. We are anxious to receive your feedback on this library. Here is a zip file containing the library, documentation, and a few examples. Updated 2014-01-23 - The InputFlow node's Initial Maximum Flow Rate property on the Dock object was not being used to regulate the rate the Tanker was filled. This has been Fixed. The rate the Tanker is filled can now be adjusted using the InputFlow node's Initial Maximum Flow Rate property. Updated 2014-02-17 - Updates to the Tanker and Dock objects Updated 2014-03-17 - Updates to HopperCar and Locomotive behavior when dropping off. Also bug fixes. Updated 2014-03-19 - Bug fixes - Loaded car no longer takes off on its own after loading, but waits to be picked up by the locomotive and The Loaded add-on process now runs after the loading is complete. Updates 2014-04-07 - Added ability to allow a RailCar to request a Locomotive. See example DropPickTrain_DetatchToLoadUnload.spfx Updates 2014-04-17 - Bug Fixes to previous update Updates 2015-03-23 - Bug Fixes to previous update TransportationLibrary.zip
    1 point
  46. 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
  47. 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
  48. The standard library vehicle has the option of a loading and unloading time per entity, but it is often difficult to model a situation where a vehicle stops for a specified time (like a bus or train). This object (with an example model) adds a single reference property and a single step to the standard Vehicle to allow you to specify that time. Smple, but convenient. VehicleWithFixedLoadTime.zip Done using Sprint 68
    1 point
  49. The Simio object framework is built on the same basic principles as object oriented programming languages; however these principles are applied within a modeling framework and not a programming framework. For example the Microsoft development team that designed C# applied these basic principles in the design of that programming language. Although these same principles drive the design of Simio, the result is not a programming language, but rather a modeling system. This distinction is important in understanding the design of Simio. Simio is not simply a simulation modeling tool that is programmed in an OOP language (although it is programmed in C#). Likewise it is not simply a set of classes available in an OOP language such as Java or C++ that are useful for building simulation models. Simio is a graphical modeling framework to support the construction of simulation models that is designed around the basic object oriented principles. For example when you create an object such as a “machine” in Simio, the principle of inheritance allows you to create a new class of machines that inherits the base behavior of a “machine”, but this behavior can be modified (overridden) and extended. Whereas in a programming language we extend or override behavior by writing methods in a programming language, in Simio we extend or override behavior by adding and overriding graphically defined process models. This distinction between object oriented modeling and object oriented programming is crucial. With Simio the skills required to define and add new objects to the system are modeling skills, not programming skills.
    1 point
×
×
  • Create New...