Simio Reference Guide

March 25, 2018 | Author: Vishal Tamraparni | Category: Object (Computer Science), Library (Computing), Tab (Gui), Icon (Computing), Button (Computing)


Comments



Description

Simio D oc umentationWelcome Refer to the Appendix for the License Agreement, and Academic and Runtime Use Policies. There are links on the bottom of each page that allow you to send us feedback about the content. This book accompanies Simio software version 4.58.7363.16143 Send comments on this topic to Information C opyright 2006-2011, Simio LLC . All Rights Reserved. Simio D oc umentation Contents of Documentation Welcome Simio Product Family Getting Started User Interface Simio C oncepts l l l l l l Object Hierarchy Object Types Processes Projects and Models Queues Tokens and Entities Learning Aids l SimBits Modeling in Simio l l l Navigation Project Window Model Windows ¡ ¡ The Facility Window The Processes Window n Steps Elements,Properties,States,Events,Lists,Tokens,External Tables,Schedules,C hangeovers ¡ The Definitions Window n ¡ The Data Window n ¡ ¡ The Dashboard Window The Results Window n Interactive Verses Experiment,Pivot Table,Reports,Exporting l l l l l l l l l l l Standard Object Library Project Library Assigning States Secondary Resources Add-on Process Triggers Reliability C reating New Objects Animation Expression Editor, Functions and Distributions Running the Model Experiments ¡ ¡ ¡ ¡ ¡ ¡ ¡ C ontrols orResponses and C onstraints Analysis - Experiment Properties Experiment Response C hart (SMORE Plot) OptQuest Add-In Scenario Subset Selection Select Best Scenario Using KN Add-In An Example Model with an Experiment l l l l Model Summary Report C ustom Simio Extensions (i.e. C ustom Steps and Elements) Dynamic Selection Rules Protection Appendix l l l l l l System Requirements Installation Instructions C heck For Updates Academic Use Policy Run Time C apability End User License Agreement Send comments on this topic to Information C opyright 2006-2011, Simio LLC . All Rights Reserved. Simio D oc umentation Simio Product Family Simio is a family of products that includes the Express, Design and Team Editions. Models built with all three Editions are fully compatible both up and down the product family. All three products provide the same powerful 3D object-based modeling environment. Simio Express Simio Express uses the Simio Standard Library to provide you with a powerful and flexible 3D modeling environment for rapid modeling. The Express Edition allows a modeler to get up to speed quickly building object-oriented models using Simio’s Standard Object Library and includes fully functional 3D modeling and animation capabilities. Simio Design Edition Simio Design is our standard product and includes the Standard Library for getting started with Simio, but adds a unique and powerful capability (patent pending) that allows you to modify the logic of your objects using add-on process-oriented logic. This version of the software also provides you with the ability to create and distribute your own custom modeling libraries. Simio Design is the ideal product for professional modelers that want to have full control over complex process logic or want to develop new modeling libraries focused on specific applications areas. Simio Team Edition Simio Team has the same functionality provided by Simio Design, but also lets you build and distribute models using the freely available Simio Evaluation version as a runtime platform. Models built with the Team Edition will run and generate results with the Simio Evaluation version. Simio Team is ideal for consultants that want to deliver a running model to their customer without requiring them to purchase Simio. The Team Edition also provides support for sharing the Simio software using a floating license. Simio Product Matrix Simio Evaluation Edition Simio Evaluation Edition is a free trial version of Simio. This version of Simio allows you to build and save models with certain modeling limits, as specified in the software. Users can run experiments as long as the model is within given limits. If the specified modeling limits are exceeded, users can still build and run large models, however there is no ability to save those models. You can also use the Simio Evaluation Edition to open and run models that have been built by the Simio Team Edition. Simio Academic Edition Fully functional versions of Simio are available to students and faculty. Additional information can be found on the Academic Use Policy page. Send comments on this topic to Information C opyright 2006-2011, Simio LLC . All Rights Reserved. Simio D oc umentation Getting Started Understanding the Simio Modeling Approach l Before you begin to build your first model with the instructions below, you might want to first familiarize yourself with the basic Simio C oncepts since modeling in Simio is based on an object orientated approach, which might be different than other modeling software programs you have used in the past. Build a Simple Model l This section will explain the steps in building a small example model. For this walk through, you will be creating a simple Source-Server-Sink model. To begin, you need to create a new model within the project. This can be done by either clicking the "C reate a new model..." link at the bottom of the Simio Start page, or by clicking the New Model icon in the ribbon. Once the new model is created, you'll be looking at the Facility Window of this new model. First, click on the Source object definition in the Standard Library and drag it into the upper left part of the Facility Window. Once you have dropped it, you should see a Source object instance called Source1. Follow the same process to drag a Server object to the middle of the Facility Window and a Sink object to the lower right of the Facility Window. To select any of these objects in order to move them or change their properties, you can click on the name (e.g. Sink1). For this example, we will leave the properties for all the objects at their defaults. After you have all three objects in the Facility Window, your screen should look something like this: After Dropping a Source, Server, and Sink into the Facility Window Your next step is to connect the objects. The diamond shapes on the objects are called Nodes. They represent places that Entities can enter and leave. Although we won’t be changing anything now, to review or change Node properties, you may click on the diamond shape and you will see its properties appear in the Properties Window in the bottom right side of the interface. Node properties are used to specify Entity destination and Transporter selection logic. Selecting a node in the Facility Window is a bit different from other objects because there are three modes of selection. The first two are common to most objects, the third is unique: • C lick – Selects Node and displays its properties • C lick and drag – Moves the Node to a different screen location. Note that it is still “attached” to it associated object if any (for example, a Server), and if that associated object is moved, the Node position will also change. • C trl+Shift+C lick and move – Initiates the creation of a Link between Nodes. The Link type may be preselected in the library panel (as described in third paragraph below)or it will be prompted for when the Link is terminated by clicking on a Node (as described immediately below). We will now connect the objects with Paths. Press and hold the C trl and Shift buttons on the keyboard while clicking the left mouse button on the Transfer Node of Source1. Move the cursor to the left Node of Server1, and click the left mouse button again. A menu will appear to select the Link type, select Path. Selecting the Path option after drawing a Link between two objects Now press the C trl+Shift buttons and click the left mouse button on the right Node of Server1. You may place mid-points for the connection by clicking various places in the Facility Window, or you can finish the connection by clicking on the Node of Sink1. If you change your mind about where you are placing the line before finishing the connection and want to remove the connection altogether, then click on the right mouse button. A menu will appear for you to select the Link type, select Path. There is another method to use if you want to place Links. C lick on the Link type of your choice in the Standard Library and then you can left click on the Nodes of your choice. See the circled items in the following screen shot: Link items in the Standard Library Double clicking on an object, such as a Path, will put you in a mode to apply that action multiple times sequentially. For example, double clicking on the Path will allow you to connect the Source to the Server and then the Server to the Sink without selecting it again from the library. This is the case with all of the Standard Library objects, as well as many other items in the user interface. C ongratulations, you have built your first Simio model! If you would like to save your model/project, select the green triangle button, the Application button, located on the ribbon at the top left corner of the main Simio window. Then select the Save Project As item from the drop down menu. Use the Windows Explorer window to complete the saving of your file. Note: There is an alternative way to add a standard Source, Server and Sink into the Facility Window. It was important to teach you the manual steps as a learning process, but as a time saver for the future, you can simply select the Source/Server/Sink option from the Select Add-Ins icon on the Project Home tab. This will add these three objects all connected by Paths. Now you can click on the Run button located on the Project Home tab to run your model. See the User Interface help topic for additional information on how to navigate through Simio's User Interface. The Concept of Properties and States l For a user who is either new to Simio or object oriented programming, spending some time learning about Properties and States will be helpful. Other simulation software programs might use an attribute or a variable, whereas Simio objects use States and Properties to pass information between objects and to get output responses. Properties and States are added from the Definitions Window. Queues in Simio l Queues can be found in many different places throughout Simio. Some queues are animated by default, such as the Station queues associated with the Standard Library objects, but others are not. To learn more about which queues exist in Simio and how to animate a queue, visit the Queues help page. Applying Work Schedules l If certain objects within your system follow a Work Schedule, you'll want to learn how to create schedules and add them to your objects. Schedules are created in the Data Window. To find out more information, see the Schedules help page and find the SimBits that contain Schedules to see how Schedules work in Simio. Modeling with Vehicles l Simio provides tremendous flexibility and power for modeling with vehicles. Vehicles are "smart" and can make decisions such as whether or not to pickup a rider than has requested a pickup. Begin by reading about the standard Vehicle object and read through the Discussion and Example help page. View the SimBits page to see which models contain vehicles to see the functionality in action. Importing and Exporting Data l Importing and Exporting information during the model run is done with the User Defined Steps Read and Write. The Read and Write Steps require a File to be defined. A File is defined in the Elements tab of the Process Window. The WritingToAFile SimBit demonstrates how to use the Write Step. Results can be exported from Simio from the Results Window. See the Exporting page for more information about exporting results. Data can also be imported into (and exported from) a Data Table or a Sequence Table. See the Tables help page for additional information. Adding Plots, Gauges or Status Labels to View During an Interactive Run l Plots, Gauges or Status Labels can be added to a model so the user can have a dynamic view of how the object's state changes over time. The Dashboard Window is where the user can place displays that will report the status of an object during the run. These objects can also be placed in the Facility Window and the External panel and attached to objects in the Facility Window. Experimentation / Running the Model without Animation l When a model is run by pressing the Run button from the Facility Window, it is being run in Interactive Mode with full animation and the ability for a user to make certain changes to the model in the middle of the run. However, Simio provides an alternate way to run a model. If a model is run from within an Experiment, there is no animation and therefore the run time is significantly reduced. C reating an Experiment also allows a user to run multiple scenarios, each with different input parameters and/or output responses, allowing the user to set up true experimentation on their model. Note: An experiment cannot be run in Evaluation mode (i.e. Simio without a license installed) unless the model is within the Simio Evaluation Edition modeling limits. To see an example of an Experiment, see the AirportTerminal example model that is included with the installation of Simio. This model contains an experiment that can be run by evaluators. Debugging Tools l There are a number of different tools that are helpful for verification and debugging. Simio has a Trace Window that shows the logic being executed by the objects and tokens in the model. There is also a Watch Window that displays the current values of States, Properties, Functions and Elements during the interactive run. A user can also put a Breakpoint on any object in the Facility Window or on any Step in the Processes Window and the model will pause when it hits that object or Step. For more information, see Debugging the Model. The Standard Library Verses Your Custom Project Library l Simio provides a library of standard objects for a user to use for building either simple or complex models. Because of the flexibility of the standard objects and the ability to use Add On Process triggers on the standard objects, these objects might be sufficient to meet the modeling needs of most people. However, Simio also allows a user to create their own custom Objects, either from scratch or by subclassing (copying) a standard library object to use as a starting point for customization. These custom objects are part of the Project Library. Simio also allows the ability for a user to reuse objects in a project, that were created in another project. This can be done with the Load Library button on the Project Home tab. Essentially, the user is importing a library of objects from a previous project into this current project so one or all of the objects from the previous project can be used in the current project. l Note: C ustom project libraries and Add On Process trigger properties within the Standard Library objects are available with Simio Design and Team Editions. Send comments on this topic to Information C opyright 2006-2011, Simio LLC . All Rights Reserved. Simio D oc umentation User Interface The Application Button The Application Button in the top left corner of the interface, is where the user can open, close or save a new project. This is where the license key for the product can be entered. Application Button The Ribbon The Ribbon contains multiple ribbon tabs and within each tab there are groupings of icons, or panels. The ribbon tabs that are visible vary depending on which window the user is viewing in the main part of the application. Below are a few of the ribbon menus. Some of the Available Ribbon Menus The Project Model Windows The default window that appears in a new project is the Facility Window. Project Window Tabs are used to select between multiple windows that are associated with the active model or experiment. The windows that are available depend on the object class of the selected model. during the run. functions and elements that are associated with a certain object instance. Project Home Ribbon Tab The Navigation Window The Navigation window. The Simio Start Page can also be accessed from this Navigation window by clicking on Start Page. The model which is highlighted is the model that is currently active. This tab allows the user to create a new model. which is located in the top right hand side of the interface. simply click on the desired model. By clicking on the panels on the left side of this window. copy and paste icons. access the report designer and load a library into the current project. right clicking and choosing Model Properties. is used to switch between the different models that exist within the project. which then can be double-clicked to take the user to a given instance. along with the icons to turn on and off Trace and show or hide the Error window. The Search icon will display the Search Window. a new experiment. The SimBits icon is used to open the SimBits Search window. the user can view the Experiments. the Release Notes. or in other words. which allows the user to search for a specific text string. This is also where a user can access the cut. the Symbols. The Watch icon will display the Watch Window. . the Textures and the Path Decorators that exist within this project. the Training Videos. The Navigation Window Viewing and Changing the Properties of a Model The properties of a model can be accessed by selecting the appropriate model within the Navigation window. The window will then display all instances of that text string. add a new symbol. the Simio Support website and additional information for getting started with the product.Project Model Tabs The Project Home Tab The Project Home ribbon tab is the only ribbon tab that is displayed when all the different windows are open. the Simio web page. When the Project is selected and highlighted. To switch between models. This window lists all the models that exist within this project. the Project window is displayed. the model for which the model tabs are associated with. which allows the user to view the values of states. import a new texture. Project properties can be viewed in a similar way when the project is selected within the Navigation window. This page contains links to the SimBits. Right clicking on a Link object brings up a different small menu that allows the user to either add a Breakpoint. This is useful in hiearchical models as well. . as if an object in hierarchy has been changed such that the External view of the object is different. The link can be added to any networks that currently exist or the user can create a new network from this menu. Right Clicking on a Link in the Facility Window In addition to being able to set breakpoints and watch objects through the Right-click menu.Model Properties Right Clicking in The Facility Window Right clicking on an object in the Facility Window brings up a small menu allowing the user to add a Breakpoint to the object or to open the Dashboard window for that object. the options to make the object 'Externally Visible'. The 'Resize to Graphic Size' is available when the graphic for the object has been changed from its original size. any models with that object in it will be sized based on the original object. Right clicking on a Vehicle object allows the user to make this vehicle the default entity. The 'Resize to Graphic Size' can be then used to restore objects to their original sizes. as well as to 'Resize to Graphic Size' are also available for selection. The 'Resize to Graphic Size' can be used to resize the object graphic(s) to the original size(s). Allowing the user to convert the link to a different type of link with a simple right click allows the user the ability to change the model logic quickly and easily. When an object is 'Externally Visible'('on' as a default). it is visible within the External window and will be seen if this object is used in hierarchy. add or remove this link from a network or convert this link to a different type of link. A drop down menu will appear. one unit = 1 meter. the user selects New Vertical Tab Group. Upon right clicking at the top of the Processes model tab. has tick marks as well as labels to help you figure out spacing and placement. the Facility window was hidden behind the Process window because the user is working in the Processes window. In order to access these windows and organize them as you desire. which is the default behavior. In the example below. Arranging the Windows It is possible to display multiple windows such as the Facility window and the Processes window at the same time. Or if you have a mouse with a scroll wheel. . Simio’s grid displays labels of tens and then as you zoom out. it displays labels by hundreds. The zoom function is performed by right clicking within the grid and moving the mouse up and down. In Simio's grid system. simply spin the wheel up or down to zoom in or out. start by right-clicking on the tab of any window. the External Window and the window that is displayed for a New Symbol.Right Clicking on a Sized Object in the Facility Window The Grid System The Grid system that is available in the Facility Window. C ontinue zooming out and it will display kilometers. copied or deleted. such as selecting multiple conveyors and changing the desired speed. C trl+click and drag in free space will do a box select. the value will show up. You can select multiple objects and the intersection of their set of properties will appear in the property grid. While multiple objects are selected. they may be moved.Vertical Grouping of Windows Multi-Select Simio supports Multi-select in the Facility window. Dashboard window and External panel of the Definitions window. meaning it will select all objects within the box. C trl+click on any object adds (or removes) it to the selection set. Multi-select is also very useful for editing similar properties of objects within the above specified windows. copying and/or deleting them. Multi-select allows users to select multiple objects for the purpose of moving. selecting multiple links and changing them to bidirectional or selecting several transfer nodes and changing the transport logic to ride on a given vehicle. If the objects share values for a property. . This feature is useful for editing multiple items. otherwise the value will be blank. if desired. Tokens. use C trl-V and an identical copy of the item and any properties will be defined with a unique name. simply highlight the item and use C trl-C . Schedules and C hangeovers in the Data Window. C trl-C (C opy) and C trl-V (Paste) for all of the items within the Definitions and Data windows. Rate Tables. To paste the item. Lists. C trl-C (C opy) and C trl-V (Paste) for all of the items on the Drawing and Animation Ribbon tabs. To copy an item. C trl-D (Delete) is currently supported only within the Facility window. Events. States. Properties. The copy can then be renamed. as well items within the Facility and Process Windows. External Nodes (in the External Window) in the Definitions Window. . Function Tables. Copying and Pasting in Definitions and Data Windows Simio also supports C trl-X (C ut). based on the original name and a unique number. as well as the Tables. This includes the Elements.Selecting Multiple Items in the Facility Window Cut / Copy / Paste Simio supports C trl-X (C ut). The Undo and Redo buttons are located on the quick access toolbar on the upper left. you can minimize the ribbon menu at the top of the interface. C trl-Z and C trl-Y also work.Copying and Pasting in the Facility Window Undo / Redo Simio supports comprehensive undo and redo capability across the product to make it easier to safely explore and to recover from any accidents. Undo and Redo Buttons on the Quick Access Toolbar Minimizing the Ribbon In order to get the maximum amount of working space in the interface. Similarly. . This is done by right clicking anywhere in the ribbon menu and selecting 'Minimize the Ribbon'. it can be viewed again by right clicking on the ribbon tabs and selecting 'Minimize the Ribbon' again. . the letter F appears over the icon for the Application Button. While the F is displayed. the application button menu will appear. For example. This is extremely helpful in large models when the full list might be large and overwhelming. Short Cut Keys ShortCut Keys Filtering Drop Down Lists Some of the drop down lists you'll find throughout the product will allow you to filter the list to narrow your choices. the user simply needs to click on any of the keys that are shown and this will navigate them through the interface.Minimizing the Ribbon Clicking the ALT button When the user clicks the ALT button. upon clicking the ALT button. is the user clicks on the F key. While these shortcuts are displayed. The example below shows the filter area where you can type in text to start the filtering of the list. the hints for the shortcut keystrokes appear in the User Interface. The shortcut keys will disappear from the interface if the user clicks the ALT button again. etc. the Definitions Window. Send comments on this topic to Information C opyright 2006-2011. visit the Windows page to learn what can be found in each Simio Window. All Rights Reserved.Filtering a Drop Down List Understanding the Content of the Windows If you would like more information on where to find something in the interface. the Processes Window. . Simio LLC . such as the Facility Window. “Name” if it is the name of some object. and Data windows). but also the object in the Definitions. Processes. There are four columns in the search results: l l l l “Value” is the actual piece of text containing the search string. C urrently. and a filter bar appears the bottom. Elements. with the search string highlighted. only those rows matching the filter criteria are displayed. “Item” is the name for this piece of text. select the item. click the filter glyph in a column header. property values on Steps. as well as to filter them. and select an option from it. “Object Name” is the object containing the piece of text. i. and then (if possible) select the property where the text is found. To use this. the Search window will search “Simio property” values (that is. the user is simply taken to the item that contains that value. Object Instances). . When filtering. or Function / Rate table values. C hangeover matrices. When you type something into the Search window’s text box. or “Time To Repair” for a property. such as aforementioned. Double-clicking on a row in the results will take the user to the window containing the item where the text is found. If the text found is a property value and that value is currently switched out.e. and Object names (where “Object” refers to any of the things a user names. Search is not yet supported in Schedule item text. “Project Item Name” is the top-level model containing the object. The columns within the Search window can be manipulated to sort and rearrange. the window will display everything that it finds that contains that text.Simio D oc umentation Search Window Searching the Model The Search icon within the Project Home window opens up the Search window to allow the user to search for any given text string. All Rights Reserved. . Simio LLC . group or filter items in the column. Send comments on this topic to Information C opyright 2006-2011.The user may also right click on a column to sort. and Events. A Simio model looks like the real system. An object might be a machine. There is no need to write programming code to create new objects. It also has an External view. This means that the windows which are displayed in the main part of the interface are the windows associated with that active model. the user is changing the logic that Simio put into this object to make it work as it does in our Standard Library. ship. Elements. Events and External View. and Events of an object. Simio is designed from the ground up to support the object modeling paradigm. which determines how the object will appear when placed into another model in the Facility Window of another model. The work cell is an object just like the machines and robot are objects. and Events. Objects are built using the concepts of object orientation. In Simio there is no way to separate the idea of building a model from the concept of building an object. a forklift truck raises and lowers its lift. For example.Simio D oc umentation Simio Concepts The Simio Object Paradigm Simio is a SImulation Modeling framework based on Intelligent Objects. Properties. Each object in Simio has its own Processes. States. Properties. The standard objects were built to provide standard functionality that will meet most basic modeling needs. airplane. When a user is working with multiple models within a project. . This is the active model. etc). a robot opens and closes its gripper. The animated model provides a moving picture of the system in operation. This may be a bit different than other simulation packages that you may be familiar with. the work cell model is itself an object that can then be instantiated any number of times into other models. The model logic and animation is built as a single step. Every model that is built in Simio is automatically a building block that can be used in building higher level models. The following image shows the model tabs for the active model called SubModel. the process of building an object is very simple and completely graphical. they would need to subclass the object from the standard library into their own Project Library. Now that the object is part of the Project Library. Simio hides these details to prevent the user from making any changes to the logic of the standard objects. And since the main model is also an object in itself (a fixed object type). A beginning modeler may prefer to use pre-built objects from libraries. the user cannot see those components of the object. Elements. so hiding the details of these objects brings simplicity. Objects can be stored in libraries and easily shared. if you combine two machines and a robot into a model of a work cell. Whenever you build a model it is by definition an object that can be instantiated into another model. even those that market themselves as object oriented. States. it is important to remain aware of which model is the current active model. An object may be animated to reflect the changing state of the object. or any other thing that you might encounter in your system. This is where the user could see the Processes of any standard object (from the Processes Window) or the States and Properties of each object (from the Definitions Window). bus. each object found in Simio’s Standard Library has its own Processes.e. the model windows of that object can now be viewed by making it the active model in the project. Therefore. it can be modified (i. States. For example. new states. however it also supports the seamless use of multiple modeling paradigms including a process orientation and event orientation. found in the top right side of the interface. and Events. To view the windows for a different model. and finding the highlighted model. tank. customer. simply click on the appropriate model in the Navigation window and you will see a different set of tabs(windows) in the main part of the interface. States. 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. These modeling paradigms can be freely mixed within a single model. robot. The intelligent objects are built by modelers and then may be reused in multiple modeling projects. It also fully supports both discrete and continuous systems. along with large scale applications based on agent-based modeling. By overriding a Process and making changes. A model is built by combining objects that represent the physical components of the system. If the user would like to see the Processes. new properties. which is done by selecting the model in the Navigation window. new tables. Even though each object within the standard library has its own Processes. it also has it’s own Processes. This concept is central to the design of Simio. If the user would like to modify a Process. and a battle tank turns its turret. Elements. Elements. Properties. States. Properties. 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. doctor. they first need to select the Process from within the Processes Window and click on the Override button in the Ribbon. This can be found by looking in the Navigation window. Elements. Properties. Once the object is in the Project Library. However unlike other object oriented simulation systems. l l l l l l View the Object Hierarchy Read about the different Object Types that exist in Simio and examples of each Read about Processes. All Rights Reserved. Send comments on this topic to Information C opyright 2006-2011. . Read about Tokens and Entities and how they differ. what they are and how they can be used in your model. Simio LLC . Read about Projects and Models and the difference between the two. Read about Queues and see where they exist in the product. and Properties that work together to define how the object interacts with Entities and other Objects. you can also build your own libraries of objects that are customized for specific application areas. Alternatively. forklift trucks. You've already used objects each time you built a model using the Standard Library --. patient rooms. And you can modify and extend the Standard Library object behavior using process logic. An object definition is just that . An object is a self-contained modeling construct that defines that construct's characteristics. Object Hierarchy Object Definition An object definition is a Library Object that is supplied by Simio or created by the Modeler. In addition to building your models using the Standard Object Library objects. conveyors. Refer to Simio C oncepts for additional information on the specifics of an object. and operating rooms. treatment devices. a production-line model is built by placing objects that represent machines. user interface. States. behavior. and object realization. An object definition specifies the behavior of that object and is shared by all instances of the object in all models in which it is used. Object definitions reside in a library. while a hospital might be modeled using objects that represent staff. beds. An object has its own custom behavior that responds to events in the system as defined by its internal model. Events. data. object instance. a new object definition can be generated by ‘sub-classing’ an object from an existing library object. or a project library. and aisles.Simio D oc umentation Object Hierarchy What is an Object? Simio employs an object approach to modeling.a definition of how the object is to act by making use of specific Processes. Objects are the most common constructs used to build models. and animation. either the Standard Library. a custom library. Object Hierarachy One of the important and unique internal design features of Simio is the use of a three tier object structure that separates an object into an object definition. For example. . New object definitions can be made by selecting New Model and selecting the class of model to be built. whereby models are built by combining objects that represent the physical components of the systems.the general-purpose set of objects that comes standard with Simio. Vehicle Definition (Processes) . Vehicle Definition (Properties) Object Instance An Object Instance is simply an occurrence of an Object Definition within a parent object. Server2. Also. Path. BasicNode. all Paths. Each instance of an Object Definition is differentiated by customizing property values and/or creating Add-On processes within the Instance. and TransferNode Object Definitions. contains a number of object instances within the Facility window. and all Input/output Nodes are all Instances of Source. Vehicle. Each Server (Server1. This instance data is in turn shared by all object realizations. In the SimBit example below. Vehicle1. and Server3) is an Instance of the Object Definition named ‘Server’. the ‘model’ (which is an object definition). Sink1. . This is what you get when you place a definition into the Facility window. Server. Source1. some TransferNodes have Ride on Transporter set to True while others are set to False. Similarly. each Server has a different Processing Time property value. In this example. such as a model or another object definition. the stationary vehicle labeled Vehicle1. they are doing different tasks – one of them is going to pick up an entity while another is carrying an entity to its destination – and therefore have different values for their Destination. Below. Each of these three vehicles have different X. RideC apacityRemaining function. there is also a dynamic runspace created to represent the number in system for a particular object instance.SimBit 'DynamicallyCreatingVehicles' Object Realization or Object Runspace Once a simulation run is started. etc. Vehicle1’s fixed runspace is located at the bottom left hand corner of the screen.Z locations. Object realizations hold the state values for that object instance.Z location where an object instance is created once a run is started and is located where the object instance was placed in the Facility window. Each realization of an object instance is unique because of its unique combination of state and function values. Each dynamic runspace has independent values for states and functions.Y. In the case of dynamic objects. Object Instances are represented with object realizations. You can see the three dynamic runspace instances of Vehicle1 moving throughout the system. A fixed runspace is the physical X. .Y. All objects have a fixed runspace. Dynamic Objects are created at this location and then are transferred to another location. Ride C apacity. This is where the properties such as Desired Speed. etc. are specified. it will create a static runspace (or realization) to represent the states common to all Vehicle1s (such as Population. Send comments on this topic to Information C opyright 2006-2011. etc. These can be then referenced by Vehicle1[1]. . that differentiates that Vehicle from the others. Simio LLC . Elements. All Rights Reserved. Heading. Event. NumberRiders. that make a Vehicle act the way the standard Vehicle acts in your model. States. etc. When you run the model. and Vehicle1[3]. Each one of these vehicles has different values for Location. TimeC reated. the Vehicle Object Definition is the “Model” supplied with the Simio Standard Library. It is the collection of all the Properties.NumberInSystem). Processes. Pitch. Vehicle1[2]. Task Selection Strategy.In summary. The Vehicle Object Instance is Vehicle1 that is shown in the bottom left hand corner of the Facility window. It will also create a dynamic runspace for each of the three vehicles that are in the system. These property values further shape this Vehicle’s behavior to represent the behavior of the vehicle the user is trying to represent. Server. and intercept other objects.Simio D oc umentation Object Types There are six basic classes of intelligent objects in Simio: Listed below are the Object Types in Simio: Type Intelligent Object Derived From None Description A base object with the optional ability to be seized. the plant). In the current version of Simio. An example of an Entity model is the default ModelEntity that is automatically added with the first Fixed model of the Project. released. or component objects within a system that have a fixed location (e. the plant). or component objects within a system that have a fixed location (e. equipment. and which can detect. An Entity object can be dynamically created and destroyed and can move into and out of Fixed objects.g.. Entities can have multiple graphical symbols. a user cannot add a new Agent C lass object types. Adds behaviors for modeling objects that can follow a work flow in the system. chase. Typically used to represent an entire system being modeled (e. Fixed Intelligent Object Agent Intelligent Object Entity Agent . work cells). work cells). View all the Functions available for Intelligent Objects. machine. and dropped off by transporter objects. equipment. the ability to visit. enter.g. and exit locations within other objects through nodes. This type of model is particularly useful for agent-based modeling approaches in which a large number (perhaps many thousands) of independently acting agents interact to create the overall behavior of the system. It is typically used to represent an entire system being modeled (e.g. Examples of fixed models include Source. carried. and Sink in the standard library. including the ability to use a network of links to move between objects...g. machine. and follow an availability schedule. However. and the ability to be picked up.. are able to move in continuous space or discrete space (on a grid). both Entities and Transporters are derived from the Agent C lass object type. Adds behaviors for modeling objects that can be dynamically created and destroyed. A Fixed object has a stationary location within the Facility Window. Transporter Agent A transporter object is a special type of entity that can pickup entity objects at a location, carry those entities through a network of links or free space, and then drop the entities off at a destination. A transporter object also has the ability to move off of a network while maintaining association with a node on the network (i.e., “park” at a node in a network). Examples of a transporter model are the Vehicle and the Worker in the standard library. Adds behaviors for modeling fixed objects that are pathways for entity/transporter movement. A link object has a length which may be separated into equally spaced locations (cells), must have a start node and end node, and is a member of one or more networks. A Link object transfers an Entity over a pathway defined by a polyline connecting two Node objects in the Facility Window. A Node is highlighted red when a Link is being drawn and it is close enough to that highlighted Node that if the user clicks, the link will be anchored at that Node. Examples of Link models include the C onnector, Path, TimePath, and C onveyor in the Standard Library. Simio tracks the leading and trailing edge of each Entity on a link as well as provides events to manage collisions and passing. Link control and position is determined by the leading edge of an Entity. As soon as an Entity’s leading edge moves onto a link, the Entity and its speed are controlled by the logic built into that Link. When the Entity’s leading edge moves off the link (perhaps onto a connected link), the Entity is no longer controlled by the initial Link even if the trailing edge of the Entity remains on the initial Link. C ontrol transfers to the subsequent Link as the Entity’s leading edge transfers. A traveling entity is considered Accumulated on a link if the entity has reached the end of the link and has been stopped there without being engaged to the link, or if the entity’s leading edge has collided with the trailing edge of an entity in front of it on the link, and the entity has accumulated behind that entity without being engaged to the link. Once flagged as Accumulated, the entity will continue to be considered Accumulated until either its leading edge leaves the link or the collision situation is cleared. Link Intelligent Object Node Intelligent Object Adds behaviors for modeling fixed objects that are intersection points between link objects or the entry/exit points for visiting an object. Entities may be picked up/dropped off by a transporter at a node. Users can extend/customize the crossing logic through a node to model network flow and entity pickup/dropoff points. Examples of Node models include the BasicNode and TransferNode in the Standard Library. A Node defines a point in space -- it may constrain movement but it does not represent any physical space itself. So, for example, a transporter that stops at a node physically remains with its full length on the incoming link until it leaves the node. The Standard Library object nodes have an associated parking area, but by default this also does not represent a physical location. Internally parking is represented as a station, so it may have constrained capacity and may be animated. The following key strokes can be used to manipulate Nodes within the Facility Window: C lick – Selects node and displays properties in the Property window. l C lick and drag – Moves the Node to a different screen location. Note that it is still “attached” to it associated object if any (for example, a Server), and if that associated object is moved, the Node position will also change. l C trl+Shift+C lick and move – Initiates the creation of a Link between Nodes. The Link type may be preselected in the library panel or it will be prompted for when the Link is terminated by clicking on a Node. l A node with its Crossing Capacity property set to 'Infinite' is not seized or released and therefore cannot be queried for C apacity.Allocated. Send comments on this topic to Information C opyright 2006-2011, Simio LLC . All Rights Reserved. Simio D oc umentation Processes A Process in Simio is comprised of Steps, Elements, and Tokens. A Process is sequence of actions (e.g. assign state, delay by time, seize a resource, etc.) that may span time and change the state of the model. Tokens flow through a Process executing Steps that alter the state of one or more Elements. Simio provides an auto-layout function creating Process flows. Processes are created and modified in the Processes Window, found by clicking on the Processes tab. Note: A process cannot be modified while the model is running. A Process is either enabled or disabled. The process property InitiallyEnabled allows the user to specify whether a process is enabled when the system is initialized. A process has a state called Enabled that indicates whether the process is currently enabled. A disabled process ignores any attempt to execute the process. A process can be enabled by using an Assign step to set the state ProcessName.Enabled, where ProcessName is the name of the process, to 1. A process can be disabled by using an Assign step to set the state ProcessName.Enabled to 0. Any attempt to execute a disabled process (e.g., Execute step) will be ignored. Any triggering events for the process are canceled when it is disabled. However, when a process is disabled, if there are active tokens currently running in the process, then those tokens will continue and finish their processing. A disabled process (or a process that has no logic) is going to simply return its ReturnValue if asked (e.g., if an OnEvaluatingXXXX process is asked for a value by the engine). ReturnValue is a state associated with a process that returns the default token return value for the process. There are certain processes within the standard Simio objects that are known as Decision Processes. They are referred to as Decision processes because the execution engine needs to ask the model for some value and it runs this particular process to find the answer. These process can only contain Assign, Decide, Search and Execute steps. If the execution engine encounters any other kind of Step when running a Decision Process, it issues a runtime error. If a Decision Process contains an Execute step, any additional processes that are called must also contain only Assign, Decide, Search and Execute steps. Since a Decision Process must run to completion without any interruption, it ignores Breakpoints, process suspensions, and single-stepping when it is run. Decision processes within Simio are OnEvaluatingAllocation, OnEvaluatingRiderAtPickup, OnEvaluatingRide, and OnEvaluatingRiderReservation. Processes Processes are used to either customize the behavior of an existing object, or to create new object definitions. If the user would like slightly different behavior from what is provided with the Standard Library objects, the modification of the object behavior is done with Simio Processes. The second major role for process modeling in Simio is for creating new object definitions. An object definition is simply a model for how instances of that object should behave. There are several types of Processes in Simio. Standard Processes are automatically run by Simio at specific points in the logic. Decision processes are 0-time Standard Processes that compute a return value used for making a decision. Event-triggered Processes are executed whenever a user-specified Event occurs. Add-on Processes may be inserted into an object at selected points in the logic and are discussed below. Standard Processes There are seven (7) standard processes that are available for a given object/model. Within the Processes window, any of these may be selected for logic to be added. These processes include: l l l l l l l OnC apacityAllocated - This is executed when a resource's capacity is allocated (seized). The token executing the process will be associated with the object that seized the capacity. This process is used within Standard library objects such as Resource, Worker and Vehicle. OnC apacityC hanged - This is executed when a resource's capacity has changed. The token executing the process will be associated with the object that changed the capacity. OnC apacityReleased - This is executed when a resource's capacity is released. The token executing the process will be associated with the object that released the capacity. This process is used within Standard library objects such as Resource, Worker and Vehicle. OnEvaluatingAllocation - This is executed when determining whether or not the object's capacity should be allocated (seized). The token executing the process will be associated with the object that is trying to seize the capacity. This process is used within many of the Standard library objects. OnRunEnding - If running in interactive mode, then this is executed when the Stop or Reset button action occurs. If in experiment mode, then when the ending time has been reached or calendar events have been exhausted such that the model run is now ending and final statistics about to be reported. Additional events can be put onto the event calendar, but they will not be processed. For example, if you place a Delay step in this process, the delay will be scheduled, but the run will end before the end of the delay. The delay will not extend the run time. Similarly, if you have an Execute Step in this process and the Action property is set to 'WaitUntilC ompleted', anything after that step will not be processed. This is because the "WaitUntilC ompleted" action schedules another event on the event calendar and the event calendar is not revisited. OnRunInitialized - This is executed when this object/model is first initialized. OnRunWarmUpEnding - If running in experiment mode, if a warm-up period has been specified and is ending, this is executed right before all statistics are cleared. Typical uses of this process may be to do some custom warm-up statistics clearing. For example, you may want to clear a state variable’s value that is being used as a custom statistic or take a snapshot of some statistic values at the end of the warm-up period before Simio clears them. See "OnRunEnding" description above for more information about how the event calendar works with this Process. Add-On Processes When you place an object from the Standard Library into your Facility Window, you can have the object run Add-On Processes at specific points in the logic. An Add-On Process is simply a logical Process that you have created to perform some specific action such as assigning a state variable, seizing a resource, referencing information in a table, etc. Process Scope In general a process can only reference items that are at its own scope. Specifically, an object does not “know” anything about the model in which it is placed, so any processes defined inside that object have the same limitation. For example, a process defined inside a Server object can only reference things that have been defined within that Server object. One way objects and their process can interact with the other objects is by the object defining properties which are used to pass in information from outside the object. For example, Server has a Property called Process Time which may reference or “pass in” things like tables and functions that are defined outside of Server. Add-on processes may appear that they are being defined at the scope of the referencing object (e.g. a Server), but they are not. An add-on process is actually part of the containing model and has that scope. So for example, if the Processing add-on process is defined for Server1 that is placed in model Brewery, the scope of that add-on process is Brewery. This is important to note because if the same code that is defined in an add-on process is later moved into the object definition, it may no longer work because the scope would change from the containing model to that of the object definition itself. Send comments on this topic to Information C opyright 2006-2011, Simio LLC . All Rights Reserved. Simio D oc umentation Projects And Models Projects A Project can contain just one Model or mutliple Models. When a new project is created, a default model (of object class type Fixed) will be automatically added to the project. Only one single project may be open in Simio at a time. A project may be saved to a project file, and that file will contain all of the elements in the project. Thus, a user will be able to distribute an entire project by distributing a single project file. A project containing models can be opened in two ways. First, a project may be opened as a project file where all models can be edited. Second, a project can be opened a read-only library that provides definitions used in placing objects into the model. The Load Library button on the Project Home tab will open a given project *.spf file as a library. The project and all models within the project will then appear in a library on the left side of the Simio window with the Standard Libary. Models A model describes the logic, external interfaces, data structure, and presentation/animation for a class of objects. A model may be added to a library and then instances of that model embedded in another model. Thus, a user will be able to easily create a library that is a collection of models developed for some particular application domain or modeling effort. The first model in your project is typically your main model. When you create your main model Simio also creates a default model entity with no logic, and a corresponding default entity object. This default entity object is created but not yet placed. The first entity object that you place in your model is this default entity object. You can use this entity model across multiple models, or add additional entity models as needed. You can also add custom logic to the entity model. You can create sub-models by adding additional models to your project. You can then add logic to your sub-model, define the user view, properties, processes, and then drag objects for this model into your main model. You can also subclass versions of the standard library models. This allows you to start with a standard library object and then make changes to customize the logic for your own needs. To add additional models to your project, select the Project in the Navigation window to open the Project window. You can then add a new models to your project either from scratch, by subclassing another model, or by copying a model from a library. See the Project window help page for additional information on how to add models. You can then add to or modify the logic of your sub-classed model to create your own custom version of the model. When you select your main model back in the Navigation window, you'll see the new models in your Project Library on the bottom left side of the UI, and you can then drag these objects into your main model. Send comments on this topic to Information C opyright 2006-2011, Simio LLC . All Rights Reserved. Simio D oc umentation Queues Queues in Simio Queues, or lines of entities waiting to be processed, can be found in many different places around Simio. This provides tremendous flexibility in allowing the user to queue entities up at different points throughout the model. It also creates ease in modeling blocking. When placed in the Facility Window, the standard library objects all have their Input Buffer queue, their Processing queue and their Output Buffer queue automatically animated. Entities can be removed from certain queues with the use of the Remove Step. Animating Queues in Simio You can animate a queue in Simio with either a Detached Queue that is not tied to any particular object, or animate with a Queue that is attached an object. An Attached Queue will move around the window with the object. The icon used to animate a detached queue is found on the Animation Tab of the ribbon. To draw a detached queue, do not have any object selected and select the Detached Queue icon in the Animation Tab of the ribbon. Left click in the Facility Window to add the vertices of the queue and right click to add the final vertex. To draw an attached queue, first select the object that you wish to attach the queue with and then select the Queue icon from the ribbon of the Symbols Tab. Left click in the Facility Window to add the vertices of the queue and right click to add the final vertex. Once the Queue is drawn in the Facility Window, when the Queue is still selected, choose the appropriate Queue State in the Properties Window, found in the Definitions Tab. The Queue States are listed alphabetically by the Object they are associated with. When animating an attached queue, Simio provides a short cut. When the object is selected, instead of clicking on the center of the Queue icon in the ribbon, select the down arrow to display the Quick C reate drop down. This menu provides some appropriate queue choices for the user to select for animating this queue. The choices are the queues that are available for the selected object. If the user selects something from this Quick C reate menu, and then draws the queue in the Window, the properties of the queue are automatically populated. For example, if the user selects InputBuffer.C ontents from the drop down shown below and then draws a queue in the Window, the Attached To property will be the name of the object that was selected and the Queue State property will be InputBuffer.C ontents and this will animate the entities that are currently in the InputBuffer of the selected object. Queue Quick Create Menu Animating Queues on Nodes, such as Parking Queues When a node is placed in Simio, its Parking Queue is automatically animated, even though nothing is visible within the Facility window. This is helpful when using Transporters and eliminates the need for the user to draw a Parking Queue in order to see the Vehicle when parked. If you select a node (even Input and Output nodes attached to standard objects), you will see the Parking Queue icon highlighted in the ribbon. If you click on this icon, it will turn off the automatic animation of the Parking queue for this node. Simio still provides the Draw Queue option, which allows the user to draw an attached queue for this selected node, including a Parking Queue, if the user does not like the default location of the automatic Parking Queue. Node Queue Animation Changing the Appearance of Queues The appearance of a queue, by default, is a line queue. This means that the objects will appear to line up within the queue along the line that is drawn. The None and Inline options on the Appearance ribbon show two variations of the Line queue in terms of the object orientation within the queue. With the None option, objects align to always point to the left, no matter what the queue orientation. With the Inline option, the objects align to always point forward along the line of the queue. With both of these line queues, when an object leaves the queue, all other objects move up within the queue. The number of objects graphically displayed within a line queue is based on the size of the line and the size of the objects. A line queue may be changed to a point queue by highlighting the queue and selecting the Point or Oriented Point buttons from the Appearance ribbon. With both these type of point queues, objects are graphically shown in the queue on the vertices of the queue line. When you change a queue to a point queue, you will notice that small orientation arrows will be associated with each of the vertices of the queue. With a Point queue, when you select the queue, one of the end orientation arrows becomes a vertex and, when selected, may be moved around to change the orientation of all the vertices on the line. With an Oriented Point queue, when you select the queue, each of the vertices along the line has an associated orientation vertex that can be aligned to different directions per vertex. For both Point and Oriented Point queues, the user has the option to select the Keep in Place button. This option will allow the objects in the queue to remain at the point they were inserted while in the queue, instead of sliding forward to the next available position when another object is removed from the queue. With all types of queues, additional vertices may be added or removed by using the Add Vertex and Remove Vertex buttons on the Appearance ribbon. When a queue is selected and the Add Vertex button is pressed, the queue will get an extra vertex added to the end of the queue. The user may click to place the vertex anywhere in the Facility window. If the new vertex is placed on the line between two other vertices, it will be added to the middle section of that line. If the new vertex is placed outside of the line, it will be added as a vertex at the end of the queue. To remove a vertex, simply click on the vertex to remove and select the Remove Vertex button and the queue line will be redrawn. Queue Appearance Queues that can be found in Simio: Network Element VisitRequestQueue – An entity is inserted into this queue of the model’s ‘Global’ network (by the Ride Step) when it is waiting to reserve a ride on a Transporter in the system. When a Transporter (i.e., the standard library Vehicle object) becomes idle, it searches the ‘Global’ network’s VisitRequestQueue (using the PlanVisit Step) to possibly select a reservation request from that queue. This queue on any other network element is not currently used. Entity Object VisitRequestQueue - This queue is on the Entity object but is currently only used by a Transporter object (which is a sub-class of entity). This queue is holding all the entity objects whose pickup reservations the Transporter has selected and accepted to perform. Visit requests are initiated from either a Ride or Move step. Thus, when a Transporter object selects a pickup reservation request from the ‘Global’ network’s VisitRequestQueue using the PlanVisit Step, that request is moved from the network VisitRequestQueue to the individual Transporter object’s VisitRequestQueue. The Transporter then can actually set its destination to one of the pickup reservations in its VisitRequestQueue using the SelectVisit Step. Examples include: Vehicle1.VisitRequestQueue Details on the Network's VisitRequestQueue and a Transporter's VisitRequestQueue BatchQueue - If an Entity is the parent of a batch, then all of its batch members are held in this queue owned by the Entity. Examples include: DefaultEntity.BatchQueue Any Object That Is Declared As A Resource Object AllocationQueue - Objects that are waiting to seize the Object wait in this queue. This queue’s static ranking rule as well as the resource object’s dynamic selection rule determine the next object to seize the object. Examples include: Server1.AllocationQueue, [email protected], Resource1.AllocationQueue Station Element EntryQueue - Entities waiting to enter the Station, if capacity is not available, wait in this queue owned by the Station element. Examples include: Server1.Processing.EntryQueue Note: Entities will never go into the EntryQueue of the ParkingStation of a node, because a node’s ParkingStation always has a capacity of ‘Infinity'. Note: Entities will never go into the EntryQueue of the RideStation of a Transporter, because the Pickup step used by the Transporter doesn’t initiate a transfer into the Ride station unless ride capacity is available. Contents - Where entities exist while they are in the Station. This queue is owned by the Station element. Examples include: Server1.Processing.C ontents, Vehicle1.RideStation.C ontents Material Element AllocationQueue - Objects waiting to consume a quantity of the material wait in this queue owned by the Material Element. Node Object RidePickupQueue - Entities waiting to get picked up by a Transporter at this location wait in this queue. Thus, if the ReservationMethod on the Ride Step was not ‘FirstAvailableAtLocation’, then an entity is going to be in two queues at once while waiting for a ride pickup, as a reservation request in a network/transporter VisitRequestQueue and as a location-specific pickup request in a node RidePickupQueue. Examples include: [email protected], TransferNode1.RidePickupQueue BatchLogic Element ParentQueue - Entities wait here to collect a batch of members. This queue is owned by the BatchLogic element. MemberQueue - The queue of entities waiting to be added as a member of a batch. This queue is owned by the BatchLogic element. RoutingGroup Element RouteRequestQueue - Entities waiting to be routed to a destination in the routing group wait in this queue. It is owned by the routing group element. Storage Element Queue - Objects in the Storage are held and ranked in this queue owned by the Storage Element. Note: C urrently, the Insert and Remove steps can only be used to insert/remove objects from a storage element queue. Examples include: Storage1.Queue Link Object EntryQueue - Entities waiting to enter the Link wait in this queue, which is owned by the Link object. Examples include: C onveyor1.EntryQueue Send comments on this topic to Information C opyright 2006-2011, Simio LLC . All Rights Reserved. Simio D oc umentation Tokens and Entities Tokens A Token executes the Steps in a process flow. A Token may have one or more user-defined States that carry information from Step to Step. A Token may also reference an associated object such as an Entity that is visiting the parent object. A Token lives inside of a process - it is created at the beginning of a process and it is destroyed at the end of that same process. Therefore, a Token is created whenever a process is first executed. A new Token is also created out of the C reate segment of a C reate Step and out of the Found segment of a Search Step. The type of Token that is created inside of that process is determined by the Token Class Name property of the Process. Simio provides you with a default Token named 'Token' that you can use for most of your processes. You only need to add a new Token if you require a Token with one or more custom states. Entities In Simio, Entities are part of an object model and can have their own intelligent behavior. They can make decisions, reject request, decide to take a rest, etc. Entities have object definitions just like the other objects in the model. Entity objects can be dynamically created and destroyed, move across a network of Links and Nodes, move through 3D space, and move into and out of Fixed objects. Examples of Entity objects include customers, parts or work pieces. Entities do not flow through processes, as Tokens do. The movement of Entities into and out of objects may trigger an event, which might execute a process. When the process is executed, a Token is created that flows through the steps of a process. Entities have a physical location within the Facility Window and they can reside in either Free Space, in a Station, on a Link or at a Node. When talking about the location type of an Entity, we are referring to the location of the Entity's leading edge. Examples of Stations within Simio are: a Parking Station of a Node (TransferNode1.ParkingStation), the Inputbuffer of a Server object (Server1.InputBuffer), Processing Station of a Workstation object (Workstation1.Processing). Examples of the Different Roles of an Entity and a Token Example 1 - Processes via Server with Add On Processes Standard Server Object with Two Add On Processes If we walk through the simple example of an entity that enters a standard Server object, we can demonstrate the role of an Entity and a Token within Simio. In this first example, there are processes that are executed by both the Processing and Processed Add On Process triggers of the Server object. The Entity instance that exists within the Facility Window arrives to the Input Node of a Server object. It crosses into the Input Node and then immediately is transfered into the InputBuffer station of the Server, assuming there is capacity available in the Input Buffer. If there is available capacity in the Server, the capacity is allocated and then the Processing trigger executes the Process1 process. A Token that is associated with the entity is created in Process1, which flows through the Assign step. After the Process1 is complete, the Entity object moves to the Processing station of the Server. When the Server finishes its processing time delay, but before the capacity of the Server is released, the Process2 process is executed. The Entity object remains in the Processing station of the Server object and a new Token is created within the Process2 process. This Token flows through the Assign Step that exists within this process. The Token finishes its job when it reaches the End of the Process2 process. At this point, the Entity then moves from the Processing station of the Server to the OutputBuffer station of the Server, assuming there is capacity available in the Output Buffer. And finally, the Entity is transfered to the Output Node of the Server object where it is routed out with the routing out logic of the Output node. As you can see, the Entity travels physically in the Facility Window between stations and nodes and the Tokens that are associated with the entity are created to flow through the Processes and perform the logic of the Steps. It is important to note that within the Server logic, an Execute step is used for each of the Add On Process Trigger processes. Within each Execute step, the Action is 'WaitUntilC ompleted'. Thus, when the token associated with the entity is created within a process, the entity will remain physically where it is for the entire process, even when delay steps are involved. Entered.. or may be related to an action within an object.. If the process is triggered by a user defined event (i. The On Associated Object Destroyed property allows users to specify what happens to the token when an associated entity is destroyed. Therefore. the token will continue through all the steps in the process. However. Entities are created at Source1. enter the Advanced Options section and click on the '+' sign of Token Actions.e. you would like to have a token delay for a period of time and then increase a state variable. the value for this property is 'EndProcess'.Event. it will also be destroyed by default. If you would like to have the token continue processing. Event1) or monitor event (i. By default.. Suppose when an entity exits Server1. Simio LLC . Process1 is triggered by an entity leaving the Server. the triggering event is based on an entity entering or exiting another object (i. the token going through the process is associated with the 'model' and not a specific entity. the token that goes through Process1 is associated with the entity that exited and not the model. As shown above.e. Sink. however. Therefore. This example shows the happenings of the entity and associated token with a small example of Source.Exited or Input@Server1. When the entity leaves Server1 and moves to Sink1. by changing this value to 'C ontinueProcess'.e.Processes via Triggering Event Token via Triggering Event Process In this second example. Send comments on this topic to Information C opyright 2006-2011.Event).e. such as Output@Source1. Triggering events may be a user defined Event or Timer. All Rights Reserved. If that associated entity is destroyed for whatever reason while the token is still in the process (i. the process will be triggered using a Triggering Event. The Triggering Event is 'Output@Server1. If.Example 2 . Monitor1. move to Server1 and are processed. it is then destroyed. .Exited'..Exited). the token will not be destroyed when its associated entity is and will instead continue its process until the end. in a Delay step). If the token is still in the process's Delay step when its associated entity is destroyed. the token going through the process is associated with a particular entity. then move to Sink1 and are destroyed. the token will also be destroyed and will not continue through the remaining process steps. as long as the model is running. Output@Server1. Server. The process is triggered when an Entity is transferred into the Processing Station of a Server. you would have to subclass a standard Server and go into the Processes window of that Object. Because the OnEnteredProcessing Process is part of the Server object. In other words. At the same time as the Entity enters the Station. it is not delaying the Entity from leaving the Station. a Delay step is actually delaying the Token from being passed on to the next Step. The Entity must wait for the delayed Token. Token flows through 'OnEnteredProcessing' Process of Standard Server What is an Associated Object? The Associated Object is the object that triggered a specific process to be executed. For this process below named Process1: l l The Parent Object is the main Model The Associated Object is the Entity . the Associated Object is the Entity because it trigger this process when it transferred into the Processing Station of the Server. for all Add-On Processes. In this example. since the Add On Processes are created within the main Model and they can be viewed and edited in the main Model's Processes window. a Token is created at the Begin endpoint shown below in the process. An easy way to figure out what object is the Parent Object is to think about what Object would need to be selected in order for you to see the process.Simio D oc umentation Associated Vs Parent Object Example 1 This example shown below details the process named ‘OnEnteredProcessing’. Next. Example 2 This second example shows an Add-On Process that was triggered by an Entity entering the Output Node at a Server. Therefore. To see the details or edit the OnEnteredProcessing process. the Parent Object is most commonly the main Model. the Server is OnEnteredProcessing’s Parent Object. What is a Parent Object? The Parent Object is the object where the process was created and resides. the first Step is a Decide Step. the Token moves to the first process Step and and performs some action or logic. The Entity object will remain in the Processing Station until its Token has completed the all of the Steps in the process. It acts on behalf of the Entity. Tokens travel from Step to Step in zero time. In this example. . Simio LLC .Add On Process in OutputNode Spawns a Token to Execute 'Process1' Send comments on this topic to Information C opyright 2006-2011. All Rights Reserved. pdf file that provides a detailed description of the model.simio. There is a Simio Knowledge Base that can be accessed through our Technical Support website. The files can be found in [public documents] \Simio\SimBits. C ustomers can create an account in our Support site. And finally. A SimBit is a small Simio model which provides an example of how to use certain features of the software. Send comments on this topic to Information C opyright 2006-2011. The SimBit help page provides a list of all the available SimBits. . Each SimBit . Simio LLC .com/forums/. SimBits can be searched by clicking on the Sample SimBit Solutions icon in the Navigation window of the Simio software.spfx file has a matching . at http://www. This is an opportunity for the global Simio community to communicate and collaborate. there is a Simio User Forum that can be accessed through the User Forums on our website. Example models can be found in [public documents]\Simio\Examples. See the Examples page for a listing of each and accompanying documentation. There are a number of Example Models that are available with the installation of the software. Users can become a Simio Insider to have full access to the User Forums where other users share information about how they use the software and the models they are creating.Simio D oc umentation Learning Aids The Learning Aids Available for Simio There are a number of different places where a user can go to learn more about modeling in Simio. which will then allow them to search the Knowledge Base. All Rights Reserved. An active customer can also log incidents (bugs) and seek technical support via this website. Add-On Process Logic DiscreteFunctionTable EntityMovementInFreeSpace ResourceStatesWhenOffShift RotatingVehicleExample SequentialProcessingByBatchSpecifiedInTable SimpleTank TransferLine UsingaMonitor UsingAStorageQueue Arrival Logic LeveledArrivals SearchTables ScheduledMaterialArrivalsWithDeviation SourceWithRateTable SourceWithC ustomEntityTypeProperty UsingButtonsToAffectSystem Buffering AddAndRemoveServerC apacity C ONWIP OneQueueForMultipleServers OverflowWIP SimpleLeastSlackSelectionRule Building New Objects / Hierarchy C ommunicationBetweenObjects FacilityModelWithinModel HierarchyWithTables MassFlowProcessing MoveableOperator ProcessModelWithinModel SourceWithC ustomEntityTypeProperty Combining and Separating Entities C ombineMatchingMembers C ombineThenSeparate RegeneratingC ombiner SeparatorMakesC opies UsingAStorageQueue Conveyor Systems EntitiesEnteringAlongC onveyor . Below is a categorization of the SimBits based on their functionality. The model *. SimBits can be searched by clicking on the Sample SimBit Solutions icon in the Navigation window of the Simio software.General Information A SimBit is a small Simio model which provides an example of how to use certain features of the software.Simio D oc umentation SimBits SimBits .spfx files can be found in [public documents]\Simio\SimBits.spfx file has description that explains the details of the model. Each SimBit . Some models can be found under multiple categories. ExamplesOfC onveyors TransferLine SortingC onveyorSystem Custom Statistics RecordDistanceTraveled TallyStatisticsInTables UsingaMonitor Data Tables C ONWIP EntityFollowsSequenceWithTable EntityFollowsSequenceWithTable2 HierarchyWithTables ImportExportTables LeveledArrivals RelationalTablesInRepeatingProperty ScheduledMaterialArrivals ScheduledMaterialArrivalsWithDeviation SearchTables SearchTableUponEnteringObject SequentialProcessingByBatchSpecifiedInTable TableReferenceInRepeatingProperty UsingRelationalTables Decision Logic – Paths BidirectionalPaths EntityFollowsSequence EntityFollowsSequenceMultiple EntityFollowsSequenceWithTable EntityStopsOnLink LogicBasedOnEntityProperty LogicBasedOnEntityState PathSelectionRule SelectServerWithShortestLine ServerWithTransferInC onstraints Decision Logic – Processing AddAndRemoveServerC apacity DiscreteFunctionTable EntityFollowsSequenceWithTable InterruptibleOperator InterruptingAcrossMultipleServers InterruptingServerWithMultipleC apacity RemoveFromAllocationQueue Discrete States LogicBasedOnEntityState C ommunicationBetweenObjects Entity Characteristics SelectEntityC olorFromStringList . SelectEntityTypeFromTable DefineEntityProperties TurnaroundMethod File Management FileSecurity WritingToAFile Functions ExamplesOfFunctions_DynamicObjects ExamplesOfFunctions_StaticObjects Function and Rate Tables DiscreteFunctionTable LearningC urveWithFunction SimpleLeastSlackSelectionRule Level States MassFlowProcessing SimpleTank Movement In Free Space EntityMovementInFreeSpace MovementInFreeSpace_WithTargetLocation Resources ResourceStatesWhenOffShift SelectingResourceFromList SelectingResourcesAsAGroup Schedules / Changeovers ResourceStatesWhenOffShift ResourcesWithWorkSchedules ServerFollowsC apacitySchedule ServerFollowsDailySchedule ServerFollowsOddSchedule WorkerUsesWorkSchedule Sequence Tables EntityFollowsSequence EntityFollowsSequenceMultiple EntityFollowsSequenceWithTable SortingC onveyorSystem Vehicles DynamicallyC reatingVehicles ExamplesOfFunctions_DynamicObjects RecordDistanceTraveled RotatingVehicleExample SeizingVehicle SelectSpecificVehicle SingleVehicleUsage VehicleFinishesAndParksWhenOffShift VehicleFixedRoute VehicleMovingBackward . Simio LLC . .VehiclesPassingOnRoadway VehicleStopsWhenServerOffShift VehicleVisitsServiceC enter VehicleWithVariableRideC apacity Worker MoveASeizedObject RelationalTablesInRepeatingProperty TableReferenceInRepeatingProperty WorkerUsedForMultipleTasks WorkerUsesWorkSchedule Workstations RelationalTablesInRepeatingProperty ScheduledMaterialArrivals WorkstationWithMaterialC onsumption WorkstationWithMaterialC onsumptionAndReplenish WorkstationWithSequenceDependentSetup Send comments on this topic to Information C opyright 2006-2011. All Rights Reserved. Otherwise.C apacity > 0) && (a3. Technical Approach: We want the maximum number of entities in a server’s input buffer to be six.Load > 0 || ((a1. l Set the Selection Condition property to ‘C andidate.) Increasing Server C apacities: From within the Processes window. There are monitors that watch all the Server Input Buffers and when the seventh entity arrives. Details for Building the Model: Simple System Setup l l l Place a Source. Setting Up the Selection Logic From within the Definitions window. a3. Because we used a logical expression it will return a 1 if true.Simio D oc umentation AddAndRemoveServerCapacity . set the On Event Process (found in Advanced Options) to ‘UpdateServerC apacities’ for each Monitor .InputLocation.C apacity > 0) && (a2. capacity is reduced to zero again until it is needed in the future. Decide Step.Load > 0 || ((a1. C ondition Based.C apacity > 0) && (a4.C urrentC apacity > 0’. In the Output@Source1 node. Monitor.C urrentC apacity’ with New Value ‘(Input@a4. Status Label Assumption: Assume that capacity can be added instantaneously with no set-up/transition time. an event is fired that triggers a process to change the server capacities.C apacity > 0) && (a3. we have to trigger it – this is done back in the Monitor Element. Processing.Node. InputLocation.C apacity > 0) && (a2.Overload’. and a Sink in the Facility Window. an Entity is waiting to be processed.Load > 0 || ((a1.C apacity > 0) && (a3. This ensures that Entities do not get routed to a Server with a capacity of zero. From the Definitions window.C apacity > 0)))’ ¡ These expressions are checking 2 things: (1) If it is processing an Entity. Set up the properties of each Monitor Elements as follows: ¡ ¡ ¡ ¡ Monitor Type is ‘C rossingStateC hange’ State Variable Name is ‘a1. there are multiple servers and if any server with capacity reaches a “maximum input buffer level”. Please refer to the documentation for more details on the InputLocation functions. Note: It is important that these expressions are in this exact order . (If the C rossing Direction would be ‘Negative’ it would be triggered when it went from 6-5. InputBuffer. When the server has completed processing. l Now that the Process has been created.Processing Key Concepts: Active Symbol.C apacity > 0) && (a2. I want to “open” a new server. l Set the Selection Goal to ‘Smallest Value’ and use the default Selection Expression ‘C andidate. l l C reating the Monitor Elements: l l In the Definitions window. or an Entity is routing to be processed. Name the Servers: a1 through a6. add: State Variable Name ‘a4.C urrentC apacity’ and New Value is ‘(Input@a5. select the Elements panel and add 5 Monitor elements (we do not need to monitor server a6). the logic will not evaluate correctly.SimBit Problem: I would like to make an additional server “active” whenever the current servers have a certain number of entities waiting. and a 0 if false – which is what we want to set our capacities to.InputLocation. On Exited. Decision Logic -.C apacity > 0) && (a2. Categories: Buffering. a new server should come on-line or be activated. Assign Step. set the State Variable Name to ‘a6. In other words. then let it remain operating OR (2) all the Servers before that one are working.InputLocation. Open the Repeating Property Editor in Assignments (More). C ontents. which is not what we want to have happen. create a new Process (C reate Process ribbon button) and rename it ‘UpdateServerC apacities’ l Place a single Assign step. Load. InProcess.InputLocation. C urrent C apacity.C urrentC apacity’ and New Value ‘([email protected] apacity > 0)))’ ¡ Add another assignment: State Variable Name is ‘a5.InProcess’ (or a2.Server. l For the first assignment.C apacity > 0) && (a5.InputLocation.C apacity > 0)))’ ¡ And finally: State Variable Name ‘a3. a5) Threshold Value is ‘6’ Crossing Direction is ‘Positive’ l This means that when the Input Buffer threshold value of 6 is crossed in the positive direction (going from 6-7) the Monitor will be triggered.a4. C onnect the Source to each Server and each Server to the Sink with Paths. change the Entity Destination Type property to ‘Select From List’ and select the Node list that was just created.C urrentC apacity’ and the New Value to ‘([email protected] apacity > 0) && (a4. When a seventh entity arrives. create a Node List that contains the Input Nodes for all 6 Servers.descending order.InputBuffer. Add-On Process.Load > 0 || ((a1. 6 Servers in parallel. This expression will select the least congested possible destination. NodeList.C apacity > 0)))’ ¡ Similarly. place an Assign step.e. l On the True segment.InputLocation.C urrentC apacity’ and leave the New Value ‘0. Decreasing C apacities: From within the Facility window.0’. l Repeat this for Servers a4. All Rights Reserved. l This process will check to see if there are any entities processing. then it assigns the Server’s capacity to 0.Load == 0’. Set Decide Type to ‘C onditionBased’ and Expression to ‘Input@a3. Simio LLC .element. Therefore. which checks all of the conditions and then sets the capacities accordingly. create a process in a3’s Exited Add-On Process Trigger From the Processes window. waiting to be processed. . a5. when the seventh Entity arrives) it will fire this process. If there are not. and routing to the server for processing. Set the State Variable Name to ‘a3. place a Decide step in this new process. l l Send comments on this topic to Information C opyright 2006-2011. once the Monitor is triggered (i. and a6. but my entities get stuck at a node trying to get from one link to the other in opposite directions. l l l Embellishments: C hanging the Traveler C apacity on the unidirectional paths within the bypasses will limit the amount of traffic in those areas. BasicNode. while two are near each other about 1/3 of the way between BasicNode1 and BasicNode2. below Sink1. Prefer Desired Direction. and BasicNode6 to BasicNode2. C hange Entity Type of Source1 to ‘Green’ and Entity Type of Source2 to ‘Red’. Traffic Direction Rule Assumptions: Entities are able to pass each other at ‘bypass’ areas along various bidirectional paths. place a second Source (Source2) at the right side.Paths Key Concepts: Allow Passing. Use a unidirectional path to connect BasicNode1 to Sink2 and to connect BasicNode2 to Sink1. Adding Nodes.Simio D oc umentation BidirectionalPaths . connect Source1 to BasicNode1 and Source2 to BasicNode2. Path. l Add a path connecting BasicNode1 and BasicNode2. C hange the Traffic Direction Rule on all three bidirectional links to ‘Prefer Desired Direction’. of the Facility window. Placing the Paths Use a unidirectional path to connect Source1 to BasicNode1. Categories: Decision Logic -. Using Paths. the option ‘C ontinue’ for Entity Destination Type could cause entities to continually loop around the paths. l l Specifying the Destination Locations l Within Source1’s output node (Output@Source1). l C hange the Allow Passing property to ‘False’ on all paths so that the entities don’t stack up on the paths. Do the same to connect Source2 to BasicNode2. below Source1. This will provide paths for the entities to reside on while entities moving in the opposite direction are on the bidirectional paths coming into the bypass. For the Paths connecting the Sources to the BasicNodes.1’. Do the same with BasicNode5 and BasicNode6. Place a second Sink (Sink2) on the left.SimBit Problem: I have bidirectional links in my system. set Allow Passing to ‘False’. These destinations need to be specified because with the network of paths. l Use unidirectional paths to connect the BasicNode3 to BasicNode4 and BasicNode4 back to BasicNode3 (in two different directions). Then connect BasicNode1 to Sink1 and BasicNode2 to Sink2. BasicNode1 and BasicNode2 are closest to the Sources/Sinks. Allow Passing to ‘False’ and Speed Limit to ‘. This will allow entities that are waiting to enter a bidirectional link to move onto the links more efficiently. change the Entity Destination Type to ‘Specific’ and the Node Name to ‘Input@Sink1’. Bidirectional Path. The paths are separated at various points along the path with a small triangle of unidirectional paths so that entities may sit/wait for passing in the opposite direction to occur. click on the ‘+’ by the Type property. respectively. Deadlock. C hange the path’s Type to ‘Bidirectional’. This is done by connecting the nodes with a path and changing the Type property to ‘Bidirectional’. Use bidirectional paths to connect BasicNode1 to BasicNode3. See notes below. Paths and a Bidirectional Path Place a BasicNode1 to the right of Source1/Sink1. . Technical Approach: The path network is set up with multiple bidirectional paths. The other two are near each other about 2/3 of the way between BaasicNode1 and BasicNode2. C hange the names to 'Red' and 'Green' and change the symbol color of Red to match the name. Similarly. Place a second BasicNode2 to the left of Source2/Sink2. Then. l Place two ModelEntity objects. l For the bidirectional links. Details for Building the Model: Simple System Setup Place a Source (Source1) and Sink (Sink1) at the left and right sides. See the diagram below for placement. l l Positioning the Nodes l Place 6 basic nodes in the middle of the Facility window between the Source1/Sink2 and Sink1/Source2. change the Entity Destination Type to ‘Specific’ and the Node Name to ‘Input@Sink2’. within Source2’s output node (Output@Source2). BasicNode4 to BasicNode5. you could have deadlocking again within the triangles. All Rights Reserved. ‘First In Entry Queue’ means the first ranked entity in the link’s EntryQueue will always be selected to enter the link next. With bidirectional links. Therefore. the entity on the right can start moving from right to left immediately (since the direction of traffic at that time is right to left). SVF. ‘Prefer Desired Direction’ means an entity can only get onto the link in a non-desired direction if nobody is waiting to go in the preferred direction. Refer to SimBit PathSelectionRule for an example. Simio LLC . Notes: Please note that bypass areas have to be size to support the maximum traffic that could pass. or LVF. The queue’s ranking rule might be a FIFO. the Traffic Direction Rule property may be used to determine how traffic flows from multiple directions onto a link. Send comments on this topic to Information C opyright 2006-2011. See the example MiningExample. deadlocking can still occur.spfx for another version of bypass modeling. if the rate of entities through these areas is too great. if an entity is traveling right to left on the link as two additional entities enter nodes at opposite ends.however. . The preferred direction is changed each time an entity moves onto the link and starts to move. If they are not adequately sized for the number of incoming entities. LIFO. MemberInputBuffer. . C ombiner. a Server and a Sink to the Facility Window.Discrete( 1.SimBit Problem: I want to batch multiple entities together for subsequent processing. Details for Building the Model: Simple System Setup l l Add two Sources. Send comments on this topic to Information Copyright 2006-2011.Uniform(1. Matching Rule. Priority. Only entities with identical state values can be batched together. ModelEntity. l As mentioned in Assumptions. All Rights Reserved.Simio D oc umentation CombineMatchingMembers . the C ombiner to the Server and Server to the Sink with Paths. Queue Assumptions: We will batch 4 parts together into each container and as many as 5 batches can be worked on concurrently.Priority’ and use an Add-On Process in the Source to assign it. a C ombiner. C hanging the Entity Priority l Within the ‘Parts’ Source object . ‘Parts’ and ‘C ontainers’. Adding Multiple Entity Types l Drag two ModelEntity objects from the Project Library into the Facility Window and change the Name of each. Simio LLC. Technical Approach: Use the existing state named ‘ModelEntity. meaning up to 5 batches may be processing at a time.5)’. Add a queue that displays members waiting for a match by selecting a Detached Queue from the Drawing tab and changing the Queue State to ‘C ombiner1. with Processing Time set to ‘Random. . Matching Rule to ‘Match Members’ and Member Match Expression to ‘ModelEntity.Priority’. ParentInputBuffer. enter the State Assignments.g. Categories: C ombining and Separating Entities Key Concepts: BatchMembers Queue. Using the C ombiner The C ombiner is batching four members (Parts) to one parent (C ontainer) and only batches members together that have matching priority value (e.5. 2. l Enhancing the Animation l l Move the queue that displays parents waiting for a match. the C ombiner has a Capacity of ‘5’. each batch will have either four entities with priority of 1 or four entities with priority of 2).Priority’ with a New Value of 1 or 2 using the ‘Random. MemberInputBuffer.C ontents’. l Designate each Source object to generate a different part type by changing the Entity Type property on one to be ‘Parts’ and the other to be ‘C ontainers’. Specify two different entity types. This is done by specifying the Batch Quantity to ‘4’. Use a C ombiner of capacity 5 to do the batching of 4 Parts into a C ontainer. 1)’ distribution function. Before Exiting repeating editor and add a State Variable Name ‘ModelEntity. C onnect the Sources to the C ombiner. Separation Mode. l Within each Source. the C ombiner to the Server. Split Batch Assumptions: Parts are batched. Technical Approach: Two sources create the two different entity types and then lead into a C ombiner object that batches two entities together. Categories: C ombining and Separating Entities Key Concepts: C ombiner. The processing time of the Server from the above approach could instead be put in the Processing Time of the C ombiner object. Details for Building the Model: Simple System Setup Place two Sources in the Facility Window. Send comments on this topic to Information Copyright 2006-2011. The batched entities are processed by a Server and then sent to a Separator to be un-batched again before exiting the system.Simio D oc umentation CombineThenSeparate . All Rights Reserved. a Server.SimBit Problem: I have two different entity types entering the system. . l C onnect the Sources to the C ombiner. process the combined batch and then unbatch them before exiting the system. l Defining Multiple Entity Types Place two ModelEntity objects into the Facility Window by dragging them from Project Library window. a Separator and two Sinks into the Facility Window. Separator. Simio LLC. l Using the C ombiner l The C ombiner Batch Quantity should be set to ‘1’ so that the entity at the Parent input node waits for 1 entity at the Member input node and then batches together. then processed through a Server and then separated. I need to batch them together. Embellishments: The same requirements could be modeled without a Server object. change the Entity Type property to generate either ‘Entity1’ or ‘Entity2’. Separating Entities l The Separation Mode property in the Separator object is set to ‘Split Batch’ and the Split Quantity is set to ‘1’. the Server to the Separator and the Separator to each Sink using a Path. Also place a C ombiner. C hange the Name property to ‘Entity1’ and ‘Entity2’. respectively. l In the Processes Window. Monitor. The Subject changes SubjectRate randomly. Status Label. l Add an Assign step where the State Variable Name is ‘ObserverRate’ and the New Value is ‘SubjectRate’. select the Properties panel and add a State Property with Name ‘SubjectRate’. ObserverRate.Event’. that allows a State Property from another object. In the Definitions Tab of Observer. 2)’. All Rights Reserved. add a process with Name ‘ObserverFollowsSubject’ whose Triggering Event is ‘Monitor1. to be passed in. C ontinueProcess. enter ‘Subject1. l In the Processes Window. l In the Definitions Window. Timer Element Assumptions: We have two fixed objects (the Subject and the Observer). Add an Assign step where the State Variable Name is ‘SubjectRate’ and the New Value is ‘Random. Simio LLC. State Property.SimBit Problem: One object wants to “watch” another’s behavior and react to it. In the Definitions Window. Defining a new model and using Subject and Observer objects l l Open a new model and place one Subject and one Observer within the Facility Window. 1. This will allow the value of this property. add a Monitor element to fire a process when the State Variable Name ‘SubjectRate’ changes. SubjectRate. The Observer then uses that state property for both setting up a monitor and getting the value for ObserverRate. Discussion: If you watch the trace you will see that every hour the following sequence will occur: l l l l Timer1 triggers an event which triggers the process SubjectUpdatesValue SubjectRate changes value which triggers the monitor on SubjectRate The monitor triggers the process ObserverFollowsSubject ObserverRate changes value to match SubjectRate Send comments on this topic to Information Copyright 2006-2011. Categories: Building New Objects / Hierarchy. add a process with Name ‘SubjectUpdatesValue’ whose Triggering Event is ‘Timer1. within the Elements tab.Triangular( 0.Event’. . The Observer wants to change ObserverRate to match SubjectRate. Details for Building the Model: Defining the Subject Define a new fixed object Subject with a discrete state variable with Name ‘SubjectRate’. to be assigned to the SubjectRate of the Subject.g. l l Defining the Observer l l Define a new fixed object Observer with a discrete state variable with Name ‘ObserverRate’. Process Triggering Event.Simio D oc umentation CommunicationBetweenObjects . within the Elements panel. add a Timer element with Name ‘Timer1’ to fire an event with Interval of ‘1’ hour. each of which has a state (SubjectRate and ObserverRate). no facility logic or objects). Real State Variable. In the properties window for the Observer. when placed in a Facility Window of a model.SubjectRate’ in the SubjectRate property. Discrete States Key Concepts: Assign Step. The Observer is defined with a State Property. Technical Approach: Both of the two fixed objects are process models (e. Transfer Step Assumptions: This model contains 5 servers and the initial 10 entities are placed evenly at each server(i. Place a Search step into this process. These Servers are in parallel.Entered’. Data Tables Key Concepts: C reate Step. Status Label. which will be called DefaultEntity. When a new entity arrives.Entered occurs.InputBuffer for the first row. The column can be renamed to InitialWIP.e. This tells the Source object to only produce arrivals when the event Input@Sink1. Add another column that is a Station property by selecting Station from the Element Reference drop down in the ribbon. . Limit. set From to ‘FreeSpace’ (since entities are created in Free Space by default) and the To property to ‘Station’. Send comments on this topic to Information Copyright 2006-2011. etc – for the second column. 2 entities at each Server to begin). The Source is set to create an arrival whenever an entity enters the Sink. another should arrive.SimBit Problem: I would like to model a C ONWIP system (constant level of WIP). OnRun Initialized Process.Population. The system should begin with 10 entities in the system and as soon as one entity leaves the system. change the value ‘1’ in the Limit property to 'Infinity'. Within the Advanced Options section of the Search step. Categories: Buffering. you can add a Status Label to the Facility window and set the expression to DefaultEntity. This will allow the Search to find all rows in the table.Simio D oc umentation Conwip . Real State Variable. The Number of Objects property should be set to ‘InitialWIP. Add a column that is an Integer property by selecting Integer property from the Standard Property drop down in the ribbon. l C onnect everything with Paths.NumberInSystem. All Rights Reserved. Technical Approach: Upon initialization. a Transfer step in the C reated segment of the C reate step. ¡ In the C reate step. l Place 5 Servers in between the Server and Sink. This tells the C reate Step to create the number of entities that are listed in the Integer column of the Data Table.InitialWIP’. ¡ In the Transfer step. where InitialWIP is the name of the Data Table and Station is the name of the Station property in the table. create a new process by selecting OnRunInitialized from the Select Process drop down in the ribbon. Populate this table by putting the value of 2 in each row of the first column and then selecting Server1. set the Collection Type property to ‘TableRows’ and select the name of the Data Table that you created above. followed by a C reate step in the Found segment of the Search Step.InputBuffer for the second row. the Create Type property should be set to ‘NewObject’ and the Object Instance Name should be set to ‘Default Entity’. l C reate Data Table l l l l l The Data Table will contain the number of entities that should be in the system upon initialization and where they should be located. it will be randomly sent to one of the 5 servers. and finally. Go to the Data window and click the Add Data Table icon in the ribbon to add a new table. ¡ Embellishments: If you would like to see the current number of entities in the system. l C lick on the Source object and set the Arrival Mode property to ‘OnEvent’. Data Table. Server2. Also place a Model Entity from the Project Library into the Facility window. Simio LLC. Details for Building the Model: Simple System Setup Place a Source and a Sink into the Facility window. Set the Event Name property to ‘Input@Sink1. ¡ In the Search step. Table Station Element Property. Add Process Logic l From within the Processes window. the model looks in a Data table to find any initial WIP that should exist in the system and It creates those entities and transfers them to the appropriate station. Search Step. where InitialWIP is the name of the Data Table and InitialWIP is the name of the Integer column in the Data Table. Numeric Property. The column can be renamed to Station. This creates a pull system where arrivals occur whenever an entity enters the Sink is about to exit the system. The Station Name property should be set to ‘InitialWIP. Source.Station’. Numeric Property. All Rights Reserved. right click on Selection Weight and choose Set Referenced Property. Unit Type is ‘Time’.Simio D oc umentation DefineEntityProperties .0’. which connects the output node of the Server to its input node. This will let entities be rejected and go through Server again based on their reject rates corresponding to their entity types. Path. Set PartA’s Reject Rate to ‘0. The processing time of the Server is referencing the processing time property of ModelEntity. and create an Expression Property.5)’. For the property ‘RejectRate’. name one of them PartA. and create a Numeric Property. Description is ‘Ratio of rejections (0-1)’.RejectRate’. Then go to the Properties Window. so each type of entity can define its unique processing time and rejection rates. we can save them to a separate category of properties which we will call ‘C ustom’. l Set Source1’s Entity Type to ‘PartA’.RejectRate’. the other one PartB. Set the Interarrival Time of both of these two Sources to ‘Random. click on either one of them and go to Properties Window. l C lick on Path3. click on Category Name. Selection Weight Assumptions: One Source produces only one type of entity. Categories: Entity C haracteristics Key Concepts: Expression Property.1’. connect the output node of the Server to its input node (Path3). there will be two properties we just defined: Reject Rate and Processing Time. Processing Time to ‘0. Do the same thing for the property ‘ProcessingTime’. This will let the Server’s processing time use each Entity’s specific processing time according to their entity type.ProcessingTime. which connects the output node of the Server to the Sink. then set its Selection Weight to ‘1ModelEntity. and Default Value is ‘0. . click on the current project DefineEntityProperties. and Default Value is ‘0. Simio LLC. and create a new category with the name of ‘C ustom’. Go to Server1. choose Real Data type. l Add two ModelEntity objects from the Project Library into the Facility Window. Source2’s Entity Type to ‘PartB’. and then go to ModelEntity. the weights of the paths represent rejection and success based on the rejection rate property of ModelEntity. (So there is a possibility that some entities will never reach the sink. and create a new referenced property with the name ‘ModelEntity. and also the Server’s output node to the Sink (Path4).Exponential(. l Send comments on this topic to Information Copyright 2006-2011. Open the Definitions Window and select the Properties panel. Use Path to connect two Sources’ output nodes to the input node of Server separately (Path1. l Here we can specify reject rate and processing time on each instance of different types of entities. and then choose Create New Referenced Property. Path2). Name it ‘ProcessingTime’. l C lick on Standard Property Ribbon. Name it ‘RejectRate’. set ProcessingTime to 'ModelEntity.SimBit Problem: I have multiple kinds of entities going through a working system. Default Units is ‘Minutes’. go to Properties Window.5’. go to Standard Property. choose Expression Data type.1’ (Minutes). l C lick on Path4. Processing Time to ‘0. l Using Entity Properties l Go back to Model Window and open the Facility Window. Specify Data on Each Entity Instance For entity PartA and PartB. its Display Name is ‘Reject Rate’. this will save ‘RejectRate’ to a new property category which is ‘C ustom’. Each type of entity has its unique processing time and rejection rates.2’ (Minutes). Reject rates are based on the ratio of the total number of entities that need to be reworked to the total number of entities coming out of the server.0’.) Technical Approach: Add processing time and rejection rates as properties to ModelEntity. l l Generating Entity Properties Go to Navigation Window. Details for Building the Model: Simple System Setup Place two Sources. l In order to make those created properties to be used by customer more conveniently. a Server and a Sink from the Standard Library into the Facility Window. set PartB’s Reject Rate to ‘0. l Again. its Display Name is ‘Processing Time’. 3+.6. l Enter three rows of data in the table. Function Table. Send comments on this topic to Information Copyright 2006-2011. Details for Building the Model: Simple System Setup l Place a Source. Adding a Discrete Function Table l C lick on the Data tab and select the Function Tables panel. Decision Logic – Processing.Priority. Function and Rate Tables Key Concepts: Discrete Function Table. Priority. C hanging the Entity Priority on Paths l Within the State Assignments properties of the paths leading to Server4 (from Server1.3’ and ‘. Sink and 4 Servers in the Facility Window. The first three Servers are in parallel and they all lead to the fourth Server that is in series. The processing times and entity priorities are mapped in a table. Simio LLC. Add a new assignment to specify the State Variable Name is ‘ModelEntity.2’. Path. 2. l C hange the Name of the table in the Properties Window to ‘ProcessingTimes’.Priority]’.Priority’.Simio D oc umentation DiscreteFunctionTable . C lick the C reate Discrete Function Table button to create a new table.ProcessingTimes[ModelEntity. l The three paths leading from the Source to the first three Servers each have a different link Selection Weight of ‘.5. Utilizing a Table within a Server for Processing Times l In the Processing Time property of Server 4 in the Facility Window. 3 to the values 3. ModelEntity. Selection Weight Technical Approach: The system has three servers in parallel.SimBit Problem: The entities in my model have different processing times depending on a priority that is assigned to the entities in the middle of the model. The fourth server uses this state variable and reads a Discrete Function table to determine the processing time. Linear Interpolation. followed by one server in series. This means that 50% (. ‘.2)) of the entities go to one server. All Rights Reserved. enter the On Entering repeating editor. mapping the numbers 1. ModelEntity.5/(. Categories: Add-on Process Logic.5’. Depending on which server processes the entity. Server2 and Server3). where the New Value is ‘ 1’ for those departing Server 1 on path 4. 30% go to another and 20% to another. use the following syntax to reference the table ‘Function. it is assigned a different value to the state variable. .5+. ‘2’ for those from Server2 on path 5 and ‘3’ for those entities from Server3 on path 6. or whatever name you gave to your model State variable. . Similarly. it is created in Free Space. C lick on the C reate Process icon in the Process Ribbon group. but then it goes down to 4 and up again to 5. So there might be 5 parts in the system. The Decide Type is condition based and the Expression is set to ‘Vehicle1. This event triggers a process that checks to see how many vehicles are currently in the system and if there is only one. When a vehicle is created. We do not want to create a new vehicle every time it goes above 4. a Vehicle and a Sink to the Facility Window. the second monitor fires an event when the number of parts in the system goes over 8 and a third vehicle is created (if there are only 2 in the system at the time). it is not destroyed. Send comments on this topic to Information Copyright 2006-2011. the second vehicle remains part of the model. which will ensure that we only create a new vehicle if there is only one in the system. Similarly. l Processes that C reate the New Vehicle l l l l l l Select the Processes tab in the Project Model tabs. In the Properties window of this new Process. I would like to bring in a third vehicle. Keeping Track of the Number in System l A new discrete model State is created. Place a Decide step in the Process. called ‘Number In System’.SimBit Problem: I have a system where a transporter carries parts from machine to machine.Exponential(. There is similar logic for the creation of the third vehicle. Label. Simio LLC.06. The only difference in this process is that the Expression in the Decide step is ‘Vehicle1. Technical Approach: Two different monitor elements watch a Model State that keeps track of the number of parts in the system. Details for Building the Model: Simple System Setup l l Add a Source. When the system gets moderately busy and I have more than 4 parts in the system. This process is triggered right after an entity has been created by the Source.NumberInSystem < 3’. All Rights Reserved. To is set to ‘Node’ and Node Name is set to ‘Output@Server1’. On Entered. C onnect the objects together with Paths. The Monitor Type is ‘C rossingStateC hange’ and the State Variable Name is ‘NumberinSystem’. Source. Transfer Step. each one traveling in opposite directions. This is done by clicking on the Definitions tab. From is set to ‘FreeSpace’. C reating the Monitor Elements Go to the Definitions tab and select the Elements panel. So it needs to be transferred to a node that is on the network. Categories: Vehicles Key Concepts: Add-On Process. Our example has a Bi Directional path between the input and output nodes of Server 3 so the transporter can travel around the object. The Threshold Value is ‘4’ and the C rossing Direction is ‘Positive’.Simio D oc umentation DynamicallyCreatingVehicles . three Servers. just the first time. C reate two paths between each Server object.Popultion. C lick on the Monitor icon in the General Ribbon group. selecting the States panel and adding a new state using the Discrete State button on the ribbon tab. if the system becomes extremely busy and there are more than 8 parts in the system. Ride on Transporter. The first monitor fires an event when the number of parts in the system goes over 4. Process Triggering Event.Event’ (exact name will depend on what you named your monitor). Place a Transfer step on the C reated segment leaving the C reate step.5’ Meters per second and the Initial Node (Home) is set to ‘Output@Server1’.08)’ minutes. the Interarrival Time of the Source object is set to ‘Random. l The Vehicle’s Desired Speed is set to ‘0. A similar process should be created for the monitor that is watching for more than 8 parts in the system. . This state is incremented with an Assign Step that is within a process which is triggered by an Add On Process trigger in the Source object. Real State Variable. On Associated Object Destroyed. Vehicle Assumptions: A second vehicle is only created the first time the number of parts in the system goes above 4. The reason the process checks to see how many vehicles are in the system before it creates a new one is because the monitor element will fire the event each time the State positively crosses the threshold value (4 or 8). it will trigger this process to execute. And even if the number of parts becomes less than 4. The Create Type is ‘NewObject’ and the Object Instance Name is ‘Vehicle1’ (the name of your vehicle). called Entered. Monitor. C reate Step.NumberInSystem < 2’. called Created Entity. The only difference with this monitor is that the Threshold Value is set to 8. I would like to bring in another vehicle to help with the work.Triangular(. . This monitor will fire an event whenever the state variable crosses from 4 to 5. set the Triggering Event to ‘Monitor_Over4. l Add a second Monitor element which is very similar to the first.Population. Place a C reate step in the True segment leaving the Decide step. Sink. This indicates that when that event is fired. l The state Number in System is decremented with an Assign Step that is within a process which is triggered by an Add On Process trigger in the Sink object.3)’ minutes and the Processing Time of Server1 is set to ‘Random. it creates a new vehicle object. l In our example. Decide Step.05. Simio D oc umentation EntitiesEnteringAlongConveyor - SimBit Problem: I have multiple types of entities that enter onto a single conveyor from multiple merge points. Entities then travel down the single conveyor for later processing. Categories: C onveyor Systems Key Concepts: BasicNode, C onveyor Assumptions: There are three types of entities that enter the system. Each entity type has a unique entry area onto which it will later merge onto a single conveyor system. When arriving at its merge point, the entity must wait for adequate space on the conveyor before merging. At any merge point, entities enter based on a first in first out basis. Technical Approach: Use three Source objects to model the arriving entity types. Use three BasicNodes to model the merge points on the main conveyor system. Finally, use C onveyor objects to model the entry conveyors for each part type from the respective sources to the merge points, as well as for the main conveyor system. Details for Building the Model: Simple System Setup l l Place three Source objects and a Sink in the Facility Window. Place three BasicNodes into the Facility Window. These nodes will represent the merge points from each individual part type entering onto the main conveyor. Defining the C onveyor System l l C onnect each Source object to a BasicNode using the C onveyor object. Then, starting at the leftmost BasicNode, connect it to the next BasicNode, and then again to the next with a C onveyor. C onnect the rightmost BasicNode to the Sink object. This will represent the entities leaving the conveyor system. Specifying C onveyor C haracteristics l For each of the six (6) conveyor objects, the default C onveyor characteristics will be used. This includes the Conveyor Speed of ‘2, as well as the Accumulating property of ‘True’. We would like all of our conveyors to be accumulating, therefore if a given merge point is blocked, entities will begin to accumulate on their respective entering conveyor. Defining Multiple Entity Types Place three ModelEntity objects from the Project Library and change the Name them ‘PartA’, ‘PartB’ and ‘PartC ’. C hange the entity symbols, so that you can graphically see the difference in the parts on the conveyors. We used the Simio symbol library to select various “box” symbols for each of the entity types. l Within the three Source objects, specify the Entity Type as ‘PartA’, ‘PartB’ and ‘PartC ’. Therefore, each source will generate a different part type. l l C hanging the C onveyor Animation l In order to graphically make the conveyor paths look like conveyors, click on the conveyor path and select one of the path decorators from the Path Decorators ribbon (i.e., conveyor, single lane, track, etc.). Send comments on this topic to Information Copyright 2006-2011, Simio LLC. All Rights Reserved. Simio D oc umentation EntityFollowsSequence - SimBit Problem: I have an entity that needs to be processed in a particular order by a series of machines. Categories: Decision Logic – Paths, Sequence Tables Key Concepts: By Sequence, Entity Destination Type, ModelEntity, Sequence Table, Table Transfer Node Property Assumptions: The source only produces one type of entity. This entity will follow the Sequence: Server 3 - Server 2 - Server 1 – Sink 1. Technical Approach: A Sequence Table is created and the entity is set to follow this Sequence in its Routing Logic. Each Output TransferNode is set to pass the entity to its next destination By Sequence. Details for Building the Model: Simple System Setup l Add a Source, Sink and three Servers to the Facility Window. Update the Processing Time of each Server to be ‘Random.Triangular(0.5, 0.8, 1.2)’. Adding a Sequence Table l In the Data Window, select the Tables panel and add a Sequence Table with Name ‘MySequence’. Add the Destinations in the following order: Input@Server3 -> Input@Server2 -> Input@Server1 -> Input@Sink1. Assigning the Sequence to the Entity l l In the Facility Window, place an entity from the Project Library into the model. C hange the Routing Logic Initial Sequence property of the DefaultEntity to ‘MySequence’. Modifying the TransferNodes For each of the objects in the system, including Source and all three Servers, click on the TransferNode, change the Entity Destination Type property (under Routing Logic) to ‘By Sequence’. l Double-click on the Path to connect the Source object to all three Servers, and then connect all the Servers to each other and to the Sink object. l Embellishments: There are many ways to make this model more specific. Try changing the Default entity’s Travel Logic to a desired speed or the Source’s Interarrival Time rate. Send comments on this topic to Information Copyright 2006-2011, Simio LLC. All Rights Reserved. Simio D oc umentation EntityFollowsSequenceMultiple - SimBit Problem: *Enhancement of EntityFollowsSequence.spf* I have multiple sources; each producing their own specific entity type. Each entity type needs to be processed in a particular order by a series of machines. Categories: Decision Logic – Paths, Sequence Tables Key Concepts: By Sequence, Entity Destination Type, ModelEntity, Sequence Table, Table Transfer Node Property, TransferNode Assumptions: Each source only produces one type of entity. • Source 1 produces Part A (Green) which follows the Sequence: Server 1 – Server 2 – Sink 1. • Source 2 produces Part B (Red) which follows the Sequence: Server 3 – Server 2 – Server 1 – Sink 1. • Source 3 produces Part C (Blue) which follows the Sequence: Server 2 – Sink 1. Technical Approach: A Sequence Table is created for each entity type and each entity is set to follow this Sequence in its Routing Logic. Each output TransferNode, except those at Source 2 and Source 3, is set to pass the entity to its next destination ‘By Sequence’. The output TransferNodes at Source 2 and Source 3 have been excluded because an entity will travel from these nodes to the TransferNode at Source 1, which already has ‘By Sequence’ in its Routing Logic. Details for Building the Model: Simple System Setup l Add three Sources, three Servers and a Sink to the Facility Window. Update the Processing Time of each Server to be ‘Random.Triangular(0.5, 0.8, 1.2)’. Adding a Sequence Table l In the Data Window, select the Tables panel and add three Sequence Tables named ‘SequenceA’, ‘SequenceB’ and ‘SequenceC ’. Set the Destinations in each table in the following orders: SequenceA : Input@Server1 -> Input@Server2 -> Input@Sink1 SequenceB : Input@Server3 -> Input@Server2 -> Input@Server1 -> Input@Sink1 SequenceC : Input@Server2 -> Input@Sink1 Assigning the Sequences to the Entities Place three DefaultEntity objects from the Project Library into the Facility Window. C hange the Name of each to ‘PartA’, ‘PartB’ and ‘PartC ’. l C hange the Routing Logic Initial Sequence property of each PartA, PartB, and PartC to ‘SequenceA’, ‘SequenceB’, and ‘SequenceC ’, respectively. l Modifying the TransferNodes l For each output TransferNode, except those at Source2 and Source3, change the Entity Destination Type property to ‘By Sequence’. Entities created at Source2 and Source3 will connect through the output TransferNode at Source1. l Double-click on the Path to connect the Source1 object to all three Servers, and then connect all the Servers to each other and to the Sink object. Embellishments: There are many ways to make this model more specific. Try changing any entity’s Travel Logic Speed Limit to a desired speed or the Source’s Interarrival Time rate. Send comments on this topic to Information Copyright 2006-2011, Simio LLC. All Rights Reserved. Simio D oc umentation EntityFollowsSequenceWithTable - SimBit Problem: *Enhancement of EntityFollowsSequenceMultiple.spf* I have a single source producing multiple types of entities. Each entity type needs to be processed in a particular order by a series of machines. The service times at each server are dependent upon the entity type. Categories: Data Tables, Decision Logic – Paths, Decision Logic – Processing, Sequence Tables Key Concepts: Before C reating Entities, By Sequence, Data Table, Dynamic Object Property, Entity Destination Type, Expression Property, ModelEntity, Numeric Property, On C reated Entity, RandomRow, Sequence Table, Server, Source, Table Reference Assignments, Table Sequence Property, Table Transfer Node Property Assumptions: The Source produces three types of entities: • Part A (Green) which follows the Sequence: Server 1 – Server 2 – Server 3 – Sink 1. • Part B (Red) which follows the Sequence: Server 3 – Server 2 – Server 1 – Sink 1. • Part C (Blue) which follows the Sequence: Server 2 – Sink 1. Technical Approach: A separate Sequence Table is created for each entity type to keep track of the Sequences and Process Times for each entity type. A Data Table is created to help the Servers determine how long to process an entity based on its type. The Data Table will be read by setting the Table Name property of the Source. The Source will also reference the Data Table after an entity has been created to get reference to the appropriate Sequence Table based on the assigned row from the Job Table. Each TransferNode is set to pass the entity to its next destination ‘By Sequence’. Details for Building the Model: Simple System Setup l Add a Source, a Sink and three servers to the Facility Window. Also, place three ModelEntity objects from the Project Library into the window. Setting up the Sequence Tables l In the Data Window, select the Tables panel and add three Sequence Tables named ‘SequenceA’, ‘SequenceB’, and ‘SequenceC ’. For the order of Destinations in each table, please refer to EntityFollowsSequenceMultiple. l Add an Expression Property to each Sequence Table with the Name ‘ProcessTime’. Set the ProcessTime according to the following: SequenceA: Input@Server1 = Random.Uniform(0.5, 0.9), Input@Server2 = Random.Triangular(0.5, 1.1, 1.2), Input@Sink1 SequenceB: Input@Server3 = Random.Triangular(0.5, 0.8, 1.2), Input@Server2 = 1.5, Input@Server1 = 1, Input@Sink1 = SequenceC : Input@Server2 = Random.Triangular(0.5, 1.2, 1.6), Input@Sink1 = 0.0 = 0.0 0.0 Setting up the Data Table l • Add a Data Table named ‘JobTable’ with the following Properties and in the following order: (Entity Object Reference) PartType : PartA, PartB, PartC (Expression) ProcessTime : SequenceA.ProcessTime, SequenceB.ProcessTime, SequenceC .ProcessTime (Integer) ProductMix : 10, 20, 30 (Sequence) PartSequence : SequenceA, SequenceB, SequenceC C reating Multiple Entity Types from Source: l l In the Facility Window, expand the Table Reference Assignments in the Properties Window of the Source object. Under the Before Creating Entities subcategory, set the Table Name to ‘JobTable’ and the Row Number to ‘JobTable.ProductMix.RandomRow’ l Under the On Created Entity subcategory, set the Table Name to ‘JobTable.PartSequence’ and leave the Row Number empty. Finalizing the Model l l l C hange the Arrival Logic Entity Type property of the Source to ‘JobTable.PartType’. C hange all Processing Times of the Servers to ‘JobTable.ProcessTime’. For each TransferNode, change the Entity Destination Type property to ‘By Sequence’. Embellishments: There are many ways to make this model more specific. Try changing any entity’s Travel Logic Speed Limit to a desired speed, the Source’s Interarrival Time rate, or any Server’s Capacity. See Also: EntityFollowsSequenceMultiple.spf Send comments on this topic to Information Copyright 2006-2011, Simio LLC. All Rights Reserved. Simio D oc umentation EntityFollowsSequenceWithTable2 - SimBit Problem: *Enhancement of EntityFollowsSequenceMultiple.spf* I have a single source producing multiple types of entities. Each entity type needs to be processed in a particular order by a series of machines. The service times at each server are dependent upon the entity type. Categories: Data Tables Key Concepts: Before C reating Entities, By Sequence, Data Table, Dynamic Object Property, Entity Destination Type, Expression Property, ModelEntity, Numeric Property, RandomRow, Relational Table, Sequence Table, Server, Source, String Property, Table Foreign Key Property, Table Key, Table Reference Assignments, Table Transfer Node Property Assumptions: The Source produces three types of entities: Part A (Green) which follows the Sequence: Server 1 – Server 2 – Server 3 – Sink 1. Part B (Red) which follows the Sequence: Server 3 – Server 2 – Server 1 – Sink 1. Part C (Blue) which follows the Sequence: Server 2 – Sink 1. Technical Approach: A single Sequence Table is created to keep track of the Sequences and Process Times for each entity type. A Data Table is created to specify product mix and point to the proper section of the Sequences table using the Foreign Keys feature. The Table Assignment properties of the Source will be used to select a random entity type from the Data Table while the entity is being created. Each TransferNode is set to pass the entity to its next destination ‘By Sequence’. Details for Building the Model: Simple System Setup l Add a Source, a Sink and three servers to the Facility Window. Also, place three ModelEntity objects from the Project Library into the window. Setting up the Data Table l Go to the Data tab, select the Tables panel and add a Data Table named ‘JobTable’ with the following Properties and in the following order: (Entity Object Reference) PartType : PartA, PartB, PartC (Integer) ProductMix : 10, 20, 30 (String) SequenceType : A,B,C l When the SequenceType column is selected, make this the primary key of this table by clicking the “Set C olumn as Key” icon in the Ribbon. Setting up the Sequence Tables l Also the Data Window within the Tables panel, add a Sequence Table named ‘Sequences’. For the order of Destinations in each table, please refer to EntityFollowsSequenceMultiple.pdf. l Add a Foreign Key property to this Sequence Table by clicking on the Foreign Key icon in the Ribbon. The Name of this property should be set to 'SequenceType'. The TableKey property should be set to 'JobTable.SequenceType'. l Add an Expression Property to the Sequence Table with the Name set to ‘ProcessTime’. Set the ProcessTime according to the following: SequenceA: Input@Server1 = Random.Uniform(0.5, 0.9), Input@Server2 = Random.Triangular(0.5, 1.1, 1.2), Input@Sink1 SequenceB: Input@Server3 = Random.Triangular(0.5, 0.8, 1.2), Input@Server2 = 1.5, Input@Server1 = 1, Input@Sink1 = SequenceC : Input@Server2 = Random.Triangular(0.5, 1.2, 1.6), Input@Sink1 = 0.0 = 0.0 0.0 C reating Multiple Entities from Single Source: l l In the Facility Window, Source object, expand the Table Reference Assignment section. Set the Table Name property to ‘JobTable’, and the Row Number to ‘JobTable.ProductMix.RandomRow’. Finalizing the Model l l l C hange the Arrival Logic Entity Type property of the Source to ‘JobTable.PartType’. C hange all Processing Times of the Servers to 'Sequences.ProcessTime’. For each TransferNode, change the Entity Destination Type property to ‘By Sequence’. Embellishments: There are many ways to make this model more specific. Try changing any entity’s Travel Logic Speed Limit to a desired speed, the Source’s Interarrival Time rate, or any Server’s Capacity. See Also: EntityFollowsSequenceMultiple.spf, EntityFollowsSequenceWithTable.spf (Uses simple (not relational) table to accomplish the same thing) and UsingRelationalTables.spf Send comments on this topic to Information Copyright 2006-2011, Simio LLC. All Rights Reserved. Simio D oc umentation EntityMovementInFreeSpace - SimBit Problem: Moving in Free Space means that an entity is moving within the Facility window but it is not moving on a Link. This model changes the direction the entity is heading in Free Space, along the plane of the Y axis, which is the floor of the facility window. See embellishments section for how to move the entity up and down vertically. Categories: Add-on Process Logic, Movement In Free Space Key Concepts: Add-On Process, Assign Step, C ontinueProcess, Delay Step, Fire Step, FreeSpace, ModelEntity, Movement.Heading, On Associated Object Destroyed, On Entered, Process Triggering Event, Transfer Step Technical Approach: An entity is first processed by a standard Server object and when it gets to the output node of the Server, it is Transferred into Free Space. Its movement is controlled with a series of Assign steps and Delay steps, where the Assign steps assign values to ModelEntity.Movement.Heading to control the direction the entity is traveling. The entity is then transferred to a TransferNode where it then travels on a link into the Sink. Details for Building the Model: Simple System Setup Place a Source, a Server, a Transfer Node and a Sink into the Facility window. Leave a large amount of space between the Server and the TransferNode so you can see the entity moving in Free Space. l C onnect the Source to the Server with a Path. C onnect the Transfer Node to the Sink with a Path. l Place a ModelEntity object from the Project Library into the Facility window. l Add Process Logic l l l l l l From within the Facility window, click on the Output Node of the Server and create a new Add On Process for the Entered trigger by double clicking on the word Entered. From within the Processes window, place a Transfer step into the new process. The Transfer step should transfer the Associated object From ‘C urrentNode’ and To ‘FreeSpace’. After the Transfer step, place an Fire step. Leave this step empty while you go into the Definitions window and create a new Event. From within the Definitions window, click on the Events panel on the left side. C lick on the Event icon in the ribbon to create a new Event. C all it ‘InFreeSpace’. Back in the Processes window and in the Fire step, specify the Event Name as ‘InFreeSpace’. From within the Processes window, create a new process by clicking on the C reate Process icon in the ribbon. With this new process selected, change the Triggering Event property to ‘InFreeSpace’. This will tell Simio to execute this process whenever the Event called “inFreeSpace” is Fired. Place an alternating pattern of Assign steps, followed by Delay steps in order to control the movement of the entity. The Assign step should assign values to the State Variable called ModelEntity.Movement.Heading. The Delay step times are based on how long you would like the entity to move in that direction. ¡ ¡ ¡ ¡ Assign a value of 0 moves the entity in the North direction. (then Delay 4 seconds) A value of 90 moves the entity east (then Delay 4 seconds) A value of 180 moves the entity south (then Delay 25 seconds) A value of 270 moves the entity west (then Delay 10 seconds) l End the process with a Transfer step that moves the entity from Free Space to a Node (Transfernode1) Embellishments: C hange the direction of travel by varying the delay times and the values for ModelEntity.Movement.Heading. Assign values to the state variable ModelEntity.Movement.Pitch to see how an entity can travel up and down (view in 3D view). Send comments on this topic to Information Copyright 2006-2011, Simio LLC. All Rights Reserved. Simio D oc umentation EntityStopsOnLink - Simbit Problem: I have a system where the entities in the system must stop moving on their links when a particular event occurs. Categories: Decision Logic -- Paths Key Concepts: Add-On Process, Allow Passing, C alendar Time Based Failure, C urrent Symbol Index, C urrent Symbol Index, Event, Event Property, Failure, Failure.Active, Fire Step, ModelEntity, On Failed, On Repaired, ParentObjectMovement, Path, Real State Variable, Resume Step, Server, Subscribe Step, Suspend Step, Time To Repair, Uptime Between Failures, Wait Step Assumptions: Entities that are currently moving on links will stop mid-stream when a particular event occurs. In this example, that event is a server failure. Once the failure has been fixed, all entities resume their movement. Technical Approach: The Subscribe step for the Model Entity is used to tie together the events of the model, such as failure and repair of the Server, with events for the entity itself, such as suspending and resuming movement on a link. Two properties for the entity are used to define the event names. When those events occur in the model, all currently moving entities have their movement stopped or started. Details for Building the Model: Simple System Setup l Add a Source, Sink and Server to the Facility Window. Add a ModelEntity to the Facility Window. C onnect the Source to the Server and the Server to the Sink using Paths. C hange the Allow Passing property of each Path to ‘False’. Adding the Server Failure In the Reliability Logic section of the Properties window for Server1, add a failure by changing the Failure Type to ‘C alendar Time Based’. l Set the Uptime Between Failures property to ‘2’ and Units to ‘Minutes’, and the Time to Repair property to ‘1’ and Units to ‘Minutes’. l Displaying the Server Failure l When Server1 is highlighted, click on Add Additional Symbol on the Symbols tab, then click on the C olor item to change the color of the second symbol to red. l In the Animation section of Server1 properties, change the Current Symbol Index to the expression ‘Server1.Failure.Active’. These two changes will cause the Server1 symbol to change to red whenever the server fails. Model Entity: Suspending and Resuming the Entity Movement l l l l l In the Definitions Window of the Model Entity, add two new properties, ‘SuspendMyselfEvent’ and ‘ResumeMyselfEvent’. These two properties will then be edited in the Model Entity’s properties window to tie the events in the model to the model entity. In the Processes Window of the Model Entity, use the C reate Process button to create two new processes called SuspendMyself and ResumeMyself. We will add steps to these processes shortly. Also in the Processes Window of the Model Entity, use the Select Process button to select the OnC reated process. Within that process, add two Subscribe steps. In the first Suspend step, right click on Event Name and Set Referenced Property to ‘SuspendMyselfEvent’. Set the Process Name to ‘SuspendMyself’. In the second Suspend step, right click on Event Name and Set Referenced Property to ‘ResumeMyselfEvent’. Set the Process Name to ‘ResumeMyself’. Within the SuspendMyself process, add a Suspend step and change the Suspend Type to ‘ParentObjectMovement’. This will stop the movement of all entities currently created when this process is triggered. Within the ResumeMyself process, add a Resume step and change the Resume Type to ‘ParentObjectMovement’. This will resume all entity movement of all entities when this process is triggered. Model: Firing the Events to Stop Entity Movement Go to the Model and open the Processes window. Add two new processes called SuspendAll and ResumeAll. These processes will be triggered when the Server fails and is repaired. l In the Definitions window, add two new events, ‘SuspendEverybody’ and ‘ResumeEverybody’. These events will be fired from the Processes just defined. l In the Processes window of the model, within the SuspendAll process, add a Fire step with the Event Name ‘SuspendEverybody’. Within the ResumeAll process, add a Fire step with the Event Name ‘Resume Everybody’. l Move to the Facility window and highlight Server1. Within the Add-On Process Triggers, change the Failed property to ‘SuspendAll’ and the Repaired property to ‘ResumeAll’. This will fire the events to suspend and resume entities when the Server is failed and repaired, respectively. l Model: Specifying the Model Entity Properties for the Events l C lick on ModelEntity1 that is placed in the Model. In the General section of properties, you will notice the two new properties we added above called SuspendMyselfEvent and ResumeMyselfEvent. These are also referenced in the Subscribe steps for the ModelEntity. l C hange the SuspendMyselfEvent property to ‘SuspendEverybody’ and the ResumeMyselfEvent property to ‘ResumeEverybody’. These will then feed into the Subscribe steps such that when those events are fired within the model, the associated processes in the ModelEntity will be triggered. Model: Stopping Incoming Entities l l l l l All of the above steps will stop entities that have been created and are moving in the system. To also stop incoming entities (as the Source will continue to generate entities), the following steps can be followed. In the model’s Definitions window, States panel, add a new Discrete State with Name of ‘MovementSuspended’. The Initial State Value property should remain as ‘0’. This state will be evaluated when incoming entities enter the system to determine if movement is suspended or not. Within the Facility window, highlight the transfer node of Source1 and add an Add-On Process Trigger to the Entered property by double-clicking on Entered. This will create a new process called ‘Output_Source1_Entered’. Within the Process window, you will see the new process called ‘Output_Source1_Entered. Within this, add a Decide step where the Decide Type is ‘C onditionBased’ and the Expression is ‘MovementSuspended==1’. From the True exit, add a Wait step, to wait for the Event Name ‘ResumeEverybody’. From the False exit, there will be no steps. Finally, within the SuspendAll process (in this Processes window), add an Assign step (after the Fire step) where you assign the State Variable Name ‘MovementSuspended’ to the New Value of ‘1’. And similarly, in the ResumeAll process (in this Processes window), add an Assign step (after the Fire step) where you reset the State Variable Name ‘MovementSuspended’ to the New Value of ‘0’. Embellishments: Entities may be suspended and resumed based on any number of happenings in a model, including time and/or a state variable reaching a given value. You may also cause an event to occur by placing a Button in the Facility window and/or Dashboard window. Send comments on this topic to Information Copyright 2006-2011, Simio LLC. All Rights Reserved. there will never be any queuing because a chain dog will always arrive to pick up a waiting entity before the next entity arrives at the end of the link. C ell Location. Cell Spacing Type is set to ‘Fixed Number C ells'. If Entities are created with a small enough interarrival time. Uptime Between Failures Technical Approach: A “Master Source” creates the Entity arrivals for all other sources. and the first conveyor has Accumulating set to ‘False’ l Entities travel down the cell aligned conveyor on a chain dog. it has to wait until a chain dog from that conveyor comes by to pick it up. If Entities are created with a small enough interarrival time. Auto Align C ells . it has to wait until a chain dog comes by to pick it up and disengages itself from the first conveyor. Number of C ells. Initial C apacity. Fixed Number C ells . l Entities will form a queue on the first conveyor if Processing Station is not completely clear. C onveyor. the second entity will collide with the first entity and move on the first conveyor at the speed of the second conveyor. When the Entity in the Processing Station completely exits the Server. the next Entity will enter and the conveyor will begin moving again. BasicNode. After the entity is completely off of the first conveyor it will run at full speed. as chain dogs become available. Cell Spacing Type is set to ‘Fixed Number C ells'. Non-Accumulating – The entry conveyor has Accumulating set to ‘False’. If a second entity reaches the end of the conveyor before the first is picked up. the second entity will collide with the first entity and the speed of the faster conveyor will be set to the speed of the slower conveyor. On Event Arrival Mode. Faster C ell Aligned Non-Accumulating to a Slower C ell Aligned – Each conveyor has Entity Alignment set to ‘C ell Location’. Number of Cells is set to ‘8’ and Auto Align Cells is set to ‘No’. Largest Value First. Once a chain dog from the second conveyor picks up a waiting entity. this will cause entities to form a queue on the first conveyor and the entities will disengage from their chain dogs. When the entity gets to the next cell aligned conveyor. All other entities entering the faster conveyor will move at the speed of the slower conveyor until all queued entities have completely left the first conveyor. it has to wait until a chain dog from that conveyor comes by to pick it up. Entities will form a queue and after the first entity completely exits the first conveyor.5 m/s’. l Simply entities traveling on our standard conveyor Accumulating – all defaults left untouched.1 minutes’ and a Time To Repair of ‘0. Time To Repair.Simio D oc umentation ExamplesOfConveyors . When the entity gets to the next cell aligned conveyor. the entire first conveyor moves at the slower rate. A new entity will not be able to enter the Processing Station until the occupying entity’s trailing edge has entered the exit conveyor. Because the second conveyor is faster. C alendar Time Based Failure. l The first entity will enter the second conveyor and begin moving at the speed of the slower conveyor. C ross Logic. Entity Alignment.5 m/s’. This allows all sets of conveyors to depict their behavior on the exact same arrivals. the entire conveyor will temporarily stop movement. starting with the entity farthest along the conveyor. Categories: C onveyor Systems Key Concepts: Accumulating. Merging C onveyors With Different Speeds – The two merging conveyors have their Desired Speeds set to ‘3 m/s’ and ‘4 m/s’. C hanging Speeds from Fast to Slow – The second conveyor’s Desired Speed has been set to ‘0. the waiting entities will step forward when chain dogs become available. l If an Entity cannot immediately gain access to the Server. Because the second conveyor is slower. Cell Spacing Type is set to ‘Fixed Number C ells'. Number of C ells is set to ‘8’ and Auto Align Cells is set to ‘No’.SimBit Problem: I would like to understand how various conveyor configurations behave. The second conveyor has C alendar Time Based with an Uptime Between Failures of ‘0. When the waiting entity enters the slower conveyor. Number of Cells is set to ‘8’ and Auto Align Cells is set to ‘No’ l Entities travel down the cell aligned conveyor on a chain dog. When the entity gets to the next cell aligned conveyor. l The first entity will enter the second conveyor and begin moving at the speed of the slower conveyor. the other waiting entities will step along the first conveyor. The sets of conveyors are then used to depict transfers between different conveyor configurations. Failure. Number of Cells is set to ‘8’ and Auto Align Cells is set to ‘No’ l Entities travel down the cell aligned conveyor on a chain dog. Details for Building the Model: Standard – all defaults left untouched. and . it will stop the movement of the entire conveyor.1 minutes’ l This situation is similar to moving onto a slower cell aligned conveyor. BasicNode. C hanging Speeds From Slower C ell Aligned to Faster C ell Aligned – Each conveyor has Entity Alignment set to ‘C ell Location’. Moving Onto Failing C ell Aligned from C ell Aligned – Each conveyor has Entity Alignment set to ‘C ell Location’. C ell Spacing Type is set to ‘Fixed Number C ells. C hanging Speeds From Faster C ell Aligned to Slower C ell Aligned – Each conveyor has Entity Alignment set to ‘C ell Location’. C hanging Speeds with a Non-Accumulating C onveyor – The first conveyor has Accumulating set to ‘False’ and the second conveyor’s Desired Speed has been set to ‘0. All Rights Reserved.they are merging onto a conveyor moving at 2 m/s. it must first wait for an available chain dog. entities will take turns merging based on a FIFO Entry Ranking Rule. . Send comments on this topic to Information C opyright 2006-2011. the remaining waiting entities will step their way to the end of the conveyor when chain dogs become available. Similar to other accumulating cell aligned conveyors. Merging C ell Aligned C onveyors With Different Speeds – Same setup as above but Each conveyor has Entity Alignment set to ‘C ell Location’. l If there is a queue at the merge point. but when it is an entities turn to merge. Number of Cells is set to ‘8’ and Auto Align Cells is set to ‘No’ l Entities will merge based on a FIFO Entry ranking rule. Simio LLC . Cell Spacing Type is set to ‘Fixed Number C ells'. IsRiding. l DefaultEntity. Because the expressions are attached to the object.ID function that will return the ID of any front traffic and FrontTraffic. SlipSpeed. Floating Labels.DestinationNodeID – Returns the ID of Vehicle1’s current destination node or returns ‘0’ if it does not have a destination assigned. etc). Round.NumberDestroyed – Returns the total number of objects of this object’s type that have been destroyed. If there is no traffic ahead on the link. States and Events for Link Objects for more information.Population. Send comments on this topic to Information C opyright 2006-2011. Vehicle1. DefaultEntity. Vehicle1. RideID. transporters.Round(). NumberDestroyed.RideID – If the entity object is currently waiting to be picked up by a reserved transporter or is riding on a transporter. ID. If there is no traffic ahead on the link. see the Functions page. then this function simply returns the link’s current speed. DestinationNodeID.ID – Returns the unique ID number of this entity. then this function returns the distance from the entity’s leading edge to the trailing edge of the next entity immediately ahead on the same link. C urrentLinkID.Y are also available. Floating Label. DefaultEntity.SimBit Problem: I would like to understand some of the functions available to use with dynamic objects (entities. TransferNode.RideCapacityRemaining – Returns the current available carrying capacity of this transporter. All Rights Reserved. An expression can be entered into this label by surrounding it with curved brackets { }.Location. then this function returns the distance from the entity’s leading edge to the end of the link. Status Labels are used to display the expressions for the population functions. DefaultEntity. Technical Approach: The attached Floor Labels were added to this model by first placing a Vehicle (from the standard library) into the Facility window. FrontTraffic. then this function returns the ID of that transporter.X – Returns the X coordinate of the object’s current location.FrontTraffic. Simio LLC .DestinationNodeID – Returns the ID of this entity’s current destination node or returns ‘0’ if it does not have a destination assigned DefaultEntity. To see all the available functions and to get additional information on all functions.Allocated}. to display Vehicle1. Also place a ModelEntity (from the project library) into the Facility window. Therefore.Simio D oc umentation ExamplesOfFunctions_DynamicObjects .IsRiding – Returns ‘True’ (or ‘1) if the entity is currently riding on a Transporter. the object qualifier does not need to be part of the expression. NumberC reated.NumberInSystem – Returns the current number of objects of this object’s type that are currently in the system.Allocated.Allocated – Returns the current number of capacity units of Vehicle1 that have been allocated (have been seized) Note: These are resource capacity units. Draw an attached Floor Label and then click on the Edit button in the Ribbon to edit the text. Status Labels are added to the Facility window from the Animation Ribbon. Dynamic Object.X and Location. DefaultEntity. NumberInSystem. Math. then this function returns the minimum of the link’s current speed or the speed of the next entity immediately ahead on the same link. Floating Labels are used to label these functions. See Functions. RideC apacityRemaining.ID – Returns the unique ID number of Vehicle1.Speed that will return the current speed of an entity that is traveling ahead on the link. Vehicle1. not ride capacity units. . For example. l See Also: The SimBit titled ExamplesOfFunctions_StaticObjects for examples of functions that are available for static objects. Vehicle1.NumberCreated – Returns the total number of objects of this object’s type that have been created.SlipSpeed – If the entity (or vehicle) is currently on a link. this changes as the entity moves along the link. DefaultEntity.C apacity. Vehicle1. Details for Building the Model: Examples of Functions Available for a Dynamic Object l l l l l l l l l l l l Vehicle1. The functions that are attached to the entity and the Transporter are attached Floor Labels that contain both text and expressions. Location.CurrentLinkID – If Vehicle1’s leading edge is currently on or at the end of a link.X. Floor Labels are used to display the titles of each section. this functions returns the ID of the link. Ride on Transporter.Distance – If the entity object is currently on a link. Vehicle Assumptions: The functions shown in this model are not the entire list of available functions. Note: The FrontTraffic function can be used alone and it will return True (or 1) if there is an entity ahead of it on the link. Rectangles and Polylines are all added to the Facility window from the Drawing Ribbon.Allocated in a label that is attached to Vehicle1. C lick on each object and select Floor Label from the Attached Animation category in the Ribbon. Floor labels. Categories: Functions Key Concepts: C apacity.Population. l DefaultEntity. Function. Examples of Functions Available a Population of Dynamic Objects DefaultEntity.Capacity.Population. DestinationNodeID. the expression should read {C apacity. Text is typed into the Label Text window directly. there is also a FrontTraffic. Location. Distance. In addition to the Distance function. Rectangles and Polylines were also used to create the displays in this model. . X – Returns the X coordinate of the Source’s current location.PercentTime(1) – Returns the percent time that this Resource list state had the value of 1.Minimum. Server1. C apacity. Other related functions are C apacity. Enum.CurrentDirection – Returns the current direction of traffic on this link. See Functions. States and Events for Link Objects Help page for additional information on these functions.Simio D oc umentation ExamplesOfFunctions_StaticObjects . Details for Building the Model: Examples of Functions Available for a Source Source1. Floor Labels are used to display the titles of each section.Returns the number of events that have been fired by the Timer since its last reset.Y and Location. Rectangles and Polylines are all added to the Facility window from the Drawing Ribbon.OutputBuffer. TimeInSystem. NumberEntered. NumberWaiting. Location. C apacity.ResourceState. InputBuffer. C urrentDirection. Maximum and Minimum are also available. Server1.Z l Source1. Load. l Source1.TrafficDirection.Remaining – Returns the current unallocated capacity of this object.Initial. Floating Labels. OutputBuffer. TotalTime() Assumptions: The functions shown in this model are not the entire list of available functions.Remaining. Other functions available for TallyStatistics are NumberObservations.None. ResourceState. NumberTravelers. In other words.Previous.InputBuffer. NumberTravelers.Capacity. In this example.OffShift Server1. l Examples of Functions Available for a Path Path1. In other words. Maximum and Minimum.ResourceState. this is the average time in system of the entity objects that enter into this Sink object. The value returned is Enum. l Sink1. There are other functions available to use with the C ontents queue.Average. HalfWidth. C apacity.LastRecordedValue – Returns the last recorded value for this TimeInSystem TallyStatistic within the Sink object. TimeInSystem is a TallyStatistic element and LastRecordedValue is a function available to all TallyStatistic elements.Allocated – Returns the current number of capacity units of this object that are allocated (have been seized). Server1.UnitsOwned (Returns the number of capacity units of this object currently seized and owned by the executing token’s associated object. l Path1. the total amount of time that Server1 was Idle. such as AverageNumberWaiting and MaximumTimeWaiting.Minimum. LastRecordedValue. Server1.TimeInSystem.Contents – Returns the number of entities currently in the OutputBuffer station.Entered. Default Server ResourceState Values: 0 – Idle. 4 . C apacity. The location function is available for all static and dynamic objects.AverageTimeWaiting – Returns the average time that an entity waited in the C ontents queue state of the InputBuffer(in hours). Other options available are Location. AverageTimeWaiting. C apacity. 3 – Failed. l Examples of Functions Available for a Sink Sink1. PercentTime(). There are other functions available to use with this function: NumberTravelers. 2 – Blocked.Remaining.X. C apacity.Maximum.Contents.Reverse or Enum.Average – Returns the average of the observations recorded. TimeInSystem is a TallyStatistic element and Average is a function available to all TallyStatistic elements.EntityArrivals. Maximum and Minimum. LastRecordedValue. the percentage of the total simulation time that Server1 was in the Resource State of 1 (Busy). see the Functions page.TimeOnLink. C apacity. TimeOnLink. Status Labels are used to display the expressions. 4 . C apacity. Sink. HalfWidth. To see all the available functions and to get additional information on all functions. Categories: Functions Key Concepts: Average.ResourceState. Server1.NumberWaiting – Returns the current number of entities waiting in the InputBuffer of Server1. such as AverageNumberWaiting and MaximumTimeWaiting. Floating Labels are used to label the functions.InputBuffer.SimBit Problem: I would like to understand some of the functions available to use with static objects.Location. There are other functions available to use with the C ontents queue.OffShift Server1.Exited. NumberTravelers. 1 – Busy.EventCount . NumberTravelers. NumberExited is also available. Default Server ResourceState Values: 0 – Idle. In other words. the average time that an entity spent in the InputBuffer of Server1.Processing.Capacity. NumberTravelers. 2 – Blocked. Path. C ontents. Status Labels are added to the Facility window from the Animation Ribbon.NumberOccurences(3) – Returns the number of times that Server entered into the Resource .TrafficDirection. NumberOccurences().Accumulated. EventC ount. Floor labels. InputLocation. Rectangles and Polylines were also used to create the displays in this model.Allocated. l Examples of Functions Available for a Server l l l l l l l l Server1.InputBuffer. Processing. See the Functions page for information on Queue State functions.Contents – Returns the current number of entities that are in the Processing station of Server1. Other functions available for TallyStatistics are NumberObservations. l Path1.NumberTravelers – Returns the current number of travelers on this link. 3 – Failed. Server. l Sink1. (1.TotalTime(0) – Returns the total time that this Resource list state had the value of 0.Forward. The EventC ount function is available with any Timer element.TimeInSystem.Contents.Maximum. Average.TrafficDirection. NumberTravelers. 2 or 3). See the Functions page for information on Queue State functions. The TimeInSystem is referring to the TimeInSystem of the entities that enter this Sink object.NumberEntered – Returns the total number of entity objects that have entered this station.Allocated. This function is available for all Link objects.Average – Returns the average time the traveler was on this link. 1 – Busy. list state of 3. plus the current number of entities arrived but waiting to enter the associated object. this expression evaluates to True. select the color Red. Embellishments: In order to have the Server turn Red when it’s in the Failed state. 1 – Busy. This will turn Symbol 2 into a Red Server. In other words. When symbol 2 of 2 is Active. Simio LLC . Default Server ResourceState Values: 0 – Idle. With the Server selected. which is a value of 1. go to the property called C urrent Symbol Index under the Animation category in the properties window.Load – Returns the current “load” on the location inside the associated object that the node is inputting entities into. 3 – Failed. When the expression is False and evaluates to 0.OffShift l Input@Server1. when the Server is in Resource State 3 (Failed). .ResourceState == 1 . Send comments on this topic to Information C opyright 2006-2011. Therefore. it will display the first symbol in the symbol list. and then click onto the Server. The “load” on an node’s input location is defined as the sum of entities currently en route to the node intending to enter its associated object. which is the standard grey Server. plus the current number of entities residing in the associated object’s input location. click on the C olor button in the ribbon. This value is an index into the symbol list (0-based index) and therefore will display the Red symbol when this expression is True.OffShift l Server1. Default Server ResourceState Values: 0 – Idle. See Also: The SimBit titled ExamplesOfFunctions_DynamicObjects for examples of functions that are available for dynamic objects. plus the current number of entities arrived but waiting to enter the associated object.InputLocation. 2 – Blocked. 3 – Failed. 1 – Busy. 4 .Returns the value of 0 if Server1 is not currently in ResourceState of 1 and returns a value of 1 when Server1’s ResourceState is currently = 1. All Rights Reserved. 2 – Blocked. it returns the number of times that Server1 entered the Failed state. Enter the expression.ResourceState == 3’. ‘Server1. 4 . select the Server and click Add Additional Symbol in the Ribbon. ExternalNode. Discussion: Notice that when you placed the Server objects into the ProcessABC model. Send comments on this topic to Information Copyright 2006-2011. . All logic for these Servers will be assumed unchangeable except for the Processing Time property for each. C onnect them with Paths – ProcessA to both ProcessB_1 and ProcessB_2.e. and ProcessC . Pressing F2 (or clicking again on Model) will put you in rename mode. l Using the Model within Another Model l l l Open a new model and within its Facility Window. Input Logic Type. called ProcessABC . l Place 4 Servers within the Facility Window of ProcessABC and rename them to ProcessA. Do this will all four Servers. Categories: Building New Objects / Hierarchy Key Concepts: BasicNode. you have access to all the processing times. Details for Building the Model: Simple System Setup Rename Model to ProcessABC by clicking on MySimioProject. ProcessB. They will automatically exit this object when they enter into the Output node of ProcessC . They will automatically enter this object and go directly into ProcessA. Once you do this. ProcessB_1. This will open a dialog to specify the name of the property in the parent ProcessABC that the user will be able to edit (i. followed by a fourth Server (ProcessC ). we will define the processing necessary for this single object. the field will have the name of the property with a small green arrow in front of it. If you right click on each Server (ProcessA. when this ProcessABC model is placed into the Facility Window of another model. which then moves entities to one of 2 more Servers (Process B). namely ProcessTimeA. they automatically appeared as part of the External View of that object. FacilityNode. Keep the default name of Output_ProcessC . the user must only specify the four processing times for the various Servers. ProcessTimeB_2 and ProcessTimeC. This is the node where entities will enter into this object. This is done by highlighting the Processing Time property (it will turn blue) and using the right click to select “Set Referenced Property” and then select “C reate New Referenced Property”. External View.. highlighting the Models panel and clicking on Model. If you unselect Externally Visible from the right click menu of an object. It includes ProcessA. All Rights Reserved. When you run this new model. the logic behind ProcessABC then includes all logic specified within that model. ProcessB_2 and ProcessC .Simio D oc umentation FacilityModelWithinModel . Notice when you highlight ProcessABC . including the input and output nodes. you’ll see that the option. Technical Approach: Within the first model. it will no longer appear in the External View of that object. Externally Visible Assumptions: The similar processes that will be made into an object include a single Server (ProcessA). Keep the default name of Input_ProcessA. ProcessB_1 and ProcessB_2. place a ProcessABC object from the Project Library. Server. l Similarly. right click on the Input Node of ProcessA and select Bind To New External Input Node. You will be prompted to name the new External Node. Externally Visible is selected by default. To Parent External Node. Simio LLC. You wish to make a single “object” that encompasses 3 serial processes into a single process for simplicity. This is the node where entities will exit this object. Defining the External View of Model From the Facility window. and then both ProcessB_1. Select the Source and Sink objects from the Standard Library and place them in the Facility Window. This means that these objects will be visible in the External View of this object (will be seen when this object is placed inside another model). right click on the Output Node of ProcessC and select Bind To New External Output Node. Bind To External Input Node. l Defining the Properties of a Hierarchical Model l Highlight each Server and use the Processing Time property to indicate that the data for this processing time be given in the parent object. This means that the value will be “inherited” from the parent object ProcessABC when it is placed in a model. ProcessB_2 connected to ProcessC . ProcessTimeB_1. etc) in the Facility window of model ProcessABC . C onnect the Source1 to ProcessABC and then ProcessABC to the Sink1 using Paths. You will be prompted to name the new External Node. Bind To External Output Node. Therefore. ProcessTimeA).SimBit Problem: You have a facility in which many of the operations are similar. The External Window is used to define the view of the model. Expression Property. the correct password will have to be entered to gain access. Highlight the model that you would like to password protect and click on the Protect button in the Edit ribbon. Expression Property. Dynamic Object Property.SimBit Problem: I would like to password protect my model. Categories: File Management Key Concepts: Add-On Process. Upon reopening the project file. Details for Building the Model: Adding a Password to MyModel l l l l l C lick on MySimioProject in the Navigation window and select the Models panel. SetRow Step. Embellishments This method of protection can also be used for any model object in the Navigation window. Enter ‘simio’ or a desired password into the field. Technical Approach: A password will be added to MyModel by using the Protection feature. .Simio D oc umentation FileSecurity . On C reating Entities. Password Protect. Data Table. Simio LLC. String Property Assumptions: The password to open the object named MyModel is ‘simio’. Send comments on this topic to Information Copyright 2006-2011. Numeric Property. RandomRow. You can later unprotect the model by selecting the Unprotect button if desired. All Rights Reserved. Source. Key column. consider not having the static Resource object be visible in the External View. you will need to create an External Node. The Basic Node is the entry point into this model. . all the objects in the Facility window are set to be Externally Visible. To find the appropriate row in the table. Search Step. ExternalNode. FacilityNode. This creates an exit point for entities to travel out of this model.SimBit Problem: I have a model that references data from tables and I would like to place this model inside of another model. Resource. Add a final property to the Repeat Group and this property should be an Integer Property. Ensure that this new property is selected/highlighted in the window and then selecting ‘Expression property’ from the Standard Property drop down in the ribbon. Input Logic Type. Select Bind To New External Input Node. A Search step in the submodel can be used to search the Repeat Group property to find the appropriate row of information. Select the Basic Node at the beginning of this model and right click. l To create the entry point into this model. C lick back onto the Data Repeat Group property in the window and select Expression Property again to create another Expression property within the Repeat Group. Right click on this object and select Externally Visible. Bind To External Output Node. in the main model. Processing. you’ll need to load this submodel into the project by using the “Load Library” icon on the Project Home tab. Top Level Model C reate a new Model. Bind To External Input Node Technical Approach: The model is the placed into another model is a SimBit named “SearchTableUponEnteringObject”. you might consider not having these be part of the External View. l Delete the Sink object. Type ‘C ustom Properties’ into the Category Name property of this Data property so this new property is in its own category. Externally Visible. Name this property ‘Data’. Select Rename from the right click drop down menu and name the model ‘SearchTable’. find all the references to the ServerData table and change these references to the new “Data” repeat group instead. Server. An entity travels to one of the three Servers. The search uses the ID of the Server object to find the appropriate row in the table. On Entered. for easier reading. Name this ‘ServerID’. TransferNode. SetRow Step. Name this property ‘NumberOfResources’. found under the Standard Property drop down. Therefore. Expression Property. select the Transfer Node at the end of this model and right click. If you have placed any status labels or floor labels. The Data Table named ServerData is no longer needed so this can be deleted. If you create a new model in another project. Expression Property. Numeric Property. Set the name to ‘Output’. l Create the Main. all tables exist at the top level. Definitions window l l l l l l C reate a new Repeating Group property from the Properties panel by clicking the ‘Repeat Group’ icon in the ribbon. C onnect the Source and the Sink to both submodel instances with Paths. We no longer need a Source object because entities will be created in the top level model and enter this submodel through the new Basic Node. You’ll often need to right click on a property name. e. C reate an External View By Default. BasicNode. To remove them from the External View.Simio D oc umentation HierarchyWithTables . either within the same project or in another project. String Property.Exponential(3)’. Data Table. Now. l Rename the model by right clicking on the object within the Navigation window in the top right of the Simio interface. using the Search feature on the Project Home tab. Data Tables Key Concepts: Add-On Process. Set the name to ‘Input’. This will create a new Expression Property within the Repeat Group property. the token must search the table and find the row that contains the information for that particular Server. Numeric Property. The number of Resources and the delay duration are different for each Server. so that it is no longer highlighted. Similarly.g. delays for a certain amount of time and then releases the Resources. Submodel. select ‘Set Referenced Property’ and then select Data from the list of properties that appear. Name this Expression property ‘Hours’. l Similarly. Any “outside” data that is referenced inside an object or submodel must be passed into the submodel via properties defined on that submodel. C hange the Interarrival Time of the Source to ‘Random. C ontents. That model contains three Servers in parallel. Categories: Building New Objects / Hierarchy. right click on the object in the Facility window and select Externally Visible. This information is stored in a table. Facility window l Place a Source and a Sink and place two instances of the submodel in parallel between the Source and the Sink. This Repeat Group is then used to store the information from the top level model. The mechanism for passing in sets of data like found in Tables is to define a Repeat Group property. seizes a certain number of Resources. Select Bind To New External Output Node. Details for Building the Model: Update the Submodel Facility window l Delete the Source object and replace it with a Basic Node and connect this to the first Transfer Node with a connector. Foreign Key. Queue. which means that they will be part of the External View of this object. Token. In Simio. To Parent External Node. I would like to have a “submodel” reference data in a table. Repeating Group Property. ID. SearchTable2. This is telling the Data property to look to the ServerIDs table.ID.. l ¡ ¡ C lick on the Name column and select ‘Set C olumn as Key’ from the ribbon Place the following data into the Table: n n n Server1. click on one of the instances of SearchTable and find the new Data property.Server2.Server2.Hours’. an Integer Property column named “NumberOfResources” and an Expression Property column named “Hours”. add three columns.Server3.02 l In ServerIDs. right click onto the Data property. l Repeat the above steps for the second instance of the submodel.Data window C reate two new Data Tables by clicking ‘Add Data Table’ from the ribbon.2. and a Foreign Key column named ServerName (click Foreign Key from ribbon). ¡ ¡ ¡ ¡ Right click on Hours and set this to ‘ServerData.3. ¡ Place the following data into the Table: n n n n n n SearchTable1.spfx” to see details of how that model was built. SearchTable1.05 Server3. a String Property column named “Name”.Server1. l In ServerData.1 Server2. select ‘Set Referenced Property’ and select ‘ServerIDs’. Right click on ServerID and set this to ‘ServerIDs. Open the Repeat Group by clicking of the ellipse on the far right and hit Add when the new window pops up. . SearchTable2.Server1.Server3.ID. Server1 Server2 Server3 Server1 Server2 Server3 Facility window l Back in the Facility window. See Also: Open the SimBit named “SearchTableUponEnteringObject.. Send comments on this topic to Information C opyright 2006-2011.Name'. Name one table ‘ServerData’ and the other table ‘ServerIDs’.1. All Rights Reserved. Set the Table Key property of the Foreign Key column to 'ServerData. SearchTable2.ID. Simio LLC .NumberOfResources’ into the NumberOfResources property.ID. SearchTable1. add two columns.IDs’. After closing the Repeat Group editor window.. an Expression Property column named “IDs”. Type in ‘ServerData.ID. the user can import this table into the empty table that was created in Simio. l Do not click into the main part of the table yet (i. . l C lick on the Export icon from the Table tab in the ribbon. keeping the names of the columns untouched. Using the Data Table in the Server l In the Facility Window.csv file into a data table in Simio. click on the Import icon from the Table tab in the ribbon. server. 2. Simio LLC. And for the next column. Technical Approach: It is recommended that before you import a table that you create an empty table that has the appropriate properties (columns) and then export this table to a .csv file to the computer. within the Table Reference Assignments / Before C reating Entities section.e.Discrete(). enter a Table Name of ‘DataTable1’ and the Row Number equal to ‘Random. l To add columns to this table. All Rights Reserved. sink model and the server gets its processing time by reading the data in this imported table. Numeric Property. set the Processing Time property of the Server to read ‘DataTable1. select Integer from the Standard Property drop down. and add the appropriate data. Categories: Data Tables Key Concepts: Before C reating Entities. select the Tables panel and click on the Add Data Table icon from the ribbon. of the expression property in the table). select properties from the ribbon menu.75. To import the data.csv file in an editor. If the table is not empty. Assigning Table Row Number l Within the Source object. The main part of the window will appear blank. 4. do not try to add rows). Adding a Data Table and Exporting Blank Table In the Data Window.Simio D oc umentation ImportExportTables . Expression Property. Server and a Sink the Facility Window. If you click in the table at this point. Send comments on this topic to Information Copyright 2006-2011. 1)’. such as Excel. Save the .SimBit Problem: I would like to import data from a . Details for Building the Model: Simple System Setup l Place a Source. Import Data.csv file. delete it and create it again with the exact same column names (properties). This will assign the token a row number from a discrete distribution to assign the values 1. Source. C hange the Unit Type to ‘Time’ and the Default Units to ‘Minutes’ so that our processing times should be specified in minutes. In this example. Server.ExpressionProperty1’ (assuming you kept the default name. by default).5. 2. the table must be completely empty (see above bullet point) and the column names (properties) must match the header row in the . a new row (with values of 0) will appear and this will cause problems with the import of the data. C onnector. After filling this table with data.csv file. l To import data. ExpressionProperty1. Export Table. select Expression from the Standard Property drop down. . Data Table.25. Table Reference Assignments Assumptions: This example model is a simple source. 3 and 4 with equal probability.csv file and the data should import into the Data table in Simio. . l Importing Data to a Data Table l l Open the . Random. 3. but you will see a new tab created with the name of the new table (DataTable1. Select the .Discrete(1. . C lick on the “…” button to open the Repeating Property Editor.20. Add a Release Step that releases Vehicle1. 2 Servers. In the Editor. Interrupt Step. and 2 Sinks to the Facility View. Server. because this will be the Initial Node. Filter Expression. Largest Value First. C lick the Add button and select ‘Vehicle1’ from the drop down list next to Object Name. create a process in the Processed add-on process trigger. Upon processing for the second time the job only requires the remaining processing time. Details for Building the Model: Simple System Setup Drag in 2 Sources.Exponential(30)’ minutes and Entities Per Arrival to ‘2’. Categories: Decision Logic -. l On the Original segment leaving the Interrupt step. place an Assign step that changes the picture of the interrupted entity. Assign Step.Picture’.0’. Set the Initial Node to ‘BasicNode1'. C hange the Interrupted Process Action to ‘ResumeProcess’. Add a Seize step in this process. with a Ranking Expression of ‘ModelEntity. the server will attempt to seize the operator. On Processing. Vehicle Assumptions: The interrupted part is allowed to remain in the processing station until the operator returns. in Source1 to ‘Random.SimBit Problem: I would like to model a system with 2 Servers and a movable operator that needs to be present at the server for processing and be able to interrupt the processing of a lower priority job for a higher priority job. l On the Interrupted segment leaving the Interrupt step. l Both Server1 and Server2 should have their Initial Capacity property set to ‘Infinity’. the New Value to ‘1’. Request Move. the job that is being processed is interrupted. On Processed. C hange its Desired Speed to ‘0.Simio D oc umentation InterruptibleOperator . Arrange them in two Source-Server-Sink sets and place a Basic Node next to each Server. Ranking Expression. create a process in the Processing add-on process trigger. C lick the “…” button next to Releases in the Property window to open the Repeating Property Editor. C lick the Add button and select ‘Vehicle1’ from the drop down list next to Object Name. Add a Release Step that releases Vehicle1. l Similarly.30)’. After the operator is finished processing all the high priority jobs. This gives l . l Adding Process Logic for Seizing and Releasing the Vehicle l In Server2. as well as the Interarrival Time. Initial Desired Speed. Interrupted Process Action.Triangular(10.OnEnteredProcessing’ from the drop down list. ResumeDelay. C lick the Add button and choose ‘Vehicle1’ for the Object Name. Path. Altering Entities l l l Drag two ModelEntities into the Facility window and name them ‘HighPriorityJob’ and ‘StandardJob’. Once the operator returns.Priority’. C lick on BasicNode1 and attach ParkingStation.C ontents queue. Adding Process Logic for Interruption To set the Interrupting logic. C hange the color of HighPriorityJob to red and set its Initial Priority to ‘3. Place an Interrupt Step to interrupt the activity taking place at the other server (Server2). you can do the exact same thing for Server1 (or you can re-use the process named Server2_Processed and eliminate this step. and Input Buffer Capacity property set to ‘1’. If the operator is already seized. Defining Fixed Objects C hange the Entity Type property in Source2 to ‘StandardJob’. l Defining a Vehicle l Drag a standard Vehicle into the Facility window. Allow Passing. create a process in Server1’s Processing add-on process trigger. Release Step. l Also in Server2. C lick the “…” button next to Releases in the Property window to open the Repeating Property Editor. Ranking Rule. Set the State Variable Name to ‘ModelEntity. Processing Time property set to ‘Random.Exponential(50)’. if preferred). l C hange the Time Offset. l Add an additional Assignment to increase the interrupted Entity’s priority by opening the Repeating Property Editor of the Assign Step. The server releases the operator which is then seized by the high priority job’s server. Have this step seize Vehicle1. Seize Step. Select the Process Name to ‘Server2. Value Expression.1 Meters per Second’. Time Offset. the only processing time remaining on that entity is the remaining processing time that was not executed before the interruption.Processing Key Concepts: Add-On Process. l C onnect the Source-Server-Sink sets with unidirectional Paths and change Allow Passing to 'False' in the Paths going from Source to Server.2 Meters per Second’. Set their Desired Speed properties to ‘0. Open the Repeating Property Editor in the Seizes property. no set-up or tear-down time. Technical Approach: Upon the arrival of a high priority job. C onnect the Basic Nodes with a bidirectional Path. C hange the Request Move to ‘ToNode’ with Destination Node ‘BasicNode1’. Add a new Item with State Variable Name set to ‘ModelEntity. C urrent Symbol Index. ModelEntity. Bidirectional Path. Set the Interarrival Time to ‘Random. place a Seize step that seizes Vehicle1. Priority. select ‘Vehicle1’ from the drop down list next to Object Name.Priority’ and set its New Value to ‘2’. BasicNode. Set its Ranking Rule to ‘Largest Value First’. it is then released and re-seized by the low priority job. Add an additional symbol to StandardJob and change the second symbol’s color to yellow. C hange Request Move from ‘None’ to ‘ToNode’ and the Destination Node to ‘BasicNode2’. To do this. l Finally. See Also: InterruptingAcrossMultipleServers and InterruptingServerWithMultipleC apacity. add an Assign step changing the picture back to the original green color to signify processing has resumed.Picture’ with a New Value of ‘0’. add a Release step and select Vehicle1 in the Repeating Property Editor. Send comments on this topic to Information C opyright 2006-2011. set the State Variable Name to ‘ModelEntity. . Set Request Move to ‘ToNode’ with Destination Node set to ‘BasicNode2’. This puts the interrupted server back in the vehicle’s queue list of objects that are trying to seize it. All Rights Reserved.the interrupted entity higher priority than an uninterrupted StandardJob so that it can resume processing on this particular job but still lower Priority than a HighPriorityJob so it can be interrupted if need be. seize Vehicle1 in the Repeating Property Editor. l After the Assign on the interrupted segment. l Place a Seize step. Simio LLC . This releases the vehicle from Server2 and allows it to be seized by a HighPriorityJob. so that as soon as it become free it will return to Server2 to complete processing. but add an additional symbol and change its color to a light green. and ‘HighPriority’. This node will act as the exit point for the interrupted jobs that have to be removed. OnEnteredProcessing. BasicNode. and then change the name to ‘ProcessingTime’. Decide Step. Smallest Value First. Time Offset of ‘Random. and Interrarrival Time of ‘Random.5. Rename BasicNode1 ‘ReRoute’. Save Remaining Time. Assigning Processing Time l l Within the Processes window. the Server*. New Value is ‘Random.Exponential(. 3 Servers. Place an Assign step in the process and set the State Variable Name to ‘ModelEntity. then the lower priority entity is interrupted (with its remaining processing time saved) and routed back to the entry node. Add a Node List with name of ‘ServerInputNodes’ with the nodes Input@Server1. Time Offset of ‘Random. Value Expression Assumptions: All entities wait at one spot for an available server. Release Step. Transfer Step. l From the False exit. Draw paths going from the Sources to the Transfer Node. Add an Object List and name it ‘ServerList’ with the objects Server1. create a New Process and name it ‘AssignProcessingTime’.ResourceState + Server2. Selection Rule. and ‘HighPrioritySource’.ResourceState + Server3. Therefore. TransferNode1 Routing Logic l TransferNode1 needs to route jobs based on their priorities and only to servers with open processing stations. ResourceState. On C reating Entities. To do this.5)’ and Interrarrival Time of ‘Random. Largest Value First.0’. C hange the color of HighPriority to red and its Initial Priority to ‘3. Position the Sources so that they are aligned vertically and align the Servers similarly. Blocked Routing Rule. Rename the Sources ‘LowPrioritySource’.0’. Priority. keep the Initial Priority at ‘1. the Node List Name to ‘ServerInputNodes’ and the Blocked Routing Rule to ‘Select Available Only’. add an Interrupt step and change the Process Name to ‘Server1. Modify the MediumPrioritySource so that is has an Entity Type of ‘MediumPriorityJob’. C hange the color of MediumPriority to yellow and its Initial Priority to ‘2. the Entity Destination Type to ‘Select From List’.1.Exponential(3)’. Go back to the Navigation window and change to the Model for the following steps. Position this node above the set of Servers. Select Available Only. I want to be able to interrupt the processing at a server processing a lower priority entity. Also. as well as from ReRoute to the Transfer Node.Priority==1.Processing Key Concepts: Add-On Process. change their Input Buffer properties to ‘0’. ‘MediumPrioritySource’. Details for Building the Model: Simple System Setup l l l l l l l Place 3 Sources.ProcessingTime’. C hange the Decide Type to ‘C ondition Based’. the Selection . Real State Variable.3)’ and Units is ‘Minutes’. C lick on Definitions Tab. Time Offset of ‘Random.ResourceState will return a value of 1. Add a Discrete State. Technical Approach: All entities go to a single node with routing logic to select an available server. Interrupt Step. Interruption Process Logic l Place a Decide step to determine if the Server is available. Modifying Library Objects l l l l l l l l Add a Discrete State to the ModelEntity called ‘ProcessingTime’. Rename the entities ‘LowPriority’.Exponential(1)’. Entity Destination Type. Modify the LowPriority Source so that it has an Entity Type of ‘LowPriorityJob’. C hange the vRanking Rule to ‘Largest Value First’. Position the Transfer Node in between the Sources and the Servers. Input@Server2. Set the Allow Passing property to ‘False’ for these paths to allow them to queue up at the Transfer Node.Exponential(3)’.ProcessingTime’. Categories: Decision Logic -. a Basic Node and a Transfer Node into the Facility Window. if the entity that entered the node has a Priority of 1. if the sum of the ResourceStates is less than 3.ResourceState) < 3) || (ModelEntity. l Enter this process name in the all three Servers’ Created Entities Add-On Process Trigger property.8.Triangular(.SimBit Problem: I have multiple entities with different priorities and multiple servers. Also. Modify the HighPrioritySource so that is has an Entity Type of ‘HighPriorityJob’.Exponential(2)’. 3 Entities. To select nodes and servers from a list. C onnector. and Interrarrival Time of ‘Random. a Sink. Server2 and Server3. Or.5.OnEnteredProcessing’. Allow Passing. go to the Definitions tab and then to Lists panel. click on ModelEntity in the Navigation window.5)’. there is an open spot and the entity can be processed as usual. TransferNode.Exponential (2)’. All Sources will be sent here first and then to a Server. For LowPriority. ‘MediumPriority’. add an additional symbol and change its color to a slightly different shade of yellow. then States. that means it’s a LowPriority Entity and should interrupt anything. Release Order. C onnect the Transfer Node to the Servers using C onnectors and connect the Servers to the Sink with Paths.0’ and the color green. and Expression to ‘((Server1. Source. If all servers are busy and the entity that is attempting to enter the server has a higher priority than at least 1 entity being processed. If the Server is busy. Last Seized. On Entered. All interrupted entities wait in the same FIFO queue. C andidate. l Set all of the Servers’ Processing Time properties to ‘ModelEntity. C ondition Based. If all servers are busy. Ranking Rule. Path .Simio D oc umentation InterruptingAcrossMultipleServers . Entity. Filter Expression. and Input@Server3. place a Release step and change the Object Type to 'FromList'.Picture’. Simio LLC . add a Transfer step after the Assign step and change the From to ‘C urrentStation’. In the Interrupt step Advanced Options. and New Value of ‘ModelEntity. Set the Link Weight for one Path to ‘ModelEntity. This will now allow both types of entities to be present at the Node at the same time.Priority + . This means that if a LowPriorityJob is in front of a MediumPriorityJob. Important note that the Save Remaining Time property saves the value in ‘Hours’.Priority’. See Also: InterruptibleOperator and InterruptingServerWithMultipleC apacity.Rule to ‘Smallest Value First’ and the Filter Expression to ‘C andidate. add another path with Allow Passing set to ‘False’.5’ and ‘ModelEntity.OnEnteredProcessing’.Priority == 2. To to ‘Node’ and Node Name to ‘RerouteBackToWorkcellEntry’. add 2 more processes in Process Names (More): including Process Name of ‘Server2.Priority == 1. This is because they are waiting on the same path and only the first entity is being evaluated at the Transfer Node. Object List Name to ‘ServerList’ and Release Order to ‘LastSeized’. so we will need to convert back to minutes within an Assign step. All Rights Reserved. C hange the Save Remaining Time property to ‘ModelEntity. New Value to ‘1’ and make another assignment under Assignments (More) of State Variable Name called ‘ModelEntity.5’ for the other. correcting the selection logic. . l Next.Entity. To correct this.Priority’. C hange the Outbound Link Rule in the BasicNode to ‘By Link Weight’. l Embellishments: In this model all interrupted entities wait on the same path with a FIFO selection method. place an Assign step and change the State Variable Name to ‘ModelEntity. l On the Interrupted exit. l Lastly. Send comments on this topic to Information C opyright 2006-2011.Priority < Entity.ProcessingTime’. MediumPriorityJob would have to wait for the LowPriorityJob to be processed before being considered. all the other entities are still waiting to arrive to the node.5’.OnEnteredProcessing’ and Process Name of ‘Server3. If it is False. Process Logic for Interrupting l l l l l l l l On the Server. and Station Name to ‘Server1. Then. and add an additional symbol to LowPriorityJob and change the additional symbol to a light green.ProcessingTime.Triangular(1.ProcessingTime’. From C urrent Station.C apacity.Remaining > 0’. If not. Then. change Process Name to ‘Server1. Selection Rule to ‘Smallest Value First’ (This interrupts the entity with the smallest priority). Place a Decide step to determine if the Server is Available. C andidate.Entity.Priority’ (Ensures that the entity the Server is considering interrupting has a lower priority than the one that just entered the Server). Decide Step. C hange the Server’s Initial Capacity to ‘3’. set Entity Type to ‘JobMix.RandomRow’.InputBuffer’. in the Source. place a Transfer step to transfer the entity back into the input buffer. On Entered. Smallest Value First. so therefore no steps are needed. To to ‘Station’. set Save Remaining Time to ‘ModelEntity.ProcessingTime’ and New Value to ‘Random.ProcessingTime’. Value Expression to ‘C andidate. Filter Expression. Ranking Rule. C onfigure the Transfer Step so that From is set to ‘C urrentStation’. Release Step. The Server will now use remaining processing time the next time it evaluates ModelEntity. interruption is not necessary and no further action is needed. Assign Step.Percentage.Picture’ and New Value is ‘1’. The Decide Type is ‘C onditionBased’ with the Expression ‘Server1.Entity.0’. Categories: Decision Logic -. and Sink. and Filter Expression to ‘C andidate. it looks at the server and sees if there is any remaining capacity. and’ HighPriorityJob’. place an Assign step to change to picture of the interrupted entity. Details for Building the Model: Simple System Setup l l l Drag in a Source.EntityType’. and move the interrupted job back into the input buffer to complete processing later. Add a Real Property called ‘Percentage’ and an Entity Object Reference Property called ‘EntityType’. Before Exiting. Drag in three Entity Instances and rename them ‘LowPriorityJob’.Exponential(.6)’ minutes.OnEnteredProcessing’. C lick on the “…” button and select ‘Server1’ from the Object Name drop down list. Selection Rule. So we place an Interrupt step on the False Branch with the following changes: In General Options. l Expand the Table Reference Assignment properties and set the Table Name to ‘JobMix’ and Row Number to ‘JobMix. add an Add On Process Trigger to Entered to interrupt processing. Server. C apacity. place a Release step releasing Server1. add a Discrete State called ‘ProcessingTime’. Interrupt Step. C hange the color of HighPriorityJob to red and its Initial Priority to ‘3. OnEnteredProcessing.0’. Largest Value First. Source. within the model Facility window. C onnect them all with C onnectors. MediumPriorityJob to yellow and its Initial Priority to ‘2.2. it means that the Server is full and if the Entity has a higher Priority than any one entity on the Server then we need to interrupt processing. l Assigning Process Time to Entities l l In the ModelEntity’s Definitions tab. create a new process in the C reated Entity add-on process trigger and add an Assign step. Transfer Step.Priority’. Modifying Server1 l l l l Drag Server1’s Input Buffer below and resize it so that it is approximately 4 servers long so that you can see the activity.Remaining.SimBit Problem: I have a server with capacity of three and I would like a higher priority job to be able to interrupt the processing of one of the lower priority jobs currently being processed. Save Remaining Time.Priority < Entity. If this is True. State Variable Name is ‘ModelEntity. C hange to Processing Time to ‘ModelEntity.Simio D oc umentation InterruptingServerWithMultipleCapacity .0’. l Set Interarrival Time in Source1 to ‘Random.) After the Assign. but leave its Initial Priority ‘1.3)’. Set the Ranking Rule to ‘Largest Value First’ with a Ranking Expression of ‘Entity. In Advanced Options. See Also: . Priority. Value Expression Assumptions: All entities have the same Processing Time distribution and the remaining process time will be saved. Server. Technical Approach: When the entity arrives to the Server. ‘MediumPriorityJob’. On the “Interrupted” branch. Entity. In the step set State Variable Name to ‘ModelEntity.Processing Key Concepts: Add-On Process.Priority’. (The “Original” branch is for the higher priority Entity so it will be processed as usual. C reating Multiple Entities from One Source Add a Data Table in the Data tab and name it ‘JobMix’. State Assignments. Fill in the table so that it looks like: Percentage----EntityType 70 -------------LowPriorityJob 30 -------------MediumPriorityJob 10 -------------HighPriorityJob l In Source1. the entity will interrupt any entity with a lower priority than itself. If the arriving entity has the same or lower priority than the three entities being processed it will enter the Input Buffer and wait for one of the entities to finish processing. All Rights Reserved.InterruptibleOperator and InterruptingAcrossMultipleServers Send comments on this topic to Information C opyright 2006-2011. . Simio LLC . Server. Details for Building the Model: Simple System Setup l Add a Source.9). After 12 hours the Server is 90% effective and after 18 hours the Server is 100% effective. TimeNow is a function that returns the current simulation time. This function will be used within the Processing Time of the Server as the efficiency. Server.SimBit Problem: I have a machine that increases its efficiency subject to a learning curve function. and Sink to the Facility Window. (18. Send comments on this topic to Information Copyright 2006-2011. select the Functions Tables panel and add a Discrete Function Table with the Name property of ‘LearningC urve’. 0. 0.LearningC urve[TimeNow]’. try changing the Default entity’s Travel Logic to a desired speed. Embellishments: To make this model more specific. the Source’s Interarrival Time rate or the Speed Limits on the Paths. Linear Interpolation. 1). Add the following (X.Simio D oc umentation LearningCurveWithFunction . f(X)) pairs in the table: (0. Specifying the Server Processing Time l Update the Processing Time of the Server to ‘10/Function. Learning C urve. Categories: Function and Rate Tables Key Concepts: Function Table. Using a Function Table l In the Data Window. Technical Approach: The Server’s learning curve will be represented by a Discrete Function Table. . (12.2). At 100% efficiency. Status Plot Assumptions: The Server starts at 20% effective. The Processing Time property of the Server will reference this Discrete Function Table. the Server’s Processing Time is 10 minutes. Simio LLC. All Rights Reserved. All Rights Reserved. Details for Building the Model: Simple System Setup l l Place a Source. Technical Approach: The Source reads information from a Data Table to determine which entity type to create for each arrival. a Server and a Sink into the Facility window and connect them with Paths.Parts. Entity Type. it sets the value of RowNumber back to 1 so it reads at the beginning of the table again. 1.Simio D oc umentation LeveledArrivals . Place 4 ModelEntity objects into the Facility window and name them PartA. If False. Sink model that simply demonstrates controlling the order of arriving entities. Server. they arrive in the order A A A A B B B C C D and this pattern repeats. Add a column that is an Entity property by selecting Entity from the Object Reference drop down in the ribbon. This will tell the Source to look in this table to determine which type of entity to create. are we at the last row?). Data Tables Key Concepts: AvailableRowC ount. click on the States panel along the left side of the interface and then click on Real in the ribbon to create a new Discrete State. Source. To change the color of an entity. State Assignments.SimBit Problem: I would like to model a system where parts of different types arrive in a certain order. Math. Before Exiting. l From within the Facility window. If True. The column can be renamed to Parts. RowNumber is incremented by 1. C lick Add to create a new Assignment and set State Variable Name to ‘RowNumber’ and New Value to ‘Math.If( RowNumber == Table1. l Expand the State Assignments property category and open the Repeating Property editor of the Before Exiting property (by clicking on the ellipse in the text box). expand the Before Creating Entities category and set the Table Name to ‘Table1’ and the Row Number to ‘RowNumber’ (the new State). Before C reating Entities. select the entity and then select a color from the C olor drop down in the Symbols ribbon and click back onto the entity. It should then change colors. From within the Definitions window. Go to the Data window and click the Add Data Table icon in the ribbon to add a new table.e. l Set the Entity Type property of the Source to be Table1. C ondition. PartB. l Embellishments: C hange the pattern of arrivals or try adding additional information into the Data Table and using it in the model. l l l Add Table Referencing To Source object Go to the Definitions window and create a new State variable.If (). Real State Variable. Send comments on this topic to Information Copyright 2006-2011. (RowNumber + 1) )’ This checks to see if the current value of RowNumber is equal to the total number of rows in the table (i. click on the Source and expand the Table Reference Assignments category. Data Table. ¡ Ensure that the color of each entity is different to help with model verification.AvailableRowC ount. Simio LLC. . This is telling the Source object to set a reference to the Data Table before an entity is created. C hange the Initial State Value to ‘1’.Name it ‘RowNumber’. Categories: Arrival Logic. Table Reference Assignments Assumption: This is a simply Source. where Table1 is the name of the Data Table and Parts is the name of the column within the table. PartC and PartD. Next. C reate Data Table The Data Table will contain the order in which the different entities should arrive. l Fill the table with any orders you’d like – in this example. Dynamic Object Property. Source1 produces ModelEntity1 (Green) and Source2 produces ModelEntity2 (Red). Discussion: This procedure of using a Property works well for entities that will not change during the run (e. you will take advantage of the Selection Weight property on the outgoing links from Server. Technical Approach: An Integer Property will be added to the Default Entity. Details for Building the Model: Simple System Setup l Add two ModelEntity objects from the Project Library and two Sources. in the ModelEntity1 and ModelEntity2 instances. For the other. Categories: Decision Logic -.SimBit Problem: I have entities that need to be sent to certain destinations based on their entity type. respectively. Defining the Entity. but States can). See Also: LogicBasedOnEntityState. a Server. ModelEntity2 always has a value of 2).spf Send comments on this topic to Information Copyright 2006-2011. Adding an Integer Property to the Default Entity l l l Highlight ModelEntity in the Navigation window (not the Model) and select the Definitions tab and Properties panel. Add a new integer property by clicking on Standard Property > Integer. and two Sinks from the Standard Library to the Facility Window.Paths Key Concepts: Numeric Property. C hange the Name property to ‘EntityType’. change the Selection Weight to the expression ‘ModelEntity. If “EntityType” is something that could change during the run. For one link.Type l In the Facility Window of the Model. . All Rights Reserved.EntityType==2’.EntityType==1’. Selection Weight Assumptions: Each source only produces one type of entity. change the Selection Weight to the expression ‘ModelEntity. You can also change its default value here if you like. Simio LLC. C reating the Logic Decision l l To make the decision. you would instead make it a State (Properties cannot change during a run. The Property will then be referenced in order to make a decision. Path.g. The Property will be set as unique for each entity instance.Simio D oc umentation LogicBasedOnEntityProperty . you will see the new EntityType property you just created. l Set the EntityType Property to ‘1’ and ‘2’. EntityType==2. change the Selection Weight as the expression ‘ModelEntity. a Server.0’. enter the Before Exiting repeating editor and add the State Variable Name of ‘ModelEntity. For one link. Assigning the State Variable l Within the State Assignments section of the Sources. State Assignments Assumptions: Each source only produces one type of entity. See Also: LogicBasedOnEntityProperty. Categories: Decision Logic – Paths. Source 1 produces ModelEntity1 (Green) and Source 2 produces ModelEntity2 (Red). while Source2 has a an Entity Type of ‘ModelEntity2’. and two Sinks from the Standard Library to the Facility Window. C reating the Discrete State Variable l l Highlight ModelEntity in the Navigation window (not the Model) and select the Definitions tab and States panel. Add a Discrete State Variable to the ModelEntity with Name ‘EntityType’.EntityType==1. If the item will not change during the run.g. Discussion: This procedure of using a State works well for items that could change during the run (e.0’. An Add-On Process will be used to assign this State Variable a value based on the entity type. C reating the Logic Decision l l To make the decision.0’ (for Source2). it would be easier and more efficient to have EntityType be a Property instead of a State of the ModelEntity. l C hange the name of the ModelEntity objects to ModelEntity1 and ModelEntity2 and make sure that Source1 has an Entity Type of ‘ModelEntity1’. Details for Building the Model: Simple System Setup l Add two ModelEntity objects from the Project Library and two Sources. perhaps EntityType needs to change as it proceeds through processing). Path. .EntityType’ a New Value of ‘1.spf Send comments on this topic to Information Copyright 2006-2011.EntityType’ a New Value of ‘2. you will take advantage of the Selection Weight property on the outgoing links from the Server. For the other.Simio D oc umentation LogicBasedOnEntityState . All Rights Reserved.SimBit Problem: I have entities that need to be sent to certain destinations based on their entity type. Simio LLC. use the expression ‘ModelEntity.0’ (for Source1) and State Variable Name of ‘ModelEntity. Real State Variable. LogicBasedOnEntityState Key Concepts: Before Exiting. Technical Approach: A Discrete State Variable will be added to the ModelEntity. The State will then be referenced in order to make a decision. C hange its Node Class to ‘BasicNode’. l Defining the StockPile Object’s External View In the External Panel of the Definitions tab. Increased flow means more flow is leaving the first stockpile. C reate Step. C lick on the left-hand node. you can choose to Download a Symbol from Google Warehouse. Station Element. Technical Approach: We will create a new object called a StockPile and represent the amount of material in each stock pile with a Level State Variable. l Next. This could be the arrival of a new truck. click ‘New Model’ to add a Fixed C lass Object to your Project Library. add an Event and name it ‘Stop’. Size. drag in 2 StockPile objects from the Project Library and connect them with a C onveyor. Drag in an Assign Step from the list of C ommon Steps. Expression Property. click C reate Process in the Ribbon. Rename this node ‘Input’. Set the Triggering Event for this Process to ‘RateC hange.SimBit Problem: I have 2 stockpiles of material and I want material to flow from the first stockpile to the second at a variable rate. C reating the StockPile Object Definition In your Project Home Tab. Event. You can find this particular symbol by searching for “Trash Pile” – it will be the first option. OnRun Initialized Process. Process Triggering Event. Fixed C lass Object. Details for Building the Model: Adding a State to ModelEntity l 1 First we must create the State on the Entity that will carry the new Flow Rate information from one pile to the other. Label. Add a Real State and name it ’FlowC hange’. Name this station ‘Pile’. you can (optionally) give your StockPile a new Symbol by clicking on Place Symbol button in the Ribbon. place an Assign step into the process. another worker is on shift. First. If not.FlowC hange’. l Defining the StockPile Object Processes In the Processes window. Lastly. select ‘OnRunInitialized’ from the Select Process drop-down to create a new OnRunInitialized Process. To do this. l Next. If you have an applicable 3D image you can choose Import Symbol.05 Meters per Second’. Name this property ‘InitialOreQuantity’.Rate’ the Value of ‘–ModelEntity. add a new Station Element by clicking the button in the Ribbon. This Process will set the initial value for each stockpile’s ore level to match the user-defined initial ore quantity property that will later be defined in the Model. Level State Variable. place an Assign step that assigns the State Variable Name of ‘OreQuanitity. This allows the receiving StockPile to receive at a rate equal (but opposite) to the rate that is flowing out of the first StockPile. etc. This timer will represent random points in time that the flow rate could change in a system. Set the C onveyor’s Initial Desired Speed to ‘. Set the Triggering Event in the Properties Window to ‘Pile. Set the State . Set its Time Interval to ‘Random. OnInitialized Process. l In the Elements Panel in the Definitions Tab. add a Timer Element and name it ‘RateC hange’.Width. Size. l C reating the Model In your ‘Model’ Object. Real State Variable.Height. add a Level State and Name it ‘OreQuantity’. click on the External Node button in the Ribbon and bring in 2 External Nodes. EndTransfer Step. l For the right-hand node. C hange the Category Name to ‘Initial Ore Quantity’. C onveyor. l In the Elements Panel of the Definitions Tab. change its Node Class to ‘TransferNode’ and change its Name to ‘Output’. Leave the Input Logic Type to ‘None’. click on ModelEntity in the Navigation Window and go to the States Panel in the Definitions Tab. l In your Events Panel. we will change the outgoing rate of the first stockpile object and pass the new rate to the second stockpile object using an entity to represent the leading edge of the new flow of material.Exponential(10)’ and the Units to ‘Minutes’. Set the State Variable Name to ‘OreQuantity’ and rightclick on the New Value. Categories: Building New Objects / Hierarchy. External View. click on the C reate Process button in the ribbon and create a process with the Name ‘TimerRateC hange’.Simio D oc umentation MassFlowProcessing . Level States Key Concepts: Assign Step. This process will then be activated when the pile is entered by an entity. place a Destroy step to destroy the entity carrying the information after it has been received. Delay Step. l After placing the symbol. ExternalNode.a decrease in flow means less material is leaving and the flow becomes less negative). Status Label. the second stockpile has to wait for the new flow rate to reach it before noticing a change in flow rate. Within the process. Button. l Adding Model Processes Window l In the Process tab.Entered’.Event’. click on Set Referenced Property and select the Property ‘InitialOreQuanity’ from the list. since this will be the output node. place an EndTransfer step to signal that the Station has accepted the exchange. Rename this Object ‘StockPile’ by right-clicking on the new object and choosing ‘Rename’. meaning the flow rate becomes more negative (and vice versa . Transfer Step Assumptions: All flows go from the left to the right. At various events. Timer Element. After that. When the flow rate changes. Status Label. You may want to resize your symbol in the symbol editor. its Input Logic Type to ‘ProcessStation’ and the Station to ‘Pile’. l In the States Panel.Length. Place one on the left-hand side of the object and one on the right-hand side. add an Expression Property from the Standard Property drop-down list in the Ribbon of the Properties Panel. Size. OreQuantity/10’. Animating the Stockpiles l To represent the animation of the stockpiles.0.Uniform(10. 1 Material refers to the substance flowing from one stockpile to the other – not to be confused with a Simio Material Element Send comments on this topic to Information Copyright 2006-2011. l C lick the ‘…’ button next to Assignments (More) and add 5 additional items. Enhancing Animation In the Animation Ribbon in the Facility tab. the next item will be ‘StockPile1. as well.Size. To do this. Simio LLC. Set the first item’s State Variable Name to ‘StockPile1. Finally. Place an Assign Step to assign the Height. StockPile1’s OreQuantity will become extremely negative. We want the almost the exact same process for the Stop Event. Set the Expression to ‘OreQuantity’.OreQuantity. l Drag the process Endpoint to the input of the Delay to create a loop. When the process gets shaded with diagonal lines and the Properties window changes to the Process Properties. click the Select Process button in the Ribbon and choose ‘OnInitialized’ from the drop down list. which in reality is impossible. then C trl+V to copy and paste the entire Process. C opy the first Process by clicking in the white space of the Process. then clicking the Status Label button in the Symbols Tab. Set the State Variable Name to ‘ModelEntity.Length’ and its New Value to ‘StockPile1.OreQuantity/10’. set the first State Variable Name to ‘StockPile1. .Size.0)’.Size. Fill out the next 3 items with the same State Variable Names and Values but with StockPile2 instead. From the C reated exit of the C reate step. C hange the Name to ‘StopFlow’. 0. place a Transfer Step after the Assign. To ‘Node’. we create an entity to carry the new Rate down the conveyor to the next stockpile.Rate’ and the New Value to ‘StockPile1.Height’ and the New Value to ‘StockPile1. To end the run when StockPile1’s OreQuantity reaches 0. Add both Status Labels for the other StockPile objects. Triggering Event to ‘Stop’ and in the first Assign step change the New Value to ‘0’.Rate’. Similarly. Next.Rate + Random. This will Increase the “Flow Out” of the stockpile.FlowC hange’ and its New Value to ‘StockPile1. l Embellishments: If left running. Node Name ‘ Output@StockPile1’. We will Transfer From ‘FreeSpace’ (where the entity is C reated). add a Button and the Button Text to ‘Stop Flow’ and set the Event Name to ‘Stop’. and Width of the StockPiles according to the size of the OreQuantity State.5 min was used in this example. l Add a Delay step and set the Delay Time to an appropriate amount. Length. l Drag in a ModelEntity Instance and attach a Status Label to it and set this Expression to ‘FlowC hange’. we need to Assign the new Flow Rate that was created in the first Step so we place an Assign.OreQuantity.OreQuantity/20’. In the Processes Window. This allows the animation to update every time the Delay is executed. we must place a C reate step after the Assign and create a DefaultEntity Object Instance Name.Rate’.l l l l l Variable Name to ‘StockPile1. All Rights Reserved. This entity will act as the leading edge of the new flow of material.Width’ and its New Value will be ‘StockPile1. To do this. so press C trl+C .OreQuantity. see the SimBit ‘UsingMonitor’ for detailed instructions. we need to make a new process. and add another for ‘OreQuantity. it means that it is selected. l Attach Status Labels to each StockPile by clicking on each StockPile object. place a Decide Step which checks the input buffer of Server 2 to see if there are 5 or more entities waiting. This tells the system that the Worker will move to Server2 and work there until the input buffer is empty. ¡ C reate a new process that is called from the Evaluating Seize Request property by selecting ‘C reate New’ from the drop down of this input box. l Repeat the above step for Server2. C ontents. Categories: Building New Objects / Hierarchy Key Concepts: Add-On Process. Open the Repeating Property editor for the Before Exiting property by clicking on the ellipse that appears in the text box of this property. Details for Building the Model: Simple System Setup Add a Source. n Go to the processes window and in the process called Worker_Released. Under the Resource for Processing category. The Worker will then work on the second Server until the input buffer is empty and then return to working on the first Server.C ontents >= 5. l Set the Park While Busy property of the Worker to ‘True’.SimBit Problem: I want to model a system that has two Servers in series and requires a Worker to be present at each Server before processing can occur. ParkingStation Queue. A state variable at the Model will indicate which Server the Worker should be working on. ¡ C reate a new process that is called from the Released property by selecting ‘C reate New’ from the drop down of this input box. This will keep track of which server the Worker should be working at. Technical Approach: The Worker is modeled with a standard Worker object. Set the Request Move property to ‘To Node’ and the Destination Node property to ‘BasicNode1’. Animation should show the Worker moving between the two servers and parking at the appropriate Server for processing. Add On Processes on the Worker object will check the contents of the Input Buffer queue to see if the Worker should be working at Server1 or Server2. l Place a Worker object in the Facility window and change its picture to a person by clicking on the Worker object and selecting a new symbol from the Project symbol library in the ribbon. ¡ C reate a new Real Discrete state by clicking on Real in the ribbon. which will tell the Worker to park at the node while it’s processing instead of stay on the link. l Back in the Facility window. click on the Worker. State Assignments. another Decide Step checks to see if the input buffer is empty and if so. Set the Initial State Value in the properties window to ‘1’. RideStation Queue. It must also seize Worker1 and before processing. The Worker object is seized by each Server before processing and the model ensures that the object is located at the appropriate node before it begins Processing. It will work at the first Server until the second Server has 5 or more entities waiting in its queue. l C reate New State l In the Definitions window of the model. set the Object Type property to ‘Specific’. but set the Destination Node property to ‘BasicNode2’ instead of ‘BasicNode1’ so that Worker1 arrives at the node closest to Server2. l C onnect the Source to the first Server.Simio D oc umentation MoveableOperator . ¡ Adding Logic to the Servers C lick on Server1 and expand the Secondary Resources property category. This tells the Server that it must seize Worker1 and it must arrive at BasicNode1 before processing can begin at this Server. which animates the moveable resource.InputBuffer. Place the nodes near each of the Servers. Add On Process Logic for Worker l C lick on the Worker object and expand the Add On Process Triggers property category. two Servers and a Sink to the Facility Window. Set the Decide Type to ‘C onditionBased’ and the Expression to Server2. If False. Name this new state ‘WorkerTaskPriority’. l C lick back on Server1 and expand the State Assignments property category. Add two Basic Nodes that are connected to each other with a bi-directional path. The Worker object travels between two nodes that are located near each Server. This new process will check the current Task Priority when Worker is Released from a job. On Evaluating Seize Request. If True. connect the first and second Server together and connect the second Server to the Sink with Paths.Priority’ and the New Value to ‘2’. C lick Add and set the State Variable Name to ‘ModelEntity. Worker Assumptions: There is only one Worker in the system. the state WorkerTaskPriority is set to a value of ‘2’ with an Assign Step. On Released. Secondary Resources. set the Object Name property to ‘Worker1’. This new process will be executed each time a Server is attempting Allocation of the Worker Object. Add a ModelEntity object to the Facility Window and change its picture to a box. This is the path that the movable resource will take between the Servers. Before Exiting. . it assigns the value of ‘0’ to the state WorkerTaskPriority with an Assign Step. InputBuffer. Decide Step. This changes the priority of all entities that leave this Server from the default value of 1 to the new value of 2. Server. go to the States panel. ¡ Set the Initial Node(Home) property to ‘BasicNode1’. Assign Step. ReturnValue is set to ‘False’.n Go to the processes window and in the process called Worker1_EvaluatingSeizeRequest. then the entity will get capacity of the Worker since the Worker object is supposed to stay at that server. Token. If the priorities do no not match.Priority == WorkerTaskPriority'. All Rights Reserved. based on the value of WorkerTaskPriority. which means that the allocation attempt of the Worker object was rejected. place a Decide step that checks to see if the entity that is evaluating its allocation should get the capacity of the Worker. Simio LLC. If True. Send comments on this topic to Information Copyright 2006-2011. Set the Decide Type to ‘C onditionBased’ and the Expression to 'Entity. . l l ¡ ¡ ¡ ¡ ¡ ¡ l Place a Move Step in this process. Rename the Server objects to Room1 and Room2. Set the Decide Type to ‘C ondition’ and the Expression to ‘ModelEntity. then move to another node and delay again. Expand the Secondary Resources category within Room1’s properties and under the Resource for Processing category. l Repeat the above steps for the Room2. This is how long the Worker will wait at the Lab node before moving on. Name one TransferNode ‘Lab’ and the other ‘Desk’. the Entity within the Server “owns” the capacity of the Worker. one near each Server.ID’. The entire time. Selection Weight. Is. create a new process by clicking on ‘C reate Process’ in the ribbon. Secondary Resources.ParentRunSpaceID == Room1. This is where we tell Room1 to seize Worker1 and have it move to Room1. Place two Sink objects. In this example.Worker. Place a Delay Step and set the Delay Time to ‘2’ and Units to ‘Minutes’. set the Selection Weight to ‘Is. Worker Technical Approach: There are two Server objects that both need to seize a Worker object and have the Worker move to the Server before processing can begin. from Lab to Desk. Delay Step. Send comments on this topic to Information . Place a Decide Step. set the Object Name property to ‘Worker1’. click the Add button and set Object Name to ‘Worker1’ and Destination Node to ‘Lab’. Details for Building the Model: Simple System Setup l l l l l l l Place a Source object.SimBit Problem: I have seized a moveable resource and now I’d like it to move to a couple of locations within the model before I release the capacity of the resource. After processing finishes at each Server. C onnect the Source to the Servers with paths. The same process can be called from each Server. It is “Busy” until the Entity releases the capacity of the Worker. Place Paths going from the output nodes of the servers to Lab. before processing can begin at the server. In the False segment leaving the Decide Step. within the Facility window. the entity releases capacity of both the Server and the Worker and it moves out of the Server. l Within the Processes window. select Room1 and expand the Add On Process Triggers property category. and connect Room1 to Sink1 with a path and connect Room2 to Sink2 with a path. but instead of setting Destination Node to ‘Output@Room1’.Simio D oc umentation MoveASeizedObject . Logic for Seizing and Moving Worker Select Room1 and set its Processing Time property to ‘2’ minutes. no other object can get capacity of this Worker object. place a Move Step that moves ‘Worker1’ to ‘Output@Room1’. In the True segment leaving the Decide Step. ParentRunSpaceID. Place two Transfer Nodes into the Facility window. ModelEntity. Place a Worker object into the Facility window. Place a Delay Step and set the Delay Time to ‘2’ and Units to ‘Minutes’.Exponential(9)’. the Processed Add On Process trigger executes a process. the Entity releases capacity of the Worker once the Entity leaves the Server. Move Step. which will check to see which Room the Worker should return to. Do the same thing for Room2. Within the editor window that appears. Open the Resource Move Requests repeat group property window by clicking on the … (elipse button). followed by two Server objects that are in parallel. This process tells the Worker object to move to a node. Entities will go directly into the Sinks.Worker’ to ensure that no Entities travel on these paths (they are for workers only). In this same property category. This is how long the Worker will wait at the Desk node before moving on. In the Paths connecting the Output Nodes to Lab. Place another Move Step and within the Resource Move Request – Repeating Property editor window. delay. Once the Worker reaches the Server. In the Processed trigger. Path. somewhere between Room1 and Room2. Within the Facility window. select the new process you just created. Discussion: Because the entity “owns” the Worker object while it is moving through the system. place a Move Step that moves ‘Worker1’ to ‘Output@Room2’. Or increase the Interarrival Time on the Source object and then increase the number dynamic Worker objects there are in the system to ‘2’. enter ‘Output@Room2’. set the Request Move property to ‘To Node’ and set the Destination Node property to ‘Output@Room1’. the Worker is told to move back to the Server where the Entity is still waiting in the Processing station. Embellishments: Add additional Move Steps that require the Worker to visit other locations while it is seized by the entity. ID. Server. Name this process ‘Server_Processed’. set Object Name to ‘Worker1’ and Destination Node to ‘Desk’. This is checking to see if the Entity that “owns” this Worker right now is currently located in Room1. Set its Initial Node (Home) property to ‘Desk’ and set its Idle Action property to ‘Go to Home’. Finally. C lick on the Source object and change the Interarrival Time property to ‘Random. Categories: Worker Key Concepts: Decide Step. and from Desk back to the server output nodes. C opyright 2006-2011. All Rights Reserved. Simio LLC . . l Within this new process. pitch.X’. we know that Finish is “below” Start in 2D view (Quadrants 3 or 4). the tangent and inverse tangent funtions are based off of 0° being East.X > Output@Start. looking down in the 2D view.Z)/ . We use the Arctangent function to set Headings and Pitch values.Atan((Input@Finish. To set the Heading for the Entity. and Delay Time accordingly. Finish is “above” Start (Quadrants 1 or 2). we need to offset the inverse tangent value by adding or subtracting 90° in Simio. l Similarly.Simio D oc umentation MovementInFreeSpace_WithTargetLocation . so first we have to convert to Degrees by multiplying by 180/π then offsetting by the proper Angle. Finish is to the Bottom-Right. Setting the Heading Now that we know where the Finish is with respect to the Start.SimBit Problem: I want an entity to be able to move from one object to another in 3D free space. l First. If the angle is outside of this range.e. Note: Math. decide where each object is in respect to the other. We need to know the value of A. And if False. use a series of algebraic and trigonometric equations to set its Heading. Power.Heading’ to the New Value to ‘Math. Determining Placement Next. think of “A” as the Source and “B” as the Sink. “A” would have coordinates (X1. I need to calculate the appropriate heading. These equate to compass headings with a compass placed on the floor and pointing with north in the up direction.X > [email protected] . For example. we need to know the Angle made up of the lines AC and AB.Movement. and Quadrant 3 if False.Location. Rename the Source ‘Start’ and the Sink ‘Finish’. we assume 0° is North. it is in Quadrant 2.Z > Output@Start. This is the only process within the entire model. and a ModelEntity into the Facility Window. ¡ If this is true. One problem with inverse tangent is that it is only valid for angles between 90° and -90°.Location. Trigonometry Review: In the diagram to the right.Output@Start. l If Finish is in Quadrant 4 (Z2 >Z1 and X2>X1). Pitch. to do this we need to make use of the inverse tangent of Opposite/Adjacent in order to get the value of A (i. a 45 degree Pitch will cause the entity to fly at an angle of 45 degrees to the floor (i. based on its location.Sqrt(). we place a Decide Step with Decide Type ‘C ondition Based’ and an Expression ‘[email protected]. Delay Step.Pow().Output@Start. The difference in X is reflected by the side labeled “Adjacent.Z’.Location. If you recall. and travel delay values for the entity.Z. Math.Heading’ to the New Value to ‘Math.Atan(). Also.e.Location.Y. we can assign the proper headings for the Entity. Heading is measured in degrees from “north” where “north” points up when viewed in the 2D top down view. place a Transfer Step. To correctly assign a Heading.Location.Z)/ (Input@Finish. Transfer Step Technical Approach: When an Entity is created. and in Simio. Math. we transfer the Entity to free space. climb at 45 degrees to the surface). we place another Decide Step with a ‘C ondition Based’ Decide Type and the Expression set to ‘Input@Finish. place an Assign Step and set the State Variable Name to ‘ModelEntity.Movement. Inverse Tangent. Assign Step. and if false.Location. FreeSpace. Movement. The Pitch is relative to the floor in degrees.Atan((Input@Finish. Simio uses the X-Z plane to represent its “floor”.Location. So place a Decide step after the Transfer Step and set the Decide Type to ‘C onditionBased’ and the Expression to ‘Input@Finish. Location. Categories: Movement In Free Space Key Concepts: Arctangent.X’. ModelEntity. l On the True segment of the Decide Step. Decide Step. ¡ If this is true.Location. Movement. Finish is above and to the right of Start (Quadrant 1). Set From to ‘C urrentNode’ and To to ‘FreeSpace’. we need to figure out where the Finish is with respect to Start through a series of Decide Steps. Sink.X-Output@Start. and returns a scaling value for triangles with a known value of A.Pitch.X)) * 180/Math. place an Assign Step and set the State Variable Name to ‘ModelEntity. See the Entity Routing and Movement page for additional information. on the False segment of the original Decide Step.Atan() function returns a value in Radians. tan(A) = Opposite/Adjacent.Z . Math.Location.Heading. Details for Building the Model: Simple System Setup l l Drag a Source.Location. Therefore. ¡ If this is true. Location. Quadrant 4. Square Root. and then transfer back to a new Node. and the Pythagorean Theorem to calculate straight line distances.Location. we check to see if Finish’s Z value (Z2) is greater than the Start’s (Z1). Z1) and “B” (X2.” and the difference in Z is reflected by the side labeled “Opposite”. Z2). we need to first figure out where the objects are with respect to each other.Pi +90’ l If Finish is in Quadrant 3 (Z2>Z1 and X2<X1). Location. Process Logic: Transferring to Free Space l C reate a new Process in the Entered Add-On Process Trigger of the Output@Start node. A=tan-1(Opposite/Adjacent)). Z .Location.Pow((Input@Finish. See Also: EntityMovementInFreeSpace . .Pi – 90’. we find the straight line distance in 3 dimensions and divide by the rate. Each Assign will have the same set of [email protected]. and Speed until you tell it to change one of these parameters or transfer it to a node after some amount of time.Location.Heading’ to the New Value to ‘Math.Pow ((Input@Finish. place a Transfer Step after the Delay Step. calculated using the Pythagorean Theorem.Rate/3600)’ with Units of ‘Seconds’. open the Repeating Property Editor to add another assignment.Location.Location.X). Simio LLC .Location.Z)/ ([email protected]@Start. All Rights [email protected]((Input@Finish. place an Assign Step and set the State Variable Name to ‘ModelEntity.Pow([email protected] .X-Output@Start. an entity moves in a straight line according to its Pitch.Z).SimBit Send comments on this topic to Information C opyright 2006-2011. To figure out exactly how long to delay before transferring to the Node.Z [email protected](Math. Set each State Variable Name to ‘ModelEntity.Z).2) + Math.Heading’ to the New Value to ‘Math.X-Output@Start. Note: Our Entity’s speed is Defined in Meters Per Second but the ModelEntity.2))) * 180/Math. Heading.Location.Y.Location. so to convert this into seconds we divide by 3600.Pi + 90’ l If Finish is in Quadrant 2 (Z2<Z1 and X2<X1). 2) + Math.2) + Math.Movement.Sqrt(Math. place one Delay step after all the Assign Steps and have them all enter at the same [email protected])) * 180/Math.Location.([email protected]@Start. we once again make use of the Math.X)) * 180/Math. l l In each Assign step that was previously placed.X). Embellishments: Although this example has entities moving from a Source to a Sink. Transferring Back To Node l l Finally.Location.Location. l l To set this Time.Pi – 90’ l Setting Pitch To set the Pitch.X-Output@Start. but now “Opposite” is Y2-Y1 and “Adjacent” is the straight-line distance on the X-Z [email protected]. We are still dealing with Opposite/Adjacent as we were with [email protected]. this could have been done between any 2 nodes.Pi’ Setting Delay Time When in free space.Atan((Input@Finish. place an Assign Step and set the State Variable Name to ‘ModelEntity.Pow(([email protected]((Input@Finish. Set the Delay Time to ‘Math.Location.Location. If Finish is in Quadrant 1 (Z2<Z1 and X2>X1).Y) / Math.Pow(([email protected])) * 180/Math.Y .Z)/ ([email protected]’ and New Value to ‘Math. 2)) / (ModelEntity.Location.Location.Z .Location.Rate is defined in Hours.Location.Movement. but this time we are dealing with 3 dimensions.Movement. Set From to ‘FreeSpace’ and To to ‘Node’ and set the Node Name ‘Input@Finish’.Atan() function. Finally. The user can set the Warning Level to Alert User (this is the default). ¡ In the drop down of the On Event Process property. to see the behavior of the two choices. Send comments on this topic to Information C opyright 2006-2011. Go to the Definitions Window. Discussion: The Warning Level is controlled from the Run ribbon under Advanced Options.C ontents’ Set the Threshold Value to ‘3’. You should be in the Elements panel (Elements highlighted on the left of the screen). Event. Simio LLC . which means that this Monitor will fire when the contents of the InputBuffer cross over the value of 3 in the positive direction (i. Set the Monitor Type property to ‘C rossingStateC hange’ Set the State Variable Name to ‘Server1. All Rights Reserved. Monitor. they must select Re-enable Disabled Warnings from the Advanced Options tab to get the Warnings to reappear.InputBuffer. Details for Building the Model: Simple System Setup l l Place a Source. C rossingStateC hange.Simio D oc umentation NotifyStep . Buffering Key Concepts: C ontents. a Server and a Sink into the Facility window and connect them with Paths. First select “C ontinue running” in the pop up window and then select “Pause the Simulation”. Write to Trace Only. Set the Crossing Direction property should be set to ‘Positive’. This new process will be executed when this Monitor fires.SimBit Problem: When a certain event occurs or when a variable reaches a certain point. ¡ ¡ ¡ Set the Notification Type to ‘Warning’ Set the Message Heading to “InputBuffer Monitor” (include the double quotes since this is a String) Set the Message Content to “InputBuffer has more than 3 entities” ((include the double quotes since this is a String) Embellishments: C hange the contents of the String message that is in the Message Heading or the Message Content properties. Categories: Add-on Process Logic. This model will place a Notify Step to be executed when a Monitor element fires. or Do Nothing. create a new Process by select “C reate New”. On Event Process Technical Approach: A message can be displayed to the screen with a Notify Step. InputBuffer. Once the user selects Do Nothing or selects the “Don’t show this warning again” check box in the pop up window. . Notify Step. ¡ ¡ ¡ ¡ ¡ C lick on Monitor in the Ribbon to create a new Monitor element. when it increases from 3 to 4). l Go to the Processes window and you should see the new Process that was just created. asking them to either continue running the simulation or giving them the ability to pause the simulation to investigate the event. This Monitor element fires when the contents of the Server’s InputBuffer station exceed 3. Place a Notify Step into this process (located under All Steps). I want the simulation to pause while a message is given to the user. select “Don’t show this warning again” at the bottom of the window to turn off future warnings.e. followed by Input@Server2. first list [email protected] D oc umentation OneQueueForMultipleServers . l C reate a Node List l Go to the Definitions window and open the Lists panel. Input Buffer. but the same concept can be applied if there were more than two servers. l C onnect the Transfer Node to the input node of each server with paths. C reate a new Node List by clicking on the Node icon in the ribbon. NodeList. All Rights Reserved. The Blocked Routing Rule is set to ‘Select Available Only’. This ensures that the entity does not leave this Transfer Node and travel to its destination if there are entities at each server. Set the path’s Allow Passing property to ‘False’. the first entity in the queue will move to the available server for processing. Technical Approach: There are two servers. Lists. In between. Set the Input Buffer property on each server to 0. The Selection Goal property is set to ‘Random’ in this example. Ensuring One Queue l l l l C lick on the Transfer Node. Embellishment: Experiment with more servers and see the behavior change when you change the Blocked Routing Rule property on the Transfer Node. The InputBuffer property on each server is set to ‘0’. Set the Entity Destination Type property to ‘Select From List’. Place a Transfer Node in front of these two Servers. The Transfer Node is configured to only send entities on paths that are available.SimBit Problem: I have multiple servers and I would like one queue that feeds into these two servers. Details for Building the Model: Simple System Setup Place a Source object and a Sink object in the Facility window. Categories: Buffering Key Concepts: Allow Passing. l C onnect the Source to the Transfer Node with a Path. A Transfer Node is placed in front of the two servers. Path. Select Available Only. which ensures that the entities will wait here if there are no servers available. place two Servers that are in parallel to each other. Eliminate Input Buffers l Eliminate the Input Buffer at each server so that the entities cannot wait in this location for server capacity. In the node list. Simio LLC. Blocked Routing Rule. l C onnect the output nodes of each server to the Sink. Send comments on this topic to Information Copyright 2006-2011. The Path that leads to the Transfer Node has its Allow Passing property set to ‘False’ so that the entities wait one behind the other on this link. This will ensure that entities do not wait at each server. . TransferNode Assumptions: If there are entities waiting and one of the servers becomes available. Selection Goal. Set the Node List Name property to the name of your new Node List. UnitsOwned’. use the expression ‘ResourceA. use the ‘MainWIP.Simio D oc umentation OverflowWIP . The combination of the above will result in a weight of 1 for the correct path and a weight of 0 for the other path. Animation Embellishment: To make it easier to see the FIFO behavior. C apacity.C apacity. 4 Servers. always in FIFO order. Simio LLC. and a Sink to the Facility Window.C apacity. Two of the Servers will be the MainWIP and OverflowWIP areas.C apacity'. . Details for Building the Model: Simple System Setup l Add a Source. l Details for Moving to the Selected Machine l l l l Using paths. The Selection Goal should remain as the default ‘PreferredOrder’ to select the first available machine from the list.Allocated < MainWIP. Path. ObjectList. Categories: Buffering Key Concepts: C apacity. These are seized just before the WIP resource is released. TimeC reated Technical Approach: Represent the WIP areas as Servers with the specified capacity. Ranking Rule. but are still pulled in FIFO order regardless of location.UnitsOwned. Lists. enter the After Processing repeating editor and change the Object Type to ‘FromList’.C apacity.Allocated == MainWIP. Don’t leave the Server until the processing machine is ready to process it. ServerA and ServerB. Look in the Current Symbol property for PartA and to see the expression used to use a different symbol each hour. while the other two Servers will be ServerA and ServerB.SimBit Problem: I have parts that are processed by two machines. Details for Machine Selection Within each WIP area (MainWIP and OverflowWIP). All Rights Reserved. Smallest Value First. l Within each Server (ServerA and ServerB). Ranking Expression. In the Selection Weight property for each path to MachineA.UnitsOwned’. Lists panel and add an Object list with Name ‘Machines’. use the expression ‘ResourceB. ModelEntity. within the Secondary Resources / Other Resource Releases section of properties. I have a small WIP area in front of the machines – parts always go here to wait if space is available. Use resource default behavior to select FIFO from all waiting parts (regardless of location). but no processing time. Send comments on this topic to Information Copyright 2006-2011. Determining the WIP Area to go to l In the Selection Weight property for the path to MainWIP. Defining the Machines l l l Place resource with Name ‘ResourceA’ and ‘ResourceB’ representing each machine. we used different entity symbols based on creation time. Secondary Resources.C apacity’. parts go to an overflow area. Resource. l In the Selection Weight property for the path to OverflowWIP.C apacity. use the 'MainWIP.Allocated. Open the Definitions tab. This will evaluate the number of busy “spots” in this Server as compared to the capacity. Selection Weight. connect each of the WIP type Servers to each of the processing type Servers. and the Object List Name to ‘Machine’. and the Object List Name to ‘Machines’. Add ‘ResourceA’ and ‘ResourceB’ to the list. enter the After Processing repeating editor and change the Object Type to ‘FromList’. If the small WIP area is full. In the Selection Weight property for each path to MachineB. within the Secondary Resources / Other Resource Seizes section of properties. BasicNodes and all paths). Source. change the Time Offset to ‘0. All Rights Reserved. two sinks and a bidirectional link.Simio D oc umentation PathSelectionRule . but I’m not sure how the Traffic Direction Rule property on a Path works. change Maximum Arrivals to ‘5’.2 and the Maximum Arrivals to ‘5’. l l C opying System1 to System2 Now that we have a single system completed. Entity Destination Type. Categories: Decision Logic -. Within Source2. l C hange the entity destination Node Name properties in the Source Output Nodes to ‘Input@Sink1_1’ and ‘Input@Sink2_1’. Sinks. l Do the same for Source2 (Output@Source2) and specify the Entity Destination Type as ‘Specific’ and the Node Name as ‘Input@Sink1’. Traffic Direction Rule Assumptions: There is no passing on the bidirectional path. the Interarrival Time to .SimBit Problem: I have a bidirectional path that takes entities from two different inputs to two different outputs.1’.1’. Using Paths. the model will be deterministic. Maximum Arrivals. Bidirectional Path. Technical Approach: A model is developed with a system containing two sources. Details for Building the Model: Simple System Setup Place a Source (Source1) and Sink (Sink1) at the left side of the Facility window. All objects will be renamed with unique names. Then connect BasicNode1 to Sink1 and BasicNode2 to Sink2. l Send comments on this topic to Information C opyright 2006-2011. The systems shown are identical except for the Traffic Direction Rule property on the bi-directional Path.2’ and the under the Stopping C onditions category. set Allow Passing to ‘False’. This first group of objects is then copied to a second system. To evaluate the difference between the systems. Path. Then. Place a second BasicNode2 to the left of Source2/Sink2. change the Interarrival Time to ‘. l Within Source1. with entities coming from both sides of the path. Simio LLC . we will copy it to make an identical one. place a second Source (Source2) and Sink (Sink2) on the right side. Time Offset. C hange the path’s Type to ‘Bidirectional’. Entities move onto the link from both node entrances. Prefer Desired Direction. l Adding Nodes. This can be done by moving the mouse to the top left corner above the Source1 and C trl-Left C lick and drag to highlight all the objects in system1 (including both Sources. Paths and a Bidirectional Path Place a BasicNode1 to the right of Source1/Sink1. I want to be able to direct how the entities flow onto the path. You may need to expand the properties under Type to see this property. The only difference will be the Traffic Direction Rule property on the bidirectional path. For the Paths connecting the Sources to the BasicNodes. . l Edit the bidirectional path for System2 and change the Traffic Direction Rule to ‘Prefer Desired Direction’. l Add a path connecting BasicNode1 and BasicNode2. l Setting the Destinations C lick on the output node of Source1 (Output@Source1) and change the Entity Destination Type to ‘Specific’ and the Node Name to ‘Input@Sink2’. meaning no random distributions will be used. l C trl-C will copy the system and position the mouse below system1 and use C trl-V to paste the copy. connect Source1 to BasicNode1 and Source2 to BasicNode2.Paths Key Concepts: Allow Passing. Allow Passing to ‘False’ and Speed Limit to ‘. l Add an EndTransfer step at the start of the process. This logic will remain unchangeable. l Send comments on this topic to Information Copyright 2006-2011. The logic of this model is only in the Processes Window. SeizeDelayRelease. . You wish to have a small user-defined “model object” that can be placed multiple times in your model logic. highlight the property. l C hange the entry node’s NodeClass to ‘BasicNode’. right click and select Set Referenced Property.SimBit Problem: There is a series of simple steps in your facility that are repeated many times throughout the operation. C reate a process with Name ‘Process1’. and two external nodes (one for entry. called SeizeDelayRelease. You will see a green arrow to the left of DelayTime. which includes the Seize. Input Logic Type is ‘None’. Place a Resource and change the Name to ‘Resource1’. Transfer Step Assumptions: The similar steps that will be made into an object include seizing a resource. Delay and Release steps. before the Seize step. Delay Step. Seize Step. however. Technical Approach: Within the first model. Do the same for the Object Name for Seize and Release steps to specify a ‘Resource Name’ in the parent object. the logic behind SeizeDelayRelease then includes all process logic specified within that model.Simio D oc umentation ProcessModelWithinModel . Delay and Release steps into Process1. set the Delay Time property to ‘DelayTime’. l Utilizing the Entry and Exit Node within the Process Logic Return to the Processes Window and change the change the Triggering Event property to EntryStation. This will stop the transfer into the model so that other logic may begin. Station Element. l Place the Seize. thus the Input Logic Type is ‘ProcessStation’. l For any properties that the end user will be able to specify. since we entered this process via station (EntryStation). EndTransfer Step. indicating that the value will come from the parent object. C reate New Referenced Property and specify a property name. Resource. highlighting Model and clicking to rename. All logic within this model object will be specified in the Processes Window. The Processes Window steps of Seize. where you will specify what the user will see in a Facility Window when they place this model. within the Delay step. C hange the From property to ‘C urrentStation’. l When you run this new model. l Defining the SeizeDelayRelease External View C lick on the Definitons tab and select the External panel. The To property should be ‘ParentExternalNode’. place a Source and Sink from the Standard Library and a SeizeDelayRelease model from the Project Library and connect them with Paths. Object Instance Property. l Place a Transfer step after the Release step. with the External Node Name of ‘Node2’ (name of exit node in External Window). All Rights Reserved. l Highlight SeizeDelayRelease and specify the ResourceName as ‘Resource1’ and the DelayTime as ‘3. In this example.1’. Expression Property. ProcessStation. Release Step. delaying for a given amount of time and releasing the resource. and Release will be used. ExternalNode. l Using the SeizeDelayRelease Model in Another Model Open a new model and within its Facility Window. selecting the Models panel. l Open the Processes window of SeizeDelayRelease. Categories: Building New Objects / Hierarchy Key Concepts: BasicNode. one for exit) in the view. with the Station of ‘EntryStation’. Place an ellipse. we will define the processing necessary for this single object. as this is a transfer out. as well as the delay time. Details for Building the Model: Defining the SeizeDelayRelease Process Logic Open a new model and rename the Model to SeizeDelayRelease by selecting MySimioProject in the Navigation window.Entered (recall that the entry node’s Input Logic Type was ProcessStation called EntryStation). C ontinueProcess. l C hange the exit node’s NodeClass to ‘TransferNode’. the end user of the SeizeDelayRelease object will be able to specify a single resource name (for seizing / releasing). You may place SeizeDelayRelease as many times in your new model as you like with varying ResourceName and DelayTime properties. Delay. Simio LLC. l Within each of the three Paths. Building the Model l Place a Source and Sink within the Facility Window of the Model and connect them with two paths. SubC lass Technical Approach: The Vehicle object will be sub-classed to make a customized vehicle with an added state and statistic. The Add-On Processes will be used to increment the state. Send comments on this topic to Information Copyright 2006-2011. Category of ‘Throughput’ and Data Item ‘Distance’ to customize where the statistics are shown on the Reports.Movement returns the distance traveled on the current path. l Also within the Definitions window. OutputStatistic.SimBit Problem: I want to record the distance traveled by a vehicle to make it easy to compare scenarios based on travel reduction. Embellishment: It is probably possible to further customize the vehicle logic to avoid having to use add-on processes on each link. Details for Building the Model: C reating a Sub-C lassed Object MyVehicle l C reate a new vehicle class called MyVehicle that is sub-classed from Vehicle by by highlighting MySimioProject in the Navigation window and selecting the Models panel.Simio D oc umentation RecordDistanceTraveled . All Rights Reserved.TotalDistanceTraveled’ to the New Value of ‘MyVehicle. Real State Variable. select the Elements panel and add an Output Statistic with Name ‘TotalDistanceTraveledStat’ and Expression ‘TotalDistanceTraveled’. enter the State Assignments section and open the Before Exiting repeating property editor. Adding the State and Statistic to MyVehicle l Select MyVehicle in the Navigation window and click on the Definitions tab. Movement. Under the Appearance properties. use Label of ‘Total Distance Traveled’. select the Subclass From Library button and select Vehicle. Simio LLC. one from Source1 to Sink1 and the other from Sink1 to Source1.Movement’.TotalDistanceTraveled + MyVehicle. Note MyVehicle. Vehicles Key Concepts: Discrete State. States panel to add a discrete state with Name ‘TotalDistanceTraveled’. . From the Edit ribbon. C lick Add to assign the State Variable Name ‘MyVehicle. Categories: C ustom Statistics. Distance. after the Pallet “picks up” entities in the C ombiner. This will generate pallets to start the simulation.Exited’. Categories: C ombining and Separating Entities Key Concepts: BatchMembers Queue. All Rights Reserved. Specify Arrival Mode of ‘On Event’. one C ombiner. we used 3). Send comments on this topic to Information Copyright 2006-2011. ParentInputBuffer. Simio LLC. This will combine 7 parts onto a single pallet for later processing. Technical Approach: Use the standard features of a Source object to create one new pallet each time one is consumed. specify the number of Initial Number Entities as ‘3’.Simio D oc umentation RegeneratingCombiner . Discussion: When Source1 is initialized at the beginning of the model run. Source1 will wait for that event and create a new entity each time it occurs. l C hange the Name of the one of the ModelEntity instances to ‘Pallet’ and the other to ‘Part’. or in this case. effectively replacing the pallet that was just consumed. . Details for Building the Model: Simple System Setup Place two ModelEntity objects from the Project Library and two Sources. and one Sink from the Standard Library in the Facility Window of a new model. Embellishment: We added an Attached Queue to the Pallet entity symbol and associated it with the Queue State named 'Pallet. l C reating the Pallets Within Source1. specify the Batch Quantity as ‘7’. Source Assumptions: We want to have a supply of three pallets waiting so the process will rarely be delayed by lack of pallets. it will create 3 Pallet entities and send them out of the normal Source exit node.SimBit Problem: You have a palletizer or similar machine but you do not know the exact timing of when to have pallets arrive. while Source2 will create parts to be placed onto the pallet. Within C ombiner1. change the Entity Type to ‘Pallet’. C ombiner1 automatically fires an event every time a parent entity exits the C ombiner object. On Event Arrival Mode. Source1 will create empty Pallets.BatchMembers'. C ombiner. This will display the members in any batch associated with the Pallet. Use the Initial Number Entities property on the Source when ‘On Event’ is used to generate initial entities (must be at least 1. l On Source1. l C reating the Parts and C ombining Them onto Pallets l l Within Source2. change the Entity Type to ‘Part’. choose ‘Output@C ombiner1. For Event Name. they will appear on the pallet. 15.1. Dynamic Object Property. 1 Nurse and 1 Doctor needed for Patient_Medium and 1 Nurse and 2 Doctors needed for Patient_Severe. Nurse. BasicNode3 to BasicNode2 and then in the other direction from BasicNode2 to BasicNode3 and BasicNode3 to BasicNode1. Expression Property.2 ¡ ** NOTE: Notice in this table. Categories: Data Tables. and the processing times. BasicNode1 should be above Workstation1 and BasicNode2 should be located above Workstation2. l Because we have two doctors in the system.3. C hange the symbol color of each to distinguish them from one another. Patient_Severe (Integer with Name ‘AmountEach’) 50. place three ModelEntity objects from the Project Library into the window.6. including the percentage of each that enters the system. Worker. Ranking Rule. This will be used as the ‘resting’ location for the workers when they are not with a patient.Triangular(2. l Place an additional BasicNode located in between the workstations. ParkingStation Queue. A separate related table will include for each patient type the caregiver type (nurse or doctor) and quantity required.10 (Expression with Name ‘ProcessingTime ‘ .1. Workstation Assumption: Each of the three patient types will have a nurse / doctor combination that determines both the name (doctor/nurse) and quantity of each that is needed. Patient_Severe. Random. change the Initial Node (Home) to ‘BasicNode3’ where they will all start out at the start of the simulation run. Numeric Property. l Use unidirectional Paths to connect BasicNode1 to BasicNode3. two Workstations. Request Move. Status Label. Foreign Key.Triangular(10. Patient_Medium. Workstations Key Concepts: Before C reating Entities. Idle Action.1. 'Patient_Medium' and 'Patient_Severe'. Patient _Medium. These nodes will be the used by the Nurses and Doctors to move between and serve the patients. Patient_Medium. Data Table. There will be one nurse and two doctors available to the patients. Details for Building the Model: Simple System Setup Add a Source. Random. l Setting up the Data Tables l In the Data Window. and both Workstations to Sink1. Also.20) ¡ Select the EntityType column and select the Set C olumn as Key button – this will allow data from this column to be referenced with a Foreign Key column in another table l Add another Data Table named ‘Workers’ with the following properties and in the following order: Foreign Key with Name ‘EntityType’ and Table Key of ‘Patients. Additionally. change the Idle Action to ‘Go To Home’ so they return to BasicNode3 when they are done with a patient if they are not needed. and a Sink to the Facility Window. Doctor ¡ Integer with Name ‘QuantityNeeded ‘) 1. More severe patients will have higher priority. Unit Type ‘Time and Default Units ‘Minutes’) Random. Place a BasicNode above each of the transfer nodes at both Workstations.40. expand the Table Reference Assignment in the Properties Window of the Source object. Worker. l C hange the Names of the ModelEntity to be 'Patient_Mild'. A Data Table is created that will store information about each patient type. l Within each. l Paths and Extra Basic Nodes Use Paths and connect Source1 each Workstation. change the Initial Number in System (under Dynamic Objects) of the Doctor object to ‘2’. as well as multiple doctors and/or nurses for processing. Table Reference Assignments. set the Table Name to ‘Patients’ and the Row Number to . select the Tables panel and add a Data Table named ‘Patients’ with the following properties and in the following order: ¡ ¡ ¡ (Entity Object Reference with Name ‘EntityType’) Patient_Mild. Workers will be used for the Doctors and Nurse and will move between the workstations to process the patients. Patient_Severe ¡ Object Instance Transporter with Name ‘Worker Name)Nurse.Simio D oc umentation RelationalTableInRepeatingProperty . RandomRow. BasicNode3. Doctor. This is done by highlighting the symbol and selecting the appropriate C olor from the Symbols ribbon.4). Smallest Value First. l C hange the Park While Busy property to ‘True’ so that graphically we can animate the workers while they are busy.EntityType’) Patient_Mild. Initial Node (Home).Triangular(4. there is 1 Nurse needed for Patient_Mild. Technical Approach: Relational tables are used to store information about the patients.8). ResourceState. l l Defining the Workers Place two Worker objects in the Facility Window and rename them ‘Doctor’ and ‘Nurse’. Nurse. depending upon the type of caregivers needed ¡ C reating Multiple Entity Types from Source l l In the Facility Window. Key column. C hange the color of one of the Workers so that you can tell them apart graphically. Under the Before Creating Entities subcategory. The entity type may be referenced multiple times within the foreign key column in this table.SimBit Problem: I have three types of patients that require different processing times. change the Processing Time to ‘Patients. Place three status symbols in the Facility Window. C hange the Entity Type to ‘Patients.ResourceState’ and ‘Doctor [2].RandomRow’. respectively.Priority’. l Note that the ResourceState function for Workers is ‘0’ when Idle and ‘1’ when Busy. l Also within this same repeating property. l C lick on BasicNode1 (next to Workstation1) and select Draw Queue > ParkingStation.l ‘Patients.QuantityNeeded’.EntityType’ and Interarrival Time to ‘Random. because of this. Simio LLC.C ontents from the Appearance ribbon.Exponential (5)’. . This will request that the workers move to the specific basic node locations when requested at each given workstation. change the Request Move to ‘To Node’ and specify the Destination Node as ‘BasicNode1’ for Workstation1 and as ‘BasicNode2’ for Workstation2. l C lose the repeating property editor and notice that the Secondary Resources property now says ‘1 Row’.ResourceState’. C hange the Expression of the status labels to ‘Nurse[1]. The Patient_Mild has an Initial Priority of ‘2’. All Rights Reserved.AmountEach. while Patient_Medium is ‘1’ and Patient_Severe is ‘0’. Because the doctors and nurse are dynamic objects. we will need to make a change to the Secondary Resources property that currently says ‘1 Row’.ResourceState’. Animating the Worker Status and Parking Areas The status of the doctors and nurses can be animated using a Status Label from the Animation ribbon.WorkerName’ and Number of Objects(within the Advanced Options section) of ‘Workers. l Within each of the Workstations. Place three vertices for the queue so that there is a location for each of the doctors and nurse to appear while they are busy. change the priorities of each. change the Ranking Rule to ‘Smallest Value First’ based on the Ranking Expression ‘Entity. Use the Add button and add an Object Name of ‘Workers. they can be referenced individually. Expand the Other Requirements and click on the button within the Secondary Resources property to open the repeating property editor. the data table ‘Workers’ will be referenced in the Secondary Resources property. select Set Referenced Property and select ‘Workers’. We are now using the relational table ‘Workers’ within the repeating property editor. Right click on property. Remember that the patient (entity) itself has a SetRow originally set to ‘Patients’ and its row reference to the specific row in that table (via the Source1 object).ProcessingTime’. ‘Doctor[1]. In order for Simio to determine how many rows it really needs to evaluate within the repeating property editor (since some patients require multiple workers). l Send comments on this topic to Information Copyright 2006-2011. You should see ‘Workers’ then replace ‘1 Row’ in the Secondary Resources property. l Adding Processing Time and Assignment Information to the Workstations l l Within each Workstation. Do the same for BasicNode2. Specifying the Patient Priority Within each of the ModelEntity objects. Rename it to ‘TimeEnteredLine’.SimBit Problem: I have an entity that is waiting for capacity of a resource type object. Then. By default.Exponential(4)’. Go to the Definitions tab (this is the Definitions window of the ModelEntity). C ontinueProcess. This will display the waiting time (rounded) of each entity as it travels the system. it executes a new process (Process1) and then continues with its processing. Set From to ‘C urrentStation’ and To to ‘Node’ and Node Name to ‘Output@C ustomerServiceReps’. In the properties of this process. place a Transfer Step. if it is still in the queue. Details for Building the Model: Simple System Setup l l l l l Place a Source. On Associated Object Destroyed. C onnect the Source to the Server with a path and connect the Server to each Sink with paths. place a SetNode Step. l C lick on the States panel on the left. EndProcess. AllocationQueue. Rename one Sink to ‘HangUps’ and the other to ‘ServicedC ustomers’ Add A State to ModelEntity C lick on the ModelEntity from within the Navigation window on the top right side of the interface. If the entity has been waiting for 5 minutes. a Server and two Sinks into the Facility window. l C lick on each Sink object and draw a Floor Label by clicking the Floor Label icon in the ribbon (while the Sink is selected). but the token (and therefore the entity) will continue on with its action while Process1 begins execution. It will be named ‘Server1_Entered’. place an Execute Step after the SetNode Step.Processing Key Concepts: Add-On Process. then end the process. it must be transferred somewhere. rounded to the next lowest integer. to the HangUp sink. l Process Logic l l l l l l l l l C reate a new Add On Process in the ‘Entered’ trigger of the Server. This can be renamed to C ustomerC all to represent a phone call. After the SetNode Step in Process1. the scenario is a call center where the entities are incoming calls. TimeNow. But if the entity is no longer waiting and has been destroyed. The callers wait on the line for one of three customer service reps but if they are not serviced within 5 minutes. it will be removed by this process. The waiting time for each entity is displayed in an attached status label. Set the Expression property to ‘Math. Technical Approach: The Remove Step is used to remove an entity from the Server’s Allocation Queue if it has been waiting longer than 5 minutes. which is set to ‘EndProcess’. Categories: Decision Logic -.TimeEnteredLine’ and New Value to ‘TimeNow’. entities should exit through this Sink. SetNode Step. The new process delays for 5 minutes and then attempts to remove the entity from the Allocation Queue. Place a SetNode Step after the Assign Step. So if the entity is still waiting in the queue. This indicates that if the object that is associated with the token executing the process (the entity) is destroyed. This process has a property called Token Associated Object Destroyed Action. Remove Step.NumberEntered}. Place a Remove Step next. Execute Step. l Embellishments: Vary the Delay time to see how the system changes or set the Delay time as a property and vary it within an experiment. set Token Associated Object Destroyed Action property to ‘EndProcess’ Back in the ‘Server1_Entered’ process. When an entity is removed from a queue.AllocationQueue’. this process will be ended. such as a Server.NumberEntered}’ and ‘Total Serviced C ustomers: {InputBuffer. it leaves the queue and exits the system. they hang up. Type ‘Total HangUps: {InputBuffer. click on the Edit icon in the ribbon to edit the text of this attached Floor Labels. This will cause Process1 to be executed.7)’ C lick on the Server and rename it to ‘C ustomerServiceReps’. Set the Destination Type to ‘Specific’ and the Node Name to ‘Input@ServicedC ustomers’. This will send removed entities (entities still in the queue after the 5 minute delay). that has it’s QueueStateName set to ‘C ustomerServiceReps. Status Labels C lick on the C ustomerC all entity in the Facility window and draw an attached Status Label by clicking the Status Label icon in the ribbon (while C ustomerC all is selected). This is recording when this entity begins its wait in the Server queue. Set the Interarrival Time to ‘Random. Set the State Variable Name to ‘ModelEntity. C lick on ‘Discrete State’ in the ribbon to create a new state variable. Set the ProcessingTime to ‘Random.Triangular(. Assign Step. On Entered. . Token Actions Assumption: In this model. The Destination Type should be set to ‘Specific’ and the Node Name should be ‘Input@HangUp’. The Delay Time should be 5 minutes. C reate a new process by clicking on the ‘C reate Process’ icon in the ribbon. Experiment with the capacity of the C ustomer Service Rep server to see the impact on the number of customers who hang up. Set the Initial Capacity to ‘3’. Place a Delay Step in Process1. Name this ‘Process1’. Set the Process Name to ‘Process1’ and the Token Wait Action to ‘None (C ontinue)’.Floor((TimeNow – TimeEnteredLine) *60). Real State Variable. When the entity enters the Server. In the Removed segment leaving the Remove Step. Drag a ModelEntity object into the Facility window. From within the Processes window. C lick on the Source and rename it to ‘Incoming C alls’. Status Label. place an Assign Step in the ‘Server1_Entered’ process.Simio D oc umentation RemoveFromAllocationQueue . .Send comments on this topic to Information Copyright 2006-2011. All Rights Reserved. Simio LLC. The employees follow two different work schedules. C lick on the ‘+’ sign to expand the Work Periods C reate a pattern that has a Value of ‘1’ (on shift) in these time slots: 8:00 AM . this resource will now change to green when it is busy. place a ModelEntity object from the Project Library into the Facility Window and select a new symbol from the symbol tab. select a new color (i. The capacity of each resource is determined by a work schedule. Back within the Work Schedules tab. Technical Approach: A server represents the ticket counter and a resource object is used to represent an employee. Leave everything else empty.Simio D oc umentation ResourcesWithWorkSchedules . This indicates that this one day schedule repeats itself for each day the simulation is run. either ‘Schedule1’ or ‘Schedule2’. click on one of the Employees in the Facility Window. Name the two patterns ‘DayPattern1’ and ‘DayPattern2’. Send comments on this topic to Information Copyright 2006-2011.SimBit Problem: There are two employees that work at a ticket counter. . select the Lists panel and create a new Object List with Name ‘ObjectList1’.12:00 PM for. Resource. within the TicketC ounter (Server). and 12:00 PM -2:00 PM for ‘DayPattern1’. l If you’d like to change the symbol representing the entity. Animating the Employees l In order to animate the Resource objects to change color when they are busy. Simio LLC. By default. Put both ‘Employee1’ and ‘Employee2’ objects in the list. Select Add Additional Symbol from the symbols tab of the Ribbon. Schedules panel. Schedules. specify a Value of ‘1’ from 8:00 AM . Select each Resource and change the Capacity Type to ‘Work Schedule’ and select the appropriate Work Schedule. add two new schedules by clicking on the Work Schedules button on the Schedule tab and entering the schedule Name ‘Schedule1’ and ‘Schedule2’. C lick on the text boxes of the list to get a drop down that will show all the available objects from the model. Details for Building the Model: Simple System Setup l Place a Source. Server. Using the Employees at the TicketC ounter l In the Facility Window. ObjectList. C hange the Object Type to ‘FromList’ and the Object List Name to ‘ObjectList1’. which indicates Off Shift times. C hange the Name of the resources to ‘Employee1’ and ‘Employee2’. (This is controlled by the default expression in the current symbol index property of the resource object). Sink and two Resource objects into the Facility Window. green) from the C olor icon in the symbols tab and then click on the center circle of the Resource object. Secondary Resources Assumptions: The work schedule is the same each day – it follows a one day cycle. In the Data tab.e. select ‘DayPattern1’ for ‘Schedule1’ and ‘DayPattern2’ for ‘Schedule2’. Set the number of Days in each schedule to ‘1’.10:00 AM. All Rights Reserved. C reate a two Day Patterns by clicking on the Day Patterns tab. For ‘DayPattern2’. With the Active Symbol icon reading 2 of 2. open the Secondary Resources and find the Resource for Processing section of properties. Categories: Schedules / C hangeovers Key Concepts: C urrent Symbol Index. Specifying Information about the Employees l l l l l l l l C lick on the Definitions tab. SimBit Problem: I have a system with two Servers that each seize a secondary Resource before processing begins.InputBuffer with a Transfer Step. l Back in the Facility window. OnEnteredProcessing. C reate a Day Pattern by clicking on the Day Pattern tab. Server2 will not follow the default behavior. Resource. C lick on the States panel to the left and click on Discrete State in the Ribbon to add a new State. set Object Type to ‘Specific’ and select ‘Resource1’ from the dropdown of Object Name. click on Server1. . Server1 will finish processing any entities that are currently being processed but will not begin working on another entity until the secondary Resource is back On Shift. Enter the Name ‘DayPattern1’. Leave everything else empty.4’ Go back to the main model by clicking on Model in the Navigation window. Schedules / C hangeovers Key Concepts: Add-On Process. You are now in the Definitions window of the ModelEntity (not the main model). As the schedule’s number of days is one day. Real State Variable. Do the same for Server2. Resource. In the Seize Step. l C reate Work Schedules: l l l l l l Go to the Data window and go to the Schedules panel by clicking Schedules in the left hand side of the Data window. which indicates Off Shift times. C lick on the ‘+’ sign to expand the Work Periods. Schedules. Add Process Logic to main Model: l l l l l From the Facility window of the main model. 8:15-8:25am. But instead of seizing and releasing Resource1 – use Resource2. C onnect the Source to both Servers with Paths and connect both Servers to the Sink with Paths. On Off Shift. Server2 will immediately end the processing of any entities when the secondary Resource goes Off Shift. Leave everything else as the defaults. 8:30-8:40am. Do the same for Server2 (click on the Server2 and create two new Add On Processes for Processing and Processed) Go to the Processes window and place a Seize Step in Server1_Processing process and place a Release Step in the Server1_Processed process. The Resource will be put into the Resource State of “OffShiftBusy” during the time when it is finishing the processing of these entities. Set the Start Date (i. Save Remaining Time. which is to continue processing any entities that are in the middle of processing during the shift change. Resources. Adding a New State to ModelEntity l l l l l C reate a new State on the ModelEntity. but instead when the secondary Resource goes Off Shift. Name this ProcessingTime. Status Pie Assumptions: When Server2 immediately ends the processing of any entities when the secondary Resource goes Off Shift. Details for Building the Model: Simple System Setup Place a Source and a Sink into the Facility window. it will Interrupt any processing that is currently occurring on Server2. Set the Starting Time to 8:00am and set the Ending Type to 1 Hour. click onto each Resource object and change the C apacity Type property of each to ‘WorkSchedule’ and select the new Schedule for the Work Schedule property. Technical Approach: Server1 will use the default behavior when any seized secondary Resource goes Off Shift. C lick on the ModelEntity within the Navigation Window in the top right. a schedule start date on June 14th. and 8:458:55am. When this is selected. l C hange the Run Time parameters by clicking on the Run Tab in the Ribbon. ResourceState. C reate two new processes in the Processing and Processed Add On Process triggers. every day will have the same schedule independently of the fact that the run date is prior to the schedule date. Do the same for Server2 – add a Seize Step to the Processing process and a Release Step to the Processed process. But Server2 and Resource2 will immediately end processing. The same schedule can be used for both Resource objects.Simio D oc umentation ResourceStatesWhenOffShift . Set the Processing Time property to ‘ModelEntity. The schedule of the run starting time day is adjusted depending on the schedule’s number of days. So we need to add process logic when Resource2 goes Off Shift. Server1 and Resource1 will follow the default behavior when Resource1 goes Off Shift. C reate a schedule that has a Value of ‘1’ (on shift) in these time slots: 8:00-8:10am. Set the Initial State Value to ‘. This will keep tracking of the processing time and it is needed because during the Interrupt Step. From within the Facility window. Go to the Facility window and click on Server1.ProcessingTime’. Each Server behaves differently if it is processing an entity when the seized secondary Resource goes Off Shift. Categories: Add-on Process Logic. 6/14/2010) and the number of Days to ‘1’. Interrupt Step.e. l Place two Resource objects into the Facility window. C reate a new process in the Off Shift Add On Process trigger. the interrupted entity will remember how much time it has left for processing and get sent back to the InputBuffer of Server2 to queue up so it can finish its processing time when the secondary Resource comes back On Shift. C apacity of Server2 will be immediately released and the entity will be transferred back to Server2. These steps will seize the secondary Resource before Server1 begins processing and it will release it after it has finished processing. For example a run date starting June 12th vs. Place two Servers between that are in parallel to each other. we save off the remaining processing time. select Resource2. Add a new schedule by clicking on the Work Schedules button and entering the schedule Name ‘WorkSchedule1’. go into the Definitions window. Draw the Pie C hart into the Facility window. And set Save RemainingTime to ‘ModelEntity. In the properties window of the Status Pie. Simio LLC. l Do the same for Resource2. This will create a Status pie chart that is attached to Resource1. Leave everything else as the defaults. All Rights Reserved. l Adding ResourceState Pie C harts to Facility Window: In the Facility window. set Object Type to ‘Specific’ and select ‘Resource2’ from the dropdown of Object Name.From within the Processes window. l Embellishments: C hange the Work Schedule durations or the Processing times to see changes to flow and balance of the system and therefore to the time spent in each ResourceState. When the model runs. place a Transfer Step to move any entity currently being processed into the InputBuffer. Set the Interrupted Process Action to ‘EndProcess’. Set From to ‘C urrentStation’ and To to ‘Station’ and Station Name to ‘Server2. Send comments on this topic to Information Copyright 2006-2011. but Resource2 will never have this State because it will always interrupt processing when it goes Off Shift so it will never be OffShiftBusy. place a Release Step. l After the Release Step. notice the different between the Resource States between the two Resources. . Set the Process Name to ‘Server2.ProcessingTime’. See Also: See Interrupt Step and List States help pages. set DataType to ‘ListState’ and ListState to ‘ResourceState’. Resource1 will have some time where it is 'OffShiftBusy' because it will finish working on an entity. l In the Interrupted segment of the Interrupt Step.OnEnteredProcessing’. select Resource1 and then click on Status Pie within the Ribbon. place an Interrupt Step in this new process. In the Release Step.InputBuffer’. Exited’. Movement. In the Processes window. Y=0. Add an Assign step at the C reated branch of the C reate Step to initialize the created vehicle location and heading at BasicNode1. C reate Step. Y. drag in an ellipse and use path vertices to draw an arc around it then delete it. l Vehicle Details l l l l Add a Vehicle to the Facility window with the Name ‘Vehicle1’ and Initial Desired Speed of ‘0. a Sink and a Basic Node to the Facility Window. l Set the Source Arrival Mode to ‘On Event’ and set the Event Name to ‘Input@Sink1. This means that an entity won’t be created until the previously created entity exits the system. Y=0. Simple System Setup l l Add a Source.2’. Z) to a basic node placed earlier in the model. Y=0. Add a C reate step and set its Object Instance Name to ‘Vehicle1’. a Server. Z=0 C onnect the objects together with Paths. Y=0. Execute Step.X.Heading. Token Wait Action.SimBit Problem: I want a robot to pick parts from the source.Y. To draw a circular path. select the process OnRunInitiliazed. Movement. Z=0 Input@Server1_____X=-0. Delay Step. . Z=0 BasicNode1________X=0. Z=-10 Input@Sink1_______X=10. l Set the Initial Number Entities to ‘1’ to create the first entity. to process them at a server and drop them at the sink.Z.Simio D oc umentation RotatingVehicleExample . Y=0. Categories: Add-on Process Logic. Z=-10 Output@Server1____X=-0. Set the Object nodes location to the following values ¡ ¡ ¡ ¡ ¡ ¡ Node______________Location Output@Source1____X=-10.Heading and delay the vehicle to rotate the robot. Movement. Vehicles Key Concepts: Assign Step. Assign new angular values to Movement. Vehicle Technical Approach: Add a Vehicle and initialize its coordinates (X. Movement. Place a Delay step to model the robot unloading time. l In order not to have the robot rotate about its center. Leave one third of the robot length between the robot edge and the polyline. l Place an Execute step to execute ‘Sink_Process’ to rotate the Vehicle towards the Sink object. create an add-on process at Processed. For Source_Process.Heading == -90’. C onnect the Delay steps back to the entry points of the Decide steps for each process. l C hange the Token Wait Action of the Execute Step to ‘None (C ontinue)’ so that the entity does not wait for the Vehicle to turn before going to the Sink. Within that process in the Processes window. l Enhancing the Animation l In this model.5’ minutes. Simio LLC . .Movement. Place a Release step to release the vehicle. while for Server_Process and Sink_Process.5’ minutes.Movement. place a Delay step to represent the processing time at Server1. ’0. For Server_Process. Within the Processes window in this new process. Also. we have placed the objects in a way such as Source1 is at -90°. It is referred to as Math. Right click on the robot symbol and select Edit. For the Source_Process. ‘2’ minutes. if we don’t know the angles we could use the Arctangent to find the object’s heading.Movement.Heading == 90’.Movement.Heading == 0’. Within each process. Rotating the Vehicle There are three new processes that need to be added to the Processes window. the New Value is ‘Vehicle1[1]. Server Add-On Process Go back to the Facility window and within Server1. Place another Execute step to execute the ‘Server_Process’ that rotates the Vehicle towards the Server object.Heading + 10’. All Rights Reserved. Source_Process.Source Add-On Process l l l l l l Within Source1. to find out the distances. create an add-on process for C reated Entity named ‘Source1_C reatedEntity’. the Expression is ‘Vehicle1[1]. l Place a Delay step with a Delay Time of ‘3’ and Units of ‘Seconds’ after the Assign step in each process to adjust the rotation speed. Place a Delay step to model the vehicle loading time of ‘0. Server1 is at 0° and Sink1 is at 90°. highlight Sink1 and create an add-on process at Entered. the Expression is set to ‘Vehicle1[1]. Send comments on this topic to Information C opyright 2006-2011. Draw a small polyline. place a C onditionBased Decide step to check if the vehicle has reached the specified object. we could use the object’s Location function.Atan() in Simio. Place an Execute step to execute ‘Source_Process’ to rotate the Vehicle towards the Source object. These processes all use the same logic to rotate the vehicle. C hange the Token Wait Action of the Execute Step to ‘None (C ontinue)’ so that the entity does not wait for the Vehicle to turn before going to the Server. Select Symbols. l Place an Assign step at the False branch of each Decide Step to increment/decrement the vehicle heading by 10. Server_Process and Sink_Process. place a Seize step to seize the vehicle.Movement. The only difference resides in the destination heading at the Decide step and the increments sign (10 or -10) at the Assign step. we edited the symbol by adding a small polyline to the robot: ¡ ¡ ¡ ¡ C lick on the project name. l l Sink Add-On Process l l l Within the Facility window. the Expression in the Decide step is ‘Vehicle1 [1]. the New Value is ‘Vehicle1[1]. For Sink_Process.Heading – 10’. However. Node Property. Set the State Variable Name to ‘ModelEntity. Place two ModelEntity objects into the Facility window.Simio D oc umentation RoutingWithoutPaths . Instead of using zero-time TimePaths or C onnectors. Expression Property. Starting Index to ‘ModelEntity. C olor PartB red by selecting the entity in the Facility window and selecting the color red from the C olor dropdown in the Decoration section of the ribbon. eliminating the need for links. You are now in the Definitions window of the ModelEntity object. this will increment the C urrentIndex of this entity to keep track of its routing location within the table. Categories: Data Tables. You need to add a new State and a new Property to this object. Set From to ‘C urrentNode’ and To to ‘Node’ and NodeName to ‘Table1. Name this new property ‘PartType’. C lick on the Properties panel on the left and create a new Expression property by selecting Expression from the Standard Property dropdown in the Add section of the Properties ribbon.C urrentIndex’ In the Found segment leaving the Search Step. Search Step. Technical Approach: A Data Table contains two columns. l After the Assign Step. go to the Processes window and create a new process by clicking on C reate Process in the Process section of the Process ribbon. This step will search the Data table and find the row that matches the criteria specified in the Match C ondition property. place an Assign Step. this process needs to be set on every Output Node’s Entered Add-On Process trigger. l Add another column to the table by selecting Node from the Object Reference dropdown in the Properties section of the Table ribbon.C urrentIndex’ Save Index Found to ‘ModelEntity. Real State Variable.C urrentIndex + 1’. Expression Property.PartType == Table1. l l C reate the Data Table C reate a new Data Table by going to the Data Window and clicking on Add Data Table from the Tables section of the Table ribbon. one which is a node property which contains the routing information and the other is an integer property which indicates the part type. l This process is to be called every time an Entity is to move to its next destination. Name this property ‘MyDestination’. Decision Logic -.PartType’. Data Table. four Servers and one Sink object into the Facility window. A Transfer Step transfers the entities from Node to Node.C urrentIndex’ and the New Value to ‘ModelEntity. go to the Definitions window. MatchCondition to ‘ModelEntity. So. I’d like to have my entities move directly from node to node without traveling on a link. . Name this property ‘Part Type’ by changing the Name property in the properties window. If a row is found that matches this entity part type. l Fill in the table with the following information: l C reate C ustom States and Properties l Select the ModelEntity object in the Navigation window in the upper right side of the interface. Name one ModelEntity “PartA” and the other “PartB”.MyDestination’. l ¡ ¡ ¡ ¡ l Set Set Set Set the the the the Collection Type to ‘TableRows’ and TableName to ‘Table1’. ¡ C reate Process Logic Back in the main Model (select Model in the Navigation window). On Entered.Processing Key Concepts: Add-On Process.SimBit Problem: My entities travel through a sequence of nodes and there is no travel time in between nodes. l Add a new column to the table by selecting Expression from the Standard Property dropdown in the Properties section of the Table ribbon. place a Transfer Step. l Set Entity Type in Source1 to ‘PartA’ and to ‘PartB’ in Source2. Details for Building the Model: Simple System Setup Place two standard Sources. Each entity in the system has a part type and this is used to determine the routing information from the Data Table. While it is selected. Transfer Step Assumption: The routing information comes from a Simio data table. l Place a Search step. ¡ C lick on the States panel and add a new State by clicking on Discrete State in the Edit section of the States ribbon. Name this new state ‘C urrentIndex’ and set its Initial State Value property to a value of ‘1’. It will save the row number into a state variable so we can keep track of our current location in the table. Simio LLC . . All Rights Reserved. Send comments on this topic to Information C opyright 2006-2011.Embellishments: Experiment with changing the routing within the Table. l There should be 3 rows containing ArrivalTime and Quantity: 1.A standard property of type Integer that contains a number to indicate the quantity of material delivered at that time. Simio LLC. WorkStation and Sink in the Facility Window. Material Element.SimBit Problem: I have a data file specifying the times that materials arrive to the system.Event (the event that is fired by the timer). 2. Workstations Key Concepts: Data Table. Workstation Technical Approach: C reate a table that specifies the arrival time and quantity of each delivery. Set the Triggering Event to MaterialArrival. Numeric Property. Process Triggering Event. Set the Arrival Time Property to MaterialDeliverySchedule. Set the Interval Type to ArrivalTable. Material Arrivals using Data Table Information l In the Definitions window. 1. 1. Source. Set the Production Type to Material. Defining the Data Table with Arrival Information l Open the Data window of the model and select the Tables panel.ArrivalTime (the property name within the table that contains the arrival time). 3. 0. All Rights Reserved. ¡ Using the Material Information in the Model l On WorkStation1. Timer Element.5. Send comments on this topic to Information Copyright 2006-2011. Event. the token in that process will have the specified row associated with it. Discussion: When you use the Arrival Table features of the Timer it will process each row in the table at the correctly specified time and. Set the Quantity to MaterialDeliverySchedule. .5. Details for Building the Model: Simple System Setup l l Place a Source. C reate a timer that triggers a Produce step in a process to introduce material into the system. Note that the rows do not need to be in numerical order by time. specify the Material C onsumption property to be Material and the C onsumed Material Name to be Widget. allowing other table properties such as Quantity to be used. l In the Processes Window: C reate a new process named MaterialHasArrived. A property of type Date Time can be used instead of a numeric property to store the arrival time. ¡ Add a Produce step to that process. When a step such as Produce is executed. ¡ ‘Quantity’ . Produce Step.Quantity (the property name within the table that contains the quantity delivered). Set the Material Name to Widget. Embellishments: The data in the table can be imported from an external data file and even bound to an external file to cause automatic import at model initialization. Use the Add Data Table button to create a table with the Name ‘MaterIalDeliverySchedule’ and include the following columns: ¡ ‘ArrivalTime’ – A standard property of type Real that will be used in the Timer object to decide what is created at what time. Categories: Data Tables. Specify that the Source creates 1 arrival with 6 entities per arrival.Simio D oc umentation ScheduledMaterialArrivals . when triggering a process. select the Elements panel: ¡ ¡ Add a Material element named Widget Add a Timer named MaterialArrival. any table references will refer to that specified row. C hoose Status Plot from Animation under Facility Tools. We want the Material to arrive every 15 minutes. Set the Production Type to ‘Material’. the Material Name to ‘Material2’ and the Quantity to ‘15’.SimBit Problem: I have a machine that consumes material and material is scheduled to be available (produced) at specific times. 0. Data Table. Status Plot.25. leave the Arrival Time Deviation property set to ‘0. 1. as well as Source4 and Sink4. edit both Source1 and Source3 (either by pressing C trl and selecting both or by editing them separately) so that the Interarrival Time is ‘1’ and Units is ‘Minutes’ and that the Maximum Time under Stopping C onditions is ‘3’ and Units is ‘Hours’. Name this table ‘MaterialArrivalTable’. Source. Then we’ll have two animation lines within the plot. then set the X Axis label to be ‘Time’ and the Y Axis label to be ‘Quantity’. We set the Material arrival times to be scheduled to arrive just as the material is due to run out. create a process on the Exited Add-On Process Trigger. Data Tables Key Concepts: Add-On Process. Within the Other Requirements of the Workstation. Now replicate this system with the remaining objects on the right side of the Facility window. Do the same thing for Source4. C onnect Source1. so we will fill in the table with arrival table with arrivals every 0. C reating the Material Elements Open the Definitions window and select the Elements panel.25. C reating the Material Arrival Table l l l l In the Tables panel of the Data tab.ArrivalTime’. 0. go to Properties Window.2. and the Label set to ‘Buffer C ontents’. Place these two groups of objects on the left hand side of the Facility window. So we have to trigger a Produce step somehow.C ontents’. and Sink3 with paths. Then click on the plot. Workstation2. In both Source2 and Source4. and one without. Details for Building the Model: Simple System Setup l l l l Place 4 Sources.ArrivalTime – but the actual arrival time will be anywhere from . Numeric Property. to show the current remaining number of materials while we’re running this model. Under Standard Property. In the Source4_Exited process. On Exited. C onnect Source3. Material Element. etc…) up to 3 hours.InputBuffer. create a Status Plot. Defining the Object Properties l l l l l Within the Facility window. The other row has the Expression set to ‘Workstation1. and ‘Material2’ for Workstation2 in the Consumed Material Name property. place a Produce Step. the Material Name to ‘Material1’ and the Quantity to ‘15’.0’.Uniform(-0. Workstation1. But in Source4. with the Title ‘C onstant Material Arrivals’. set it to ‘Random. set the Arrival Mode to ‘Arrival Table’ and the Arrival Time Property to ‘MaterialArrivalTable. click ‘Real’ to add a Real Property.5. click Add Data Table. one .25 hours (0. and Sink1 with Paths. In Source2. Name this Property ‘ArrivalTime’ and set its Unit Type to ‘Time’ and leave the Units ‘Hours’. l Process to Produce Material l l l l l The Source-Sink portion of each system is designed to illustrate Material arrivals.Simio D oc umentation ScheduledMaterialArrivalsWithDeviation .2 hours early to . In this Source2_Exited process. create a process in Source4’s Exited Add-On Process Trigger.2 )’ and Units to ‘Hours’ meaning that the entity will try to arrive via the time specified in MaterialArrivalTable.2 hours late. l Set both of their Initial Quantities to ‘15’. Workstation Assumptions: We will assume a constant entity interarrival time and a constant processing time so we can see the affects of the material arrival variation. and the Label set to ‘Material1’. C onnect Source2 and Sink2 with a Path. Technical Approach: A Workstation object is used and it consumes 1 unit of material with a 1 minute processing time. 2 Workstations and 4 Sinks from the Standard Library into the Facility Window. 0. Produce Step. 1. Categories: Arrival Logic. Set the Production Type to ‘Material’. click on the Material Element twice adding 2 Materials: ‘Material1’ and ‘Material2’. Arrival Time Deviation.QuantityAvailable’. Embellishments: We can add some animation. I want to see how variation around the material arrival times affects my system. In the Workflow category. set Material Consumption to ‘Material’ and select ‘Material1’ for Workstation1. One row has the Expression set to ‘Material1. We will use 2 systems: one with no variation around the material arrival time. as well.75. add 2 rows in the Additional Expressions. In Source2. place a Produce Step. Set the Processing Time in both Workstations to ‘1’ and Units to ‘Minutes’. represents the number of Material1 units remaining and the other one represents the number entities in Workstation1’s Input Buffer. We want to recreate a similar plot for the Variable System. So we add another Status Plot. We name the new plot ‘Variable Material Arrivals’ and again set the X Axis label to be ‘Time’ and the Y Axis label to be ‘Quantity’. We again add 2 rows in the Additional Expressions. But this time we set, the first one to ‘Material2.QuantityAvailable’, and the Label set to ‘Material2’. The other row has the Expression set to ‘Workstation2.InputBuffer.C ontents’, and the Label set to ‘Buffer C ontents’. These two graphs illustrate how variation upon arrivals can really wreak havoc on the system by occasionally starving the system of material and allowing a queue to form at the workstation. With constant arrival times and processing times, it is impossible to recover from these queues and waiting times become significantly longer. Send comments on this topic to Information C opyright 2006-2011, Simio LLC . All Rights Reserved. Simio D oc umentation SearchTables - SimBit Problem: I would like to be able to search through a Data Table and select a row based on certain criteria. Categories: Arrival Logic, Data Tables Key Concepts: Add-On Process, Assign Step, C ollection Type, C urrent Symbol Index, Data Table, Match C ondition, ModelEntity, Node Property, Numeric Property, On C reated Entity, Priority, Search Step, SetNode Step, TableRows, TransferNode Technical Approach: A Data Table contains an Integer property and a Node Property. Each entity is assigned a value of 1, 2, 3 or 4 to its priority. A token searches the Data Table on behalf of the entity to find the row that matches the value of its priority. Once the appropriate row is found, the destination of the entity is set to the Node that is listed in the Data Table. Details for Building the Model: Simple System Setup Place a Source and a Sink into the Facility window. Place four Transfer nodes in between the two objects - the nodes should be in parallel. C onnect the Source to each of the four nodes and connect each node to the Sink. l Place a ModelEntity into the Facility window. To help with model verification, we’ll have the entity change color depending on its priority (and therefore its destination node). l ¡ Select the DefaultEntity in the Facility window and click on the Add Additional Symbol icon in the ribbon. You will see that the icon to the right, Active Symbol, now displays 2 of 2. C lick on the C olor icon, select a color and then click back into the Default Entity in the Facility window. The symbol should change color. You have now changed the color of whatever symbol is active (if it says 2 of 2, then you changed the color of the second symbol that is associated with this Default Entity object). ¡ Add two more symbols to this object by repeating the steps above and assign a unique color to each of the four symbols. C reate Data Table Go to the Data window, and within the Tables panel, click the Add Data Table icon in the ribbon to add a new table. Add a column that is an Integer property by selecting Integer from the Standard Property drop down in the ribbon. The column can be renamed to Priority. l Add a second column to the table – a Node Property, by select Node from the Object Reference drop down in the ribbon. The column can be renamed to Node. l Fill the table with data – such as: l l ¡ ¡ ¡ ¡ 1 2 3 4 , , , , TransferNode1 TransferNode2 TransferNode3 TransferNode4 Add Process Logic From within the Facility window, click on the Source and create a new Add On Process for the trigger called Created Entity. (select C reate New from the drop down) l From within the Processes window, you should see the new Process that was created. l Place an Assign step in the process. The StateVariable Name should be ModelEntity.Priority and the New Value should be Random.Discrete(1, .25, 2, .5, 3, .75, 4, 1). Each entity has a 25% chance of being assigned a Priority of 1, 2, 3 or 4. ¡ Place a Search Step after the Assign Step. The Collection Type property should be set to ‘TableRows’ and the Table Name property should be the name of your Data Table (Table1). Set the Match Condition to be ‘ModelEntity.Priority == Table1.Priority’. This will ensure that the entity is set to read the row that matches its priority value. ¡ In the Found segment of the Search Step, place a SetNode step. The Destination Type property is ‘Specific’ and the Node Name property should be set to ‘Table1.Node’. ¡ Embellishments: C hange the matching condition for searching the table and add additional information in the Data Table to be used in the model. Send comments on this topic to Information Copyright 2006-2011, Simio LLC. All Rights Reserved. Simio D oc umentation SearchTableUponEnteringObject - SimBit Problem: Each object in my model reads data from a table to determine its processing time and the number of resources it must seize before processing. I do not want to hard code the row where each object should look for its data, but instead the entity should search the table whenever it enters the Server to find the appropriate data. Categories: Data Tables Key Concepts: Add-On Process, Blocked Routing Rule, C yclic, Data Table, Entity, Entity Destination Type, Expression Property, ID, ID, NodeList, Numeric Property, On Entered, ParentRunSpaceID, Real State Variable, Resource, RowNumber, Save Index Found, Search Step, Secondary Resources, Select Available Only, Selection Goal, Server, SetRow Step, String Property, Token, Token State, TransferNode Technical Approach: This model contains three Servers in parallel. An entity travels to one of the three Servers, seizes a certain number of Resources, delays for a certain amount of time and then releases the Resources. The number of Resources and the delay duration is different for each Server. This information is stored in a table. To find the appropriate row in the table, the token must search the table and find the row that contains the information for that particular Server. The search uses the ID of the Server object to find the appropriate row in the table. Details for Building the Model: Basic Model Setup within the Facility window l l l l l l Place a Source followed by a Transfer Node and connect them with a C onnector. Place three Servers in parallel and another Transfer Node after these Servers. C onnect the first TransferNode to all three Servers with Paths and connect the Servers to the second Transfer Node with Paths. Place a Sink and connect to the second Transfer Node to the Sink. Go to the Definitions window and create a new Node List from the Lists panel on the left. Add Input@Server1, Input@Server2 and Input@Server3 to the Node List. Back in the Facility window, set the EntityDestinationType property of the first Transfer Node to ‘Select From List’ and set Node List Name to your new List. Set Selection Goal to ‘C yclic’. Place a standard Resource object and set the Initial Capacity to ‘6’. Name this ‘Resources’. C reating the Table within the Data window C reate a new Data Table by clicking the ‘Add Data Table’ icon in the ribbon. Name this table ‘ServerData’ In ServerData, add four columns; a String Property column named ‘Name’, an Expression property named ‘ServerID’, an Integer Property column named ‘NumberOfResources’ and an Expression Property column named ‘Hours’. l Place the following data into the Table: l l ¡ ¡ ¡ Server1, Server1.ID, 3, .1 Server2, Server2.ID, 2, .05 Server3, Server3.ID, 1, .02 Adding a New Token in the Definitions window l l Go to the Tokens panel within the Definitions window and click on the ‘Add Token’ icon in the ribbon. Select the name of the new token and then click on the ‘Real’ icon in the ribbon to add a new Real State to this token. Name this new state, ‘RowNumber’. The new token type will be used in the process below. The default token in Simio does not have any custom States and this model will save off a row number within the process into a custom state on the token so we will use this new token type instead of the default Simio token. Searching the Table in the Processes window C reate a new Process by clicking ‘C reate Process’ from the ribbon. Name this process ‘MyProcess’ in the properties window. C lick anywhere within the process and open the Advanced Options category in the Process Properties window. Set the Token Class Name to ‘MyToken1’ , which is the name of the new token you created above. l Place a Search Step l ¡ ¡ Set the Collection Type to ‘TableRows’. Set the Table Name to ‘ServerData’. This tells the Search Step to search through the Table to find the appropriate row. ¡ Set the Match Condition to ‘Entity.ParentRunSpaceID == ServerData.ServerID’. The function Entity.ParentRunSpaceID returns the ID of the object that this Entity is currently inside of (i.e. the current Server). And we want the Search step to find the row within the ServerID column of the ServerData that matches the current Server’s ID. ¡ Set Save Index Found to 'MyToken1.RowNumber' to save off the row number temporarily. l Place a SetRow step in the Original segment leaving the Search step. Set the Table Name property to ‘ServerData’ and the Row Number to ‘MyToken1.RowNumber’. Referencing the Table within the Servers Return to the Facility window and select Server1. Set the Processing Time property to ‘ServerData.Hours’ to read the processing time from the table. l Under the Secondary Resources category, find ‘Other Resource Seizes’ and open the window for Before Processing. Set Object Name to ‘Resources’ and Units Per Object to ‘ServerData.NumberOfResources’. This tells the Server to seize capacity of Resources before processing begins at this Server. l Under the Secondary Resources category, find ‘Other Resource Releases’ and open the window for After Processing. Set l Object Name to ‘Resources’ and Units Per Object to ‘ServerData.NumberOfResources’. This tells the Server to release capacity of Resources after processing is finished at this Server. l Find the Entered Add On Process trigger within this Server and select the new process you named MyProcess from the drop down. This tells the Server to execute this process when an entity enters this Server and this is where the entity will search the table to find the appropriate row. l Repeat the above steps for the other two Servers. See Also: The SimBit named “HierarchyWithTables.spfx” uses this model inside of another model and demonstrates the changes that are needed to this model in order for it to work properly as a submodel inside of another. Send comments on this topic to Information Copyright 2006-2011, Simio LLC. All Rights Reserved. Simio D oc umentation SeizingVehicle - SimBit Problem: I would like to model a system that has a vehicle which is used for both transport and non transport activities. The vehicle’s capacity is seized by another object for the non-transport activities. Categories: Vehicle Key Concepts: Add-On Process, Decide Step, Is, On Processed, On Processing, Release Step, Ride on Transporter, Seize Step, Vehicle Technical Approach: There are two Sources that each produce a different type of entity; PartA and PartB. Both types of entities are processed by Server1. However, PartB type entities require the Vehicle object to be seized before processing at Server1 can occur. A Decide Step before processing checks to see what part type it is and then a Seize step seizes capacity of the Vehicle object and requests a move to the Node near Server1. All entities are then processed by Server2 and the Vehicle is required to transport all entities from Server2 to the Sink. Therefore, the same Vehicle object is transporting entities and also visiting Server1 to help with processing. Helping with Server1 has a higher priority. Details for Building the Model: Simple System Setup l l l l l l Place two Sources and two ModelEntity objects into the Facility window. Rename the entity objects to PartA and PartB. Set Source1’s Entity Type property to ‘PartA’ and Source2’s Entity Type property to ‘PartB’. C hange the Interarrival Time of Source2 to Random.Exponential(.9) hours. Place a Vehicle into the Facility window. Set the Initial Node(Home) to ‘Output@Server2’ and Idle Action to ‘None’. Place two Servers into the Facility window, in series. C onnect both Sources to Server1 with Paths and connect Server1 and Server2 with a Path. Place a Sink into the Facility window and connect Server2 with the Sink with a Path. C hange the Type property of the Path to ‘Bidirectional’. This is required so the vehicle can travel back and forth on this path. In the Output node of Server2, set the Entity Destination property to ‘Specific’ and the Node Name to ‘Input@Sink1’. Set Ride On Transporter to ‘True’, Transporter Type to ‘Specific’ and Transporter Name to ‘Vehicle1’. Place a TransferNode just above Server1. This will be where the Vehicle moves when it is helping with processing for Server1. Place a Path between Server2 and the new TransferNode. Make this path bi-directional by setting the Type property to ‘Bidirectional’. Add Process Logic From within the Facility window, click on Server1 and create two new Add On Processes for the triggers Processing and Processed.(select C reate New from the drop down) l From within the Processes window, you should see the new Processes that were created. l In the Server1_Processing process, place a Decide step. The Decide Type is ‘C onditional’ and the Expression is ‘Is.PartB’. This checks to see if the entity is a PartB type entity. ¡ In the True segment, place a Seize step. Open the Seizes – Repeating Property Editor by pressing the … button on the right side of the Seizes property. The Object Type is ‘Specific’ and the Object Name is ‘Vehicle1’. Set the Request Move to ‘ToNode’ and the Destination Node to ‘TransferNode1’. This will request that Vehicle1 move to TransferNode1 for servicing PartB before it starts processing. ¡ In the Server1_Processed process, place a Decide step. The Decide Type is ‘C onditional’ and the Expression is ‘Is.PartB’. This checks to see if the entity is a PartB type entity. ¡ In the True segment, place a Release Step. Set the Object Name to ‘Vehicle1’ within the Releases – Repeating Property Editor. ¡ Send comments on this topic to Information Copyright 2006-2011, Simio LLC. All Rights Reserved. Simio D oc umentation SelectEntityColorFromStringList - SimBit Problem: I would like to choose, from a menu, a property for each entity added to my model. The destination of each entity is dependent upon its property value. Categories: Entity C haracteristics Key Concepts: List Property, ModelEntity, Selection Weight, StringList Assumptions: Each entity color is associated with exactly one source and sink. One server will process each entity type. Technical Approach: A string list of colors is created in both the ModelEntity and Model objects’ Definitions windows. A list property is created and when an entity is placed, the property value of that entity is selected from a menu. Details for Building the Model: Simple System Setup l Add a Source, Server, and Sink to the Facility Window. C reating a String List l Select the ModelEntity in the Navigation window. Then click the Definitions tab and select Lists in the panel. Add a String List with the Name of ‘C olors’. Add as many colors as desired. l Highlight the Model in the Navigation window and click the Definitions tab, Lists panel. Add a String List with the Name of ‘C olors’ and make sure that the list is identical to the ModelEntity list created in the last step. Adding a List Property l l In the Properties panel of the Definitions window of the ModelEntity, add a List Property with the Name ‘C olor’. Set the List Name property under Logic to ‘C olors’ and the Category Name property under Appearance to ‘Properties’. This will give the user the option to specify C olor as a property of an entity and the list of C olors will be shown as options. Adding an Entity to the Model Place a ModelEntity from the Project Library in the Facility Window. Select the desired color from the Color property drop down list. Then change the color of the entity to match that choice. l C hange the Entity Type Arrival Logic property of the Source to match the color of its associated entity. l Set the Selection Weight of the path from the Server to the Sink to ‘ModelEntity.C olor==List.C olors.[Desired C olor]’. l Add as many Sources and Sinks as desired to the model. l Embellishments: Try changing the Processing Time of the Server or the Interarrival Times of the Sources. Send comments on this topic to Information Copyright 2006-2011, Simio LLC. All Rights Reserved. Simio D oc umentation SelectEntityTypeFromTable - SimBit Problem: I have a data file containing information about my products, product mix and processing parameters. Categories: Entity C haracteristics Key Concepts: Before C reating Entities, Data Table, Data Table, Dynamic Object Property, Expression Property, Numeric Property, RandomRow, Source, Table Reference Assignments Technical Approach: C reate a table that contains the product mix and processing information for each part type possible. Details for Building the Model: Simple System Setup l l Place a Source, Server and Sink in the Facility Window. Place 3 ModelEntity objects from the Project Library into the Facility Window and change the Name property values to ‘PartA’, ‘PartB’ and ‘PartC ’. Defining the Data Table with Product Information l C lick on the Data tab of the model and select the Tables panel. Add a DataTable with the Name ‘ProductTable’ and include the following columns: ‘PartType’ – An object reference property of type Entity that will be used in the Source object to decide what is created ‘ProductMix’ - A standard property of type Real that contains a number to indicate the weight (likelihood) of creating that entity type. ‘ProcessTime’ - A standard property of type Expression to be used elsewhere in the model. l There should be 3 rows containing PartType, ProductMix and ProcessTime data: PartA, 50, 2; PartB, 30, 4; and PartC , 20; Random.Uniform(4, 6). Generating Random Entities using Data Table Information l l Within Source1, expand the Table Reference Assignment section of the Properties Window. Set the Table Name to ‘ProductTable’. Apply the RandomRow table function to the ProductMix column by setting the value of the Row Number to ‘ProductTable.ProductMix.RandomRow. This will select a row based on the weight value in each row (e.g. the first part type (row 1) will be selected 50/(50+30+20) or 50% of the time). Using the Product Information in the Model l l On Source1, specify the Entity Type property to be created from ‘ProductTable.PartType’. On Server1, specify the Processing Time property as ‘ProductTable.ProcessTime’. Discussion: You could add additional columns to provide data for use elsewhere in the model. There are two forms of referencing table data: TableName.PropertyName - When you use SetRow as we have done here to set the row for that entity, you do not need to specify the row number. TableName[RowNumber].PropertyName - If you want to explicitly reference a different row, or make a table reference from an entity that does not have a designated row, you can use this form. Send comments on this topic to Information Copyright 2006-2011, Simio LLC. All Rights Reserved. Simio D oc umentation SelectingResourceFromList - SimBit Problem: I have a group of 2 Resources called Mechanics. I have three Servers in parallel that all share the group of mechanics for processing and must seize one of the two before it can process the entity. Categories: Resources Key Concepts: Lists, ObjectList, Resource, Secondary Resources, Server Assumptions: There are no restrictions on which mechanic should be seized – either resource can work on any one of the three servers. Each server seizes in Preferred Order, which means if both resources are available, they will always select Resource 1. Technical Approach: Place both the Servers and the Resources in the Facility Window before then creating an Object List the Lists panel of the Definitions Window. Use Add-On Processes in each Server to Seize and Release from the List. Details for Building the Model: Simple System Setup Place a Source, a Sink and three Servers (in parallel) in the Facility Window. Ensure that the Servers each have a capacity of Infinity. The server capacity is not the constraint in this model – the ability to seize a Resource is the constraint. l Place two Resources in the Facility Window. l Defining the Resource List l C lick on the Definitions tab and select the Lists panel. Since we are creating a List of Resources, which are Objects, we need to click on the Object list button. C hange the Name of the list to ‘Mechanics’. l Select the first cell in the table and select ‘Resource1’. Then do the same for the second row and select ‘Resource2’. Using the Resources in the Server Processing l Within each of the 3 Servers, enter the Secondary Resources / Resource for Processing section or properties. C hange the Object Type to ‘FromList’ and the Object List Name to ‘Mechanics’. See Also: A related SimBit is SelectingResourcesAsAGroup.spf, which would be used if you’d like to seize multiple mechanics together before processing. Send comments on this topic to Information Copyright 2006-2011, Simio LLC. All Rights Reserved. Simio D oc umentation SelectingResourcesAsAGroup - SimBit Problem: I have a group of 4 Resources called Mechanics. I have a Server that all requires two mechanics for processing and must seize both before it can process the entity. Categories: Resources Key Concepts: Lists, ObjectList, Resource, Secondary Resources, Server Assumptions: There are no restrictions on which two mechanics should be seized. Each server seizes in Preferred Order, which means if all resources are available, they will always select the first two listed in the object list. Other selection rules might result in different usage patterns. Technical Approach: Place both the server and the resources in the Facility Window before then creating an Object list in the Lists panel of the Definitions Window. Use Add-On Processes in the Server to Seize and Release from the object list. Details for Building the Model: Simple System Setup Place a Source, a Sink and one Server in the Facility Window. Ensure that the Server has a capacity of Infinity. The server capacity is not the constraint in this model – the ability to seize a Resource is the constraint. l Place four Resources in the Facility Window. l Defining the Resource List l C lick on the Definitions tab and select the Lists panel. Since we are creating a List of Resources, which are Objects, we need to click on the Object list button. C hange the Name of the list to ‘Mechanics’. l Select the first cell in the table and select ‘Resource1’. Then do the same for the second row and select ‘Resource2’, and continue with ‘Resource3’ and ‘Resource4’ in the third and fourth rows. Using the Resources in the Server Processing Within Server1, we will use the properties within the Secondary Resources section to seize the resources before processing and release the resources after processing. l In the Other Resource Seizes section, enter the Before Processing repeating editor and change the Object Type to ‘FromList’. The Object List Name should be ‘Mechanics’ and ensure that the Number of Objects is set to ‘2’. The Selection Goal is ‘PreferredOrder’ so that so that if multiple Resources are available, the Resource that is listed first in the List will be selected. l Do a similar thing for the Other Resource Releases section, After Processingrepeating editor – release from an Object List Name of ‘Mechanics’ and the Number of Objects of ‘2’. l Embellishment: We have added a second symbol to each resource and changed the color of the disk to red to indicate when it is busy. Send comments on this topic to Information Copyright 2006-2011, Simio LLC. All Rights Reserved. Simio D oc umentation SelectServerWithShortestLine - SimBit Problem: I would like my entities to always go to the Server with the least number of entities waiting in its queue. Categories: Decision Logic -- Paths Key Concepts: C andidate, Entity Destination Type, InputLocation, Lists, Node, NodeList, Overload, Selection Goal, SmallestValue, Source, TransferNode Assumptions: There is one Source producing entities that are choosing which Server to go to. Technical Approach: A Node List of all Input Nodes at the Servers will be created in the Definitions Window. The Routing Logic at the Output Node of the Source will set the Entity Destination Type to ‘Select From List’. The entities will select the Server with the largest value of remaining input capacity. Details for Building the Model: Simple System Setup l Add a Source, three Servers and three Sinks to the Facility Window. Set a different Processing Time for each of the Servers; for example Server1 is set to ‘20’ minutes, Server2 is set to ‘Random.Triangular(1,3,8)’ minutes and Server3 is set to ‘0.1’ minutes. l Use Paths to connect the Source to each Server and each Server to its respective Sink. C reating a Node List l • Select the Definitions tab and click on the Lists panel to add a Node list and change its Name to ‘Servers’. Add the three Input Nodes of the Servers to the list. The order of the list will not affect the model. Adding Logic to the Model l Select the Server’s Output Node and change the Entity Destination Type to ‘Select From List’. C hoose the newly created node list called ‘Servers’ for the Node List Name property. l The Selection Goal should be set to ‘Largest Value’ and the Selection Expression should be set to ‘C andidate.Node.InputRemainingC apacity’. This will ensure that the entity chooses a Server based on the greatest remaining input capacity. Embellishments: Try changing the Interarrival Time of the Source or the Processing Times of the Servers. Send comments on this topic to Information Copyright 2006-2011, Simio LLC. All Rights Reserved. Vehicle Selection Logic l We will create a Transporter List. C andidate. C onsider changing the color of one entity by selecting it in the Facility window and selecting a color from the C olor icon in the ribbon and then clicking back onto the Entity in the Facility window. Set Transporter Type to ‘From List’.Transporter. Set Transporter List Name to the name of the list you just created. C andidate. This is where we will tell Simio that each entity entering this node should request a ride on a Vehicle. C lick on Source2 and change the Entity Type property to ‘PartB’. C lick on PartA_Vehicle and set the Initial Priority property to a value of ‘1.0’. ‘C andidate. Place two Vehicle objects. This tells Simio. ¡ Enter two rows – one for each vehicle you’ve placed in your model. Embellishments: C hange the Ride Capacity property of each Vehicle (SimBit has Ride Capacity set to ‘3’) to see how the system behavior changes. Assign an Initial Node location for each vehicle to tell Simio where to place these vehicles at the beginning of the run. the Priority property must equal the Priority property on this current ModelEntity.Transporter.0’. Back in the Facility window.Simio D oc umentation SelectSpecificVehicle . This will ensure that each Source will create a different type of entity. even if other vehicles are available. naming one “PartA_Vehicle” and the other “PartB_Vehicle”. draw a Path from the Sink back to the Output node of the Server. . click on the Output Node of Server1. Send comments on this topic to Information C opyright 2006-2011. Place two ModelEntity objects from the Project Library and rename one to ‘PartA’ and the other to ‘PartB’.Priority == ModelEntity. C lick on PartB_Vehicle and set the Initial Priority property to a value of ‘2.Transporter. Server. Priority. Go to the Definitions window and click on Lists in the left side panel. Initial Node (Home). Lists. C lick on each vehicle and set Initial Node (Home) to ‘Input@Sink1’. This path will be utilized by the Vehicles. VisitRequestQueue Technical Approach: We will utilize the Priority property on the ModelEntity object and the Priority property on the Vehicle object. NumberRiders. Place a Sink object and connect the Server to the Sink. TransferNode. Assign a value to the Initial Priority property on each Vehicle. Also.VisitRequestQueue == 0 – To select the Transporter that does not currently have any destination visit requests. l Set Ride On Transporter property to ‘True’.NumberRiders < 2 – To select the Transporter with its current number of entities riding on it as less than 2. from the possible list of candidates (transporters). when selecting a Transporter: C andidate. C lick on PartA and set the Initial Priority property to a value of ‘1.DestinationNodeID == Server1. Therefore. C lick on PartB and set the Initial Priority property to a value of ‘2. C lick on Transporter in the Ribbon to create a Transporter List. Categories: Vehicles Key Concepts: DestinationNodeID. C onsider changing the color of one of the Vehicles. Ensure that Source1 has its Entity Type property set to ‘PartA’. Put this expression into the Selection Condition property. Details for Building the Model: System Setup l l l l l l l l Place two Source objects and a Server object and connect both Sources to the Server with paths.Transporter.Priority’. l Discussion: C onsider these other examples to use in the Selection Condition property of a Transfer Node. We will also specific exactly which Vehicle the entity should request from our Transporter List.0’. Ride on Transporter. Vehicle. Assign a value to the Initial Priority property on each Part. ModelEntity.ID – To select the Transporter that has its Destination Node currently set to Server1. TransporterList. the part will wait for a specific vehicle.SimBit Problem: I have two different parts in my system and each part should be carried by a specific vehicle. All Rights Reserved. Simio LLC . We’ll assume that the value in the ModelEntity’s property must match the value in the Vehicle’s property in order for that Vehicle to be selected.0’. Maximum Arrivals. Simio LLC. The copies and the originals depart through separate sinks. C onnect the Source to the Separator and the Separator to both Sinks using Paths such that the parent entity will go to Sink1. Technical Approach: A Separator is placed into the model and the Separation Mode property is set to ‘Make C opies’. . Send comments on this topic to Information Copyright 2006-2011.SimBit Problem: I would like to have an entity create three identical copies of itself so there are a total of 4 entities that are exactly the same. Two different Sinks are used in order to collect statistics separately on the original entities and the copied entities. Separator and two Sinks in the Facility Window.Simio D oc umentation SeparatorMakesCopies . The Source produces 100 entities and therefore the Separator produces 300 copies. while the copies will go to Sink2. Separation Mode. which means there is a total of 400 entities at the end of the model. All Rights Reserved. Details for Building the Model: Simple System Setup l l Place a Source. Defining the Source l Set the Maximum Arrivals to ‘100’. The Copy Quantity is set to ‘3’. Defining the Separator l Set the Separation Mode property to ‘Make C opies’. This will turn off the Source once 100 entities have been generated. The Separator produces three exact copies of the entity. Separator Assumptions: One Entity type goes into the Separator. Categories: C ombining and Separating Entities Key Concepts: Make C opies. then the last Assign step ‘AssignRestart’ assigns the ‘Index’ back to ‘1’. Decide Step. Simio LLC.Quantity’. The second Decide step False exit should connect to the first Decide input. Setting up the Data Table In the Tables panel of the Data Window. Use a table to supply the production data. C hange the Name of the first Decide step to ‘DecideIsC urrentRowDone’. Place a Decide step with an Assign step connected to the True exit. The entity at Index 1 will remain the original color. then the False exit Assign with Name ‘AssignRowAndC ount’ increments the row index using State Variable Name is ‘Index and New Value is ‘Index+1’. If the above condition is true. both branches go back to the initial Decide. Add a ModelEntity from the Project Library and change the Name to ‘AnyEntity’. Use add-on processes in the Server to control indexing through the table. Picture.Simio D oc umentation SequentialProcessingByBatchSpecifiedInTable . Add a Discrete State Variable with the Name ‘C ount’ to track quantity produced for that row. AvailableRowC ount.AvailableRowC ount’ (where the function AvailableRowC ount returns the total number of rows in the data table). Real State Variable Assumptions: I have a table that tells me what parts I want to produce and in what sequence. ‘C ount’ to ‘0’. as should the last Assign exit. Technical Approach: Use a Source. then the True exit Assign step with Name ‘AssignPictureAndC ount’ assigns the picture to the row PartType (State Variable Name is ‘ModelEntity.SimBit Problem: I have unlimited inventory and a Server that produces parts from that inventory. and Sink. tightly linked to a Server to represent the generic arrivals from inventory. Categories: Add-on Process Logic. Use the pull down list for the Entered Add-On Process Triggers and select ‘Process1’. It also assigns the row production counter. select the Add Data Table button to add a table with the Name ‘DataTable1’ with Integer properties for PartType and Quantity. If the above condition is true. ModelEntity. When I complete the sequence I will restart. Numeric Property. Discussion: This could also have been done with a custom object that encompassed both entity creation and processing. Set the PartType value to match the indexes defined in the AnyEntity Symbol (0 and 1). C lick on the color icon to change the color of that first entity (Index 0).Picture’ and New Value is ‘DataTable1[Index]. l Specify the Quantity values required for each PartType.PartType’) and increments the row production counter (State Variable Name is ‘C ount’ and New Value is ‘C ount+1’). All Rights Reserved. In this case you could have actually created the desired entity types rather than using a state to represent entity type. Add a Discrete State Variable with the Name ‘Index’ to track which table row is being processed. This will compare the row quantity produced to quantity desired by using the Decide Type of ‘C onditionBased’ and Expression of ‘C ount < DataTable1[Index]. After we have decided our new row. . We will use the predefined state Picture on the ModelEntity to track what is being produced. connected by a C onnector and a Path respectively. C onnect the Process Logic to the Server l Go back to the Server properties in the Facility Window. l Adding Discrete State Variables to the Model l l l l C lick on the Definitions tab of the model and select the States panel. Send comments on this topic to Information Copyright 2006-2011. Server. Data Table. Place another Assign step then Decide and Assign steps from the False exit. Details for Building the Model: Simple System Setup l l l C reate a model with Source. If the above condition is false. C urrent Symbol Index. Data Tables Key Concepts: Assign Step. C lick on AnyEntity and then use the Add Additional Symbol button to add a second entity picture. Process Logic l l l l l l l l Go to the Processes Window and create a Process with the Name ‘Process1’. The next Decide step ‘DecideIfEndOfTable’ determines if the Index has passed the last specified table row by using ‘C onditionBased’ evaluation and Expression ‘Index >=DataTable1. change the Process Logic Capacity Type property of the Server to ‘WorkSchedule’. which indicates Off Shift times. Off Shift. Under Work Schedules. Expand the ‘+’ sign on ‘Schedule1’. and a capacity of 0 otherwise. l C onnect the Source. WorkSchedule Assumptions: The server works from 8:00 am to 5:00 pm with a capacity of 2. Simio LLC. Under the Work Period Exceptions tab. When the Server is Off Shift it will turn red indicating a C urrent C apacity of zero. select the Schedules panel and add a Work Schedule with Name ‘Schedule1’. Specify that ‘DayPattern1’ that has a Value of ‘2’ (on shift) from 8:00 am to 5:00 pm and capacity Value of ‘1’ from 5:00 pm to 9:00 pm. Send comments on this topic to Information Copyright 2006-2011. Categories: Schedules / C hangeovers Key Concepts: C urrent Symbol Index. Server and Sink to the Facility Window. l For the Server. C reate a Day Pattern by clicking on the Day Pattern tab and enter the Name ‘DayPattern1’. Schedules. change the Appearance Current Symbol Index to ‘Server1. Technical Approach: A Schedule is created for a Server and the Server is set to follow this Schedule in its Process Logic. or the Server’s Processing Time rate. Animating the Off Shift Server Select the Server and click the Add Additional Symbol in the ribbon. Because Day 6 and Day 7 have no day pattern specified. add an exception on Day 4 that has the capacity Value of ‘0’ (off shift) for 24 hours. All Rights Reserved. C hange the Process Logic Work Schedule property of the Server to ‘Schedule1’. Server and Sink using Paths. select ‘DayPattern1’ for days 1 through 5. On Shift. Then select the first of the two Active Symbols and change its color to Red. l C reating a Work Schedule l l l l l l l l In the Data Window. . Work Exceptions.SimBit Problem: I have a server that follows a schedule with entities entering the system 24 hours a day.C urrentC apacity’. from 5:00 pm to 9:00 pm with a capacity of 1. try shifting the Server’s work schedule. Details for Building the Model: Simple System Setup Add a Source. Enter the number of Days as ‘7’. C lick on the ‘+’ sign to expand the Work Periods. l Embellishments: To enhance the model for specific needs. Update the Processing Time of the Server to ‘0. it is assumed that the capacity value is 0 (off shift) for those days. In the Facility Window.25’ and Units to ‘Hours’. Leave everything else empty. the Source’s Interarrival Time rate. The server also has a work exception and is off shift for an entire day. Server.Simio D oc umentation ServerFollowsCapacitySchedule . C apacity of server changes over the day. l Within the Facility window. Update the Processing Time of the Server to ‘Random. C lick on the ‘+’ sign to expand the Work Periods.25)’ and the Units to ‘Hours’. l C hange the Process Logic Work Schedule property to ‘Shift8Hours’. 0.Simio D oc umentation ServerFollowsDailySchedule . select 'DayPattern1' for days 1 through 5. All Rights Reserved. On Shift.15. The server’s queue has an infinite capacity. Categories: Schedules / C hangeovers Key Concepts: C urrent Symbol Index. the Source’s Interarrival Time rate. Technical Approach: A Schedule is created for a Server and the Server is set to follow this Schedule in its Process Logic. When the Server is Off Shift it will turn red indicating a C urrent C apacity of zero.Triangular (0. l Embellishments: To enhance the model for specific needs. select the Schedules panel and add a Work Schedule with the Name ‘Shift8Hours’. l C hange the Appearance Current Symbol Index to ‘Server1. . Send comments on this topic to Information Copyright 2006-2011. 0.C urrentC apacity’. WorkSchedule Assumptions: The server works an 8 hour shift with a 30 minute break. Days 6 and 7 will not have a day pattern specified. Leave everything else empty. Details for Building the Model: Simple System Setup l Add a Source. l Under Work Schedules. Off Shift. try shifting the Server’s work schedule. Schedules. which indicates Off Shift times. or the Server’s Processing Time rate. l l l l l Animating the Off Shift Server Select the Server and click the Add Additional Symbol in the ribbon. thus the capacity value will be 0 (off shift). Server and Sink to the Facility Window. Simio LLC. C reating a Daily Work Schedule In the Data Window. Then select the first of the two Active Symbols and change its color to Red. Server. C reate a Day Pattern by clicking on the Day Pattern tab and enter the Name ‘DayPattern1’.1.SimBit Problem: I have a server that follows a daily schedule with entities entering the system 24 hours a day. C hange the number of Days to ‘7’. Enter the Start Time and End Time from 8:00 am to 12:00 and 12:30 pm to 4:30 pm that has a Value of ‘1’. change the Server’s Process Logic Capacity Type property to ‘WorkSchedule’. C reating a Work Schedule In the Data Window. Send comments on this topic to Information Copyright 2006-2011. l Under Work Schedules. When the Server is Off Shift it will turn red indicating a C urrent C apacity of zero. C reate a Day Pattern by clicking on the Day Pattern tab and specifying the Name ‘DayPattern1’. Then select the first of the two Active Symbols and change its color to Red. the Source’s Interarrival Time rate. WorkSchedule Assumptions: The server works for 45 minutes then rests for 15 minutes. On Shift. which indicates Off Shift times. click the Add Additional Symbol in the ribbon. try shifting the Server’s work schedule. l Within the Facility Window. 0. l Embellishments: To enhance the model for specific needs. Technical Approach: A Schedule is created for the Server and the Server is set to follow this Schedule in its Process Logic. Enter into ‘DayPattern1’ the following information: 12:00 am to 12:45 am and from 12:45 am to 1:45 am and from 2:00 am to 2:45 am that has a Value of ‘1’. Leave everything else empty.SimBit Problem: I have a server that follows an odd schedule with entities entering the system 24 hours a day. Server. See Also: To see how to make a more traditional 8 hour work day schedule. Schedules. l l l l Animating the Off Shift Server With the Server selected. All Rights Reserved. 0.15. see ServerFollowsDailySchedule. Simio LLC.C apacity’. Categories: Schedules / C hangeovers Key Concepts: C urrent Symbol Index. l C hange the Appearance Current Symbol Index to ‘Server1. Details for Building the Model: Simple System Setup l Add a Source. Update the Processing Time of the Server to be ‘Random. Server and Sink to the Facility Window. l C hange the Process Logic Work Schedule property to ‘Shift45Minutes’. or the Server’s Processing Time rate. change the Server’s Process Logic Capacity Type property to ‘WorkSchedule’.spf. . C lick on the ‘+’ sign to expand the Work Periods.1. select ‘DayPattern1’ for day 1.Triangular (0. Off Shift.Simio D oc umentation ServerFollowsOddSchedule .25)’ and the Units to be ‘Hours’. select the Schedules panel and add a Work Schedule with Name ‘Shift45Minutes’. The server’s queue has an infinite capacity. open the Advanced Options properties and change the Transfer-In Constraints to ‘C ustom C ondition’.. incoming entities continue to Server3. In this problem. then the entity continues on to Server3 which will always accept the entity. you’ll see that after a short while. a maximum of 3 entities may ever be waiting in the input buffer. specify the Transfer-In Condition as ‘Server. and the Server1 processing time is longer than the other Servers. Logically. ‘Server3’.Simio D oc umentation ServerWithTransferInConstraints . l l Logic Details within the Objects Within the Source. if there are already three (3) entities waiting in the input buffer to be processed. l Because the arrival rate on the Source is quite high. which has no transfer-in constraints and thus accepts all overflow of entities that cannot be processed by the first two servers.. Then once Server2 buffer gets larger. there are three servers arranged in a line. If the condition is true. Path Assumptions: For either ‘Server1’ or ‘Server2’ in this model. Categories: Decision Logic -. then the entity travels to the second server Server2. l Send comments on this topic to Information C opyright 2006-2011. the entities will attempt to travel from the Source to Server1. Then connect Server1’s input node to Server 2’s and then to Server 3’s node. l C onnect all three Servers output nodes to the Sink. the entity will enter the node. Technical Approach: Use the Advanced Options section.Paths Key Concepts: Server.6)’. Details for Building the Model: Simple System Setup Place a Source. Queue. has no such constraint and thus can accept all overflow of entities that cannot be processed by the first two servers.4.C ontents < 3’. The last server.SimBit Problem: This small example illustrates usage of the ‘Transfer-In C onstraints’ feature that is available in Advanced Options for the processor-oriented standard library objects. Then. If the entity violates the server’s transfer-in constraints. if not. change the Interarrival Time to ‘Random. entities will bypass Server1 and continue to Server2. then the entity continues to the next server. Transfer-In C onstraints functionality available for the Server object. l Within both Server1 and Server2.InputBuffer. three Servers.Exponential(.05)’. Move the input nodes of the Servers to the top portion of the Servers and the output nodes to the bottom portion below the object name.Triangular(. l C onnect the Source to Server1’s input node. Simio LLC . If transfer-in constraints for that server are also violated. and a Sink in the Facility window. Within Server1. This will cause entities to evaluate the contents of the input buffer for a given server before entering the node at that server. The exception is the last server in the line. All Rights Reserved. it will continue. . When an entity arrives to a server. change the Processing Time to ‘Random.3. ). as well as the Server to the Sink. place four Sources and four ModelEntity objects to go along with each Source. etc. Rate Tables. Ranking Expression. Add a Standard Property (type Real) and rename it ‘DueDate’. Details for Building the Model: Simple System Setup In the Facility window. l C reate Rate Tables In each Source set the Entity Type to the appropriate Entity. Numeric Property. there is a new property called DueDate.. ‘LateIn_LateOut’. while the Number of Intervals for each should be ‘6’. Function and Rate Tables Key Concepts: Arrival Mode. EE. LL. Note that the last 2 hours in all the tables are 0. l To set the DueDate for each entity. This means that a Rate Table has to be created for each type of Entity. l Extend the Input Buffer for the Server so that all entities in the queue will be visible. Technical Approach: Entities are created in separate Sources according to an appropriate Time Varying Arrival Rate. Server. l The Interval Size for each table should be’ 1’ hour. EarlyIn_LateOut_RT. Categories: Buffering. Time Varying Arrival Rate Assumptions: Assume that Processing Time is the same and constant for each type of entity and also assume that entities are allowed to be processed even after their deadline. ‘EarlyIn_EarlyOut’. C onnect all the Sources to the Server. Go to the Definitions Window and then Properties Panel. change the color of the entity symbols so that each entity type can be differentiated. . Also place a Server and a Sink. Ranking Rule. C hange Arrival Mode to ‘Time Varying Arrival Rate’ and notice that the Rate Table box is now highlighted. since it will not change values during the simulation run. l Rename the ModelEntities ‘EarlyIn_LateOut’. EarlyIn_LateOut_RT. which will allow the system to empty. Assigning the Due Date l l The Due Date will be represented as a Property of the ModelEntity. Select ModelEntity in the Navigation Window in the upper right-hand portion of the screen. The specific rate tables for this example are as follows: l l Once these tables are created.SimBit Problem: I have multiple entities with different due dates and I want to them to be processed with a Least Slack scheduling methodology. Also. C reate four Rate Tables with names associated with the entity types (i. Smallest Value First. with Paths.e. go back to the Model and notice in each entity instance. The entities then travel to a Server that selects the next job based on a Selection Rule to accept the entity type with the least slack waiting in the queue. indicating no entity arrivals. LE). l Go to the Data Window and then to the Rate Tables Panel to create a Rate Table. go back to the appropriate Source and select the Rate Table that goes with that Source.Simio D oc umentation SimpleLeastSlackSelectionRule . and ‘LateIn_EarlyOut’ and rename the Sources that each is generated from in a similar fashion (we used EL. Set the Ranking Expression to ‘ModelEntity.ProcessingTime’. Because this model only has one server. This could happen if there were multiple Servers and/or entities followed a different sequence of steps. EarlyIn_LateOut to ‘7’. the entire expression is necessary.DueDate’. Discussion: Slack is the “cushion” that an object has between it is potentially done processing and its deadline. processing time can be ignored. It would be set to ‘Largest Value First’ with a Ranking Expression of ‘ModelEntity. . and select the entity with the smallest value.DueDate – (TimeNow + ModelEntity. LateIn_EarlyOut to ‘6’. the one with the earliest value. or essentially. the model starts at midnight (represented numerically as 0). Send comments on this topic to Information Copyright 2006-2011. so if the entity is to be “shipped” at 2:30 AM its DueDate is to be set at ‘2. l Within the Server.l In this example. C onfiguring the Server to Select Entities with Least Slack l The Server in this model is to process entities based off of a Least Slack scheduling methodology. All Rights Reserved. the deadlines are set as follows: EarlyIn_EarlyOut to ‘2. This means that the Server is going to prioritize the queue according to DueDate. If the Due Dates were exactly the same for all entities.5’. ¡ With the default Run Setup settings.ProcessingTime)’. change the Ranking Rule to ‘Smallest Value First’. The Remaining Processing Time would become a factor if entities had different processing times. change the Processing Time to ‘4’ minutes.5’. or if the entities just simply have different processing times. if both Due Date and Processing Time are not consistent between the entities. this cushion should have been mathematically described in the Ranking Expression as ‘ModelEntity. Then. In this model. and LateIn_LateOut to ‘8’. Simio LLC. Slack is defined as the Deadline minus the Remaining Process Time. the Ranking Rule would be the opposite of the one used in this example. Of course. add 2 Monitor Elements – MonitorTankFull and MonitorTankEmpty. In 3D view use “Shift-Drag” to raise it and place it on top of the tank. StateStatistic. Rate. ¡ To represent the top of the tank. Set the State Variable Name to ‘TankVolume. In the Processes Window. Resource. So. Set the State Variable Name to ‘TankVolume. ¡ . Technical Approach: A resource is created along with other drawing elements to represent a tank. Set the Delay Time to 0. In the Processes Window. ¡ Add an Assign step. Set the Delay Time to 0.1 Hours. These monitors trigger an event when its condition is reached. Add-On processes are created to mimic the tank filling/emptying logic as well as to animate the level of fluid in the tank.Height. In the Definitions Window. Size. In this case it was set to TankVolume/200 because the maximum volume is 1000 and 1000/200 equals the height of the resource – 5. when it is full the value should be equal to the height set to the resource (5). Level State Variable. This allows the animation to update every time the Delay is executed. ¡ C reating the Add-On Process Logic Add a Level State Variable called TankVolume in the States panel of the Definitions Window.Rate’ and the New Value to 0. Monitor. Level States Key Concepts: C ircular Gauge. click the Select Process button in the ribbon and choose ‘OnInitialized’ from the drop down list. ¡ Add an Assign step and call it StartFilling. Details for Building the Model: C reating the Tank Place a resource into the Facility Window. l Options to improve animation: l l To represent the shell of the tank.1 hours between changes. 1 min was used in this example. Status Label Assumptions: This tank has a C apacity of 1000 units and fills at a rate of +1000/hr and empties at a rate of -5000/hr with a pause of .Rate’ and the New Value to 0. Floor Label. Place it on top of the other two parts. l For MonitorTankFull: l ¡ ¡ ¡ ¡ ¡ l Set Monitor Type to ‘C rossingStateC hange’ Set State Variable Name to TankVolume Set Threshold Value to 1000 C rossing Direction to ‘Positive’ On Event Process will be TankFull Set Monitor Type to ‘C rossingStateC hange’ Set State Variable Name to TankVolume Set Threshold Value to 0 C rossing Direction to ‘Negative’ On Event Process will be TankEmpty For MonitorTankEmpty: ¡ ¡ ¡ ¡ ¡ l To represent the animation of the tank we need to make a new process. The New Value is going to be a representation of the tank’s fluid level. Drag an Execute step and set Process Name in the Logic to TankEmpty. add a dial gauge using the expression TankVolume and range 0 to 1000. Categories: Add-on Process Logic. create 2 processes called TankFull and TankEmpty to dictate the tank’s actions at those points in time. l For TankEmpty: l l Add an Assign step and call it StopEmptying.Height’. ¡ Add a Delay step called DelayBetweenUpdates and set the Delay Time to an appropriate amount. Add a Delay step and call it Pause.Simio D oc umentation SimpleTank . C hange the symbol to represent the fluid level in the tank – a cylinder was used in this example – and resize it to an appropriate size (the Height was set to 5 in this example). draw a polyline around the outer-edge of the cylinder. Add an Assign step and call it StartEmptying. draw a circle and change its Object Height. The height of the tank in the Facility Window has been set to 5 meters.Size. Set the State Variable Name to ‘TankVolume.1 Hours.Rate’ and the New Value to -5000. C rossingStateC hange.SimBit Problem: I want to model the level of a fluid tank complete with animation. ¡ To show tank action in 2D view. Set the State Variable Name to ‘Tank. C hange the Object Height to equal the height of the fluid level. Elements panel. Set the State Variable Name to ‘TankVolume. ¡ Drag the process Endpoint to the input of the Delay to create a loop. ¡ l For TankFull: ¡ ¡ ¡ Add an Assign step and call it StopFilling.Rate’ and the New Value to 1000. leaving an opening so that the fluid level is visible. ¡ Add a Delay step and call it WaitForSupply. Discussion: The delay time used in the DelayBetweenUpdates process step may affect run time. A large delay time between animation updates results in a faster run time because the model does not have to update the resource height as frequently. more accurate animation at the potential expense of a longer run time. It can be seen that the animated fluid level mirrors the change in TankVolume. . a smaller delay time results in a smoother. On the other hand. All Rights Reserved. as well as Status Labels to represent the Tank Volume and Fill Rate.Embellishments: We’ve added a Status Plot to illustrate the TankVolume over time. Simio LLC. Send comments on this topic to Information Copyright 2006-2011. place a path also from the Sink object back to the Source object. All Rights Reserved. the Vehicle must have a path to return to the Source to pick up additional entities for transfer. Placing the Paths Double click on the Path to define the multiple paths between the Source. Within the Transport Logic section. . Each entity incurs the load delay when getting on the vehicle and the unload delay when getting off the vehicle. When using vehicles.SimBit Problem: I have entities that require movement on a vehicle between operations. Server and Sink in the Facility Window. Details for Building the Model: Simple System Setup l Place a Source. Technical Approach: Set the Transfer Nodes on the Source and Server objects to specify that a vehicle is required for movement. Simio LLC.Uniform(1. The vehicle can move up to 2 entities at a time between the objects in the system. Server and Sink objects.Simio D oc umentation SingleVehicleUsage . Modifying the Transfer Nodes l C lick on the Transfer Node (exit) of the Source and change the Ride On Transporter property to ‘True’. the vehicle must have a path to return from the Sink to the Source. l C lick on one of the paths. TransferNode.3)’. Since the paths are unidirectional. Vehicle Assumptions: There is a single vehicle that moves all entities. C hange the Load Time to ‘1’ and the Unload Time to ‘Random. Note that the Type is set to ‘Unidirectional’. While the entities will exit the system at the Sink. l l Embellishments: Try changing the paths to be bidirectional or changing the ride capacity of the vehicle. With unidirectional paths. All paths are unidirectional. change the Ride Capacity to ‘2’. the Basic Node (entry) on the Server must be connected to the Transfer node (exit) on the Server so the Vehicle can move from one node to the next. l Do the same thing as above for Server object’s Transfer Node. Categories: Vehicles Key Concepts: Ride on Transporter. even though the entity doesn’t travel between those objects. Send comments on this topic to Information Copyright 2006-2011. Specify the Transporter Type as ‘Specific’ and Transporter Name as ‘Vehicle1’. This will allow up to 2 entities to be moved on the vehicle at one time. Defining the Vehicle and its C haracteristics l l Place a Vehicle in the Facility Window. click on the Source and expand the Table Reference Assignment section in the Properties Window. C onnect the Server to the first Transfer Node with a C onveyor and connect the other Transfer Nodes together with C onveyors. These Sink objects represent the shipping docks and they can be renamed Box1_Dock. The Sequence Table consists of rows of Nodes and the Entity (Box) will follow this route. Entity Destination Type. enter the following rows of data: Input@Labeling. if desired. And finally. Add a new column to this table of type. Box3_Dock. row 3 will be read. TransferNode1. 40% of the time Box1 types will be created. Data Table. The boxes travel on a conveyor to the Labeling machine (a Server). The Source will create the entity listed in the BoxType column of Table1.4 Box2 . See how the model behaves when the TransferNodes do not use “BySequence” for their EntityDestination property.SimBit Problem: I have a conveyor system that sorts boxes and sends them to the appropriate shipping dock. Rename them to Box1. enter the following rows of data: [email protected] D oc umentation SortingConveyorSystem . l Embellishments: Experiment by changing the sequences in the Sequence Tables. Place three Transfer Nodes in a line after the Server. You can also change the symbol and the colors. Therefore. The Server can be renamed “Labeling Machine”. Sequence Table. They leave the Labeling machine and travel on the conveyor system. RandomRow. You can rename this property to be “BoxType” from within the Properties window on the right. This is done by selecting “Entity” from the Object Reference drop down in the Ribbon. TransferNode1. TransferNode2.e.RandomRow’. The color of the symbol can be changed by selecting a new color from the C olor menu in the Ribbon (when the entity is selected) and then clicking on the part of the entity that you’d like changed. Sequence Tables Key Concepts: By Sequence. one below each of the Transfer Nodes. Box2_Dock. Technical Approach: There is only one Source. “Entity”. “Real”. Numeric Property. TransferNode Assumptions: There are three different types of boxes and each type of box has its own shipping dock. connect each Transfer Node to the Sink that was placed below it. Set it’s Input Buffer capacity to 0 to force any waiting entities to stay on the conveyor. Input@Box3_Dock Using the Data Table From within the Facility window. C onveyor. Therefore. Box1’s property should be set to ‘SequenceTable1’. The system uses Sequence Tables to determine the route of each type of box.ProductMix. TransferNode2. Input@Box2_Dock ¡ In SequenceTable3. It reads a Data Table to determine how many of each type of box to produce. l Set the Entity Type property to ‘Table1. l You also need to configure each of the Transfer Nodes in the model to use Sequence Tables to determine the next location for the entity. Details for Building the Model: Simple System Setup Place a Source object and a Server object into the Facility window. This is done by select “Real” from the Standard Property drop down in the Ribbon. 30% of the time. l Set the Table Name to the name of your Data Table (i. going from the node listed first and then proceed row by row. And finally. l C reating Tables l Go to the Tables panel within the Data window. Box2 and Box3.3 Box3 . ¡ Enter data into this table. place three Sink objects. row 2 will be read and 30% of the time. l Drag three instances of ModelEntity into the Facility window. Dynamic Object Property. enter the following rows of data: Input@Labeling. TransferNode3. Box2 to ‘SequenceTable2’. TransferNode1. . 30% of the time. click on each Entity instance (Box) and set the InitialSequence property. So in our example.BoxType’. ¡ Add another column to this table of type. C reate a new Data Table by clicking on the Add Data Table icon in the Ribbon. click on each Transfer Node (including the output nodes of the Source and the Server) and set the EntityDestination property to ‘BySequence’. l Using the Sequence Tables In order to tell the Entity which Sequence Table to use. Box2 types will be created and 30% of the time. Box3 types will be created. such as: Box1 . Vary the values of the ProductMix column in the Data Table to see different amounts of each box type created. 40% of the time row 1 will be read. ¡ ¡ In SequenceTable1. You can rename this property to be “ProductMix”.3 ¡ l Add Three Sequence Tables by clicking on the Add Sequence Table icon in the Ribbon (3 times). Input@Box1_Dock In SequenceTable2. Categories: C onveyor Systems. ‘Table1’) l The Row Number is set to ‘Table1. This is accomplished by selecting the entity and then choosing a symbol from the Symbol Library found in the Ribbon. This function tells Simio to use the values in the Product Mix column as a weighted average to determine which row to set at any given time. and Box3 to ‘SequenceTable3’. l C onnect the Source to the Server with a C onveyor. There is one Sequence table for each type of Box. Add decision logic in add-on processes at Transfer Nodes 1 and 2 to represent a scanner that would “read” the entity and direct it down the appropriate path. other approaches to sort the packages could include: l l Use an add-on process when leaving the Server to set the entity destination to the proper loading dock.Instead of using predetermined sequences. Simio LLC. . Send comments on this topic to Information Copyright 2006-2011. All Rights Reserved. Running experiments to perform a reliable statistical analysis From the Navigation window. C hange to the Facility window for the selected model. we do not need the Tally step. but also runs significantly slower because it contains some overhead of objects and statistics. Server. and Number of Servers. In the processes window. SSS_Process_with_Entity This model is built using the Processes window and the Definitions window similar to above. Transfer Step. Then in the Properties panel of the Definitions tab. we set up a simple Seize. Service Time. the equivalent of a release. Sink. but rather to provide the modeling concepts. Tally Step. SSS_Library Build the model by placing the three objects and connecting them with C onnectors. Delay Step. we fine tune the “properties” of each property to control things like category. load the experiment for the selected model. Modeling Concepts: As mentioned above. we can use the Parent Object itself as the constraint. Since the Entity and Station automatically generate their own statistics.SimBit Problem: Source – Server – Sink (SSS) is a frequently used problem for beginners in simulation because it can be easily compared to queueing theory problems such as M/M/1 and M/M/2. We add a TallyStatistic to collect TimeInSystem and we add two OutputStatistics to collect the final values of the Queue statistics. turn on the Histogram and Rotate Plot buttons if not already on. The primary statistics of interest are the time in queue and number in queue. these are a little more difficult to build and understand because you have to do some of the “plumbing” yourself. To really appreciate the value of additional replications. then press run and watch how much the early results vary. Running Interactively to watch the provided animation Select a model in Navigation window in the upper right (each model name begins with “SSS_”). This is the easiest to build. our goal here is not to teach you the details of how to build these. Technical Approach: This project file contains three models. SSS_Process This model is built using the Processes window and the Definitions window. So here are some of the concepts for each approach.Simio D oc umentation SourceServerSinkApproaches . WaitUntilTransferringEvent Assumptions: We are assuming a very simple system consisting of a single arrival stream. Transferring into a station is similar to seizing a resource. While not complex. Experiment. Using these Objects: Each object has four properties to adjust their behavior: Time Between Arrivals. . Response. select the Response C hart tab in the experiment window. we also create Entities to support better animation. Unlike most SimBits. C reate Step. C apacity. Note that this is all done with the Token that is executing the process – we never create any entities. Histogram. But even that simple model has several possible approaches. but rather to provide the modeling concepts and leave you with a useful tool for beginning analysis. or TallyStatistic and OutputStatistic elements. In the Definitions window we add a Timer to trigger periodic token arrivals t our process. We set up a separate Assign using the OnRunInitialized process to assign that desired quantity of the parent object. OutputStatistic.Processing Key Concepts: Analysis. we also take advantage of using a Station as our constraint. a single (perhaps multiple capacity) server. Timer Element. InputBuffer. Destroy Step. and display name. units. Maximum Arrivals. Since we have an entity. our goal here is not to teach you the details of how to build these. Since only one item is being seized. We also hide the inherited properties that we do not want to clutter our model property window. We have one model (SSS_Library) built using only the Standard Library. C ontents. Categories: Decision Logic -. reset the run. Tally. Set them and run to watch the animation. You will see the four C ontrols (the properties) as well as two Responses (the Key performance Indicators). default value. But instead of using just the tokens. not Paths. Release.Allocated. but the reward is significantly faster execution. Delay Step. you can see a clear illustration of the value of running sufficient replications. Delay. Right click on the model name and select Properties to open the Model Properties. TallyStatistic. By adjusting the number of replications in the experiments. Pivot Grid. Status Label. and then the entity is disposed. Destroying the entity after it finishes processing also removes it from the station. You can get a quick summary of the results here as well as go to the Pivot Grid for more complete data. By adjusting those parameters you can compare simulation results to those of many common queuing problems. We provide this project both to illustrate three approaches and to provide a tool for fast experimentation by beginners. Expression Property. Release Step. We expose the four properties by right-clicking on each property to create a new reference property. so they do not impact the timing. Replication. The other two models are built entirely from processes – one with just tokens (SSS_Process) and one with entities (SSS_Process_with_Entity). You will find the four properties in the Process Logic category. Embellishments: Note that while we have discussed this as a project containing three models. . Simio LLC. All Rights Reserved. you could also load the spfx file as a library containing three objects. Send comments on this topic to Information Copyright 2006-2011. n n ¡ C lick on the C reate Step and right click on the Object Instance Name property. custom Source object is created. C hange the Name to ‘RandomRowInEntity_Types’. change the Name to ‘Probability’ and set the Description to ‘The probability of creating this type of entity.SimBit Problem: I would like my Source object to create multiple entity types but instead of reading a table to get the information about which types of entities to create. Rename this property ‘Entity_Types’ and set the Description in the properties window to ‘The type of entity to create and the probability of creating this type. This tells the new Source object to set a row in the Repeating Group property (based on the probabilities entered) and then create that particular type of entity. The OnEntityArrival process is Overridden and modified. This new property should appear under the heading Entity_Types. Override. subclassed Source object in your Project Library and you will automatically be navigated into this object.Entity_Type. you’ll see the new Source in the Navigation window (top right corner of interface) and the new Source will be highlighted.Simio D oc umentation SourceWithCustomEntityTypeProperty . This is adding a new Expression type property into this Repeat Group.RandomRow’ into the expression for Row Number. In other words. Expression Property.Properties. With this new Dynamic Object Instance property highlighted/selected. C lick the Override button in the ribbon and see the process change to a White background. From the Facility window. C lick on the Properties panel on the left to view the Properties window. ‘PartB’ and ‘PartC ’. alongside the Entity_Type property. which tells this C reate Step to look there for which type of entity to create Use the new Source in the main Model Navigate back to the main Model by selecting ‘Model’ in the Navigation window (upper right). A new SetRow step is used to reference the contents of the new RepeatingGroup property. under the standard Library) and drag one instance of the new Source into the Facility window. This is the property used to input information into this Source on which type of entity to create and the percentage of which type of entity to create. This will place a new. if it were indeed added to the Repeat Group. so that we are telling the Token to set a reference to the Repeat Group and not the associated object (which doesn’t exist yet). ‘Entity_Types. n Ensure the Object Type property is set to ‘Token’ (found in the Advanced Options category). Dynamic Object Property. change the Name to ‘Entity_Type’ and set the Description to ‘The type of entity to create’. which tells this SetRow step to select a row in the Entity_Types Repeat group. go to its Definitions window. Find the new Source we created in the Project Library (bottom left. This is adding a new Dynamic Object Instance type property into this Repeat Group property. n Set the Category Name to ‘Arrival Logic’ n ¡ Go back and select/highlight the Entity_Types property and select ‘Expression’ from the Standard Properties dropdown of the Ribbon. Right click on the Table Name property and select ‘Set Referenced Property’ and select the Entity_Types Repeat Group property that we just created. l Drag three instance of ModelEntity into the Facility window and rename them to ‘PartA’. Give each entity l . n ¡ Ensure that this new property is highlighted in the Properties Window and then select “Entity” from the ‘Object Reference’ property dropdown of the Ribbon. The C reate Step is modified to reference the RepeatingGroup’s Entity property for its Object Instance Name. Details: Subclass the Standard Source object l From the standard library in the Facility window.Properties in the main part of the Properties window. Find the OnEntityArrival process and select it by clicking anywhere in the process. which indicates that you can now modify the logic. by subclassing the Source from Simio’s standard library. n With this new Expression property highlighted/selected. not the main model’s Facility window.’ n Set the Category Name to ‘Arrival Logic’ l From within this new Source object. C onnect the three objects with Paths. Building New Objects / Hierarchy Key Concepts: C reate Step.Probability. SubC lass Assumptions: A new. This new property should appear under the heading Entity_Types. Technical Approach: We subclass a standard Source object and add a new Repeating Group property that contains a Dynamic Object Instance property (Entity property) and an Expression property. drag a standard Server and a standard Sink from the Standard Library. Categories: Arrival Logic. go to its Processes window. SetRow. right click on the standard Source object and select “SubC lass”. This indicates that you are inside of that new Source object – looking at its Facility window. based on the values in the Probability property. n Put the expression. Process. RandomRow. Status Label. ¡ C reate a new Repeating Group property on this object by clicking the icon in the ribbon named “Repeat Group”.’ n Set the Category Name to ‘Arrival Logic’. ¡ Place a new SetRow step after the Execute step and before the C reate step. l From within this new Source object. Repeating Group Property. Select ‘Set Referenced Property’ and select Entity_Types. I would like my user to input this information through a property on the Source object. All Rights Reserved. in order to help debug and validate the behavior of the new Source object.a unique color by selecting the instance. C lick ‘Add’ to add a new row into this Repeat Group property. (The expression. l C lick on the instance of the new Source object within the Facility window and find the Entity_Types property in the Arrival Logic category.3’.4’ and ‘PartC ’ with a probability of ‘. Simio LLC . and selecting color from the Ribbon and then clicking back on the entity to give it that color.NumberC reated’ will return the number of this type of entity that was created by the Source. Embellishments: C onsider adding Status Labels and/or Floor Labels to visually display how many of each type of entity has been created. ‘PartA.) Send comments on this topic to Information C opyright 2006-2011. ¡ ¡ C lick the ellipse at the far right of the new property to open the Repeat Group editor (to begin entering values). . ¡ C lick ‘Add’ twice more to add a row for creating ‘PartB’ with a probability of ‘. Enter ‘PartA’ for Entity_Type and ‘.3’ for the value of the Probability property. l Add the data for the average number of arrivals during each period. …). Discussion: Do not expect an exact number of arrivals in any given period.g. Server and Sink in the Facility Window. 11:00. Source. Rate Tables. Details for Building the Model: Simple System Setup l l Place a Source. Send comments on this topic to Information Copyright 2006-2011. All Rights Reserved. a non-homogeneous Poisson distribution. 2:00.SimBit Problem: I have entities for which the arrival rate varies over time. Simio LLC. Defining a Rate Table In the Data Window. Poisson Distribution. it will produce the average number of arrivals specified. Time Varying Arrival Rate Assumptions: I have an average of 20 entities arrive during every third hour (e. Over a sufficient number of trials. This is random. but for any given period it may be unlikely to generate the exact number specified. 8:00. .Simio D oc umentation SourceWithRateTable . Categories: Arrival Logic Key Concepts: Arrival Mode. l Using the Rate Table within a Source l C hange the Source1 Arrival Mode property to ‘Time Varying Arrival Rate’ and Rate Table to ‘RateTable1’. On other hours I have no arrivals. 5:00. C onnect the Source to Server and Server to Sink using Paths. Technical Approach: Specify the arrival data in a Rate Table. select the Rate Tables panel and create a new rate table with Name ‘RateTable1’. Reference that rate table in a Source object. C hange the Interval Size property to ‘1’ and the Number of Intervals to ‘24’. Embellishments: Slowing down the arrival and processing rates might make it easier to see the behavior of the system. 4.If function is used to check ModelEntity. whether or not the current part is considered a high risk part. a standard Server and a standard Sink into the Facility window. String State Variable Assumptiona: There are five different parts produced in this model. Priority 1 is considered High Risk.2 ¡ l C lick on the Server object in the Facility window. "MEDIUM". Floor Label. “MEDIUM” or “LOW” to a String State. based on the priority of the entity that has just entered this Server. Technical Approach: Assign the entity a value of 1-5 in the ModelEntity. To change which symbol is active. click on the Floor Label button and draw and floor label somewhere in the Facility window. click on the Source object in the Facility window. click the Edit button in the Ribbon. You have just changed the color of the “active symbol”. ¡ Find the On Entering property under the State Assignments category in the properties window and add a row to this repeat group property. click Add Additional Symbol button in the Ribbon to give this entity a total of 5 symbols. ModelEntity. Rename this to ‘Parts’. . Functions Key Concepts: Before Exiting. select the ModelEntity object and click the C olor button in the icon. 2. l With the Floor Label selected. via the On Entering State Assignment property of the Source object. Assign a value of “HIGH”. Add a Floor Label l Add a floor label in the Facility window that will animate the current value of the Alert state variable. Drag a ModelEntity into the Facility window from the Project Library. In this example. l Back in the model’s Facility window. look at the Active Symbol button in the icon. "LOW") This expression will assign a value of “HIGH” to Alert if the ModelEntity being processed has a priority of 1. each assigned a priority of 1-5. "HIGH". Math. Send comments on this topic to Information C opyright 2006-2011.Priority and then assign a value to the String State. each with an equal probability of . ¡ The State Variable Name is ‘Alert’ and the New Value expression should be Math.Priority state via the Before Exiting State Assignment property of the Source object. 1 ) .Priority -1’. ¡ To assign colors to each symbol. The Math.SimBit Problem: I would like to check the priority of part and then use a String State to display to the screen. a medium risk part or a low risk part. and type what you’d like to display. (The minus 1 is needed because the Symbol index is 0 based but the smallest priority we’ll assign is 1) State Assignments l C reate a new String State on the Model by going to the Definitions window and clicking on the States panel along the left side of the window.Priority’ and the New Value expression should be Random. Rename it ‘Alert’. To determine which symbol is active.8. You can also slow down the animation on the Run Tab of the ribbon. Priority. C urrent Symbol Index.Exponential(2)’ and the Processing Time of the Server was changed to ‘1’. The tags that are part of this Floor Label changes the text to the color blue and underlines the text. Find the Before Exiting property under the State Assignments category in the properties window and add a row to this repeat group property (by click on the ellipse that appears in this input box).4. Details for Building the Model: Simple System Setup l l Drag a standard Source.2.Priority ==2). with equal probability. C hange the expression to ‘ModelEntity. Priority 2 is considered Medium Risk and the rest are considered Low Risk. find the Current Symbol Index property in the properties window.. ¡ When the ModelEntity object is selected in the Facility window. State Assignments. . the Source’s Interarrival Time was changed from the default to ‘Random. Assign a different color to each symbol. This example uses: The part being processed is {alert} risk.If((ModelEntity. ¡ C lick the String button in the Ribbon to create a String state. All Rights Reserved. . The String State is written to the screen in a Floor Label. With the ModelEntity selected in the Facility window. Categories: Discrete States. C onnect them with Paths.6.Simio D oc umentation StringStates . which assigns the value of 1-5. (ModelEntity.Discrete(1. Simio LLC . 3.Priority == 1). Select the desired color and then click back onto the ModelEntity object in the Facility window. ¡ The State Variable Name is ‘ModelEntity. select the appropriate symbol from the Active Symbol dropdown. You should see the color change. Notice that an expression must be between these brackets {}.If().. From the Drawing tab of the ribbon. it will return “MEDIUM” if the priority is 2 and “LOW” otherwise . 5. C ondition. l C hange the color of one of the Workers so that you can tell them apart graphically.SimBit Problem: I have three types of entities and want to store their respective information about processing times. ModelEntity.4. change the Ride on Transporter property to ‘True’. l Setting up the Data Tables l In the Data Window. Expression Property. Ride on Transporter. and Sink.Simio D oc umentation TableReferenceInRepeatingProperty . Simio LLC. Worker Key Concepts: Before C reating Entities.Unit Type ‘Time and Default Units ‘Minutes’) Random. Send comments on this topic to Information Copyright 2006-2011. C hange the symbol color of each to match the name.RandomRow’. Worker2.Uniform(5. Use the Add button and add a State Variable Name of ‘Table1. as well as two Worker objects to the Facility Window. 'Blue' and 'Green'. l C hange the Entity Type to ‘Table1. 3. Adding Processing Time and Assignment Information to the Server l l Within Server1. C lose the dialog and you should see the On Entered property change to ‘1 Row’. Data Table. Red (Integer with Name ‘Percentages’) 30. State Property. expand the Table Reference Assignment in the Properties Window of the Source object.6) ¡ (State with Name ‘StateName’) ModelEntity. the entity state and value to assign when the entity gets to the server. Server. Table Transporter Property Assumption: There are three types of entities and each one has only one worker that it uses and has only one assignment to make. Under the Before C reating Entities subcategory. set the Table Name to ‘Table1’ and the Row Number to ‘Table1.ProcessTime’.EntityType’ and set the Interarrival Time to ‘Random.Width. All Rights Reserved. RandomRow. place three ModelEntity objects from the Project Library into the window. Dynamic Object Property.StateName’ and New Value of ‘Table1.Picture ¡ (Expression with Name ‘StateValue1’) 2. the processing time at a given server and finally. Green. 35. Also. We will be changing the picture of the Red entity.Triangular(1. Worker1 C reating Multiple Entity Types from Source l l In the Facility Window.Workers’. Numeric Property. the worker that is needed to move the entity. Random.StateValue1’. State Assignments. select the Tables panel and add a Data Table named ‘Table1’ with the following properties and in the following order: ¡ ¡ ¡ (Entity Object Reference with Name ‘EntityType’) Blue.Percentages. C hange the Transporter Name to ‘Table1.4. l Use Paths and connect Source1 to Server1. ‘Ouptut@Source1’. This is done by highlighting the symbol and selecting the appropriate C olor from the Symbols ribbon. l C hange the Names of the ModelEntity to be 'Red'. change the Processing Time to ‘Table1. Technical Approach: A Data Table is created that will store information about each entity type. ModelEntity.3). Specifying the Worker for Transport l l Within the Source’s transfer node.Priority. so select the Red entity symbol. including the percentage of each that enters the system. which worker to use and which assignments to make within a table. 1. Expand the State Assignments and click on the button within the On Entering property to open the repeating property editor.2.Size. . Each row in the table will include information related to a specific entity type. Details for Building the Model: Simple System Setup Add a Source. 1 ¡ (Transporter Object Reference with Name ‘Workers’) Worker1. Categories: Data Tables. click on Add Additional Symbol in the Symbol ribbon and change the picture so that graphically the symbols for 0 and 1 are different (colors or texture). Table Reference Assignments. 35 (Expression with Name ‘ProcessTime ‘ . Server1 to Source1 (using unidirectional paths instead of a single bidirectional path) and also Server1 to Sink1.Exponential(2)’. ProcessTime’. there will be five columns.Triangular(2. l . Have the Value Type of ‘Expression’. For the path going to Passed_Inspection. with the Data Source value being the Tally Statistic Name (PartA_Passed. Within the table. In the Definitions tab.SimBit Problem: I have two different entity types and two exits from the system.Triangular(3.3)’.PassedTally’. then two Standard Property – Expression fields. and Value of ‘ModelEntity. Within Server2. create a similar new process in the Entered property named ‘Failed_Inspection_Entered’.TimeInSystem’. click on the Tally Statistic button and add 4 tallies. The third column should have the Name of ‘Inspection Rate’. In the ‘Failed Tally’ column. First. add a Object Reference – Entity. Technical Approach: A Data Table is used to store information about each entity type as it moves through the system. Data Table. TallyStatistic Name property of ‘Table1. Dynamic Object Property. change the Entity Type property for Source1 to ‘PartA’. TallyStatistic Assumptions: There are two entity types which go through a single server.4. C onnect both Sources to Server1 with Paths. then through an inspection area where they either pass inspection or fail inspection. Using C ustom Tally Statistics Within the Passed_Inspection Sink. Tables panel and selecting Add Data Table. C hange the Name of the first column to ‘Entity Type’. etc. On C reated Entity. should have Name values of ‘Passed Tally’ and ‘Failed Tally’. in the Passed_Inspection_Entered process. All part types have the same inspection time distribution. the inspection percentages and also the tally statistics names that will be used when the entity either passes or fails inspection. On Entered.FailedTally’ and Value to ‘ModelEntity. In order to reference the table data. l Add two ModelEntities from the Project Library to the Facility window. enter the ‘PartA_Failed’ and ‘PartB_Failed’ tally names. including the processing time at the Server. l Setting Up Tally Statistics l We will keep statistics on each part type that goes through each exit. the last two columns.InspectionRate’. Add ‘Random. l The above Tally steps will then point into the correct columns of Table1 to utilize the various Tally Statistics elements for each of the part types.5. change the Processing Time to reference the table with ‘Table1.4. enter the ‘PartA_Passed’ and ‘PartB_Passed’ tally names. Expression Property. Setting up the Source Objects l In the Facility Window. I would like to keep entity statistics. which are tally references. Path. change the Selection Weight to ‘1Table1.5. For the path going to Failed_Inspection. The rate should be ‘.7)’ as the processing time values in the column. l C hange the Name of Sink1 to ‘Passed_Inpection’ and the Name of Sink2 to ‘Failed_Inspection’. by type. Tally Step.Triangular(3.TimeInSystem’. These names will be referenced within the Tally step later in this description. set the Table Name property to ‘Table 1’ and the Row Number to ‘2’. C onnect Server1 to Server2. change the Selection Weight to ‘Table1. In the ‘Passed Tally’ column. create a new process in the Add-On Process Triggers Entered property named ‘Passed_Inpection_Entered’. l On the paths from Inspection to the Passed_Inspection and Failed_Inspection sinks. C hange the Name of the second column to ‘Process Time’ and its associated Unit Type to ‘Time’ and Default Units to ‘Minutes’.9’ for PartA and ‘. Categories: C ustom Statistics Key Concepts: Add-On Process. C hange the C olor of the PartA symbol to red. add a Tally step. changing the TallyStatistic Name to ‘Table1. l Do the same for the Failed_Inspection_Entered by adding a Tally step.2. Elements panel. we will be modifying the Selection Weight property to reflect the rate of failure for each part type. Finally. Modifying the Servers and Paths l Within Server1. Adding a Data Table l l l l l C reate a new table by clicking on the Data tab. These custom statistics can then be seen in the Model statistics. Add ‘PartA’ and ‘PartB’ as the row values in the column. l C hange the Entity Type property for Source2 to ‘PartB’. PartA and PartB. for each exit from the system. Details for Building the Model: Simple System Setup Add two Sources. PartA_Failed. l Within the Processes window.Simio D oc umentation TallyStatisticsInTable .). ‘PartB_Passed’ and ‘PartB_Failed’. C hange the Name property (under General category) on one to ‘PartA’ and the other to ‘PartB’. l C hange the Name properties (under General) to ‘PartA_Passed’.InspectionRate’. change the Name to ‘Inspection’ and the Processing Time to ‘Random. set the Table Name property to ‘Table 1’ and the Row Number to ‘1’. then Server2 to both Sinks with Paths. In order to reference the table data. Table Tally Statistic Element Property.84’ for PartB. then two Element Reference – Tally Statistic columns. Within the Failed_Inspection object. two Servers and two Sinks to the Facility window. therefore 4 tally statistics will be needed.5)’ and ‘Random. ‘PartA_Failed’. Table Reference Assignments. Selection Weight. Embellishments: The tally statistics that are added may be modified to categorize them in a more meaningful fashion. Using the Data Source. For example. you may wish to set them as ‘Results’. . ‘PartA’ and ‘Passed’ respectively (and similar for the other Tallies). All Rights Reserved. Category and Data Item properties can help to classify the user statistics in the results. each tally has a Results C lassification area of properties. Simio LLC. Within the Tally Statistics elements in the Definitions tab. Send comments on this topic to Information Copyright 2006-2011. All Rights Reserved.SimBit Problem: You have a transfer line that has a single conveyor with multiple workstations. Add a Discrete State with the Name ‘NumberStationsWorking’ that represents how many stations have operations in progress that would prevent the line from moving. Use the Decide step to determine if all other operations are done (‘NumberStationsWorking == 0’) and if all other operations are done. Use nodes with add-on processes to delay for the operations and coordinate the conveyor segments.Simio D oc umentation TransferLine . TransferNode Assumptions: Entities will move synchronously and all are aligned at the designated stopping locations (either workstation or intermediate location) together. DesiredSpeed. Categories: Add-on Process Logic.DesiredSpeed’ of each conveyor using an Assign step. Add an Assign step that increases the State Variable Name ‘NumberStationsWorking’ to ‘NumberStationsWorking + 1’ to indicate that this operation is in-process. Place 3 BasicNodes and 1 TransferNode in the middle of the Source and Sink objects. in the Entered trigger for add-on processes.DesiredSpeed’ of each conveyor to 0. C onveyor Systems Key Concepts: Accumulating. Details for Building the Model: Simple System Setup l l Place a Source and Sink object in the Facility Window. as well as the TransferNode to the Sink with a Path. as this will represent our workstations that move synchronously. On Entered. Simio LLC. BasicNode. C onnect the Source to the first BasicNode with a Path. Open the Processes Window and define the logic for this process. Defining System States l C lick on the Definitions tab and select the States panel.All parts on the conveyor move together. Use a Delay step for the processing time at that workstation (if you needed processing resources you would seize before the delay and release after the delay). Using Add-On Process Triggers l l l l l On the two internal nodes representing the workstations. None can move unless all are ready. . Real State Variable. Technical Approach: Use multiple non-accumulating conveyors. assign the ‘C onveyor*. l Use 3 C onveyors to connect the three BasicNodes together. Add another Assign step to decrement ‘NumberStationsWorking’ to indicate that this operation is complete. In the same Assign step. Add-On Process. add the process named ‘TransferLineNode_Entered’. C onveyor. Send comments on this topic to Information Copyright 2006-2011. restore the ‘C onveyor*. Rotate_Entity: This entity will 'Rotate in Place' at a node when it is changing directions on a bidirectional link. Set the Rotate_Entity Network Turnaround Method to ‘Rotate In Place’. and re-enters it as it turns around. All Rights Reserved. Simio LLC . Set the Reverse_Entity Network Turnaround Method to ‘Reverse’. Details for Building the Model: Simple System Setup l l l l l l For each option. This allows you to see the movement of a single entity at a node as it transfers between links. The entity never exits the link. it simply goes in a reverse direction (tail first).Simio D oc umentation TurnaroundMethod . . The entity never actually leaves the link when changing directions. This method is the most deadlock avoidance friendly option. Send comments on this topic to Information C opyright 2006-2011. Place three ModelEntities (Exit_Entity. ‘Exit & Re-enter’. This method could cause deadlocks.SimBit Problem: I would like to explore the different options that are available for an entity turnaround method on a network. workers and vehicles. This is the default setting for entities. The Exit_Entity Network Turnaround Method will keep its default value. The entity actually exits the link. Rotate_Entity & Reverse Entity) and assign each one to a Source by setting the Entity Type in the Source Arrival Logic to the corresponding entity name. three bidirectional paths and 2 transfer nodes. This allows for modeling such things as elevators. place a Source and two TransferNodes in parallel. Discussion: Exit_Entity: This entity will 'Exit & Re-enter' a node when it is changing directions on a bidirectional link. Use three bidirectional paths to link each node to the Source and to link the two nodes. Categories: Entity C haracteristics Key Concepts: Deadlock. C hange the Maximum Arrivals property on each Source to ‘1’. but simply rotates and continues on the same link in the opposite direction. Network Turnaround Method Technical Approach: We set up three options each with a source. Reverse_Entity: This entity will 'Reverse' its animation symbol at a node when it is changing directions on a bidirectional link. place 4 Server objects. In the properties window of this State. C lick on the second Server in the top series (Server2) and expand the State Assignments property category in the properties window.If statement says that if there is an entity being processed at Server2. For each ListState. Details for Building the Model: Simple System Setup Place a Source and a Sink object in the Facility window In between these two objects. which is Idle. Most of the Simio Standard Library objects contain a built in ListState. click Add. click Add. Assigning a value of 1 to this List State is equivalent to setting it to the list value of ‘Busy’ (the List is 0-indexed so Idle =0 and Busy = 1). This Math. C lick on the ellipse (the … button) in the On Entering property and when the On Entering Repeating Property Editor window appears. connect Server1 to Server2 with a C onnector and connect Server2 to the Sink with a Path. Set the Data Type property of the Status Pie to ‘List State’ and the List State property to ‘Line1ListState’ (and ‘Line2ListState’ for the second chart). which is Idle. Status Pie. If not. click Add.e. Set the Input Buffer Capacity and the Output Buffer Capacity to ‘0’ for all 4 servers so that we do not have any buffering in the system. C reate a new String List by clicking on ‘String’ in the ribbon menu. Select the first Server in the bottom series (Server3) and expand the State Assignments property category in the properties window.Processing. StringList Technical Approach: We set up a system that has two servers in series (Server1 and Server2). Set the State Variable Name to ‘Line1ListState’ and the New Value to ‘Math. Go back to the States panel where you created the List States and select Line1ListState. C reate another String List by clicking on ‘String’ in the ribbon menu.SimBit Problem: I would like to create my own. C lick on the ellipse (the … button) in the On Entering property and when the On Entering Repeating Property Editor window appears. Name this new List ‘Line1’. C lick on the ellipse (the … button) in the On Exiting property and when the On Entering Repeating Property Editor window appears. Assign Values to List States: l l l l l Go back to the Facility window where we’ll assign values to our new List States. On Entering. Select Line2ListState.If (Server2. In other words. This Math. Busy. List State. Set the State Variable Name to ‘Line1ListState’ and the New Value to ‘1’. Name this new List. Leave the States Panel and go to the Lists panel (found on the left side of the interface). Server1 and Server2 are in series so therefore connect the Source to Server1 with a Path. then set it to ‘0’. then keep the value of the Line2ListState at ‘1’. We would like statistics on when either Server1 or Server2 are busy and statistics on when either Server3 or Server4 is busy. which are in parallel with two other servers (Server3 and Server4) in series. 1. C reate new List State by clicking on ‘List’ in the States ribbon. ‘Line2’. Set the State Variable Name to ‘Line2ListState’ and the New Value to ‘Math. Enter the word ‘Idle’ into the first row of the List and the word ‘Busy’ into the second row of the List. Categories: Buffering. click Add.If(). connect Server3 to Server4 with a C onnector and connect Server4 to the Sink with a Path. Select the first Server in the top series (Server1) and expand the State Assignments property category in the properties window. Discrete States Key Concepts: Before Exiting. C lick on the ellipse (the … button) in the On Exiting property and when the On Entering Repeating Property Editor window appears. go to the States panel. then set it to ‘0’. Total Time. called ResourceState. State Assignments. C lick on the second Server in the bottom series (Server4) and expand the State Assignments property category in the properties window. If not. Set the State Variable Name to ‘Line2ListState’ and the New Value to ‘1’. l Server3 and Server4 are in series so therefore connect the Source to Server3 with a Path. 0)’.Processing. C ustom Statistics. Embellishments: C onsider adding additional values to each List and then assigning the appropriate index into the ListState to see that a ListState can contain more than just the two values (0 and 1) that this SimBit demonstrated. set the String List Name property to ‘Line2’ and set the Initial State Value property to ‘Idle’. which is automatically updated with . By creating a custom ListState for Line1 (which includes Server1 and Server2) and a custom ListState for Line2 (which includes Server3 and Server4). 1.If (Server1. set the String List Name property to ‘Line1’ and set the Initial State Value property to ‘Idle’. Enter the word ‘Idle’ into the first row of the List and the word ‘Busy’ into the second row of the List. we will get statistics such as the average amount of time spent in the Busy state and the number of occurrences that each Line was in the Busy state. Discussion: The statistics for these new ListStates are displayed in the Results window after the run is complete.If statement says that if there is an entity being processed at Server1. Buffer C apacity. Math. 0)’. In the properties window of this State. C reate another new ListState and name is ‘Line2ListState’. Idle in our example).C ontents>0. custom List State that will produce time persistent statistics on each value that is assigned to the state. we’d like to know when the top line of servers is busy and when the bottom line of servers is busy. l l C reate the two List States: l l l l l From the Definitions window.C ontents>0. there are statistics for Average Time. Percent Time and Number of Occurences for each State Value (i. Place two Status Pie charts from the Animation ribbon into the Facility window. then keep the value of the Line1ListState at ‘1’. Name this new state ‘Line1ListState’.Simio D oc umentation UserDefinedListState . values such as “Busy”. All Rights Reserved. MyListState. There are functions available for a ListState.NumberOccurences(stateValue) Send comments on this topic to Information C opyright 2006-2011. .PercentTime(stateValue). MyListState. etc. “Idle”. Simio LLC .AverageTime(stateValue). such as MyListState.TotalTime(stateValue). MyListState. “OffShift”. This will stop the simulation run once this threshold is met for the first time. The State Variable Name that it is monitoring should be set to ‘NumberInQueue’ and the Threshold Value is ‘9’. In this process. (Note: this is a function that returns the number in the inputbuffer queue for this Server). Set the Triggering Event property for the process to the name of the Monitor you just created. . Set the State Variable Name to ‘TimeWhenOver9’ and the Stopping Condition to ‘TimeWhenOver9 > 0’. the simulation stops running after the queue reaches 9 for the first time. Update the Processing Time property of the Server to be ‘Random. Send comments on this topic to Information Copyright 2006-2011. C ustom Statistics Key Concepts: Add-On Process. Monitor. C ontents.C ontents’. Technical Approach: A state variable is updated with the number of entities in the server queue each time a new entity enters the server. Details for Building the Model: Simple System Setup l Place a Source.5)’ so that the Server has some queuing. Adding a New Process l C reate a new process using the C reate Process icon in Processes Window. C rossingStateC hange. add an Assign step that assigns the State Variable Name ‘NumberInQueue’ to the New Value of ‘Server1. Stopping C ondition. This will take you to the Processes Window.InputBuffer. The triggering of this event executes a process that updates another variable with the current simulation time and the simulation stops. A Monitor element is used to track this state variable and trigger an event when the state variable goes over the value of 9. All Rights Reserved. Using an Add-On Process Trigger l Within the Server object. TimeNow Assumptions: Since the time is the only information desired.3. server and sink and would like to know at what point in time during the simulation run the queue for the server exceeds 9 for the first time. InputBuffer..2. Categories: Add-on Process Logic. one called ‘NumberInQueue’ and the other called ‘TimeWhenOver9’.Event’. On Entered. as well as the Server and Sink with Paths. Real State Variable. Stopping the Simulation Run l l C lick on the Definitions Window and select the Elements panel to create a new State Statistic.Triangular(. The variable with the simulation time is displayed in the Results Window as a State Statistic. Event.Event. C reating and Using a Monitor l Select the Elements Panel within the Definitions tab to add a Monitor element with its Name as ‘Monitor_Over9’. followed by . using with the function ‘TimeNow’ as the New Value. l C onnect the Source and Server. C reating Discrete State Variables l C lick on the Definitions tab and select the States panel.. The Monitor Type property should be changed to ‘C rossingStateC hange’. l Place an Assign step in this new process and have that Assign step update the State Variable Name ‘TimeWhenOver9’ to the current simulation time. Simio LLC. Server and Sink in the Facility Window.Simio D oc umentation UsingaMonitor . Process Triggering Event. create an Add-On Process by double-clicking on Entered. ‘Monitor_Over9. C reate two discrete state variables.SimBit Problem: I have is a simple model with a source. a Sink and one TransferNode into the Facility window. to add a new State to the ModelEntity. RoutingGroup Element. The entity should change from a green triangle to the person that was selected. Real State Variable. Node. Assign Step. Categories: Add-on Process Logic.1’ and set the Entities Per Arrival to ‘2’. select the node list that you just created. Enter Input@Server1. Remove Step. Place a Decide Step. In order to match up the entities again. C onnect the Source to the TransferNode with a Path and connect the TransferNode to the Sink with a Path. ¡ In the False segment leaving the Decide Step.Simio D oc umentation UsingAStorageQueue . Allow Passing. Storage Element. Select a symbol of a person from the Symbols dropdown in the Ribbon. Drag the ModelEntity object from the Project Library on the bottom left into the Facility window.SimBit Problem: I would like entities to wait in a queue and then I’d like to search the queue for a particular entity and remove it from the queue. create a new process by clicking on the ‘C reate Process’ button in the Ribbon. Entities Per Arrival. In the Node List Name property. Use the BatchLogic element created earlier and ¡ . Storage Queue. On Entered. it will become the parent. C ombining and Separating Entities Key Concepts: Add-On Process. Batch Logic and Routing Group: From within the Definitions window. Add Processing Logic: l From within the Processes window of the main Model. in the properties window. With the DefaultEntity selected. C reate Elements – Storage. UnBatch Step Technical Approach: Entities arrive in pairs by the Source creating two entities per arrival and batching them together. Place the TransferNode so that it is in between the Source and the Sink. Input@Server3 as the nodes within the List. When the pair reaches the first node. and set the Time Offset property to ‘. C lick on the States panel and click on Discrete State in the ribbon. C andidate. NodeList. Rename it ‘WaitingArea’ l Add a Batch Logic element by clicking on the Batch Logic button in the Ribbon. Set the Initial Capacity property of each Server to ‘2’. With the DefaultEntity selected. Selection Goal. You can change the hair color. click on the Add Additional Symbol button in the Ribbon. Add a new Discrete State named ‘TrackBatching’. Rename it ‘Processed’.X. Insert Step. In both Paths. change the Random Symbol property. to ‘True’. it is removed and batched with its partner. click on the Elements panel and add a Storage element by clicking on the Storage button in the Ribbon. we search the Storage queue for an entity that has the exact same “TimeC reated” stamp on it. where it sits until its partner has finished processing. Search Step. Keep adding additional symbols and altering their colors. l C lick on the Lists panel within the Definitions window and create a Node list by clicking on the Node button in the Ribbon. C lick on the Source. Draw a Path from the TransferNode to the Input Node of each Server. add a Routing Group element by clicking on the Routing Group button in the Ribbon. Set the Initial State Value property to ‘1’. l C reate new State Variables: l Add a State to the ModelEntity that will tracked when it has finished processing at a Server. Decide Step. The default property values are fine. Details for Building the Model: Simple System Setup l l l l l Place a Source. l Add a State to the main Model that will help us keep track of which entity will be the Parent and which will be the Member. click outside of the list or hit Tab) l Back in the Elements panel. Animating the Entity as People: l l l l l We animate the entities as different people so it is easier to see the different partners splitting and pairing back together. Time Offset. This will tell Simio to randomly select a symbol from the multiple symbols you’ve created for DefaultEntity. Detached Queue. ModelEntity. InputLocation. Set the Decide Type property to ‘C onditionBased’ and set the Expression to ‘TrackBatching == 1’. (In order to add a new row to the list. TimeC reated. Batch Step. One entity is routed to an available Server and the other entity is put into a Storage queue. The Active Symbol button in the Ribbon should now show (2 of 2) because there are now two symbols associated with DefaultEntity. Once the correct entity is found in the queue. Once the ModelEntity is highlighted (you are within the ModelEntity model). Place three Servers into the Facility window. BatchLogic Element. place a Batch Step. place a Batch Step. SmallestValue. SetNode Step. With the Model selected in the Navigation window. Overload. set the Allow Passing property to “False” so that we are able to see the entities traveling one by one on the paths. Draw a Path from the Output Node of each Server back to the TransferNode – for a total of 6 new paths. C lick on the ModelEntity within the Navigation window (top right). click on the Definitions window. they are un-batched. which indicates that these two entities were originally paired together upon creation. Movement. Use the BatchLogic element created earlier and set the Category property to ‘Parent’. go to the Definitions window and click on the States panel. This checks to see if this is the first created entity and if so. Random Symbol. before traveling to the Sink. in order to provide variety to the entities traveling in the model. skin color or clothing color of the person symbol by clicking on C olor in the Ribbon and then clicking on the specific part of the person symbol. place an Assign Step. This step should set the TrackBatching state to the value of ‘2’. Route Step. Input@Server2. Select the new DefaultEntity within the window. ¡ In the True segment leaving the Decide Step. ¡ After this Assign Step. Batch Logic.Queue’. place a Remove step. This searches the Waiting Area queue and finds the entity that was originally created at the same time as this entity. In the Facility window. Route Step. This will route entities that have already been processed. Set the Queue State within the properties window to ‘WaitingArea. place a Search step. Set the Routing Group Name property to the Routing Group element that was created earlier. Use the BatchLogic element created earlier and set the Category property to ‘Member’. This step will set the destination node for this entity to one of the three possible Servers. out of the system and ensure that they do not follow a path back to the Servers. Animate the Waiting Area Storage Queue: And finally. place an Insert Step. Set the Queue State Name to ‘WaitingArea. SetNode step. In the Removed segment of the Remove step.TimeC reated’. Simio LLC. place a SetNode step. Search Step. l While in the Facility window. place a Decide Step within this new process. All Rights Reserved. This checks to see if the entity is just arriving to the node and it not yet processed or if the entity is leaving the system and just finished processing at a Server. Set Queue State Name to ‘WaitingArea. place an UnBatch step (the defaults are fine). Batch Step. Insert Step. This will create a new process that will be triggered whenever an entity enters this node. After this step. Set the Selection Goal to ‘Smallest Value’ and leave the default for the Selection Expression. Back in the False segment of the first Decide Step. C lick on the Detached Queue button from within the Animation ribbon.Queue’. click on the TransferNode and select ‘C reate New’ from the drop down of the Entered Add On Process trigger. This step should set the TrackBatching state to the value of ‘1’. After the Route Step. Set the Decide Type property to ‘C onditionBased’ and set the Expression to ‘ModelEntity. animate the Storage queue within the Facility window. l From within the Processes window. This will cause this new process to be triggered whenever an entity enters this output node.X’ to ‘1000’.Movement. place an Assign Step. This will remove the partner entity from the queue (after it’s been found by the Search step). Set Destination Type to ‘Specific’ and the Node Name to ‘Input@Exit’ (or Input@Sink). And set Match Condition to ‘ModelEntity.Queue’. place a Batch step. ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ In the True segment leaving the Decide step. Set ’ModelEntity. place a Route step. place an Assign Step. Draw the queue within the Facility window. After this step. place a Batch step. After the Insert Step. Set the Queue State Name property to ‘WaitingArea. the storage queue created earlier. Use the BatchLogic element created earlier and set the Category property to ‘Parent’. Routing Group. In the Found segment of the Search step. Remove Step.Processed == 0’. Set Collection Type to ‘QueueState’. See Also: Help topics for Storage. This will batch up this removed entity as a member to its parent partner that searched for it.Queue’. Send comments on this topic to Information Copyright 2006-2011. In the Original segment leaving the Search step. In the Member segment leaving the UnBatch Step.¡ l set the Category property to ‘Member’. . click on the Output Node of the Source object and select this new Process from the drop down of the Entered Add On Process trigger. which indicates that this batch is finished and a new batch will start. Name the first process ‘Decrease’. and create four Buttons. each time the arrival rate is increased/decreased. DecreaseRate. Then go to the Properties Window. DesiredSpeed. l Name the fourth process ‘RateUp’. set the Triggering Event to ‘DecreaseRate’. All Rights Reserved. Categories: Arrival Logic Key Concepts: Assign Step.05’. the resume speed is set to be the speed just before it’s stopped. add four processes by clicking on the Create Processes ribbon. For the first Button. input ‘Increase Interarrival Rate’ for the Button Text. l ‘Rate’ will track the arrival rate of the Source.5’. Server and Sink from the Standard Library into the Facility Window. the New Value is ‘ResumeSpeed’. Add two Assign steps to this process. StartC onveyor. Process Triggering Event. each one of these buttons is logically connected to an event which has the corresponding function with the Button. l Name the third process ‘RateDown’. There is no upper limit for increasing the arrival rate. C onveyor2 connects Source and Server. For this Assign. For the first Assign.5 (unit/minute). set the Event Name to ‘StopC onveyor’. then set the State Variable Name to ‘Rate’. l Set the Interarrival Time of the Source to ‘1/Rate’.05 (unit/minute). set the Triggering Event to ‘StartC onveyor’. Real State Variable Assumptions: The initial arrival rate is set to 0. set the Event Name to ‘DecreaseRate’. it means that when the arrival rate is 0. Simio LLC. Put two of them near the Source.SimBit Problem: I want to use external buttons to control the arrival rate of my system and to Stop/Start the conveyor within my system. IncreaseRate. set the State Variable Name to ‘ResumeSpeed’. it cannot be decreased further. Send comments on this topic to Information Copyright 2006-2011.DesiredSpeed’. C reating Events l l Open the Definitions Window and select the Events panel. add two Discrete State Variables with Names ‘Rate’ and ‘ResumeSpeed’. Set the Desired Speed for both the C onveyors to . l Put the other two Buttons near C onveyor1 (which connects Server and Sink). input ‘Decrease Interarrival Rate’ for the Button Text.DesiredSpeed’. Then go to the Properties Window. For the second Button. the rate changes (increases/decreases) 0. For the second Button. Embellishments: We can add some animation to show the current Arrival Rate of the Source while we’re running this model. l l C reating Buttons l l C lick on Animation ribbon under the Facility Tools. DecreaseRate.05.05)’. Button. Rate0.05 (unit/minute). choose Button. Generating Processes C orresponding to Events Open the Processes Window. IncreaseRate. StartC onveyor. . set the Triggering Event to ‘StopC onveyor’. Details for Building the Model: Simple System Setup l Place a Source. C reate four events with names: StopC onveyor. C onveyor. To start the conveyor again when it’s stopped. This will stop C onveyor1.05 (unit/minute). and resume it with the saved speed. Math. Then go to the Properties Window. C onnect them with C onveyors.Simio D oc umentation UsingButtonsToAffectSystem .05 (unit/minute). input ‘Start C onveyor’ for the Button Text. This step will save the current speed of C onveyor1 to the state variable ‘ResumeSpeed’. C hoose Status Label from Animation. Add an Assign step to this process. set the State Variable Name to ‘C onveyor1. For the first Button.This will ensure that the arrival rate will not be decreased below 0. set the Triggering Event to ‘IncreaseRate’. we create four buttons by using Animation tool.5 (meters/sec). set the State Variable Name to ‘C onveyor1. Add an Assign step to this process. l Name the second process ‘Increase’. the New Value is ‘Math. set the State Variable Name to ‘Rate’. l 'ResumeSpeed’ will save the speed of C onveyor1 before it’s stopped. the New Value is ‘0’. input ‘Stop C onveyor’ for the Button Text. Then go to the Properties Window. C reating Discrete State Variables l Open the Definitions Window and select the States panel. Technical Approach: Four events will be created: StopC onveyor. Event. the New Value is ‘Rate+.Max(.DesiredSpeed’. Its Initial State Value is ‘0’. Maximum. set the Event Name to ‘StartC onveyor’.Max(). Set the Expression to ‘Rate’. Those four events will trigger four processes which will implement corresponding actions. The initial speed of the conveyor is set to 0. We only control the Stop/Start for C onveyor1 which connects the Server to the Sink. For the second Assign. within this Assign step. its Initial State Value is ‘0. The minimum arrival rate should be 0. set the Event Name to ‘IncreaseRate’. Add an Assign step to this process. Also.5. Decide Step. C onveyor1 connects Server and Sink. the New Value is ‘C onveyor1. . Picture’ and the New Value to ‘Picture. Set the TableKey property to ‘ServiceTimes. click the Foreign Key icon in the ribbon and then rename the property to ‘TypeOfService’. . The entity’s color (symbol) is determined from the Picture table.Triangular(1. Foreign Key. Set the TableKey property to ‘Picture.5). Oil. 2 (String) C olor: Green. a Sink and three Workstations to the Facility Window.Simio D oc umentation UsingRelationalTables . with the ModelEntity selected. Red (To add this column.C olor’) l Add a Data Table named ‘Arrivals’ with the following Properties and in the following order: (Real) ArrivalTime : 0.C hange the Arrival Logic Maximum Arrivals to 5. Table Reference Assignments Assumptions: In order to easily witness that the entity is reading the correct information from the tables from within the Facility Window. Red. Expression Property. 1. . For additional details on this process.Within the State Assignments section.NumberC reated. Blue (Make this column the Primary Key to this table by clicking the Set C olumn as Key icon in the ribbon. String Property.) (Expression) ServiceTime: Random.2) (Foreign Key) C arC olor: Green. as in a relational database. click the Foreign Key icon in the ribbon and then rename the property to ‘C arC olor’. click on the Data tab and select the Tables panel.PictureIndex’ l In each Workstation: . . The Source gets entity Arrival Times from the Arrivals table and each Workstation gets its Processing Time from the ServiceTimes table. Tires (Make this column the Primary Key to this table by clicking the Set C olumn as Key icon in the ribbon.5. Tires. . only Red entities will visit the TireService. On C reated Entity. Blue entities will visit the OilService and Green entities will visit the BrakeService. 2. drag a ModelEntity object into the window. Tires (To add this column. 1. Setting up the Data Tables l l To add data tables. see the Adding Additional Symbols Help page.spf Send comments on this topic to Information . Selection Weight. 1. Keep the color of symbol 0 as Green.C hange the Arrival Logic Arrival Mode property of the Source to ‘Arrival Table’ and the Arrival Time Property to ‘Arrivals. Numeric Property. Also.5. C onnect the Source to each of the Workstations and each Workstation to the Sink with Paths. Categories: Data Tables Key Concepts: Arrival Table. open the Before Exiting repeating property editor and assign the State Variable Name to ‘ModelEntity. 1 (Make this column the Primary Key to this table by clicking the Set C olumn as Key icon in the ribbon. State Assignments. Key.ServiceTime’ Adding Additional Symbols l In the Facility Window. Picture.5. Embellishments: Try adding additional properties to the tables and referencing the information from within the model. .Population. I would like an entity to reference data from these tables. ModelEntity. Details for Building the Model: Simple System Setup l Add a Source.25. ArrivalTime’. change symbol 1 to Red and symbol 2 to Blue.TypeOfService’) C hanging Object Properties l In the Source: . 1 . . 2. Oil.75.Triangular(.) l Add a Data Table named ‘ServiceTimes’ with the following Properties and in the following order: (String) TypeOfService : Brakes. Add a Data Table named ‘Picture’ with the following Properties and in the following order: (Integer) PictureIndex : 0. click the Add Additional Symbol icon in the ribbon twice to add two additional symbols for this object. See Also: EntityFollowsSequenceWithTable2. ) (Foreign Key) TypeOfService: Brakes. Oil. Random. Relational Table.SimBit Problem: I have data that exists in different tables and the tables are linked together with foreign keys. Blue.Within the Table Reference Assignments / On C reated Entity section.C hange the Processing Time property to ‘ServiceTimes. set the Table Name to ‘Arrivals’ and the Row Number to ModelEntity. Technical Approach: Three Data Tables are created that are all linked together with foreign keys so that an entity can reference information from all three tables with one simple SetRow step. Simio LLC.Copyright 2006-2011. All Rights Reserved. . Do this twice so there are now three symbols . Search Step. Because the OnVisitingNode process isn’t executed until the vehicle reaches the end of a link. When the Server goes back On Shift. Find the process OnVisitingNode and click on the process. On the Edit ribbon. Technical Approach: Subclass the standard Vehicle object and change the OnVisitingNode processes property Public from ‘False’ to ‘True’. C lick the Work Schedule icon in the Schedule ribbon to add a new Work Schedule. Set the Initial Node (Home) property of the Vehicle to ‘Output@Server1’. press the Subclass From Library button and select the Vehicle. Select the work schedule that was just created for the Work Schedule property.Exponential(4)’ minutes. This will create a sub-classed ‘MyVehicle’ object. place a Search Step (found under All Steps). Busy vs. Schedules.e. Ride on Transporter.SimBit Problem: I want a Transporter to follow the same Work Schedule as a Server in my system. Vehicle Assumptions: The Vehicle object’s capacity cannot be controlled by a Work Schedule so the Vehicle’s logic will be suspended when the Server goes Off Shift and it will resume its logic when the Server goes back On Shift. In the Off Shift process. Do the same for the trigger OnShift. park and stop working. Similarly. In order to make it look like a true vehicle. i. a Server and a Sink to the Facility Window. when the object is selected in the Facility Window. If the Server goes Off Shift when the Transporter is the middle of traveling on a link. Ensure that the Type property of the path from the Server to the Sink is set to ‘Bidirectional’ so the vehicle can travel back and forth. l l Subclassing the Vehicle Object l l l l l Select MySimioProject in the Navigation Window and highlight the Models panel. except instead of the Suspend Steps. Off Shift. select ‘DayPattern1’ for day 1. This will allow this process to appear in the selection list of the Suspend Step. select the dropdown icon from the Add On Process trigger OffShift and select ‘C reate New’. Resume Step. C reating a Work Schedule Go to the Data Window and click on the Schedules panel. On Shift. change the Interarrival Time of the Source object to ‘Random. OffShift. (i. The other properties can be kept with their default values. The Search Step is needed to create a token that points at the Vehicle instance so the Vehicle can be suspended. SubC lass. l In order to slow down the entity arrival to best view the vehicle’s behavior. l Add a Day Pattern with the Name ‘DayPattern1’ to include the following entries: 8:00 AM – 8:15 AM. MyVehicle.04’ (meters per second). Suspend Step. From within the Server properties window. Real State Variable. On Shift. 8:30 AM – 8:45 AM and 9:00 AM – 12:00 PM. the Transporter should finish traveling to the end. suspending this process will allow the vehicle to finish its travel before stopping.OnVisitingNode) Almost the exact same logic should be put in the On Shift process. the Transporter will begin working where it left off. select the Server object and set the Capacity Type property to ‘WorkSchedule’. Resume Steps should be used to both resume the vehicle’s movement and the OnVisitingNode process. you need to select the Server object in the Facility Window and click on the Add Additional Symbol icon in the Ribbon. In the Model’s Facility Window. The times when there aren’t any values are assumed to be off shift. (if you double click on the name of the Property. In order to slow down the animation to best view the vehicle’s behavior. Enhancing the Animation l If you’d like the Server to appear different when it is Idle vs. you should see the two new processes that were created from the Server’s Add On Process triggers. The Suspend Step will suspend this process from within the OffShift Add On Process of the Server. the Resume Step will resume the OnVisitingNode process from within the OnShift Add On Process of the Server. The Collection Type of the Search Step is set to ‘ObjectInstance’ and the Object Instance Name is set to the name of the subclassed Vehicle. C lick the Override icon in the top Ribbon and then change the Public property from ‘False’ to ‘True’. • Highlight Model in the Navigation Window to return the main model and place the MyVehicle object from the Project Library into the Facility Window. C onnect the objects together with Paths. Categories: Vehicles Key Concepts: Add-On Process. The Suspend Type of this step is set to Process and the Process Name is set to the OnVisitingNode process of the Vehicle. On Off Shift. select a vehicle symbol from the Project Symbols dropdown in the Ribbon. change the Desired Speed property of the Vehicle to ‘0. All of these rows should have the Value of ‘1’ indicating a capacity of one or on shift. On On Shift. l Add the Schedule to the Server and C reate logic to Stop Vehicle l l l l l l Highlight the MyVehicle object in the Navigation Window and open the Vehicle’s Processes Window. l Under Work Schedules. Select the Output Node of the Server and set the Ride On Transporter property to ‘True’. C hange the Name to ‘Schedule1’ and set the Days to ‘1’.e. you will be taken to the Process Window) In the Model’s Processes Window. the Transporter Type to ‘Specific’ and then select your Vehicle for the Transporter Name property.Simio D oc umentation VehicleFinishesAndParksWhenOffShift . Details for Building the Model: Simple System Setup Add a Source. Place a Suspend Step in the Found segment leaving the Search Step. one that is Blue and one that is Red.C apacity. The Current Symbol Index of the Vehicle is set to a State Variable called Off Shift. The value of this property is used in the symbol index (the numbers listed next to the symbols in the Active Symbol drop down).C apacity l C hanging the appearance of the vehicle during the run is done in a similar fashion. It is set to ‘0’ when the Vehicle resumes its movement. l The Current Symbol Index property of the Server controls which symbol is displayed during the run.associated with this object. This example has two symbols for the vehicle. symbol 2 is displayed when the Server is On Shift and Busy and symbol 0 is displayed when the server goes Off Shift (capacity = 0): (Server1. C hange which symbol is ‘Active’ with the Active Symbol icon. you can change the appearance of that symbol.Allocated + 1) * Server1. Send comments on this topic to Information Copyright 2006-2011. the following expression is used so symbol 1 is displayed when the Server is On Shift (capacity = 1) but not busy. . Simio LLC. In this example. Once the symbol is active. This state is set to ‘1’ with an Assign Step after the Suspend Step that stops the vehicle. All Rights Reserved. as you will be connecting them to represent the vehicle path. . fixed location in this example. The vehicle in the system will move along a fixed route that is specified in a clockwise manner.Simio D oc umentation VehicleFixedRoute . Fixed Route. Leave this value at Infinity. In the example.02’ minutes each to provide a brief pause while each entity is loaded or unloaded.C ontents) with a U shaped one that will display more entities. ‘Output@Source4’. Defining the Vehicle Place a Vehicle in the Facility Window. entities get on the Vehicle at each Source and are taken by the vehicle to any destination node (to be specified by the user). Source2 goes to Sink4. This will form a circular path between all the objects in the system. These include ‘Output@Source1’. You can specify your different sources go to whichever sink input nodes you like. C lick on the Source1 TransferNode. Categories: Vehicles Key Concepts: Entity Destination Type. For each of the Source objects. Therefore. l Set the Load Time and the Unload Time to ‘0. ‘Input@Sink4’. with Name properties of ‘PartA’. Source3 goes to Sink1 and Source4 goes to Sink2. Entities must wait at their pickup location for the vehicle to come to them. change the Entity Type property to generate a different entity type. When the vehicle has gotten to the last destination in the table. This will give the entity a “destination” so that when it is moved by the vehicle along the designated path. click on Source1’s TransferNode and change Ride on Transporter to ‘True’. l Finally. Send comments on this topic to Information Copyright 2006-2011. but are picked up based on the vehicle’s location on the route at the time. change the Routing Type to ‘Fixed Route’ and the Route Sequence to the ‘SequenceTable1’ table that was just defined. This table will automatically have the Name ‘SequenceTable1’. Ride on Transporter. maximum and average number of entities riding on the vehicle. Details for Building the Model: Simple System Setup Place four Source objects and four Sink objects in the Facility Window. ‘Output@Source2’. Move the nodes on these objects to be close to each other. Sequence Table. ‘PartC ’ and ‘PartD’.. such as a bus. we have specified that Source1 goes to Sink3. in order for the entity at each Source node to be moved along the path using the vehicle. All Rights Reserved. ‘PartB’. This will allow you then to select a Transporter Type (‘Specific’) and Transporter Name (‘Vehicle1’). it will move to the first one listed and continue through the list again and again until the simulation ends. based on the vehicle’s route sequence.SimBit Problem: I have a vehicle. l We will also replace the default animated queue on the transporter (Vehicle1. entities are not picked up based on a first in first out basis for requesting the vehicle. By placing these objects near each other. the entity knows which node to exit.RideStation. All entities that are picked up at a given location are dropped off at a different. l The Ride Capacity for the vehicle specifies the maximum number of entities on the vehicle simultaneously. in order. In the example. Simio LLC. Under the Routing Logic. l C onnect the various sink and source objects with Paths in the following order – Source1-Sink1-Source2-Sink2-Source3Sink3-Source4-Sink4-Source1. Vehicle Assumptions: There are four specific pickup / drop-off locations in the fixed route for the vehicle. that loops around a specific route picking up and dropping off entities at varying locations. at which time it will be dropped off by the vehicle. four different types of ModelEntity objects were placed in the Facility Window. Entities entering at the various Sources will each have specific destination location Sinks to be dropped off by the vehicle. l C reating the Part Types l The Source objects will generate entities to enter the system. ‘Input@Sink1’. ‘Input@Sink2’. Transferring using a Vehicle l In this example. they can be virtually the same physical location represented by two objects. such that the Vehicle statistics can later be evaluated to determine the minimum. All Source and Sink objects are then connected using unidirectional Paths to show the direction of the vehicle movement. C lick on Add Sequence Table and enter the various nodes that the Vehicle will visit. Within the Vehicle’s property grid.. Here you will define the fixed route that the vehicle will take when moving between the objects. Technical Approach: Each pickup / drop-off location in the system is represented by Source and a Sink objects. specify the Entity Destination Type as ‘Specific’ and the Node Name as ‘Input@Sink3’. Do the same for the other three transfer nodes. l Defining the Vehicle Route l Open the Data Window and select the Tables panel. Detached Queue. meaning the head and tail of the vehicle cannot be distinguished from each other. Then move these queues to their respective places in between the TransferNodes. Embellishments: Try changing the Interarrival Time of the Source or the Desired Speed of the Vehicle. A mixture of Paths and C onnectors will be used between four TransferNodes to model the course that the Vehicle will follow. l Add two detached queues to the Facility Window and change the Queue State of one to ‘TransferNode1.ParkingStation. Sink and four TransferNodes to the Facility Window. l Add a Path from TransferNode2 to TransferNode4 and another Path from TransferNode3 to TransferNode1. Simio LLC. l Animating the Parking Queues l In order to make it appear that the Vehicle is parking on its route while idle. In order to make it appear like the vehicle is moving backward. All Rights Reserved. Details for Building the Model: Simple System Setup Add a ModelEntity. Technical Approach: The vehicle used will look the same in both directions. a path will be used to animate its normal movement between the TransferNodes at the ends of the course and a connector will be used to animate the vehicle’s turn around movement. it will appear to be entering the node from the left.SimBit Problem: I would like to model a vehicle moving back and forth on a path and not have unrealistic “jumps” in the animation. ParkingStation Queue. Also. l Select the Path between the Source and TransferNode2 and change the Allow Passing property to ‘False’. l Select TransferNode2 and change the Ride on Transporter property to ‘True’ and select ‘Vehicle1’ as the Transporter Name. the vehicle will enter a node from the right and when the vehicle tries to turn around. l Add a C onnector from TransferNode1 to TransferNode2 and another C onnector from TransferNode3 to TransferNode4. Animating the Entities Select the Output Node on the Source and change the Entity Destination to ‘Specific’ and select ‘TransferNode4’ and the destination. l Select TransferNode4 and change the Entity Destination Type property to ‘Specific’ and the Node Name to ‘Input@Sink1’. For example. Source.ParkingStation. This is because the Vehicle needs to have enough room to instantly turn itself around on the Path and C onnector without getting stuck.InProcess’. Set the Initial Node (Home) to ‘TransferNode1’ and the Idle Action to ‘Park at Home’. The C onnectors have been made visible in this example by drawing them without overlapping the Paths. Entity Destination Type. C hange the Queue State of the other queue to ‘TransferNode1. Ride on Transporter. This will cause the Entities to line up in order as they wait to be transported by the Vehicle. Categories: Vehicles Key Concepts: Allow Passing.Simio D oc umentation VehicleMovingBackward . . Otherwise it could block itself from turning around. l Animating the Vehicle l l Add a Vehicle to the Facility Window. C onnect the Source to TransferNode2 and TransferNode4 to the Sink using Paths. try different a Idle Action for the Vehicle. Vehicle Assumptions: When a vehicle changes direction at a node it often appears to jump to a new position. making an undesired “flip” around the node. This is because the head of the vehicle determines the position of the vehicle on a link or when it enters a node. It is very important that the distance between TransferNode1 and TransferNode2 and the distance between TransferNode3 and TransferNode4 is greater than the length of the Vehicle. Send comments on this topic to Information Copyright 2006-2011.InProcess’ by choosing it from the drop down menu. the Parking Queues for TransferNode1 and TransferNode4 must be drawn and placed directly on the route. C lick on the button repeatedly until you have reached an appropriate level of Active Symbols (in this example there are 9 Active Symbols). Send comments on this topic to Information Copyright 2006-2011. Position them so that there are 2 Source/Sink pairs representing either side of the road. Double-click on Path to create the lanes of the road.Simio D oc umentation VehiclesPassingOnRoadway . l Go through all of the Active Symbols in the dropdown list and change each vehicle symbol to a different color or different symbol. To each path. Set the Initial Node (Home) to ‘TransferNode1’ and the Idle Action to ‘Park at Home’. Adding Entity Symbols l l Add a Vehicle to the Facility Window. Start at the other Source and create another curved section leading to a new TransferNode. create the entities with random speeds mimicking vehicles entering separate sides of a roadway. From this TransferNode draw a straight line connecting it to a second TransferNode. l Set the ModelEntity’s Random Symbol property to ‘True’. End this section at one of the TransferNodes. click on the curved sections and change the Allow Passing in the Travel Logic to ‘False’. To prevent the vehicles from passing on the curved sections of the road. The roadway is separated into three sections – two curved sections that do not allow passing and one straight section that does. Move left Sink’s BasicNode and the right Source’s TransferNode so that that both Source/Sink Pairs have their nodes facing eachother. Animating the Entities Place a ModelEntity from the Project Library into the Facility Window. Make sure to mimic the contour of the first lane. l l Modeling the Vehicle Movement l l C hange the ModelEntity’s Initial Desired Speed to ‘Random. add a single lane path decorator and set the path width (Size – Width) to 2 meters. After making sure the ModelEntity is selected. placed at opposite ends of the model. Multiple vehicles can pass a vehicle simultaneously without regard for oncoming traffic. Simio LLC. Otherwise it could block itself from turning around. Place 4 TransferNodes in between the Source/Sink pairs (2 for each pair) to represent the passing section. All Rights Reserved.SimBit Problem: Model a simple version of a roadway with sections that allow passing and sections that do not. It is very important that the distance between TransferNode1 and TransferNode2 and the distance between TransferNode3 and TransferNode4 is greater than the length of the Vehicle. Technical Approach: Two sources. Details for Building the Model: C reating the Roadway l l l l l l l l Place two Sources and two Sinks in the model. with one source and sink on each side of the model. This is because the Vehicle needs to have enough room to instantly turn itself around on the Path and C onnector without getting stuck. Then create another curved section ending at a Sink. then a section leading to the second Sink.Uniform(1. followed by a straight section to the final TransferNode. click on Add Additional Symbol in the Symbols tab. Path Decorators Assumptions: There are separate Source/Path/Sink sets for each direction of the road.5)’ Meters per Second. Path. Categories: Vehicles Key Concepts: Allow Passing. After the vehicle has driven the entire roadway it exits the system. Separate them so that the vehicles have enough room to illustrate the vehicle movement. Start at one of the Sources and start clicking to create a curved section of the roadway. . C reate the other lane in the same manner. Select the work schedule that was just created for the Work Schedule property. Technical Approach: Subclass the standard Vehicle object and change the OnVisitingNode processes property Public from ‘False’ to ‘True’. l Add the Schedule to the Server and C reate logic to Stop Vehicle l l l l l l l Highlight the MyVehicle object in the Navigation Window and open the MyVehicle’s Processes Window. a Server and a Sink to the Facility Window. The Suspend Step will suspend this process from within the OffShift Add On Process of the Server. The Vehicle’s movement is also suspended and resumed with a Suspend Step from within the same Add On Processes. Place a Suspend Step (found under All Steps) in the Found segment leaving the Search Step. NOTE: The times when there aren’t on shift times are considered to be off shift (capacity value of 0). change the Interarrival Time of the Source object to ‘Random. the Transporter Type to ‘Specific’ and then select your Vehicle for the Transporter Name property. l Go back to the Work Schedules Tab and select ‘DayPattern1’ for Day 1. On Shift. (if you double click on the name of the Property. C lick the Override icon in the top Ribbon and then change the Public property from ‘False’ to ‘True’. l Add three rows to reflect the following schedule: 8:00 AM – 8:15 AM with a Value of ‘1’. In the Model’s Facility Window. l l Subclassing the Vehicle Object l l l l l Select MySimioProject in the Navigation Window and highlight the Models panel. when the object is selected in the Facility Window. Enhancing the Animation . This will stop the vehicle’s movement immediately. l In order to slow down the entity arrival to best view the vehicle’s behavior.e. The Suspend Type of this step is set to Process and the Process Name is set to the OnVisitingNode process of the Vehicle. add a new one with the Name ‘DayPattern1’ and press the ‘+’ to open the pattern. The Suspend Type of this step is set to ‘AssociatedObjectMovement’. From within the Server properties window. Place a second Suspend Step directly after the first Suspend Step in the Found segment. select the Server object and set the Capacity Type property to ‘WorkSchedule’. On Shift. Find the process OnVisitingNode and click on the process. Categories: Vehicles Key Concepts: Add-On Process. This will create a sub-classed ‘MyVehicle’ object. Select the Output Node of the Server and set the Ride On Transporter property to ‘True’. except instead of the Suspend Steps. On the Edit ribbon. Ride on Transporter. Search Step.04’ (meters per second). Similarly. Resume Steps should be used to both resume the vehicle’s movement and the OnVisitingNode process. In order to slow down the animation to best view the vehicle’s behavior. Schedules. Details for Building the Model: Simple System Setup Add a Source. This will allow this process to appear in the selection list of the Suspend Step. Suspend Step. C reating a Work Schedule Go to the Data Window and select the Schedules panel. C lick the Work Schedule icon from the Schedule ribbon and change the Name to ‘Schedule1’ and the Days to ‘1’.SimBit Problem: I want a Transporter to follow the same Work Schedule as a Server in my system. select the dropdown icon from the Add On Process trigger OffShift and select ‘C reate New’. SubC lass.Exponential(4)’ minutes. i. The Search Step is needed to create a token that points at the Vehicle instance so the Vehicle can be suspended. Ensure that the Type property of the path from the Server to the Sink is set to ‘Bidirectional’ so the vehicle can travel back and forth. the Resume Step will resume the OnVisitingNode process from within the OnShift Add On Process of the Server. 8:30 AM – 8:45 Am with a Value of ‘1’ and 9:00 AM – 12:00 PM with a Value of ‘1’. you will be taken to the Process Window) In the Model’s Processes Window. Resume Step. (i. Real State Variable. In order to make it look like a true vehicle. The Collection Type of the Search Step is set to ‘ObjectInstance’ and the Object Instance Name is set to the name of the subclassed Vehicle. you should see the two new processes that were created from the Server’s Add On Process triggers. press the Subclass From Library button and select the Vehicle. change the Desired Speed property of the Vehicle to ‘0. MyVehicle. The Transporter should stop working immediately when the Server goes Off Shift. On On Shift. The other properties can be kept with their default values. Vehicle Assumptions: The Vehicle object’s capacity cannot be controlled by a Work Schedule so the Vehicle’s logic will be suspended when the Server goes Off Shift and it will resume its logic when the Server goes back On Shift.e. In the Off Shift process. l In the Day Patterns tab. place a Search Step (found under All Steps). AssociateObjectMovement.OnVisitingNode) Almost the exact same logic should be put in the On Shift process. Off Shift. Set the Initial Node (Home) property of the Vehicle to ‘Output@Server1’. select a vehicle symbol from the Project Symbols dropdown in the Ribbon. On Off Shift. C onnect the objects together with Paths. Highlight Model in the Navigation Window to return the main model and place the MyVehicle object from the Project Library into the Facility Window.Simio D oc umentation VehicleStopsWhenServerOffShift . Do the same for the trigger OnShift. This example has two symbols for the vehicle. The value of this property is used in the symbol index (the numbers listed next to the symbols in the Active Symbol drop down). OffShift. Simio LLC. l Send comments on this topic to Information Copyright 2006-2011. one that is Blue and one that is Red. In this example. you need to select the Server object in the Facility Window and click on the Add Additional Symbol icon in the Ribbon. It is set to ‘0’ when the Vehicle resumes its movement. Do this twice so there are now three symbols associated with this object. . Once the symbol is active.C apacity l C hanging the appearance of the vehicle during the run is done in a similar fashion. C hange which symbol is ‘Active’ with the Active Symbol icon. Busy vs.Allocated + 1) * Server1. l The Current Symbol Index property of the Server controls which symbol is displayed during the run.If you’d like the Server to appear different when it is Idle vs.C apacity. The Current Symbol Index of the Vehicle is set to a State Variable called Off Shift. you can change the appearance of that symbol. All Rights Reserved. symbol 2 is displayed when the Server is On Shift and Busy and symbol 0 is displayed when the server goes Off Shift (capacity = 0): (Server1. This state is set to ‘1’ with an Assign Step after the Suspend Step that stops the vehicle. the following expression is used so symbol 1 is displayed when the Server is On Shift (capacity = 1) but not busy. SubC lass. From within the Vehicle object. the vehicle finishes its delivery. Categories: Vehicles Key Concepts: C apacity. l In the Definitions Window. Wait Step Assumptions: There is only one Vehicle in the system. C lick on the Output Node of Server 1. And upon failure. SetNode Step. Time To Repair. place a Decide step that checks if the Vehicle is parked. Animate the Parking Station of the Basic Node by placing either a Detached or Attached Queue to the Basic Node (Animation Tab) and indicating the Queue State property ‘BasicNode1. Failure. A new Node Property is added to this object. Real State Variable. You can also animate the Parking Station of Server 1’s Output Node since the Vehicle will park there when not busy and not failed. therefore it is subclassed into the Project Library.Exponential(1)’. next to the other information about Failures. if appropriate. the True branch from this Decide step and the False branch from the NoRiders Decide Step together before Wait Step. Ride on Transporter. Add a Basic Node and connect it to the Output Node of Server 1 and the Input Node of Server 2. Search Step. You’ll need to set the Transporter Name property to ‘MyVehicle1’ but this cannot be done until your custom Vehicle is in your Facility Window and this happens later. Failure. From the False branch of this step. Uptime Between Failures. ¡ Set its Ride On Transporter property to ‘True’.Initial. OnRepaired and OnVisitingNode processes are updated with custom logic to indicate that the vehicle must not immediately stop in place upon Failure. set its Type property to ‘Bidirectional’.Simio D oc umentation VehicleVisitsServiceCenter . Make the path between the two Servers bi-directional. After the SetNode Step. Technical Approach: C hanges are required to the standard Vehicle object. Subclass the standard Vehicle object into your Project Library. along with the two paths connecting the Basic Node. so we need to replace the default failure logic with some custom logic. Set its Entity Destination property to ‘Specific’ and the Node Name property to ‘Input@Server2’.InProcess’. Add a new Node Property (from the Object Reference icon in the ribbon) and name it ServiceNode. Override. C onnect the Source to the first Server. The Object Type is ‘Parent Object’. l In the Processes Window. C hange the mean Interarrival Time on the Source to ‘Random. Vehicle. ¡ C ustomize a Vehicle Because we want our vehicle to have some unique behavior (e. OnInitialized Process. Node Property. add a Decide step to see if there are riders on the Vehicle. along with a new Discrete State. both which are needed to hold information about the service center node. The OnRunInitialized process in the Model contains logic that finds the ID of the Service Node and saves it in a variable on the Vehicle.Remaining. then add a new property and other definitions that it will need.SimBit Problem: I want to model a system that contains a vehicle that is subject to random failures. select the States panel and add a new Discrete State to the Vehicle named ServiceNodeID. the OnFailed. place a Wait Step. place an Assign Step that will indicate that the Vehicle is idle.InProcess’. ParkingStation. UnPark Step. place a SetNode step. l Also in the Definitions Window.g. The UnPark Type is set to ‘Parent Object’. connect the first and second Server together and connect the second Server to the Sink with Paths. l Highlight the Model in the Navigation Window and select the Definitions tab. Park Step. C apacity. To set a property here. (IsParked) From the True branch of this step. . if not idle. it’s Transporter Type property to ‘Specific’. the Destination Type is ‘Specific’ and the NodeName should be set to the new ServiceNode property. then selecting the Models panel. The Event Name is set to ‘ArrivedAtServiceNode’. C onnect this False branch. To make a path bi-directional. find the OnFailed process and select Override from the ribbon. (NumberRiders == 0) From the True branch of this step. This will fire the event. ParkingStation Queue. Properties panel. two Servers and a Sink to the Facility Window. and then travel to the service node before starting its repair time delay. Entities will always go to Server2. This adds a subclassed MyVehicle object to the library.Active. l OnFailed Process We want our vehicle to automatically move to a repair location on failure. If you put ‘Reliability’ in the Category Name property of this new property. The Queue State for this queue is ‘Output@Server1. right click on NodeName and select SetReferencedProperty and then select ServiceNode. go to a specified node before failing) we will start by creating a new vehicle object based on the existing Vehicle. C lick on the Subclass From Library button from the ribbon and select Vehicle. and then proceeds to a Service C enter to be repaired or serviced. select the Events panel and add a new Event that is named 'ArrivedAtServiceNode'.ParkingStation. place a Fire step. Event. ID. This will allow you to make changes to this process. place a UnPark step. This is done by clicking on MySimioProject in the Navigation Window. After this UnPark Step. but instead finish delivery. ‘RideReserved’. C ontents. ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ After the Suspend Failure Occurence Logic step. it will appear in that category of the Vehicle.ParkingStation. Details for Building the Model: Simple System Setup l l l l l l Add a Source. After the Wait Step. Decide Step. l After the Assign Step. l In the Found segment leaving that Search step. go to the External panel of the Definitions Window for the Vehicle object.n n n ¡ IsIdle == 1 OnEvaluatingRiderReservation. The Collection Type is ‘ObjectInstance’ and the ObjectInstanceName is ‘BasicNode1’. The New Value should be set to ‘Token. Set Uptime Between Failures to 2 minutes. Set Time to Repair to 1 minute. Place a new Decide Step in the False branch. place another Search Step. Place a symbol of a vehicle and place the RideStation. l l In the main model Processes Window. (NumberRiders == 0 && Failure.Active == 1) The True branch should contain a new SetNode step.ServiceNodeID’ and the New Value is ‘Temp’.ID to a temporary state variable.ReturnValue’. Set the Failure Type to ‘C alendar Time Based’. Place the new customized Vehicle into the Facility Window of the model. This will get a token associated with that node. This will search for the Vehicle object and create a token that is associated with the Vehicle. Here we will use initialization code on the model to determine the ID of the specified node and record it on a state variable of the vehicle. BasicNode1.C ontents queue on the Vehicle.e. Set this by right clicking on the NodeName and selecting SetReferencedProperty and the selecting ServiceNode.ReturnValue == 1 This Assign step will flow into the Suspend OnVisitingNode step that was part of the original process. Place a Search Step into this process that searches for the node of the Service C enter – i. place an Assign Step. All Rights Reserved. Set the Initial Node property to ‘Output@Server1’. ¡ Find the IfNotVisitingNode Decide Step. ¡ In the False branch of this new Decide step. In the State Variable Name property. ¡ Find the SelectDropoff Step.ID’. n ¡ The rest of this process remains unchanged. To do this. place a Decide Step. create a new process by selecting OnRunInitialized from the Select Process icon. This decide step will check if there are any riders and if the vehicle is in Failure status. The Return Value is set to ‘BasicNode1. n The False branch will go to the beginning of the Execute Exiting Node Add On Process. ¡ After this Park step. The Park Type is ‘Parent Object’ and the Node Name is the ServiceNode property. Send comments on this topic to Information Copyright 2006-2011. (C urrentNodeID != ServiceNodeID) If not. place a Fire Step. This will fire the event ‘ArrivedAtServiceNode’. place a Park Step. Place the Vehicle into the Model Here we will customize how the default vehicle looks. . l In the Found segment of this step. l l l l l Before you place the Vehicle into the Facility Window of the model. Everything else can remain with the defaults. The Collection Type is ‘ObjectInstance’ and the ObjectInstanceName is ‘MyVehicle1’. The State Variable Name is ‘MyVehicle. In the False branch of this step. This will save the BasicNode1. select ‘C reateNew’ and create a new state called ‘Temp’.Enabled == 1 OnEvaluatingRiderReservation. Set ServiceNode to 'BasicNode1'. This new Decide Step checks to see if the Vehicle is at the Service Node. it continues with a DropOff. OnVisitingNode Process As part of implementing our custom failure logic. Object Type is ‘Parent Object’ and the NodeName is the ServiceNode property. The branch then exits this Process. directly before the DropOff Step. place an Assign Step. Save off the Service Node ID in the Main Model The vehicle does not know anything about the model in which it is contained. All the other steps in the process remain untouched. Everything else can remain with the defaults. l Find the OnVisitingNode process and Override it. we need to special handle the case when the vehicle arrives at the repair location. you might want to change the External view of the Vehicle (how it looks in the Facility window). so it cannot directly obtain the ID of the node passed in. Simio LLC. It will then assign the Node ID to the Vehicle. In the Vehicle1_EvaluatingTransportRequest process.Simio D oc umentation VehicleWithVariableRideCapacity . Technical Approach: A state variable. Details for Building the Model: Simple System Setup l l Add a Source and Sink from the Standard Library to the Facility window. . set the State Variable Name to ‘Token. l l l Defining the Vehicle Place a Vehicle object in the Facility window and change the Ride Capacity to ‘5’. Vehicle Assumptions: There is a single vehicle that can pick up anywhere from one to five entities at Source1. l Add an Assign step to the process from the True branch of the Decide step. the transport request is rejected. l Embellishments: The RidersNeeded state variable can be animated by using a Status Label from the Animation tab and changing the Expression to ‘RidersNeeded’. which will allow the vehicle to pick up one entity for its first pickup. use the C reate Process button and create a process with the Name ‘ResetRiderNumber’. This is useful in making sure that the vehicle is picking up the number of riders as determined by the RidersNeeded state variable value sampled from the distribution. l From the False connection of the Decide step. based on a distribution. Round Down. highlight the output node of the source (Output@Source1) and. change the State Variable Name to ‘RidersNeeded’ and the New Value to ‘Math. Within the Processes window. On Exited. Assign Step. States panel. under the Add-On Process Triggers Exited property. This process will be evaluated with each entity awaiting transport at Source1. RidersNeeded. add a Discrete State and change the Name to ‘RidersNeeded’. Math. This will set the maximum capacity of the vehicle.Triangular(1. l Open the Processes window. Simio LLC.6))’.0’. Within the Assign step.ReturnValue’ and the Value to ‘0. Is.Vehicle’. NumberRiders. add a Decide step with the Decide Type of ‘C onditionBased’ and the Expression of ‘Vehicle. C hange the Type of the Path to ‘Bidirectional’ so the vehicle may go back and forth between the Source and Sink. Categories: Vehicles Key Concepts: Add-On Process.NumberRiders<RidersNeeded’.Floor(Random. Decide Step.0. l Within the Facility window. Within this process. C onnect the objects with a Path. Set the Initial State Value to ‘1’. Adding and Using a State Variable Within the Definitions tab. Send comments on this topic to Information Copyright 2006-2011. add an Assign step.Floor(). Within the Assign step. which will be the maximum number of entities the vehicle can move. add a Decide step and change the Decide Type to ‘C onditionBased’ and Expression to ‘Is. ReturnValue. add the process ‘ResetRiderNumber’ that was just defined above.NumberRiders is a function that looks at the current number of entities on the vehicle. When the Token.3.ReturnValue is set to less or equal to 0. create a new process for the Evaluating Transport Request property called ‘Vehicle1_EvaluatingTransportRequest’. All Rights Reserved. This will assign the RidersNeeded state to a new value each time the vehicle leaves the Source for its next pickup. The Ride C apacity of the vehicle will be set to 5. l Within the Add-On Process Triggers section.SimBit Problem: I have a vehicle that can pick up a variable number of entities at any given location. The Math. On Evaluating Transport Request. will be used to sample from a distribution to determine how many entities the vehicle will pick up at a given time for each pickup. The Vehicle. which is what will happen for those requests above the RidersNeeded state value. The RidersNeeded is the state variable that we use to determine the number of riders for a particular pickup. The Evaluating Transport Request add-on process will be used to compare the RidersNeeded value sampled with the number of current riders function of the vehicle to determine if a ride request is accepted or not.Floor function is used to truncate the values generated from the distribution to integer values.Vehicle. Token. This will be done by using the Worker as a Transporter type object. and a Sink to the Facility window. place a Decide step into the BasicNode1_Enterer process. but also must be available at the inspection area to perform stationary tasks.InProcess’. create a new process in the Entered Add-On Process Trigger named ‘BasicNode1_Entered’. the worker must move entities from one location to another. dragging the mouse and left clicking again to place the end of the queue. Within BasicNode1. a Server. l Parking areas should also be added to the Server 1 (‘[email protected] D oc umentation WorkerUsedForMultipleTasks .InProcess’) and BasicNode1 (‘BasicNode1. which will be done at BasicNode1. However. The Decide Type should be ‘C onditionBased’ and the Expression should be ‘Is. set the Object Name property to 'Worker1'. click on the Animation tab and select Detached Queue. Details for Building the Model: System Setup Add a Source. Requesting the Worker for Stationary Task l l l l l l Entities coming from Source2 will require the Worker for the inspection process. then Release step. All Rights Reserved.InProcess’). Since the Worker will be moving the entities between the Source and Server. This will not only give control of the Worker to the entity by using the Seize. Send comments on this topic to Information Copyright 2006-2011. Only the token associated with the incoming Worker will be coming out the False exit and no additional logic is required. but will cause the Worker to move to the entity’s location at BasicNode1. Additional entities are sent through a node in need of inspection by the Worker. l Finally. Worker Assumptions: There is one worker who is responsible for both transport and stationary tasks. Delay step. Seize Step. Ride on Transporter. C hange the Source1 Interarrival Time property to ‘Random. Is.ModelEntity’. C hange the Source2 Interarrival Time property to ‘5’ minutes. as well as inspection type tasks.ParkingStation. This will allow the worker to move between the various tasks. In the Facility window. The worker does not take breaks or go off-shift. the Request Move to ‘ToNode’ and the Destination Node to ‘BasicNode1’. l Requesting the Worker for Transport Task l Within the output node of Source1 – Output@Source1. In the False segment leaving the Decide step. Simio LLC. there will be no additional logic. Within the Delay step. Right click to end the queue placement. C onnect the Source to Server and also the Server to the Sink with Paths. The Queue State for the Source1 location should be ‘Output@Source1. Within the Processes window. Categories: Worker Key Concepts: Add-On Process. Placing Parking Queues for the Worker l When Worker1 is not being utilized. In the True segment leaving the Decide step (which will be the ModelEntity objects). Within the Seize step. it can be animated at its node location by placing a parking queue. l Add a second Source. Add-on Process Triggers at the node will be used to Seize and Release the Worker for this stationary task. change the Delay Time to ‘2’ and the Units to ‘Minutes’. Decide Step. . On Entered. Place a queue by left clicking once to start the queue. a BasicNode and a second Sink. place a Seize step. C onnect Source2 to BasicNode1 and also BasicNode1 to Sink2 with Paths.Exponential(. change the Transport Logic properties to reflect that a worker is needed to move the entity from location to location. Request Move.5)’ minutes. add a Path between the input node of Server1 and the BasicNode1. This is done by setting the Ride on Transporter property to ‘True’ and Transporter Name to ‘Worker1’. The Worker will move to the node for inspection and later return to the transport tasks. set the Object Name to 'Worker1'.SimBit Problem: I have a system where my worker is responsible for both transportation type tasks.ParkingStation. The Worker’s inspection task will occur at the BasicNode. Therefore. BasicNode. change the Type of path to ‘Bidirectional’. we used the Decide so that the Worker would not also try to Seize (itself) upon entry to the node. This will be used determine whether the object entering the node is the entity (coming from Source2) or the worker (coming to do the inspection).ParkingStation. Technical Approach: The worker will be responsible for moving entities from the Source to the Server so that the entities may continue processing at the Server.ModelEntity. C hange the path’s Type property to ‘Bidirectional’. l Add a Worker object to the Facility window. In the Release step. ). C hange the Server1 and Server2 Processing Time properties to ‘Random. there should be 7 symbols (numbered 0 – 6). Details for Building the Model: Simple System Setup l Add a Source. which will all have a Value of ‘1’.8. Technical Approach: The Worker will be responsible for helping processing at both Server1 and Server2. Requesting the Worker for Stationary Tasks Worker1 will be required at for processing at both Server1 and Server2. These will be used as the locations between which the worker moves. l l Defining the Worker’s Work Schedule l l l l l Within the Data tab. l C hange the color of the various symbols to reflect the states by clicking on Active Symbol (1 of 7) and selecting the symbol to change. Once the Active Symbol has changed. Idle. Set the Allow Passing property on all paths to ‘False’. When the worker is idle. All other times are assumed the capacity value of 0 or off shift. OffShiftBusy = 6. IMPORTANT NOTE: With Worker object schedules. select ‘DayPattern1’ for Day 1. OffShift. Defining the Worker’s C haracteristics l l Within the Worker1 object. The times are 12:00 AM – 12:30 AM. but will cause the Worker to move to BasicNode1.10)’. l Add a Worker object to the Facility window. l Add three BasicNode objects to the Facility Window. The worker goes on break at a different location. the Request Move to ‘ToNode’ and the Destination Node to ‘BasicNode1’. Worker1 will start out the simulation at this location. Keep all Time Units as ‘Minutes’. Within Server1. two Servers. C hange the Days to ‘1’. add an Initial Node (Home) property of ‘BasicNode3’. one directly above Source2 and the third one to the right and middle of the other 2 BasicNodes. l Within Server2. it will stay where it is located.Simio D oc umentation WorkerUsesWorkSchedule . the worker doesn’t do any transporting. 1:00 AM – 2:00 AM. Schedules panel. l The resource state values for a Worker are Idle = 0. Add four rows to reflect the on shift times. l C hange the Source1 Interarrival Time property to ‘10’ minutes..e. In this example. When the worker goes off shift. C onnect the three paths in a triangle by using Paths and change the Type of each to ‘Bidirectional’. Request Move. Schedules. This is because the capacity of the dynamic set of Worker objects is based on the Initial Number in System property defined within the Worker. WorkSchedule Assumptions: There is one worker who is responsible who performs stationary tasks at two server locations. Schedules / C hangeovers Key Concepts: Off Shift. Transporting = 7 and OffShiftTransporting = 9. so set the Idle Action property to ‘Remain In Place’. Add a Day Pattern with the Name ‘DayPattern1’ and click the ‘+’ to enter the information for the day pattern. click on the Work Schedule button to create a new work schedule with the Name ‘Schedule1’. change the Capacity Type to ‘Work Schedule’ and the Schedule Name to ‘Schedule1’.SimBit Problem: I have a system where my worker is responsible for helping with operations at two different locations. Secondary Resources. This will not only give control of the Worker to the entity. Add-On Process Triggers will be used to specify that the Worker is required at node locations associated with the Servers. Within the Routing Logic properties.ResourceState’ such that the value of the worker’s resource state will be used to animate the worker in various colors depending upon the state that it is in (i. To animate all possible states. the Value field within the Day Pattern should be set at either 0 or 1 (but not greater than 1). C onnect the Source to each Server and also both Servers to the Sink with Paths. Busy.Triangular(6. Worker. The work schedule is used to define only On Shift and Off Shift times for the ‘group’ of workers. so change the Off Shift Action to ‘Go To Home’. On Shift. Place one directly below Source1. ResourceState. Simio LLC. and a Sink to the Facility window. Optional: C hanging Worker Animation Symbol l C hange the Current Symbol Index property of the worker (Animation) to ‘Worker. we will move it back to BasicNode3. A Work Schedule will be defined to specify when the worker is On Shift and Off Shift. OffShift = 4. . The worker takes breaks and goes off-shift based on a work schedule. enter the Secondary Resources / Resources for Processing section of properties and set the Object Name property to ‘Worker1’. Highlight the Worker1 object and select the Add Additional Symbols button from the Symbols tab. the C olor can be changed by selecting the appropriate color and then clicking on Worker1. thus states Transporting and OffShiftTransporting are not used. 2:30 AM – 4:00 AM and 4:30 AM – 12:00 PM. All Rights Reserved. Back in the Work Schedule tab. Busy = 1. Send comments on this topic to Information Copyright 2006-2011. Categories: Worker. however. etc. do the same thing except set the Node Name to ‘BasicNode2’ so the Worker moves to the BasicNode2 node to process at Server2. The Workstation object produces a material (bookshelf).8.Triangular(0. One bookshelf is created for every entity that enters the workstation and for each bookshelf that is created. create three output statistics by clicking on the Output Statistic icon. C hange the Name of the first material element to be ‘Wood’. which should have a Quantity of ‘2’. which should have a Quantity of ‘8’ and the other row for Material Name ‘Wood’. OutputStatistic. l The third output statistic can have the Name ‘WoodUsed’ and the Expression should be ‘Wood. Set the Material Production to ‘Material’ and select the ‘BookShelf’ element as the Produced Material Name property. l Within the Other Requirements of the Workstation. The number of bookshelves produced and the number of nails and pieces of wood consumed is recorded with an output statistic. l Send comments on this topic to Information Copyright 2006-2011. Workstation and Sink from the Standard Library into the Facility Window. C hange the Name of the second to be ‘Nails’. Update the Source to set the Maximum Arrivals property to ‘20’. Operation Quantity. . C reating the Bill of Materials l l l l l Open the Data Window and select the Elements panel.QuanityC onsumed’. There are initially 100 units of wood and 400 units of nails. The Initial Quantity is ‘0’. Technical Approach: A Workstation object is used and it consumes materials from a Bill of Materials. C hange the Name of the fourth material element to be ‘BookShelfMaterials’.2)’. l l Defining the Workstation Within the Facility Window. Add two rows to the BillofMaterial property – one for the Material Name ‘Nails’.0. Simio LLC. All Rights Reserved.Simio D oc umentation WorkstationWithMaterialConsumption .QuantityC onsumed’. C hange the Name of the third material element to be ‘BookShelf’.SimBit Problem: I have a machine that uses some material and produces some material and I’d like to model the usage and production of the material.QuantityProduced’. Material Element. 8 nails are consumed and 2 pieces of wood. Categories: Workstations Key Concepts: Bill of Materials. The Initial Quantity should be set to ‘400’. The Initial Quantity should be set to ‘100’. QuantityProduced. C reate four new Material elements by clicking on the Material Icon in the top ribbon menu.1. The Produced Material Transfer Time is ‘1. Workstation Assumptions: The source only produces 20 arrivals. QuantityC onsumed. Generating Output Statistics Also within the Data Window. set Material Consumption to ‘Bill of Materials’ and select the ‘BookShelfMaterials’ element as the Consumed Material Name property. The first output statistic can have the Name ‘BookShelvesProduced’ and the Expression should be ‘BookShelf.5’. Elements panel. edit the Workstation object and change the Processing Batch Size property to ‘1’ and the Processing Time to ‘Random. Details for Building the Model: Simple System Setup l l Place a Source. l The second output statistic can have the Name ‘NailsUsed’ and the Expression should be ‘Nails.5. 8. l Add a second Monitor element which is very similar to the first. The number of bookshelves produced and the number of nails and pieces of wood consumed is recorded with an output statistic. Each monitor fires an event when the number of the material it monitors in the system goes below a certain threshold value. l Embellishments: . The Production Type is ‘Material’. QuantityProduced. The Threshold Value is ‘10’ and the Crossing Direction is ‘Negative’.5. l C reating the Monitor Elements l Open the Definitions Window and select the Elements panel. within the Produce step. set Material Consumption to ‘Bill of Materials’ and select the ‘BookShelfMaterials’ element as the Consumed Material Name property.2)’. l l Defining the Workstation Within the Facility Window. the Material Name is ‘Wood’. Technical Approach: A Workstation object is used and it consumes materials from a Bill of Materials. l Generating Output Statistics Also within the Data Window. edit the Workstation object and change the Processing Batch Size property to ‘1’ and the Processing Time to ‘Random. C reate four new Material elements by clicking on the Material Icon in the top ribbon menu. (Enhancement of WorkstationWithMaterialC onsumption. The differences with this monitor are that the State Variable Name is ‘Nails. C hange the Name of the second to be ‘Nails’. C hange the Name of the fourth material element to be ‘BookShelfMaterials’.Triangular(0.QuantityC onsumed’. create three output statistics by clicking on the Output Statistic icon. l C hange the Name of the first material element to be ‘Wood’. place a Delay step in the Process.QuantityProduced’. Monitor. Produce Step.5’.QuantityAvailable’. Workstation and Sink from the Standard Library into the Facility Window. C reating the Bill of Materials Open the Data Window and select the Elements panel. Due to different replenishment policies. Each time wood is depleted. Workstation Assumptions: The source has infinite arrivals. QuantityAvailable. This monitor will fire an event named ‘Wood_Monitor_OnEventProcess’ whenever the state variable crosses from 10 to 9. There are initially 30 units of wood and 60 units of nails.0. the lead time of replenishment for wood and nails are different. There will be two processes: ‘Wood_Monitor_OnEventProcess’ and ‘Nails_Monitor_OnEventProcess’ shown in this window. Process of C reating Replenishment Go to the Processes Window. Material Name is ‘Nails’. Material Element. and then the process will delay for 0. The Workstation object produces a material (bookshelf). QuantityC onsumed.0)’. and the Quantity is ‘40’. Details for Building the Model: Simple System Setup l Place a Source. OutputStatistic. which should have a Quantity of ‘2’. the Threshold Value is set to ‘20’ and fired event name is ‘Nails_Monitor_OnEventProcess’. Elements panel. The differences are the Delay Time for Delay step is set to ‘2’. The Initial Quantity should be set to ‘30’. 8 nails and 2 pieces of wood are consumed.Exponential(1. One bookshelf is created for every entity that enters the workstation and for each bookshelf that is created. it’s very similar to the first process. The Produced Material Transfer Time is ‘1. Set the Material Production to ‘Material’ and select the ‘BookShelf’ element as the Produced Material Name property. and model this process. The Initial Quantity should be set to ‘60’. This process will be executed when the remaining quantity of Nails is below 20. and the Quantity is ‘80’. We use two Monitor elements to watch Model States that keep track of the numbers of wood and nails remaining in the system. l The second output statistic can have the Name ‘NailsUsed’ and the Expression should be ‘Nails.QuantityAvailable’. we replenish 80 of them. and then this event triggers the replenishment process for this material. l Within the Other Requirements of the Workstation. we replenish 40 of it. and the Units is set to ‘Minutes’. The Initial Quantity is ‘0’. and replenish 80 Nails.SimBit Problem: I have a machine that uses some material and produces some material.5’.5 minute as the delivery lead time. Event. and I’d like to provide replenishment of the material once depleted. which should have a Quantity of ‘8’ and the other row for Material Name ‘Wood’. l The third output statistic can have the Name ‘WoodUsed’ and the Expression should be ‘Wood. C hange the Name of the third material element to be ‘BookShelf’. C hange the Interarrival Time of the Source to be ‘Random. l For the process ‘Wood_Monitor_OnEventProcess’. The first output statistic can have the Name ‘BookShelvesProduced’ and the Expression should be ‘BookShelf.1. The Delay Time is ‘0. The Monitor Type is ‘C rossingStateC hange’ and the State Variable Name is ‘Wood. l For the process ‘Nails_Monitor_OnEventProcess’.Simio D oc umentation WorkstationWithMaterialConsumptionAndReplenish . Then place a Produce step in the process.QuanityC onsumed’. C lick on the Monitor icon in the General Ribbon group. each time nails are depleted.spf) Categories: Workstations Key Concepts: Bill of Materials. l Add two rows to the BillofMaterial property – one for the Material Name ‘Nails’. Then click on the plot. add 2 rows in the Additional Expressions. one represents the number of remaining nails and the other one represents the number of remaining wood.We can add some animation. and the Label set to ‘Wood’. Simio LLC. go to Properties Window. to show the current remaining number of materials while we’re running this model. One row has the Expression set to ‘Nails. Send comments on this topic to Information Copyright 2006-2011. and change the time interval shown on the X Axis to be ‘30 minutes’. with the name ‘Material Available’.QuantityAvailable’. The other row has the Expression set to ‘Wood. create a Status Plot. and the Label set to ‘Nails’. Then we’ll have two animation lines within the plot. C hoose Status Plot from Animation under Facility Tools. then set the X Axis label to be ‘Time’ and the Y Axis label to be ‘Pieces’. All Rights Reserved. .QuantityAvailable’. Time Offset. . Categories: Workstations Key Concepts: C hangeovers. select the C hangeovers panel. Then change the color of each entity to match that choice. This will give the user the option to specify C olor as a property of an entity and the list of C olors will be shown as options. Workstation Assumptions: Each source only produces one type of entity. l Embellishments: Try changing the Processing Time of the Workstation. Technical Approach: A String List is created in the List panel of the Definitions window for the ModelEntity.[Desired C olor]’.SimBit Problem: I have a Workstation that requires a certain setup time based on which entity type needs to be processed. l C onnect the Sources to the Workstation and the Workstation to each Sink with Paths. C hange the List Name property to be ‘C olors’. This is done by changing the Setup Time Type property to ‘Sequence Dependent’. Sequence Dependent.C olors. Set the Operation Attribute property to ‘ModelEntity. the Interarrival Times of the Sources. All Rights Reserved. Be sure to add this same String List to the Lists within the Definitions tab of the Model. A List property is defined in the Model Entity’s Definitions window. Details for Building the Model: Simple System Setup Add two Sources. List Property. l Set the Selection Weight of the path from the Workstation to the Sink to ‘ModelEntity. The model will complete its run faster if the Workstation processes all entities of one type before changing over to process entities of another type. C reating a C hangeover Matrix l In the Data Window.1’ minutes and the Maximum Arrival of each Source to ‘10’. StringList. l C hange the Entity Type Arrival Logic property of each Source to match the color of its associated entity. or change values in the C hangeover Matrix. C hange the Interarrival Times of the Sources to ‘0. Simio LLC. Name one ‘RedEntity’ and one ‘BlueEntity’. l Adding a String List l C lick on the Definitions tab and select the Lists panel to add a String List named ‘C olors’. select the Properties panel and add a List Property with the Name ‘C olor’.C olor’ and the Changeover Matrix property to ‘C leaning’. Select the desired color from the C olor property drop down list. l Fill in the matrix with desired values or follow the example: (Note: these values will be in Hours): ChangeOver Matrix Inputs Using the Workstation l The Workstation will need to have different setup times depending on the sequence of entities in it queue.C olor==List. Add as many colors as desired. Status Pie. l Add as many Sources and Sinks as desired to the model. Adding an Entity to the Model Place two ModelEntity objects from the Project Library into the Facility Window. Send comments on this topic to Information Copyright 2006-2011. Adding a List Property l l Within the Definitions Window of the ModelEntity. C reate a C hangeover Matrix and change the Name to ‘C leaning’. A Time Offset will be used to demonstrate the impact of setup times. Also set the Time Offset property of one of the Sources to ‘5’ minutes. a Workstation and two Sinks to the Facility Window. Properties panel. Set the List Name property under Logic to ‘C olors’ and the C ategory Name property under Appearance to ‘Properties’.Simio D oc umentation WorkstationWithSequenceDependentSetup . A Workstation with a Sequence Dependent setup time is used and a C hangeover matrix defines the various setup times. Technical Approach: This model has a state variable that keeps track of the number of entities in the queue for Server 1. The New Value property should be set to ‘ServerQueue – 1’. Write Step. The first item should be the ‘TimeNow’ function. Write Step Assumptions: This model writes to a . create a new File Element from the User Defined ribbon icon. The values are written to the file each time the Monitor element fires its event. ¡ Add a Write Step to this process. select C reate New. The Monitor Type is ‘DiscreteStateC hange’ and the State Variable should be set to ‘ServerQueue’. Select the new File element that was created. Server and Sink object to the Facility Window. {1}’. Monitor. Event. It can be found in the User Defined Steps. in this case. ¡ ¡ ¡ Add an Assign Step to this process and in the State Variable drop down. Add an Assign Step to this process and select ‘ServerQueue’ as the State Variable. Set the FilePath to a location where you have permission to create a new file. ¡ ¡ C reating a Monitor Element l C reate a new Monitor Element from the Definition Window’s Element panel. Add two items to the Items property. ¡ The format property is set to ‘{0}. The example uses the file name ‘WritingToAFile. ‘TimeNow’. in this case. The {0} is replaced with the value of the first item.SimBit Problem: I’d like to write values to a file during the run.csv file every time the value of that variable changes. ‘ServerQueue’. Name the new state variable ‘ServerQueue’.Simio D oc umentation WritingToAFile . C reating a New State Variable l C reate an Add On Process that is triggered when an entity enters the Input Buffer of the Server. ¡ Send comments on this topic to Information Copyright 2006-2011.csv’. A monitor watches this variable and writes the value of the variable and the current simulation time to a . All Rights Reserved. File Element.Event’ – where “Monitor” is replaced with the actual name of your Monitor element. Simio LLC. which gives the current simulation time. Categories: File Management Key Concepts: Assign Step. The New Value property should be set to ‘ServerQueue + 1’.csv file. And the second item should be the ‘ServerQueue’ state variable. Adding Logic to the Model l In the Processes Window. Set the Triggering Event for this new process to be ‘Monitor. C reating a File Element l While in the Elements panel. . l C reate an Add On Process that is triggered when an entity hits the Processing station of the Server. Details for Building the Model: Simple System Setup l Add a Source. The {1} is replaced with the value of the second item. which is each time the value of ServerQueue changes. add a new process by clicking the C reate Process icon in the ribbon. be it a keyword or category. The user can enter any word or set of words in the search field. In the following example. function or property. Some SimBits are shown under multiple categories. The search engine will ignore any empty fields when performing the search. A User may choose not to enter a category and only search by one or more keywords.Processing' and two keywords are used 'Add-On Process' and 'ResourceState'. Advanced Search The Advanced Search is a more refined search that allows the users to look up Simbits by filtering on one category and up to three keywords. This will search only the SimBits within the specified category looking for either of the the keywords specified. The default behavior searches the SimBits for the Category AND [Keyword1 OR Keyword2 OR Keyword3] specified. Basic Search The Basic Search a general search that allows the users to search categories. The “Require all keywords (and)” button allows for “AND” logic search that will list the results of searching for Keyword1 AND Keyword2 AND Keyword3. Simbits name and Simbits related keywords and descriptions at the same time. The three Keyword fields include more than 250 words that may be used to find a specific modeling concept or Simio step. Thus the default search logic is replaced by Category AND [Keyword1 AND Keyword2 AND Keyword3]. C licking on a SimBit model name within the Search window will open the SimBit in separate Simio window. The 'Reset' button to the right of the keywords will reset all keywords and the category to blank fields. The C ategory field includes twenty four (24) different general areas under which a SimBit may be classified. a window is opened that provides a search mechanism for the SimBit examples within Simio. the C ategory is 'Decision Logic -. The search engine will look for all the Simbits that contain the word(s) within its keywords.Simio D oc umentation Sample SimBit Solutions Sample SimBit Solutions The Sample SimBit Solutions icon can be found within the Navigation window in the top right portion of Simio. This is accomplished by leaving the category field blank. . the search would require both the 'Add-On Process' and 'ResourceState' keyword to be in the SimBit's description. name and/or key concepts section. If the “Require all keywords (and)” button was on. SimBits are small examples with accompanying documentation that provide step by step instructions on how to model common situations in Simio. The main SimBits help page shows the various categories and the SimBits within them. categories or description. By clicking on this icon. including the categories. The user is given the option of displaying the list of results by C ategory or Simbit Name. Send comments on this topic to Information C opyright 2006-2011. Additional information. Note that even if a SimBit is displayed in multiple categories. . Simio LLC . it is only counted as a single SimBit found. When displaying the results by C ategory. along with the general description. All Rights Reserved. The name of the SimBit is listed. keywords and general description of the SimBit are also shown. some simbits will be displayed more than once as one SimBit can be classified under different categories.Search Results The number of SimBits found by the search is displayed in the Search Results section. AirportTerminal C laudesPizza HospitalEmergencyDepartment ManufacturingAssembly MiningExample PackagingSystem ThemePark WarehouseExample Send comments on this topic to Information C opyright 2006-2011.Simio D oc umentation Examples An Example is a complete Simio model that illustrates how to use Simio. The example *.spfx files have descriptions that explain the details of the model. . Simio LLC . Some of the Example.spfx files can be found in [public documents]\Simio\Examples. Below is a list of the Examples. All Rights Reserved. there are a number of hidden properties (Visible property set to ‘False’) that are used to track the costing information. . Detailed Description Model Properties Within the model’s properties. Simio LLC . As the passengers enter the airport. In addition to the 4 visible properties discussed above. where they are moved through one of two xray areas. the value of these properties may change the logic within the model itself. Security Area Upon creation of the passenger. Timer elements are used to schedule plane events. Bags and passengers are reunited after the xray processes. Send comments on this topic to Information C opyright 2006-2011. the other (Entrance) on an arrival rate basis. Plane Departure Waiting Areas The passengers ‘wait’ in the two large waiting areas for a plane. The general process flow is as follows: l l l l l l l Passengers enter the airport Passengers move to one of three check-in areas (2 self check-in and 1 full service counter) Passengers move into security check Bags are ‘separated’ from passengers and continue through xray Passengers go through xray area Bags and passengers are reunited Passengers move to one of two large waiting areas for plane departure * This example includes an ‘Experiment’ that utilizes input variables to run various configuration scenarios.Simio D oc umentation AirportTerminal .Example General Description This model represents an Airport Terminal. The value of IDC heck passes directly into the capacity of the IDC heck server. Experiment This example is unique in that it has a defined experiment that includes 4 controls and 3 responses. causing the passengers to leave the waiting area once the event occurs. Bags are ‘separated’ from the passengers and continue through their own xray process. The selection weight on the two of the paths is based on the value of the properties for C heckInKiosks and C heckInC lerks. Passenger Arrival Two sources create passengers into the airport – one (EarlyPassengers) that creates 20 groups of between 1-3 to start up the system. The controls are the properties discussed above and include the capacities for the main resources within the model. there are 4 options that can be set. Additionally. These are used in the calculations for the C ost. These 4 properties can be varied within the experiment to evaluate various scenarios. The responses include the costing information related to those resources and are calculated based on the number of each of those resources. This is done through an add on process for the path and will turn the direction to ‘none’ if there is only a single scanning station to prevent passengers from entering that path. there are three paths. Revenue and Profit output statistics for the simulation model. A separator is used at the scanners to split the passenger and his/her bag. Passengers move with their bags from the entry doorway to one of three areas – two self checkin areas (with up to 4 servers each) and one full service counter (with up to 3 checkin clerks). IDC hecks and ScannerStations. After checkin. The ScannerStations capacity (1 or 2) will turn on/off the path that is leading to the second scanner station. a bag was created and they were batched. All Rights Reserved. all passengers move to the security area. C heckInC lerks. Batch steps at the end of the scanners for both parent and member are used. including the number of self C heckinKiosks. Example General Description This model represents a Pizza by the slice restaurant. and one for the tray which (in the model) is set to RideOnTransporter = True so that the worker can come pick up the waiting trays. or in this model we made one simple object that combines all three Entities. we created a new table object. Then. This object consists of two stations. The PickUpC ounter Object uses Station Elements to do the batching. Upon entering the restaurant (Before Exiting the Source) we assign C ustomerEntity. Then.Simio D oc umentation ClaudesPizza . C ustomerEntity. and the second separates the tray and pizza – with the pizza going into a Sink to destroy it. Send comments on this topic to Information C opyright 2006-2011. When the SplitStation is entered.GroupSize. and C ustomerEntity. and each customer will order 1 to 3 pieces of pizza. Then. . This process allows the group to have the same values for the GroupSize. and EatingTime which all come into play later in the model. the pieces go onto a Tray according to the State TrayEntity. Detailed Description C reating Unique Individuals in Groups Groups enter the restaurant. There are 3 Input Nodes: one for Tray. and others to differ. Each one of these nodes corresponds to an InputBuffer where the object waits for the corresponding Parent/Member for its batch logic. and C ustomer.OrderSize that is based off the state C ustomerEntity. C reating the Table Objects After the group is together (leaves the WaitForGroup C ombiner). To avoid having to create add-on processes at each table. After the Tray and Pizza are combined. Then the customer carries the Tray (that is carrying the Pizza) to the Table. GroupNumber. Pizza.C urrentC apacity to 0 – this means that the table is no longer considered available and no customers can be routed to this table. the C ustomer is transferred to the OrderFulfilled node. the pair is transferred to an intermediate station where it attempts to Batch the Pizza/Tray as a Member with the C ustomer. we allow some parts of the entities to be the same. This can be done using 2 C ombiner Objects. The trash can consists of 2 separators. an employee will collect them and bring them back to the counter. then the Tray gets batched to the C ustomer. we defined an external view with one input node and 2 output nodes: one for the customer that leads to the Exit.GroupNumber. There are three Entities that are going to enter this object with two separate Batch Logic Elements that are to be used to join the Entities together . we Unbatch the group and transfer the Parents and Members to the EatingStation. By C reating C opies before assigning these States.Ordersize (which is assigned when the customer enters the Path leading to the C ash Register). each Station is designed to do a portion of the batching. after Delaying for EatingTime. After routing to the table. at various points in the model we assign State values for the number of pieces of pizza and if the customer is considered a parent. even if there is available capacity. Then. the group is routed to an available table. The general process flow is as follows: l l l l l l l l l l Group of customers enter the restaurant Individual customer places an order C ustomer pays for order Employee places slices in the oven to reheat C ustomer waits for Pizza to come out of the oven Once reheating is complete the customer waits for the rest of the group (or joins waiting group) Group sits down at table (or waits for an available table) Group eats pizza Throws away trash at the trash can Leave restaurant *When the Trash C ans have 15 or more Dirty Trays. Simio LLC . We then re-assign a Picture so they are not the same throughout the group.first the Pizza gets batched to the Tray. the group is Unbatched so that they can each sit in their own seat at the table. SplitStation and EatingStation.Picture. C reating the Trash C an Object The Trash C an is Similar to the C ounter except it was created using Standard Library Objects instead of processes. signifying that the table is available for new customers. This requires some add-on processes to a standard Server Object. All Rights Reserved.EatingTime. After everything is batched together. there is still remaining capacity at the table and some groups could be routed to the table even though it is technically occupied. we assign the C apacity of the SplitStation back to its original value. One difficulty is that if the group is smaller than 4 members. in the Output@Source Node we create a process that creates the rest of the group via a C reate step set to C reate C opies. After the transfer we assigned the SplitStation. C ustomerEntity. C reating the Pickup C ounter Object After the Pizza has been taken out of the oven. each group consists of 1 to 4 customers. the first one separates the customer from the Tray and Pizza. This is controlled by a process called “OnInitialization” which is executed when the main model is first initialized. a triage room. When a bed and a nurse are both available. This Source also references the PatientPriority table to assign a priority to a patient. which has the symbol of a set of waiting rooms chairs. the patient is again visited by a doctor and a nurse and then released to billing and then home. This Source uses a Rate Table to determine the rate of arrivals into the system. It is initialized so that there are patients in the system at the beginning of the model run. Rooms. The default value of this property is 1. Once admitted into a room. After they are registered. A Room object is very similar to a Bed object. they wait in the waiting area for an available bed. some custom logic to change the current symbol of the bed and a custom State that helps track the time a patient waits in this bed for a doctor to visit. they are either sent to billing and then sent home. they visit the Server named 'WaitingAreaBeforeTriaged'. The Billing desk is a standard Server object. Assign step and Transfer step. Link Weights on the Paths leaving the output node of each Bed determine the percentage of patients that visit Radiology vs Billing. All patients leaving the Billing desk travel to the front door and exit the system. If there is no room in this Emergency Department for this patient. but the user can vary the capacity of this object through the Experiment because it is referencing a property. The patient waits in the bed for an available doctor. they request a ride on the ambulance vehicle and are dropped off at the emergency entrance where they are met by a nurse who walks them to a room. The Radiology department is a standard Server object. Patient Arrivals The large main door is the Source of the main arrivals of patients. Arrivals are created for the Emergency entrance from a Source that can be found off on the “road” to the side of the ED near the ambulance. by a patient. Utilization statistics. They finish treating the patient and the patient either visits billing before exiting the ED or is sent to the Radiology room. There are a number of statistics collected in this model. If a patient is seen at Radiology. who is accompanied by a nurse. The nurse arrives to walk the patient to the bed. 6 beds and 6 rooms that are used for patients that are admitted into the hospital. This process searches a Data Table called 'Initialization' and uses the content of this table to create a set number of patients. Patients enter the ED through the front door entrance and go directly to the registration desk. After they are seen in the triage room. with a different External View symbol. The Source also references a Data table named 'PatientPriority' which determines the type of patient to create and therefore which symbol to display for the entity. The nurse is a standard Worker object that is requested in the TransferNode 'ToBeds'. they wait in the waiting area to be sent to the triage room. status pie charts and status plots. After being treated by a doctor. with the capacity referencing a property. Detailed Description System Initialization The system does not begin empty. Registration. See the Experiment section below for more details on this. The ambulance can carry up to 2 patients . Waiting Area and Triage The registration desk is a standard Server with Initial Capacity of '3'. Patients also enter the ED from an ambulance.Round function is used within the floor labels to truncate display of real numbers to a single decimal point. with certain priorities and place them in a specific location (station) within the model. Each instance of the Bed also has requests a Doctor to visit using the Resource For Processing section of the Secondary Resources properties. The expression in the C urrent Symbol Index property of each Bed determines what symbol is currently displayed. C reate step.Example General Description This model represents a small Emergency Department (ED) consisting of a waiting area. The details of these statistics are discussed below. Patients are only routed to a Room if they are sent there after visiting Radiology or if they arrive through the Emergency entrance. a billing area. the nurse greets the patient and walks them to the bed. A small experiment can be used to vary the number of nurses. They visit Triage when it is available and then sit at the Server named 'WaitingArea_PostTriaged' until a bed and nurse are available.Simio D oc umentation HospitalEmergencyDepartment . Number of Patients in System and Average Length of Stay. Statistics The following statistics are collected and displayed in the Facility window. or admitted into a room for a longer stay. There is an Add-On Process on this Source that checks to see if all the Rooms are full after the patient is created. Beds. a radiology station. After the patients are registered. It has a custom symbol for its External View. Once the Doctor and the Nurse arrive. the processing begins at this Bed and then both the Doctor and Nurse are released. The Facility window contains two different floor labels with statistics and the Dashboard window contains floor labels. a state variable is incremented to keep track of the number of Diversions from this hospital and then this patient is destroyed and not sent into the ED. l Average Wait Time to See Doctor: The wait time is calculated with a Tally Statistic on the Bed object and this overall value is found by taking an average of the wait times of all the beds. The Before Processing property in the Other Resource Seizes properties requests a Nurse to visit this bed. status charts and plots can be found in the Dashboard window. The Math. But for most patients created. l Number of Patients Admitted: This is calculated with a Tally Statistic that records the number of patients that are . the number of doctors and the number of radiologists to see the impact on Average Wait Time for Doctor. a registration desk. It is a subclassed version of the standard Simio Server object. has 5 possible symbols that can be displayed. Each of the 6 instances of the Bed. an emergency patient will either visit billing or the Radiology department. They arrive at the emergency entrance and are greeted by a nurse who will walk them directly into a room. Radiology and Billing A Bed is an object that is part of the Project Library. This is done with the combination of a Search step. one empty bed and one bed filled with each of the 4 different patient types. Average Number of Patients in System: This is a function on the ModelEntity. which references the Tally Statistic that tracks this duration. The 'Number of Doctors' property is referenced from the Initial Capacity property on the Doctor Worker object. All Rights Reserved. .Population. 'Patients. The 'Number of Nurses' property is referenced from the Initial Capacity property on the Nurse Worker object. There are three Responses defined in this experiment. 'Number of Doctors' and 'Number of Radiologists'. Average Length of Stay (min): This is calculated with a Tally Statistic that records the amount of time that a patient is in a Bed or a Room. named Population. Simio LLC .l l l l l l admitted into a Room. 'Average Wait Time For Doctor' contains the expression that determines the average wait time for a doctor across all the beds. Experiment An Experiment exists on the main model that varies the input of three C ontrols. Send comments on this topic to Information C opyright 2006-2011. Percentage of Beds and Rooms Occupied: This is calculated with a State variable that tracks the number of Beds and Rooms occupied at the current time. 'Number of Patients in System' contains the expression. 'Number of Nurses'.Average * 60'. Selecting the 'Average Length of Stay' Response will show that this Response has its Objective set to 'Minimize' so that the OptQuest Add –In knows to create scenarios that will best minimize the value in this Response.Average Average Wait Time for a Bed (min): This is calculated with a Tally Statistic that records the amount of time that a patient waits for a Bed. These controls appear in the experiment because they are all properties on the main model.Average'. Number of Diversions From Hospital: This is calculated with a State variable that tracks the number of times that a patient wanted to enter the ED through the Emergency entrance but could not visit this hospital because all the Rooms were full. And 'Average Length of Stay' contains the expression 'LengthOfStayStatistic. And the 'Number of Radiologists' property is referenced from the Initial Capacity property on the Radiology object.NumberInSystem.NumberInSystem. Total Leave Without Being Seen (LWBS): This is calculated with a State variable that tracks the number of patients who arrive in the main entrance but leave because the waiting area is too full or the average wait time is too long. Useful Tips Note the use of processes to change the appearance of the entity after each station l l l l At At At At the the the the separator member output node to model the lamp bases separator parent output node to model the pallets combiners output to model the assembled lamps packaging output node to model the ready to ship package Send comments on this topic to Information C opyright 2006-2011. These states are meant to respectively track the number of lamps bases in preparation and the total number of assembled lamps shipped. On the model initialization. After preparation. During the model run. while the remaining 30% are taken by the repair staff to the RepairStation. The random selection is enforced through the use of a 'Random' Selection Goal at the output node of the packaging server where the Entity Destination Type is set to 'Select From List' and the Node List Name is a list containing the docks’ input nodes. This is modeled through the use of a Monitor element on the 'NumberInPrep' state variable with a Threshold Value of '2' and a 'Negative' Crossing Direction. The bases are sent down the C onveyor while the pallets are taken to a storage rack that is represented with a Sink. . The general process flow is as follows: l l l l l l Pallets containing lamp bases are withdrawn from inventory by a fork lift Individual lamps bases are sent to preparation (Prep) Lamps bases and shades are assembled Lamps are sent to repair if any defects are detected Finished lamps are packaged Packages of lamps are shipped randomly through 2 docks Detailed Description Model States This model has two defined model states – 'NumberInPrep' and 'TotalShipped'. The lamp base represents the combiner parent while the lamp shade represents the combiner member. All Rights Reserved. the lamps bases are randomly sent to one of the two existing combiners. if the the number of lamps bases in Prep is less than 2 the lamp bases are randomly created at either inventory 1 or 2. 70% of lamps assembled at C ombiner1 are sent directly to packaging. Simio LLC . the repair staff takes them to packaging. Lamps Bases Preparation The number of lamp bases in preparation is tracked through a user defined state that is incremented and decremented respectively as lamps bases enter and leave the Prep server. Lamps bases Arrival Lamps bases are withdrawn from two inventories which are modeled as sources. Pallets Discharge Each pallet holds 10 lamp bases. When this threshold value becomes less than 2 (i.Simio D oc umentation ManufacturingAssembly . The pallet’s contents are emptied at the Separator object at the beginning of the line. Each base is combined with one shade.Example General Description This model represents an assembly line manufacturing Lamps. Lamps Shipping After the packaging. Lamps Packaging All lamps assembled at C ombiner2 go directly to packaging. the lamp bases are taken from inventory 1. After the lamps are repaired. the assembled lamps are randomly taken by the DockResource to one of the two available docks that are modeled as Sinks. Lamps Assembly The lamps shades are generated by two sources each linked to a combiner.e 1) the monitor will fire an Event triggering Process1 to create new bases at the inventories. All Rights Reserved. Because the Ore’s priority was set to the time it was created.Simio D oc umentation MiningExample . Simio LLC . Each created entity is assigned a priority based on the time it was created through assigning the New Value to 'Run. Detailed Description Ores Extraction The ores are extracted from three different chutes modeled as sources. If this section were not there. It allows for the train to exit the bi-directional portion of the track and park temporarily to avoid another train moving in the opposite direction. Three MineTrains are available and will pick up ore according to when the ore was created. . A MineTrain will pick up the ore and drop it off at the Dump. * A two scenario experiment is used with two distinct values of the control 'OverallHoursBetweenLoads'. A Tally step is used where the Value Type is assigned to 'TimeBetween' to record the time between loads arrival to the dump. The general process flow is as follows: l l l Ore is extracted from three different C hutes.Example General Description This example represents an ore mine. Ores Transportation Three mine trains are available for the transportation of the extracted ore. *Please see the SimBit ‘BidirectionalPaths’ for a more detailed description of bypass sidings.TimeNow'. Useful Tips The Network Turnaround Method for the MineTrain vehicle has been set to 'Reverse' to allow for the train to reverse while on the path – as opposed to exiting and re-entering the path in a forward direction. Each source’s interarrival time is defined as an expression using the property 'OverallHoursBetweenLoads'. Send comments on this topic to Information C opyright 2006-2011. This area consists of a separate track for each direction of traffic. The trains are modeled as a Vehicle with an Initial Number in System equals to '3'. C ustom Statistics The 'TimeBetweenLoads' is a user defined Tally Statistic to track the time between loads at the dump. then the trains would collide and it would result in a deadlock. we must make use of a bypass area to allow for passing. All resources output nodes Entity Destination Type are set to 'Input@Dump' so that all the entities are dropped off at the dump. The trains Transport Logic Task Selection Strategy is based on 'Smallest Priority'. the trains will pick up the ore in the order it was created. Bypass Siding Because the Bi-Directional track only allows traffic moving in one direction at a time. . Packages are transported through a conveyor for shipment. A Pallet holds six products. The general process flow is as follows: l l l l l Four types of products are created. All Rights Reserved. The packaging is done at the palletizer. Products Four Sources create four types of products each flowing on a separate conveyor.Example General Description This model represents a packaging system.Simio D oc umentation PackagingSystem . Shipping Pallets are transported through a C onveyor to the Shipping station where they get destroyed. In this model. The conveyor travel logic Entity Alignment is set to ‘C ell Location’ to represent the hooks position along the conveyor. Pallets The Source PalletSupply creates pallets that are transported to the Palletizer through a Power and Free Monorail that is modeled as a C onveyor. Palletizer Packaging is done at the Palletizer which is modeled using a C ombiner. Products are transported on conveyors. The Shipping station is modeled as a Sink. Pallets are transported from the Pallet Supply to the palletizer through a conveyor. l l l The Soda and Toy products merger Grab Bags and Golf C lubs merger C omplete merge of the four products at the merging zone After the last merger. Send comments on this topic to Information C opyright 2006-2011. The merging takes place in three stages. products represent the C ombiner members while the pallet represents the C ombiner parent. Simio LLC . the products continue their way to the Palletizer on a conveyor. The general process flow is as follows: l l l l l l Two types of visitors enter the theme park.VisitorsMix. This is specified on the vehicle‘s Routing Logic where the Routing Type was set to ‘Fixed Route’ and Route Sequence was set to ‘Shuttle Route’. Send comments on this topic to Information C opyright 2006-2011. Useful Tips Right-click on the path. This control appears in the experiment because it is a property on the main model. Shuttle riders need to wait for the ride at the shuttle shelter. l l The Walkers walk directly to the attractions. Visitors who like to walk to attractions (walkers) are created 30% of the time while visitors who like to ride the shuttle (ShuttleRiders) are created 70% of the time. Visitor Networks Both types of visitors are assigned different networks in the entity Travel Logic Initial Network. ‘Number of Shuttles’. This is generated through the use of the expression ‘VisitorsData.Example General Description This model represents the transportation alternatives provided to theme park visitors to access the rides. The ‘Number of Shuttles’ property is referenced from the Initial Capacity property on the Shuttle Vehicle object. The Walkers walk to the exit while the ShuttleRiders wait for the bus to drop them at the exit. 30% percent of the visitors walk to the attractions while the other 70% rides the shuttle. Setting paths to different networks allows us to specify a specific route for each depending on their transportation preference. Walkers walk directly to the attractions. It determines the average time that a visitor spends in the park.Simio D oc umentation ThemePark . After enjoying the theme park attractions. *The number of the available shuttles is a numeric property.RandomRow’ in Table Reference Assignments of the Source object. . The ShuttleRiders walk to the shuttle entry area stop where they have to wait for a ride. Shuttle Route The shuttle runs on a fixed route. All Rights Reserved. The average time in system is the only response defined in this experiment. *An experiment is used to assess the number of shuttles that should be used in order to improve the visitors’ time in system. Experiment An Experiment exists on the main model that varies the input of one C ontrol. The ‘Shuttle Route’ is a user defined Sequence Table. Simio LLC . *The shuttles have a fixed route to pick up and drop off visitors. polyline or rectangle and select Lock Edits to lock them and be able to move them without affecting the animation or the newly defined shapes. Detailed Description Visitors Arrival One Source creates two types of park visitors based on the visitors data table mix. the visitors exit the park. The shuttle drops the visitors next to the attraction. Send comments on this topic to Information C opyright 2006-2011. The drop off is done randomly by setting the Selection Goal to ‘Random’. . it is prepopulated with the correct values and symbol. signifiying this product has already been stored for a period of time. creating a seperate token for each row. we add a OnRunInitialized Process in the Process window. * This example uses a subclassed server ‘MyServer’. The forklift knows where to drop the products by setting PickUp node Entity Destination Type to ‘Select From List’ where the list includes the input nodes of the storages. so that when placed in the model. Then we assign a small processing time. To create these entities at the beginning of the run. A forklift picks up the products for storage. The general process flow is as follows: l l l l Products are generated and processed at the finish machine. And then we transfer to the storage areas. which is a Server. Shipping The products are picked up from the storages by a second forklift that delivers them to the shipping truck.Simio D oc umentation WarehouseExample . Each storage area has its Initial WIP defined in a table. we decide to model these storages as a subclassed server ‘MyServer’ to avoid repetitive value settings. The forklift is triggered through setting the storage area’s output node’s Ride on Transporter property to ‘True’. Useful Tips Note the use of polylines to define the path decorator of the forklifts circuits. The External View and the default values for the ‘ProcessingTime’ and ‘IntialC apacity’ properties were altered in the MyServer’s Definitions tab. initial capacity and external view. Storing the Product The warehouse contains 12 storage areas. These tokens exit through the found branch and create the amount of Product defined in the ‘InitialWIP’ column. The products are dropped off at a Server with zero processing time where they are loaded onto a conveyor to the shipping station that is modeled as a Sink. Products are loaded into a truck for shipment. The products are picked up by a forklift after being processed by the Finish machine.Example General Description This model represents a warehouse. Detailed Description Initializing the Storage Areas We initialize the Storage Areas with and Initial WIP. Properties panel. A second forklift picks up the stored products from the storages to the shipping dock. Storage Areas As the storages share the same processing time. All Rights Reserved. Table1. The process searches Table1. Simio LLC . the entity should be transferred immediately to given a specific location (Transfer step).Movement. you would use 'Server1. and you can employ as many streams within your model as you desire.NET code. however you can specify a different stream by appending the optional stream parameter for each distribution. All Rights Reserved. For example. Wait. you indicate where you would like the vehicle to be located at the start of the simulation run. For example. By default all random samples are taken from internal stream number 0. etc. See also the C ustom Simio Extensions page for more information.ResourceState. place the pie chart and select Data Type as 'ListState'. l Does Simio's API work with popular database like Access. Select the object name from the List State property field pull down. To display all the object states within a pie chart.ResourceState' to provide the statistics on the first unit of the worker1 objects (as the Initial Number in System property may be greater than 1).ResourceState. a path needs to be drawn between these two nodes.0. For example. For example. check the Initial Node (Home) property of the vehicle.Simio D oc umentation Frequently Asked Questions l How can I graphically show the utilization of a server or resource? You may utilize the ResourceState of the server or resource to display the state of the object either in a pie chart format or a status label. you may wish to use a status label with the ResourceState within an expression. You would create your own custom Step (and possibly an Element) that would connect to your database of choice. .PercentTime(1)' in the Expression field of a status label to display the percentage of time that Server1 is processing (which is state value "1"). select Status Pie from the animation ribbon. Select the object name from the List State property field pull down. we have SimBits which are small examples that demonstrate a particular modeling situation or set of constructs.ResourceState' or 'Resource1.PercentTime (StateValue)' will provide the percentage of time that an object is in a given state. By specifying a home location for a vehicle. but the vehicle does not move. However. l I used the Add-On Processes to C reate a new entity. I see the entity moving up in space when it shouldn't be.Uniform(3.ResourceState. the function 'ObjectName.0 XYZ location and start moving at the specified movement speed. You must also add the specific unit that you would like to have displayed. such as a worker or vehicle? Like static objects. you may wish to use a status label with the ResourceState within an expression. See the Simulation Replications and Distributions pages for additional information.PercentTime(StateValue)' will provide the percentage of time that an object is in a given state. it will be seen at the 0. such as 'Server1.5. The initialization seeds for each stream are automatically set by Simio.ResourceState'. l Are there random number streams within Simio and if so. Send comments on this topic to Information C opyright 2006-2011.ResourceState' or 'Vehicle1. you may utilize the ResourceState of the worker or vehicle to display the state of the object either in a pie chart format or a status label. there is nothing specified and its home location will be the first object that was placed in the model.1) returns a random sample from a uniform distribution between 3 and 5 using random stream number 1. such as 'Worker1. select Status Pie from the animation ribbon. By default. how do I use them? The random numbers within a Simio model are generated from independent streams. To show the percentage of time an object is in a specific state. Simio LLC . Oracle or SQL.ResourceState. You may stop this movement by assigning ModelEntity. To show the percentage of time an object is in a specific state.PercentTime(1)' in the Expression field of a status label to display the percentage of time that Worker1[1] is busy (which is state value "1"). place the pie chart and select Data Type as 'ListState'. Also. The SimBits page categorizes these models based on their functionality. Execute. The ListStates page provides the state values (bewteen 1-7) for various objects. If the entity is first sent to some type of delay step (Delay.ResourceState'. l Does Simio have examples that I can see for various modeling situations? Yes. We provide a couple of Visual Studio templates to get you started writing a custom Step or Element. Thus.). What happened? When you use the C reate step to generate a new entity. The ListStates page provides the state values (bewteen 1-7) for various objects. l How can I graphically show the utilization of dynamic object. for a vehicle or worker to move from the entry point of a server to the exit point of the server. Worker1[1] or Worker1[2]. perform your selected tasks and then return information to Simio. To display all the object states within a pie chart. or SQL? Simio's API can be used to access databases such as Access. your List State should then be 'Worker1 [1]. They can be installed with the tool that is found under the Advanced folder in the Simio folder found in your Start Menu. For example Random. you would use 'Worker1[1]. for example. For example. Our custom Steps and Elements can be written in any . l I built a model with a vehicle.Rate = 0. What happened? It is most likely that your vehicle has no path to move where it needs to go. the function 'ObjectName. Modeling and animation are done as a single step in Simio. Steps. The objects that are placed in the Facility Window are user-defined and are stored in libraries. the user should think in terms of the physical objects that make up the system. Simio also provides the user with the ability to create their own object definitions. The user defined objects are stored in the Project Library. Simio allows a user to create their own Design Add-Ons (such as the Source. These can be created from any of the five classes of Object Types. Server. Sink Add On avialable in the Project Home tab). Elements. All Rights Reserved. And Simio provides a number of tools for enhancing the animation and for importing and downloading symbols into the model. User Selection Rules. .Simio D oc umentation Modeling in Simio In Simio. and Data Table importers. A Simio library contains object definitions that represent the physical components of a system. The users places these objects in the Facility Window and they interact based on their internal logic. Send comments on this topic to Information C opyright 2006-2011. Simio has a Standard Object Library that includes 14 pre-built object definitions that can be used to model a wide range of systems. Simio LLC . For more information on integrating custom code into Simio. see C ustom Simio Extensions. for a model of object class Fixed. It is used to navigate between different models within the project. The Navigation Window .Simio D oc umentation Navigation The Navigation window is found in the top right side of the interface. The type of windows that are available for a particular model depend on the object class of the active model. Therefore. a right click will give the user a choice to add a new fixed object class Model. the model windows in the main part of the interface are now associated with the model that is highlighted in the Navigation window. Dashboard and Results windows are shown. Data. add a new Experiment to this model. it becomes the active model.Right Click Menus Send comments on this topic to Information C opyright 2006-2011. When the Project is selected in the Navigation window. to Experiments. Data. This is because it does not make sense for an Entity object to have a Facility Window or a Results Window.MyWorkstation is the Active Model Navigating between the different models within the project is done through the Navigation window. view the model properties or delete the selected model. When a Model is selected in the Navigation window. the Facility. For example. add a new Entity model. to project Symbols and to the Simio Start Page. and Dashboard are shown. only Processes. Processes. . However. Simio LLC . Definitions. All Rights Reserved. rename the selected model. above the Properties window. add a new Entity model. for a model of object class Entity. Definitions. a right click will give the user a choice to add a new fixed object class Model. The Navigation Window . When a user clicks on a model in this window. navigate to the Project window. rename the project and view the project properties. See the Symbols page for additional information on Symbols. rename. And finally. The Experiment Panel This is where a user can add new experiments to their models. Symbols exist at the project level and can be used in all the models that exist within the project. To view the properties of each model. This simply copies the model into this project and therefore the user cannot override the inherent logic of the model. All of the models that are contained with the project are displayed in this window and organized by their class type. New models can be added to a project in a few different ways. The properties of an experiment can be viewed in the Properties window by selecting the appropriate experiment. view the properties of an experiment. ready for editing. a right click will allow the user to either delete the model or edit the model. It contains all of the models. they are navigated away from the project window and the Facility window of that particular model is now displayed. A third option is to subclass a model that exists in an attached library. simply select the appropriate model and its properties are shown in the properties window in the bottom right of the interface. a user can simply copy a model into this project from an attached library by selecting the Copy From Library icon in the ribbon. downloaded and created from this panel. symbols. experiments. When the model is selected. and rename. The experiment can be edited with a double click or a right click. A new experiment is added to a model by selecting the appropriate model from the the Add Experiment drop down of the ribbon. There might be models that exist in the Standard Library that the user would like to subclass or models that exist in a library that the user loaded into this project. A model can contain more than one experiment. The Project Window The Models Panel The Models panel is selected by default when the Project window is first opened.Simio D oc umentation Project Window The Project Window is accessed by clicking on the name of the project from within the Navigation window. The Symbols Panel A user can view. Notice that an experiment is at the model level and not at the project level. edit and delete the symbols that exist within the project from the Symbols panel. See the Experiment page for additional information on creating and running experiments. Another option for creating a new model is to subclass a model that exists within the current project. See C reating New Objects for additional information on how to create a new model. . New symbols can also be imported. This is done by selecting the appropriate object class type from the New Model icon in the ribbon. and path decorators that a user has in their project. This is done by selecting the model to subclass and clicking Subclass Model from the ribbon. One option is to add a new model that does not contain any logic so that the user can customize it from scratch. Select the Subclass From Library icon in the ribbon to subclass a model from an attached library. A model can be password protected by selecting the Protect icon from the ribbon when the model is highlighted. edit and delete experiments. textures. If the user selects Edit. Simio LLC . rename and delete textures that exist within the project from the Textures panel. renamed and deleted from this panel. Textures exist at the project level and can be used in all the models that exist within the project. Path Decorators Panel Path Decorators can be viewed. . New textures can also be added to the project from this panel by selecting the New Texture icon in the ribbon. Send comments on this topic to Information C opyright 2006-2011. A Path Decorator is added to a link from within the Facility Window.The Textures Panel A user can view. All Rights Reserved. Simio D oc umentation Model Windows Windows The following windows can be accessed using the Model Window tabs. . l l l l l l The The The The The The Facility Window Processes Window Definitions Window Data Window Dashboard Window Results Window Model Window tabs Send comments on this topic to Information C opyright 2006-2011. Simio LLC . All Rights Reserved. etc. Add link vertices by clicking at each location. if the value of Y is '0'. as shown in the image below. The Facility Window is where the appearance of an object can be changed for the purposes of animation. The Run tab is where the user can start an interactive run of the model. If they are attached to Entities or Transporters. This is controlled on the View tab. The text of an object's Description property will appear within the Facility window when the mouse is hovered over the object. add breakpoints. Description Text on an Object Send comments on this topic to Information C opyright 2006-2011. and Buttons can also be placed in the Facility Window from the Animation Tab. can be cut /copied / pasted within the Facility Window using C trl-X (C ut). rectangles. and finish link drawing mode by clicking on the ending node.g.Simio D oc umentation The Facility Window The Facility Window The Facility Window defines the model in terms of animated objects. When in this mode each left click places a new object. C trl-D (Delete) is currently supported only within the Facility window. You can also enter link drawing mode by double clicking on the starting node. Floor Labels. You exit this mode by right-clicking or pressing the Esc key.0). Arrows. And the View tab allows the user to change the view of the Facility window from 2D to 3D. adding symbols or importing symbols. Objects from the Standard or Project libraries. They can also be attached to objects in the Facility Window. begin the trace. as well as items from the Draw and Animation ribbon tabs. All Rights Reserved. see the Dashboard page. Additional information on changing the view can be found here. Path. Please refer to the User Interface for more details. and C trl-V (Paste). to the Facility Window. C ircular Gauges. Multi-Select of objects for the purpose of moving. Labels. which indicates where this object is located in the Facility Window in relation to the grid point (0. Nodes and Queues can be visible or hidden in the Facility Window. MyServer. Objects can be placed into the Facility Window by either dragging them from the Standard Libary or from the Project Library. . C onveyor) between nodes by either clicking on the link in the library and then the click on the starting node which places you in link drawing mode. copying and/or deleting the objects is supported in the Facility window. Source. Each object (excluding Links) has a property called Location. It also provides other options for changing how the user can view the Facility Window. Status Plots. Add an object to your model by dragging it from either the Standard Library (e. Sink) or from the Project Library (e. Add multiple objects for a model by double clicking on the model in the library. adjust the animation speed and specify the starting and ending times. The Grids.g. The Symbols tab in the ribbon menu provides options for changing the appearance of symbols. To learn more about these displays. the object is sitting on the floor. The Location property is the center point of a node and the bottom center of a fixed object. lines. Server. which places you in add-repeat mode. Status Pies. Linear Gauges.g. Axes. Status Labels. For example. MySubmodel). Multiselect of objects is also useful for editing similar properties of objects in the Property grid. they will travel with those dynamic instances. The Drawing tab allows the user to add static symbols. Add links (e. Simio LLC . C trl-C (C opy). ellipses. The user can specify a triggering event (in the Process Properties Window) for these new processes.) Adding a Standard Process Steps are added to processes by clicking and dragging from either the C ommon Steps panel on the left or from the All Steps(A-Z) panel on the bottom left. Whenever the specified event is fired. (An object is a Resource object if its Resource Object property is set to 'True'. Process Element Properties . Any custom user created steps will appear in the User Defined steps panel on the bottom left. you do not need to specify a triggering event. Examples of an Event that might be used are Server1. For example. the OnRunInitialized process is executed when this object/model is first initialized. Timer1. or Event1 (which might be a user defined Event that is fired by a Fire Step). The user can create a new process with the C reate Process icon in the ribbon menu. All of the C ommon Steps are also listed in the All Steps panel. Process logic is typically used for creating new models or for adding custom logic to the objects in your model through "add-on" processes. The OnC apacityReleased is executed as soon as the capacity of this object/model has been released. There is no need to define a triggering event for these processes because Simio executes them automatically.Event (which might be a user created Timer element). The capacity related standard processes will only appear in the drop down if this object is a Resource object. another way for this process to be called is from an Execute Step located somewhere else in the project. Besides using a triggering event to execute a new process. Creating a New Process with a Triggering Event A user can also add one of the standard processes that are automatically executed by Simio by selecting one from the drop down under the Select Process icon.Simio D oc umentation The Processes Window The Processes Window Adding Processes and Steps The Processes Window defines the model logic in terms of traditional process flow comprised of a sequence of steps that are executed by tokens and change the state of elements. this process is executed. In either of these latter cases. Yet another way to call a process is to specify it as an add-on process in a Standard Library object.C apacityC hanged. then move the endpoints of its outgoing segments by clicking and dragging on the little circles on the end of the segment. If the action is 'EndProcess'. Documenting Your Process We encourage you to take advanatage of the features added to make your processes and the trace they generate easier to use. This is done by selecting the process to be copied and either selecting the C opy icon from the Project Home Tab or by hitting C TRL-C . Paste. The action taken by a token in this process if the token's associated object requests a transfer to a new location. change it to something more meaningful like 'DecideIfAtDestination'. . but will also make trace easier to interpret. C ut. And customizing the Name for each step (Press F2) will not only make the process more self-documenting. On Associated Object Transfer Requested Token C lass Name Initially Enabled Navigating the Processes Window A user can zoom in on an individual process by clicking on the '+' key and zoom out by clicking on the '-' key. All Rights Reserved. Simio LLC . Specifies whether the process is enabled when the system is initialized. If the action is 'EndProcess'. will produce a menu giving the user a choice to C opy. Right Clicking within a Process A user can change where any segment from a step goes. If pasting into a document. paste the bitmap. A right click within a Process. Send comments on this topic to Information C opyright 2006-2011. The token class that all tokens executing this process will be created from.Listed below are the properties of a Process: Property Triggering Event On Associated Object Destroyed Description The name of an event that will trigger a new token to execute the steps in this process. select the step. instead of leaving the default 'Decide1' name on a Decide step. A disabled process igonores any attempt to execute the process. And the image of a Process can be copied onto the clipboard. then the token will automatically end processing upon exiting its current step. The action taken by a token in this process if the token's associated object is destroyed. for example. then the token will automatically end processing upon exiting its current step. To do this. Rename or Delete the Process. adding a Description to each process that describes what the process does will make it easier for you and others to understand its function. In particular. So. If a Step contains a Repeat Group property (i. or wait. Steps are organized into groups within the Processes Window. the expression is evaluated at the start of the run to determine if it should be excluded. an Assign Step with multiple rows). you can view the information inside of the Repeat Group without having to open the details in the properties window.e. this step will be excluded and the tokens will flow directly to its primary exit point. This property is used in some of the Steps that exist within the logic of the Standard Library objects. If this expression evaluates to 2 and the step has a secondary exit. All Steps and User-Defined Steps. in order to increase run speed and eliminate unnecessary Steps from being evaluated during a run. They include the C ommon Steps. Note: Tokens execute Steps in a process. A Step often acts on either the token’s ‘AssociatedObject’ or the ‘ParentObject’. if you hover over the Step within the Process. delay. All Rights Reserved. Each step performs an action such as seize. Simio LLC . which is often the overall Model. . The Associated object is typically an object that the token is representing. The user can place an expression in this property of a Step in order to control whether or not that Step is evaluated during a run. the step will be excluded and the tokens will flow to the secondary exit. Steps are stateless. but may change the state of an element/token/entity/object. such as an entity. If specified.Simio D oc umentation Steps Steps are used to define logic within your simulation model. decide. it will remain active during the run. If this expression evaluates to 1. If the expression evaluates to any other value. All Simio Steps have a special property called Exclusion Expression. Hovering over a Step that contains information in a Repeat Group property Send comments on this topic to Information C opyright 2006-2011. The Parent object is the object that contains the process where the step is being used. Execute step may be used to execute a specified process. Destroy step destroys either the parent object or the executing token's associated object. SetNode step may be used to set the destination node of any entity object. . The executing token will be held in the Move step until the resources have arrived to the requested locations. Send comments on this topic to Information Copyright 2006-2011. Fire step may be used to fire an object event. Delay step delays the arriving token in the step for the specified time duration. Simio LLC.Simio D oc umentation Common Steps The C ommon Steps library includes some of the most commonly used steps including: Assign step is used to assign a new value to a state variable. Wait step may be used to hold the arriving token in the step until a specified event occurs. Transfer step may be used to transfer the entity object associated with the executing token between objects and between free space and objects. C reate step is used to generate objects into the system. Decide step may be used to determine the flow of a token through process logic. EndTransfer step may be used to indicate that the entity object associated with the executing token has completed transfer into an object or station. Search step may be used to search a collection of objects. Tally step tallies an observation for each token arriving to this step. All Rights Reserved. Move step may be used to request a move from one or more moveable resources that have been seized by either the parent object or object associated with the executing token. Release step releases capacity of one or more objects on behalf of the parent object or the object associated with the executing token. Seize step may be used to seize capacity of one or more objects on behalf of the parent object or the object associated with the executing token. Delay step delays the arriving token in the step for the specified time duration. Seize step may be used to seize capacity of one or more objects on behalf of the parent object or the object associated with the executing token. Move step may be used to request a move from one or more moveable resources that have been seized by either the parent object or object associated with the executing token. SelectVisit step may be used to set the destination node of the parent transporter object to a pickup location that was accepted using the PlanVisit step. Ride step may be used to initiate a transporter ride request for an entity object at a node. C onsume step consumes the specified quantity of a material . Execute step may be used to execute a specified process. Notify step may be used to output a user defined trace or warning message. Repair step ends a downtime of type Failure Name. Arrive step may be used by an entity object to notify its accepted visit requests that the entity has 'arrived' to its current location. Route step may be used with a RoutingGroup element to route an entity object to a destination selected from a list of candidate nodes. Dropoff step may be used by a transporter object to drop off a riding entity into the transporter's current node. Pickup step may be used by a transporter object to pick up an entity waiting in the ride pickup queue of the transporter's current node. C reate may be used to create new object realizations of a specified object instance type. Engage step may be used to lock an entity's location to a location on the parent link object. Fail step starts a downtime of type Failure Name. PlanVisit step may be used by a transporter object to search for and accept a pickup reservation request in the system. Batch step may be used in conjunction with the BatchLogic element to match multiple entities together.or the exploded bill of material. Search step may be used to search a collection of objects. Release step releases capacity of one or more objects on behalf of the parent object or the object associated with the executing token. EndTransfer step may be used to indicate that the entity object associated with the executing token has completed transfer into an object or station. SelectDropoff step may be used to set the destination node of the parent transporter object to the dropoff location of a riding entity. Resume step may be used to resume a process or to resume the movement of an object. Interrupt step may be used to interrupt process delays. Disengage step may be used to unlock an entity's location from a location on the parent link so that the link and entity may move independently. EndOperation step ends the operation. Assign step is used to assign a new value to a state variable.either at the top level only .. Destroy step destroys either the parent object or the executing token's associated object. Fire step may be used to fire an object event. The executing token will be held in the Move step until the resources have arrived to the requested locations. form those entities into a batch. Remove step may be used to remove an object from a specified queue. and then attach the batched members to a parent entity. EndActivity step ends the current activity within an operation.or at the exploded bill of material. Park step may be used to move an entity object into the parking station of a node.either at the top level only . Decide step may be used to determine the flow of a token through process logic. . These steps provide the runtime logic for the simulation and include: Allocate step may be used to manually trigger an allocation attempt of the parent object's available resource capacity (if any) to other objects waiting for units of that capacity. Insert step may be used to insert an object into a specified queue.Simio D oc umentation All Steps The All Steps (A-Z) library includes all of the Simio steps. Produce step produces the specified quantity of material . StartActivity step starts the next activity in a reserved operation. indicating that the process is to be executed if the event occurs. SetRow step may be used to assign a data table row or sequence table row to a token or object. . SetNode step may be used to set the destination node of any entity object. Simio LLC. Subscribe step may be used to add a new triggering event for a process. Tally step tallies an observation for each token arriving to this step. Wait step may be used to hold the arriving token in the step until a specified event occurs. Send comments on this topic to Information Copyright 2006-2011. UnPark step may be used to move an entity object out of the parking station of a node.SetNetwork step may be used to set the network of links used by an entity to travel between node locations. All Rights Reserved. VisitNode step may be used within a node object's logic to initiate the OnVisitingNode process of the entity associated with the executing token. UnBatch step may be used to remove batch members from the parent entity object associated with the executing token. Transfer step may be used to transfer the entity object associated with the executing token between objects and between free space and objects. UnSubscribe step may be used to cancel a triggering event for a process. StartOperation step starts an operation. Suspend step may be used to suspend a process or to suspend the movement of an object. ).Simio D oc umentation User Defined Steps Simio provides an open architecture that allows users to add new steps and elements to the system. Steps and elements may be coded in any .NET language (Visual Basic.dll files to the UserExtensions folder of Simio. For additional information on creating your own custom Steps. J#. You would simply add your *. and Write. PassThruGate. Send comments on this topic to Information Copyright 2006-2011. See Simio Visual Studio Templates for information on how to use the templates provided by Simio to get started with User Defined Steps. Read. Simio LLC. Simio provides several sample User Defined steps including C loseGate. C #. etc.chm. see C ustom Simio Extensions and C:\Program Files\Simio\Simio API Reference Guide. All Rights Reserved. . OpenGate. All Rights Reserved.Simio D oc umentation CloseGate CloseGate The C loseGate user defined step may be used to close a specific gate name. Description The name of the gate to close. . The C loseGate step is used in conjunction with the OpenGate and PassThruGate user defined steps and the BinaryGate user defined element. Simio LLC. Listed below are the properties of CloseGate: Property Gate Send comments on this topic to Information Copyright 2006-2011. Listed below are the properties of OpenGate: Property Gate Send comments on this topic to Information Copyright 2006-2011. All Rights Reserved. . Simio LLC. The OpenGate step is used in conjunction with the C loseGate and PassThruGate user defined steps and the BinaryGate user defined element. Description The name of the gate to open.Simio D oc umentation OpenGate OpenGate The OpenGate user defined step may be used to open a specific gate name. Listed below are the properties of PassThruGate: Property Gate Description The name of the gate to pass through. . All Rights Reserved. If the gate is currently closed.Simio D oc umentation PassThruGate PassThruGate The PassThruGate user defined step allows tokens through a specific gate name if it is opened. The PassThruGate step is used in conjunction with the OpenGate and C loseGate user defined steps and the BinaryGate user defined element. Send comments on this topic to Information Copyright 2006-2011. the token will wait here until the gate opens. Simio LLC. csv or. xls file should have a comma listed in the Separator property so that each individual cell is read into a State. The state values to read the values into. as well as String states and DateTime states. Note that if you read values into a State. The Read step is used in conjunction with the File user defined element. If the Separator property is left blank.Simio D oc umentation Read Read The Read user defined step may be used to read data into the model from a file. All Rights Reserved. . In order to read in individual values. one entire line in the file will be read into one State. Description The name of the file from which to read. The character that is separating the numeric values in the file. enter the appropriate character into the Separator property. Simio LLC. Listed below are the properties of Read: Property File Separator State Send comments on this topic to Information Copyright 2006-2011. For example. The Read step supports reading to and from Numeric states. a . it must be numeric since States cannot hold non-numeric characters. See the WritingToAFile SimBit for an example on how to use the File Element. Format Items Note: If you are running Windows 7 and trying to have the Write Step write to the C drive. Simio suggests that you consider writing your files to your Documents folder.Simio D oc umentation Write Write The Write user defined step may be used to write data from the model to a file. For example. All Rights Reserved.csv type file. This provides the format of the string to write out. it will use a comma-separated format. as well as String states and DateTime states. If none is provided. When writing to a . you will need to change your UAC (User Access Control) so that is allows you to write files to the C drive. {0} will reference the first item specified. . To reference an item from the items specified in the Item Property when writing to a text file. The Write step is used in conjunction with the File user defined element. Simio LLC. that will result in a value to write out. {1} the second item. specified by this expression. Listed below are the properties of Write: Property File Description The name of the file into which to write. The item(s). The Write step supports writing to and from Numeric states. etc. the following sentence can be specified in the format property: There are {0} parts of type {1} at time {2}. Send comments on this topic to Information Copyright 2006-2011. File is defined with the File User Defined Element on the Elements tab of the Process Window. the format field can be left empty since it uses a common-separated format by default. use balanced brackets {}. Send comments on this topic to Information Copyright 2006-2011. All Rights Reserved. . Simio LLC.Simio D oc umentation Steps Reference This Steps Reference section has detailed information for all steps in Simio. Send comments on this topic to Information Copyright 2006-2011. All Rights Reserved. .Simio D oc umentation Allocate Allocate The Allocate step may be used to manually trigger an allocation attempt of the parent object's available resource capacity (if any) to other objects waiting for units of that capacity. Simio LLC. Simio D oc umentation Arrive Arrive The Arrive step may be used by an entity object to notify its accepted visit requests that the entity has 'arrived' to its current location. All Rights Reserved. Note: This Step can only be used from within an Entity object. Send comments on this topic to Information Copyright 2006-2011. Simio LLC. . Simio LLC. . All Rights Reserved. Description Name of the state variable that will be assigned a new value.Simio D oc umentation Assign Assign The Assign step may be used to assign a new value to a state variable. Listed below are the properties of Assign: Property State Variable Name New Value Assignments (More) Assignments (More). LogicBasedOnEntityState. The new value to assign. RecordDistanceTraveled and SimpleTank. For examples of using the Assign step. visiting entity. The state specified can be owned by the token. A repeating set of assignments. please refer to the SimBits LearningC urveWithFunction.New Value Send comments on this topic to Information Copyright 2006-2011. The new value to assign.State Variable Name Assignments (More). or member element. parent object. Name of the state variable that will be assigned a new value. LeveledArrivals. Simio LLC. All Rights Reserved. Specifies if a parent entity or member entity (to be attached to a parent) is executing this Batch step. and then attach the batched members to a parent entity. form those entities into a batch.Simio D oc umentation Batch Batch The Batch step may be used in conjunction with the BatchLogic element to match multiple entities together. . Listed below are the properties of Batch: Property BatchLogic Name C ategory Description The name of the BatchLogic element that defines the batching logic for this Batch step. Send comments on this topic to Information Copyright 2006-2011. The material which is to be either specifically consumed or whose bill of materials is to be consumed by this step. All Rights Reserved. For the Top level the specified quantity of this material is directly consumed. Only the first waiting entity in the Material queue is eligible for allocation. The name of the activity that holds the material consumption information. The C onsume step works in conjunction with the Produce step. the token waits at the C onsume step. the C onsume step will use the material produced. . A token waits at this step until all quantities have been allocated. the Produce step should be used to increase a material's quantity and once that is done. Listed below are the properties of Consume: Property C onsumption Type Material Name Quantity Activity Name Description The method used to specify the material to be consumed. where quantity is the quantity in the bill times the top level quantity (typically 1). Elsewhere in the model. For the BOM level the material listed in the "bill of materials" is consumed by the token. Simio LLC. Allocations are made incrementally as material becomes available.or the exploded bill of material. The quantity to consume.either at the top level only . Send comments on this topic to Information Copyright 2006-2011.Simio D oc umentation Consume Consume The C onsume step consumes the specified quantity of a material . If the quantity of all the bill of materials in the C onsume step is not available. Therefore. All Rights Reserved. When an object is created by CreateType= ’C opyParentObject’ or ‘C opyAssociatedObject’. The object instance type from which new object realizations will be created. If you use 'NewObject'. Simio LLC. Object Instance Name Number Of Objects Send comments on this topic to Information Copyright 2006-2011. . 'C opyAssociatedObject' creates a copy of the object associated with the token executing the C reate step. including the Original and the C reated exits. Listed below are the properties of Create: Property C reate Type Description The creation method. When an object is created using CreateType = 'NewObject'. The number of objects to be created. please refer to the SimBits C ONWIP and DynamicallyC reatingVehicles. this allows you to use token states (if you wish) as temporary place holders for copying selected values over. A token for the newly created entity will first exit from the 'C reated' exit and proceed until a delay type step occurs for the token or its associated entity.Epsilon function may be used in a Delay step for the created token to affect the order of event processing. such as on a Link or into a Station or Node. all state values are copied from the original to the new object. if you have created a ‘NewObject’. at the object instance location. it is placed into Free Space within the Facility Window. If you use the 'C opyParentObject' for CreateType.Simio D oc umentation Create Create The C reate step may be used to create new object realizations of a specified object instance type. the newly created object will have the default state values. 'NewObject' creates new objects of the specified instance type. in order to place the new object in a specific location. 'C opyParentObject' creates a copy of the parent object. There are two exits from the C reate step. Then the original token will exit the 'Original' exit. The Math. For examples of using the C reate step. A new token associated with a created object will exit the 'C reated' exit point of the step. Thus. you might need to use a Transfer step directly following a C reate step. This property may be specified as an expression truncated to integer. it is initially located in Free Space at the same location as the original object that was copied. Note that the new token exiting the ‘C reated’ exit point is going to have all the same state values as the ‘Original’ executing token (regardless of whether creating a copy or creating a new object). The probability or condition specified as an expression. For examples of using the Decide step. The arriving token exits either the 'True' or 'False' exit point based on the specified probability or condition.Simio D oc umentation Decide Decide The Decide step may be used to determine the flow of a token through process logic. If a condition. Simio LLC. If a probability. . The Decide Step evaluates an Expression so any properties that are referenced in the Decide step must be expression properties. then enter the chance of selecting 'True' as a value between 0 and 1 (including values of 0 or 1). then enter the logical condition. All Rights Reserved. Send comments on this topic to Information Copyright 2006-2011. Listed below are the properties of Decide: Property Decide Type Expression Description Indicates whether the decision is based on a probability or condition. please refer to the SimBits SequentialProcessingByBatchSpecifiedInTable and MoveableOperator. Listed below are the properties of Delay: Property Delay Time Interruptible Description The duration of the delay. such as a Normal Distribution. . This can occur if you use an unbounded distribution that might produce negative values. Send comments on this topic to Information Copyright 2006-2011. NOTE: Simio will produce an error if a delay time expression returns a negative value. Indicates whether token delays at this step can be interrupted using the Interrupt step. This property may be specified using a random sample from a distribution. Simio LLC. All Rights Reserved. See Distributions for more information.Simio D oc umentation Delay Delay The Delay step delays the arriving token in the step for the specified time duration. within the Delay Time of the Delay step. Simio D oc umentation Destroy Destroy The Destroy step destroys either the parent object or the executing token's associated object.g. . All processes are immediately terminated for the destroyed object. Only object types supporting dynamic creation may be destroyed. All schedule events (e. Specified as either the object associated with the executing token or the parent object. All Rights Reserved. If the parent is destroyed then the token does not exit the step. end of step delays) are cancelled from the calendar. Simio LLC. Listed below are the properties of Destroy: Property Destroy Type Description The object to be destroyed. Send comments on this topic to Information Copyright 2006-2011. All Rights Reserved. The Engage step is used to engage an entity. Send comments on this topic to Information Copyright 2006-2011. Simio LLC. and the link is free to move at its own speed without being affected by the movement (or stoppage) of the entity.Simio D oc umentation Disengage Disengage The Disengage step may be used to unlock an entity's location from a location on the parent link so that the link and entity may move independently. . Once disengaged an entity is free to move across the link at its on speed. Note: This Step can only be used from within a Link object. then the arriving token will immediately exit the 'Failed' exit point of the Dropoff step. All Rights Reserved. Indicates whether to cancel the dropoff attempt if the location where the entity is to be physically dropped into is considered blocked. Listed below are the properties of Dropoff: Property Unload Time Fail If Blocked Description A delay required for unloading a rider from the transporter. such as a Normal Distribution. Send comments on this topic to Information Copyright 2006-2011.Simio D oc umentation Dropoff Dropoff The Dropoff step may be used by a transporter object to drop off a riding entity into the transporter's current node. . Simio LLC. Note: This Step can only be used from within a Transporter object. See Distributions for more information. This can occur if you use an unbounded distribution that might produce negative values. within the Unload Time of the Dropoff step. Use the Pickup step to pick up an entity waiting to ride. NOTE: Simio will produce an error if a delay time expression returns a negative value. If the dropoff attempt is cancelled. All Rights Reserved. . Listed below are the properties of EndActivity: Property Operation Send comments on this topic to Information Copyright 2006-2011.Simio D oc umentation EndActivity EndActivity The EndActivity step ends the current activity within an operation. Simio LLC. Description The name of the operation to reserve. . Listed below are the properties of EndOperation: Property Operation Send comments on this topic to Information Copyright 2006-2011. Description The name of the operation to reserve. Simio LLC.Simio D oc umentation EndOperation EndOperation The EndOperation step ends the operation. This step releases the parent resource and shifts any conflicting operation spans into the future. All Rights Reserved. All Rights Reserved. .Simio D oc umentation EndTransfer EndTransfer The EndTransfer step may be used to indicate that the entity object associated with the executing token has completed transfer into an object or station. Send comments on this topic to Information Copyright 2006-2011. Simio LLC. When an engaged entity arrives to the end of a link it forces the link to stop to remain coaligned at the engaged position. The Disengage step is used to disengage an entity. Once engaged. When engaged both the entity and moveable link location are coaligned and must move in unison. then the entity can only engage the link at fixed cell locations along the link's length. then the entity can engage the link at any location without waiting. If 'AnyLocation'. Send comments on this topic to Information Copyright 2006-2011. The entity will wait for the next cell to arrive before engaging the link. The entity engages the link using the link's EntityAlignment property setting of 'AnyLocation' or 'C ellLocation'. . The method used to align the entity on the link is determined by the link's EntityAlignment property. an entity remains engaged until it is disengaged by the Disengage step. If 'C ellLocation'. Note: This Step can only be used from within a Link object. Simio LLC.Simio D oc umentation Engage Engage The Engage step may be used to lock an entity's location to a location on the parent link object. All Rights Reserved. you would see the full logic of that specified process executed as part of the ‘OnRunEnding’ call. suppose the OnRunEnding interface process has an Execute step with action ‘WaitUntilProcessC ompleted’. then the original token is held at the Execute step until that other process is completed. the specified process is immediately executed. As long as the specified process runs with no delays. you would see the execution of the specified processes occur in the same sequence that the Execute steps were hit (FIFO order). If that process is completed with no delays. Listed below are the properties of Execute: Property Process Name Token Wait Action Send comments on this topic to Information Copyright 2006-2011. Otherwise. then the original token can immediately exit the Execute step and continues its processing. . The owner of the process can be the parent object or the associated entity. if the specified process did have delays. All Rights Reserved. the execution of the specified process is scheduled on the simulation calendar as an early current event. The arriving token either exits immediately or waits on the process to finish based on the Token Wait Action.Simio D oc umentation Execute Execute The Execute step may be used to execute a specified process. If the Token Wait Action is 'None (C ontinue)'. For example. For example. The action to take while the process is executing. Once the original token stopped running. suppose a token passes through multiple Execute steps (with action ‘None (C ontinue)’) in sequence. The original token then immediately exits the step. If the Token Wait Action is 'WaitUntilProcessC ompleted'. Simio LLC. Description The name of the process to execute. Description The type of failure to start. All Rights Reserved. . Listed below are the properties of Fail: Property Failure Name Send comments on this topic to Information Copyright 2006-2011.Simio D oc umentation Fail Fail The Fail step starts a downtime of type Failure Name. Simio LLC. It can be used in conjunction with the Wait step. please refer to the SimBits EntityMovementInFreeSpace and EntityStopsOnLink.Simio D oc umentation Fire Fire The Fire step may be used to fire an object event. Description The name of the event to fire. . For examples of using the Fire step. All Rights Reserved. Listed below are the properties of Fire: Property Event Name Send comments on this topic to Information Copyright 2006-2011. Simio LLC. Simio LLC. then this expression is interpreted as a specific rank index to place the inserted object. Send comments on this topic to Information Copyright 2006-2011. . Specifies whether the step is inserting the parent object or the object associated with the executing token. this overrides the queue state's ranking rule. If specified.Simio D oc umentation Insert Insert The Insert step may be used to insert an object into a specified queue. Refer to the Storage element to define a custom queue in the model. If the queue's ranking is SmallestValueFirst or LargestValueFirst. then this expression is interpreted as the inserted object's ranking value. If the queue's ranking rule is FirstInFirstOut or LastInFirstOut. All Rights Reserved. Listed below are the properties of Insert: Property Queue State Name Object Type Rank Placement Description The name of the queue state to insert the object into. The Interrupt step may be used to model resource preemption scenarios. The names of the additional processes with interruptible delay activity. The maximum number of process delay activities to interrupt. InterruptingAcrossMultipleServers. Listed below are the properties of Interrupt: Property Process Name Selection Rule Interrupted Process Action Description The name of the process with interruptible delay activity. This approach allows very flexible preemption capability with precise control over which entities are preempted and how the preempted entities are subsequently processed. Simio LLC.g. please refer to the SimBits InterruptibleOperator. allowing model logic to interrupt a process delay activity that is using a resource. A token delaying at a process' Delay step is considered a candidate for interruption if the 'Interruptible' property of the Delay step evaluates to 'True'. If the action is 'EndProcess'. This state variable assignment will be applied to the original token executing the Interrupt step. To add logic for handling interrupted items (e. To interrupt a token at a Server. C ombiner or Separator. the Interrupt step can create new tokens that are associated with the interrupted items.OnEnteredProcessing as the Process Name property of the Interrupt step. If the action is 'ResumeProcess'. These tokens will exit the 'Interrupted' exit point of the step. Process Names(More) Limit Save Number Interrupted Save Remaining Time Send comments on this topic to Information Copyright 2006-2011. Objects within the Standard Library that may be interrupted with the Interrupt step include the Server. it will interrupt the specified process and then the token will exit the "Original" exit of the step and continue processing. Once this original token completes its steps (or begins a delay type step). a token associated with the interrupted entity is created and will leave the "Interrupted" exit of the step and continue any specified steps.Simio D oc umentation Interrupt Interrupt The Interrupt step may be used to interrupt process delays. then the interrupted process delay will be immediately ended. then the interrupted process delay will be resumed for the remaining time delay once the new token created by the Interrupt step to handle the interruption occurence ends its processing. simply specify ObjectName. Within each of these objects. re-routing logic). the processing time delay is 'interruptible'. Optional discrete state variable to store the number of process delay activities that were interrupted. This state variable assignment will be applied to each token exiting the 'Interrupted' exit point of the Interrupt step. When a token enters the Interrupt step. . C ombiner and Separator. Optional discrete state variable to store an interrupted process delay's remaining time (in hours). All Rights Reserved. and InterruptingServerWithMultipleC apacity. For examples of using the Interrupt step. The rule used to select which process delay(s) to interrupt from one or more candidates.. Indicates how an interrupted process delay is to be handled. in order to release the resource for a higher priority activity. use the keyword 'C andidate' to reference an object in the collection of candidates (e.Destination Node Description The objects that will be requested to move. The priority of the move request if a PlanVisit or SelectVisit step is used by a resource to choose a visit destination from multiple candidates. Move Requests. C andidate.Move Request C ondition Owner Send comments on this topic to Information Copyright 2006-2011.Simio D oc umentation Move Move The Move step may be used to request a move from one or more moveable resources that have been seized by either the parent object or object associated with the executing token. The order in which to request moves from resources that have been seized by the owner object. Specified as either the object associated with the executing token or the parent object.Object Type Move Requests.ID) The object that has seized the resources to be moved.Object List Name Move Requests. This step may be used in conjunction with the Seize step and the Release step.Move Request Order Move Requests. An optional condition evaluated for each seized resource that must evaluate to true for the object to be eligible to move request. and the owner object requesting the movement is an entity object.Object.Number Of Objects Move Requests. The number of resource objects that will be requested to move. Listed below are the properties of Move: Property Move Requests Move Requests. and the owner object requesting the movement is an entity object at a node. The name of the resource object that will be requested to move. The name of the object list from which one or more resource objects will be requested to move.g. then this property defaults to that owner entity's current node. then this property defaults to that entity's Priority state value. The name of the specific node location that the resource(s) will be requested to move to.Move Priority Move Requests.Object Name Move Requests. If not specified. Simio LLC. The executing token will be held in the Move step until the resources have arrived to the requested locations. In the condition. The method for specifying the resource object(s) that will be requested to move. . If not specified. All Rights Reserved. . then the message will be handled according to the model's warning settings. Simio LLC. Optional text used as the heading for the outputted message. May be specified as either a string expression or as a literal string of characters enclosed in double quotes. The Warning Level in the Run ribbon is then used to determine where warning messages are displayed. All Rights Reserved. if specified. Any Trace messages are displayed within the Trace window. If specified as Warning. Optional condition that. Message Heading Message C ontent Notify C ondition Send comments on this topic to Information Copyright 2006-2011. then the message will be displayed in the trace window. May be specified either as a string expression or as a literal string of characters enclosed in double quotes. must evaluate to true for the message to be outputtted to the user. If specified as Trace. and the model trace is enabled.Simio D oc umentation Notify Notify The Notify step may be used to output a user defined trace or warning message. Optional text used as the content for the outputted message. Listed below are the properties of Notify: Property Notification Type Description The context of the outputted message. The entity object to be parked. Listed below are the properties of Park: Property Node Name Description Name of the node owning the parking station where the entity will be parked. The Token Wait Action property indicates whether the token is going to wait in the step until the transferring entity ‘Transferring’ or ‘Transferred’ event is fired. Simio LLC. Options include WaitUntilTransferredEvent and WaitUntilTransferringEvent. Specified as either the object associated with the executing token or the parent object. All Rights Reserved. Object Type Token Wait Action Send comments on this topic to Information Copyright 2006-2011. The wait action to be taken by the token arriving to the Park step.Simio D oc umentation Park Park The Park step may be used to move an entity object into the parking station of a node. then the first node found in the system. Defaults to the entity's current node or. . if not at a node. . See Distributions for more information. The token is held in the Pickup step until the entity transfer is completed. Note: This Step can only be used from within a Transporter object. The waiting entities are examined in the order of the pickup queue. the Pickup step removes the entity from the RidePickupQueue of the node and transfers it into the ride station of the transporter using the standard transfer mechanism (i. A delay required for loading a rider onto the transporter. Simio LLC. It exits the secondary exit if the pickup attempt failed. the EndTransfer step completes the transfer). If no TransferIn process handler is provided for the ride station on the transporter then a zero time transfer is provided by default. Entities that are picked up by a transporter may be later dropped off using the Dropoff step. The token exits one of two exit points depending on the result of the pickup attempt.Simio D oc umentation Pickup Pickup The Pickup step may be used by a transporter object to pick up an entity waiting in the ride pickup queue of the transporter's current node. within the Load Time of the Pickup step. NOTE: Simio will produce an error if a delay time expression returns a negative value. Listed below are the properties of Pickup: Property Selection Goal Load Time Description The goal used to rank pickup preference when selecting from multiple candidates. Note that both the entity and the transporter have to "Accept" the selected entity pickup. such as a Normal Distribution. All Rights Reserved. It exits the primary exit point if a pickup was successful.e. Send comments on this topic to Information Copyright 2006-2011. If the entity/transporter accept the pickup.. This can occur if you use an unbounded distribution that might produce negative values. Simio LLC. The trip is selected based on the selection goal specified. All Rights Reserved.Simio D oc umentation PlanVisit PlanVisit The PlanVisit step may be used by an entity object to search for and accept a visit request in the system. this same process is done for the transporter. The SelectVisit step may then be later used by the entity to set its destination node to the visit location. as well as move requests initiated at Seize and Move steps. Hence both the candidate entity and the transporter have to agree to the trip before the reservation is booked. When selecting a trip. Send comments on this topic to Information Copyright 2006-2011. . Note: This Step can only be used from within an Entity object. the entities in the global visit request queue are examined in order based on the selection goal. The types of visit requests searched for by this step include ride pickup requests initiated at Ride steps. The goal can be Smallest/Largest value of Priority/Distance or Priority. Listed below are the properties of PlanVisit: Property Selection Goal Description The goal used to rank pickup destination preference when selecting from multiple candidates. A candidate entity is not selected unless accepted by the entity. Once an entity is selected. Simio D oc umentation Produce Produce The Produce step produces the specified quantity of material . please refer to the SimBits ScheduledMaterialArrivals and WorkstationWithMaterialC onsumptionAndReplenish. . All Rights Reserved.either at the top level only . The material which is to be either specifically produced or whose bill of materials is to be produced by this step. within the Production Delay Time of the Produce step. such as a Normal Distribution.or at the exploded bill of material. The quantity to produced. Send comments on this topic to Information Copyright 2006-2011. Delay time until the material is produced. NOTE: Simio will produce an error if a delay time expression returns a negative value. Listed below are the properties of Produce: Property Production Type Material Name Quantity Production Delay Time Description The method used to specify the material to be produced. For examples of using the Produce step. This can occur if you use an unbounded distribution that might produce negative values. See Distributions for more information. The executing token always immediately exits the Produce Step but the material production does not occur until after this time duration has elapsed. Simio LLC. Release C ondition Releases.Simio D oc umentation Release Release The Release step may be used to release capacity of one or more objects on behalf of the parent object or the object associated with the executing token. Simio LLC. C andidate.Object List Name Releases.On Released Process Send comments on this topic to Information Copyright 2006-2011. SeizingVehicle and SelectingResourceFromList. This step may be used in conjunction with the Seize step.g. The name of the object list from which one or more objects will be released. . Releases Releases. All Rights Reserved.Object. The order in which to release objects owned by the Owner. The objects to be released. The name of the object type to be released. ResourcesWithWorkSchedules.Release Order Releases. use the keyword 'C andidate' to reference an object in the collection of candidates (e.ID) Optional process that is executed by a token associated with a released object after the release occurs. The number of capacity units to release per object. Specified as either the object associated with the executing token or the parent object. An optional condition evaluated for each owned object that must be true for the object to be eligible to release. In the condition. For examples of using the Release step.Number Of Objects Releases.Object Type Releases.Object Name Releases.Units Per Object Releases. The method for specifying the object(s) to be released. Listed below are the properties of Release: Property Owner Description The object that owns the capacity units to be released. please refer to the SimBits OverflowWIP. The number of objects to release. Simio D oc umentation Remove Remove The Remove step may be used to remove an object from a specified queue. Network VisitRequestQueue. Material AllocationQueue. Removing from a Batch Queue Removing an entity from a BatchLogic element's ParentQueue allows the user to cancel a Batch Step activity where the entity is waiting to collect a batch. Simio does not support removing from the following types of queues: Node RidePickupQueue. is interpreted as canceling the Transfer step transfer request.Epsilon function may be used in a Delay step for the removed token to affect the order of event processing. Entity VisitRequestQueue. The Math. Removing from a RoutingGroup RouteRequest Queue Removing an entity from a RoutingGroup element's RouteRequestQueue is canceling a Route Step waiting to route this entity to a set of Blocked node destinations. Send comments on this topic to Information Copyright 2006-2011. The token executing the Transfer step ends its processing (i. is destroyed) upon the canceling action. The Interrupt Step is different.e. yet somewhat similar. A token for the removed entity will first exit from the 'Removed' exit and proceed until a delay type step occurs for the token or its associated entity. The customer had already requested capacity of the "server" and was waiting in line for the server. So if you want to cancel an entity's request for a Resource's capacity or a entity's Transfer request. It can be used to Interrupt a processing delay. Removing from a Storage Queue The user can create their own queue within Simio and place entities in this queue (Insert Step) and remove the entities from the queue (Remove Step).. the entity can be removed from the queue and therefore their request for that object's capacity is cancelled.AllocationQueue). There are two exits from the Remove step. Similarly. removing an entity from a BatchLogic element's MemberQueue allows the user to cancel a Batch Step activity involving a member waiting to be batched. Entity BatchQueue.e. Removing from a Resource Allocation Queue Removing an item from a Resource's Allocation Queue is very powerful and allows for what is commonly referred to as "Reneging". An example of use for this feature might be when a customer has waited too long in line and decides to leave the facility without being serviced. Station MemberQueue. but the Remove Step can cancel their request. Server1. . Listed below are the properties of Remove: Property Queue State Name Removal Type Description The name of the queue state to remove the object from. including the Original and the Removed exits. Then the original token will exit the 'Original' exit. Simio LLC. Removing from a Link Object's Entry Queue Removing an entity from a Link object's EntryQueue would cancel the Transfer request for this entity to wait to enter the Link. But if you want to cancel an entity that is currently within a process delay. the object associated with the executing token. If an entity has already requested capacity of any resource type object and is therefore waiting in the Resource's Allocation Queue (i. the entity no longer waits to enter a station. Refer to the Storage element to define a custom queue in the model. use an Interrupt Step to cancel the delay. or an object at a specified rank. Specifies whether the step is removing the parent object. All Rights Reserved. In other words. Removing from a Station's Entry Queue Removing an item from a Station's EntryQueue or a Link object's EntryQueue. use a Remove Step to remove an entity from a queue. This cancels a Seize attempt. Listed below are the properties of Repair: Property Failure Name Send comments on this topic to Information Copyright 2006-2011. All Rights Reserved. Description The type of failure to end.Simio D oc umentation Repair Repair The Repair step ends a downtime of type Failure Name. . Simio LLC. Simio LLC. Description The type of behavior or logic to resume. . For examples of using the Resume step. Listed below are the properties of Resume: Property Resume Type Process Name Send comments on this topic to Information Copyright 2006-2011. The name of the process to resume. If the ResumeType is 'ParentObjectMovement' or 'AssociatedObjectMovement'. please refer to the SimBits EntityStopsOnLink. VehicleFinishesAndParksWhenOffShift and VehicleStopsWhenServerOffShift. the owner of the process can be the parent object or the associated object of the executing token. All Rights Reserved. The object must be either a link or an agent. If the ResumeType is 'Process'. The Resume step may be used in conjunction with the Suspend step. the movement of the parent or associated object is resumed.Simio D oc umentation Resume Resume The Resume step may be used to resume a process or to resume the movement of an object. Use the keyword C andidate at the beginning of the expression. Use the keyword C andidate at the beginning of the expression. Listed below are the properties of Ride: Property TransporterType Transporter Name Transporter List Name ReservationMethod Selection Goal Selection Expression Description The transporter type that may be selected to ride on. The goal used to rank transporter preference when multiple candidates are available. An optional condition evaluated for each candidate transporter object that must be true for the transporter to be eligible to ride on. evaluated for each candidate transporter object.Simio D oc umentation Ride Ride The Ride step may be used to initiate a transporter ride request for an entity object at a node. Simio LLC. . The method used to select and reserve a transporter object to ride on. The name of the specific transporter type that the entity may ride on. The expression criteria. used with a Smallest Value or Largest Value selection goal. Selection C ondition Send comments on this topic to Information Copyright 2006-2011. All Rights Reserved. The name of the list of transporter types that the entity may ride on. The expression criteria. Selection C ondition Source Node Blocked Routing Rule Send comments on this topic to Information Copyright 2006-2011. The name of the routing group from which a destination node will be selected. The rule used to define destination selection if there are blocked routings. Use the keyword C andidate at the beginning of the expression. or the object associated with the executing token. Simio LLC. Use the keyword C andidate at the beginning of the expression. Listed below are the properties of Route: Property Object Type Routing Group Name Selection Goal Selection Expression Description Specifies whether the step is routing the parent object. All Rights Reserved. used with a Smallest Value or Largest Value selection goal. Optional node whose location will be used for the ‘distance to’ calculation instead of the entity object itself. An optional condition evaluated for each candidate destination that must be true for the destination node to be selected. The goal used to select a destination node from the routing group.Simio D oc umentation Route Route The Route step may be used with a RoutingGroup element to route an entity object to a destination selected from a list of candidate nodes. . evaluated for each candidate destination. Optional discrete variable to allow you to save the number of objects found by the search. the objects that minimize or maximize the ReturnValue expression that is evaluated for each candidate object in the collection. and VehicleStopsWhenServerOffShift. The Math. the tokens for the found entity(s) will exit the 'Found' exit and proceed until until a delay type step occurs for the token or its associated entity. it allows you to find. But.VisitRequestQueue The name of the table to be searched. This value is returned by the executing token's ReturnValue state. The name of the object list to be searched. Forward and Backward when used in conjunction with Starting Index.Processing. then none of the Steps that exist in that Found segment will be executed (because a token was never created for that segment). All Rights Reserved. Optional discrete variable to allow you to save the index of the last object found in the collection. The name of the object instance to be searched. All steps that exist in the Original segment leaving the Search Step will always be executed.QueueState. SearchTables. The type of search performed. a collection of objects or a table. The maximum number of objects to find. ObjectList. up to the specified Limit. to act upon a different object inside the model. There are two exits from the Search step. Possible values include ObjectInstance. For examples of using the Search step. These tokens will exit the 'Found' exit point of the step. This allows a process that is executed by one object.C ontents . This value is then stored on the token and can be referenced later on in the process. If MinimizeReturnValue or MaximizeReturnValue is selected.Discussion and Examples page. The original token always continues out of the Original segment. The one-based starting index of the search. A new token will only be created in the Found segment if something is found in the Search Step. . VehicleFinishesAndParksWhenOffShift.TableRows and NodeList. Use the keyword C andidate at the beginning of the expression.Epsilon function may be used in a Delay step for the found tokens to affect the order of event processing. First. please refer to the SimBits C ONWIP. Object Instance Name Object List Name Owner Queue State Name Table Name Search Type Starting Index Matching C ondition Limit Return Value Save Index Found Save Number Found Send comments on this topic to Information Copyright 2006-2011. Server1. the starting index is the first object in the collection if a forward search. SeizedObjects. Listed below are the properties of Search: Property C ollection Type Description The type of search to be performed.RidePickupQueue .Simio D oc umentation Search Search The Search step may be used to search a queue. Additional information on the Search step can be found in the Search . if nothing was found by the Search Step. Vehicle. Then the original token will exit from the 'Original' exit. Expression that is evaluated for each object selected by the search. The name of the queue state to be searched. including the Original and the Found exits. When defaulted. Simio LLC. all steps that exist in the Found segment will be executed. A return value expression that may be specified is evaluated in the context of all objects found by the search. So if something was found by the Search Step. regardless of whether or not the Search Step finds anything. The Step may also be used to create new tokens that are associated with the objects found by the search. Optional match condition used to filter the search. Use the keyword C andidate at the beginning of the expression. Only objects meeting this match criteria will be selected. or the last object in the collection if a backward search. can pick which object in a collection to find. The sum of the expression values for the found objects is returned by the ReturnValue state of the original executing token. RoutingWithoutPaths. The object whose list of seized resource objects is to be searched. Examples of a public Queue State are: Input@Server1. NodeProperty. the properties of the Seize step would look like the image below. 20. the user should save the ID of the object that was seized. a user would like to remember which resource was seized off of a list so that when an entity returns to a process. The column of C ustomStateID in the Data Table contains four rows.Discussion and Examples Example Using Search Step to save the ID of the seized object l In this example.C ustomStateID. A token that is associated with an entity searches a Table.Simio D oc umentation Search . which consist of C ustomStateID as 10. Assume an entity has a discrete state on it called MyC ustomState and assume a Data Table contains a property called C ustomStateID. After the entity seizes the object. . assign the Token. which contains the node where a particular entity should go. Seize Step Properties Window Using Search Step to search a Table for a particular value l In this example. In the Found segment of the Search Step. Send comments on this topic to Information C opyright 2006-2011. When you do another Seize. it can seize the exact same resource that it seized during its first visit to the process. All Rights Reserved. you can use the Selection C ondition feature on the Seize Step to seize the exact resource that you need to seize again. The Data Table also contains a column that is a Node Property. a SetNode step will set the destination node of the entity to DataTable. Use the Search step to data mine the objects that have been seized by the entity and get the ID number of the last object seized. Using a Search Step to search a table might also be used to initialize WIP in objects at the beginning of a run. For example. you saved the ID number of the resource that you seized into a state named ‘TheIDThatWasSeizedBefore’. using a Search Step. 30 or 40 in it's MyC ustomState. 20. Simio LLC .MyC ustomState equals the value in the table column Table1. Search Step Properties Window When the token exits the Search step. 40. a user would like to search through a Simio Data Table to see which row matches a certain criteria.ReturnValue (which has the ID number) into an entity state so it can carry it around. Each entity has a value of either 10. 30. to find the row where the value of ModelEntity. Indicates whether a move to a specified location will be requested from the seized object(s). If it is seized by the associated object then it may be carried by the associated object across multiple objects.Selection C ondition Seizes. ResourcesWithWorkSchedules.On Seized Process Owner Seize Operation Resources Send comments on this topic to Information Copyright 2006-2011.Remaining) Optional process that is executed by a token associated with a seized object after the seize occurs. The number of capacity units to seize per object (as available per the object's capacity type).Object Name Seizes.Selection Expression Seizes. The expression evaluated for each object that is a candidate to seize. The method for specifying the object(s) to be seized.g.Simio D oc umentation Seize Seize The Seize step may be used to seize capacity of one or more objects on behalf of the parent object or the object associated with the executing token. such as a Standard Library 'Worker' or 'Vehicle'. Object capacity may be released later by either a specific name or by an object list name. . or selected from a population of dynamic objects.Object List Name Seizes.C apacity. The Seize step may be used in conjunction with the Release step. and the owner object performing the seize is an entity object. Specified as either the object associated with the executing token or the parent object. The priority of the move request if a PlanVisit step or SelectVisit step is used by the seized resource(s) to choose a visit destination from multiple candidates. They are released based on order which is specified as FirstSeized or LastSeized. Seizes.. and the owner object performing the seize is an entity object at a node. In the case of populations all members within the population are eligible for selection. In the case of a list name. If not specified.Object. Every object represents a resource with a capacity. use the keyword C andidate to reference an object in the collection of candidates to be seized (e.Units Per Object Seizes. The objects to be seized by the owner can be from a specific object or selected from an object list. The executing token will be held in the Seize step until the seized object(s) have arrived to the location. All Rights Reserved. In the case of a specific object it can be a static object. Simio LLC. When selecting from an object list or a population and the number of objects required is less than the number available. C andidate. please refer to the SimBits OverflowWIP. The name of the specific node location that the seized resource (s) will be requested to move to. The name of the object type to be seized. then this property defaults to that entity's Priority state value. The object that will be allocated the seized capacity. Object resources must be seized/released in whole units and can be owned by the parent object or the object associated with the executing token.Selection Goal Seizes. For examples of using the Seize step. The number of objects to seize.Move Priority Seizes.Remaining). An object list may contain both dynamic objects and static objects.Object Type Seizes.g. The goal for selecting objects to seize. such as a Standard Library 'Resource'. C andidate. the objects that are owned from the specified list are eligible to be released. An optional condition evaluated for each candidate object that must be true for the object to be eligible for seizing. In the condition.Number Of Objects Seizes.Destination Node Seizes. Listed below are the properties of Seize: Property Seizes Seizes. then this property defaults to that owner entity's current node. Indicates whether to seize activity resources specified for the owner entity's current operation.. If it is seized by the parent object then it must be released by the parent object. The name of the object list from which one or more objects will be selected to be seized.Object. The resource may be allocated to either the parent object or associated object. SeizingVehicle and SelectingResourceFromList. In the expression.C apacity. the resource selection rule is used to select between the available objects. use the keyword C andidate to reference an object in the collection of candidates (e. If not specified.Request Move Description The objects to be seized. otherwise it exits the failed exit point. Note: This Step can only be used from within a Transporter object. Simio LLC. Listed below are the properties of SelectDropoff: Property Selection Goal Description The goal used to rank dropoff destination preference when selecting from multiple candidates. All Rights Reserved.Simio D oc umentation SelectDropoff SelectDropoff The SelectDropoff step may be used to set the destination node of the parent transporter object to the dropoff location of a riding entity. Send comments on this topic to Information Copyright 2006-2011. . If a destination is selected the token exits the primary exit point. Simio LLC. Listed below are the properties of SelectVisit: Property Selection Goal Description The goal used to rank visit preference when selecting a visit from multiple candidates. All Rights Reserved. Send comments on this topic to Information Copyright 2006-2011.Simio D oc umentation SelectVisit SelectVisit The SelectVisit step may be used by an entity object to set its destination node to the location of a visit request initiated by a Ride or Move step. . a visit request must first be accepted by the entity using the PlanVisit Step. To be selectable by this step. If a destination is selected the token exits the primary exit point. Note: This Step can only be used from within an Entity object. otherwise it exits the failed exit point. All Rights Reserved. Simio LLC. or of the object associated with the executing token. Listed below are the properties of SetNetwork: Property Object Type Description Specifies whether the step is setting the network value of the parent object. . The new network value to set. New Network Name Send comments on this topic to Information Copyright 2006-2011.Simio D oc umentation SetNetwork SetNetwork The SetNetwork step may be used to set the network of links used by an entity to travel between node locations. . The name of the specific node object to set the destination value to. All Rights Reserved. 'By Sequence' requires that the entity object has been assigned a sequence table. For an example of using the SetNode step. The destination node value will be set to the next destination in the sequence. Simio LLC.Simio D oc umentation SetNode SetNode The SetNode step may be used to set the destination node of any entity object. please refer to the SimBit SearchTables. or of the object associated with the executing token. The method used for selecting the destination node. Expression to be evaluated to an integer node object ID. Destination Type Node Name Expression Send comments on this topic to Information Copyright 2006-2011. Listed below are the properties of SetNode: Property Object Type Description Specifies whether the step is setting the destination node value of the parent object. EntityFollowsSequenceWithTable2.Simio D oc umentation SetRow SetRow The SetRow step may be used to assign a data table or sequence table to a token or object. please refer to the SetRow . SelectEntityTypeFromTable and UsingRelationalTables. executing token. please refer to the SimBits EntityFollowsSequenceWithTable.Discussion and Examples page. Table Name Row Number Send comments on this topic to Information Copyright 2006-2011. For more information. Listed below are the properties of SetRow: Property Object Type Description Specifies whether the step is assigning a table reference to the parent object. Simio LLC. or the object associated with the executing token. LeveledArrivals. . simply use two SetRow steps to reference each table of interest. A token or an object can be bounded to more than one table at a time. The current row index into the table is specified by the RowIndex property. For examples of using the SetRow step. To do this. All Rights Reserved. The one-based row index into the table. The name of the sequence or data table. Send comments on this topic to Information C opyright 2006-2011. Simio LLC . All Rights Reserved. The second SetRow step sets the same token to point to Row 2 of Table2.Discussion and Examples Example Setting a Token to Two Different Tables l In this example. The Assign step references properties from both of the tables in its New Value expression. The first SetRow step sets the token to point to Row 1 of Table1. a user would like to set a Token to point to two different tables and then reference properties from both tables in an Assign step.Simio D oc umentation SetRow . . Listed below are the properties of StartActivity: Property Operation Send comments on this topic to Information Copyright 2006-2011. All Rights Reserved.Simio D oc umentation StartActivity StartActivity The StartActivity step starts the next activity in a reserved operation. . Simio LLC. Description The name of the operation to reserve. etc. An operation cannot start until capacity is available and a time slot is available.Simio D oc umentation StartOperation StartOperation The StartOperation step starts an operation. Simio LLC. Description The name of the operation to start. travel. . The required time slot is the best case time based on the parent work schedule . Listed below are the properties of StartOperation: Property Operation Send comments on this topic to Information Copyright 2006-2011. materials. All Rights Reserved. If capacity is available and the best case time slot is available it seizes the parent resource and starts the operation.this is extended by the buffer time to account for delays caused by secondary resources. If the actual operation time exceeds the available time slot the future operation is slipped to accommodate this operation. the user would need to subclass a Server object. Simio LLC. For an example of using the Subscribe step. In this example. Send comments on this topic to Information Copyright 2006-2011. Since this process is not a public process in the Standard Library Server object. . the Subscribe step can be used to trigger a process that will suspend the Server when the event Resource. If you want the Server to stop processing when the Resource goes off shift. indicating that the process is to be executed if the event occurs.Simio D oc umentation Subscribe Subscribe The Subscribe step may be used to add a new triggering event for a process. The name of the process that the new triggering event applies to. the process that will suspend the Server would use a Suspend Step to suspend the OnEnteredProcessing process of the Server. override the OnEnteredProcess process and change the Public property to 'True'. After these changes. An example of its use would be in the scenario where a Server seizes a Resource before it starts processing and the Resource goes on and off shift during the run. that process will be available in the Suspend Step. Listed below are the properties of Subscribe: Property Event Name Process Name Description The name of the event that is being added as a new triggering event for a process. Also. please refer to the SimBit EntityStopsOnLink. All Rights Reserved. the Workstation object takes advantage of these steps to suspend or resume the processing of the current job if any secondary resources go ‘off-shift’ or ‘on-shift’ respectively.CapacityChanged occurs and the new capacity is 0. If the SuspendType is 'Process'. If a process is suspended that is not yet started. Simio LLC. The tokens in the process are all frozen in their current state. The name of the process to suspend.Simio D oc umentation Suspend Suspend The Suspend step may be used to suspend a process or to suspend the movement of an object. VehicleFinishesAndParksWhenOffShift and VehicleStopsWhenServerOffShift. Listed below are the properties of Suspend: Property Suspend Type Process Name Send comments on this topic to Information Copyright 2006-2011. If the SuspendType is 'ParentObjectMovement' or 'AssociatedObjectMovement'. . All Rights Reserved. when it is "started" it will be immediately suspended. please refer to the SimBits EntityStopsOnLink. For examples of using the Suspend step. The Suspend step may be used in conjunction with the Resume step. the movement of the parent or associated object is suspended. the owner of the process can be the parent object or the associated object of the executing token. Description The type of behavior or logic to suspend. The object must be either a link or an agent. The type of observation value to record. A repeating set of tallies. Listed below are the properties of Tally: Property TallyStatistic Name Value Type Description The TallyStatistic element in which the value is to be recorded. The values are recorded by a TallyStatistic element. The recorded value can be specified as an expression or can be the time between arrivals to the Tally step. The TallyStatistic element in which the value is to be recorded. For examples of using the Tally step. The value type 'Expression' records the value of the specified expression.Simio D oc umentation Tally Tally The Tally step tallies an observation for each token arriving to this step.Value Type Number of Observations Send comments on this topic to Information Copyright 2006-2011. please refer to the SimBits TallyStatisticsInTable and SourceServerSinkApproaches. The value type 'TimeBetween' records the time between arrivals to the Tally step. Simio LLC. All Rights Reserved. . The number of observations of the value to be recorded. Value Tallies (More) Tallies (More). The type of observation value to record. The expression value to be recorded.TallyStatistic Name Tallies (More). The value type 'Expression' records the value of the specified expression. The value type 'TimeBetween' records the time between arrivals to the Tally step. . external logic might immediately Transfer an entity out of a Server object and transfer it over to some other location outside the logic. The external node of the parent object that the entity is to be transferred to. available when To is 'Station'. Indicates whether to cancel the transfer attempt if the location where the entity is to be physically transferred into is considered blocked. For example. It is only safe at this point to Transfer an entity into or out of an object through the external nodes since most objects make the assumption that an entity is going to enter or exit through nodes. The node that the entity is to be transferred to. The name of the station that the entity is to be transferred into. and EntityMovementInFreeSpace. All Rights Reserved. For examples of using the C reate step. please refer to the SimBits C ONWIP.Simio D oc umentation Transfer Transfer The Transfer step may be used to transfer an entity object between objects and between different types of locations. A user can use a Transfer step to transfer an object between object locations without the entity having to use the external nodes to enter and exit objects. This property is visible when To is 'ParentExternalNode'. It will continue trying to process the entity and an error will occur. the Transfer step automatically sets the entity's destination to that node if the entity does not already have a destination set. So. Station Name Object Type Fail If Blocked Token Wait Action Send comments on this topic to Information Copyright 2006-2011. Listed below are the properties of Transfer: Property From To Node Name External Node Name Description The location type that the entity object is to be transferred from. If transferring an entity to a node. you can immediately transfer an entity from inside object A to a node outside object B using the Transfer step. Specified as either the object associated with the executing token or the parent object of this process. However. This property is visible when To is 'Node'. then the arriving token will immediately exit the 'Failed' exit point of the Transfer step. DynamicallyC reatingVehicles. The entity object to be transferred. If the transfer attempt is cancelled. The wait action to be taken by the token arriving to the Transfer step. the tokens running inside the Server will not realize that the entity was transferred out and it will assume the entity is still inside the Server. if that happens. for example. Options include WaitUntilTransferredEvent and WaitUntilTransferringEvent. The location type that the entity object is to be transferred to. Simio LLC. such as free space and objects. Simio LLC.Simio D oc umentation UnBatch UnBatch The UnBatch step may be used to remove batch members from the parent entity object associated with the executing token. Listed below are the properties of UnBatch: Property Quantity Description The number of member entities to be unbatched from the parent entity. A batch is originally formed using the Batch step. . This step removes a specified number of member entiies in the top level batch from the owner entity. All Rights Reserved. Send comments on this topic to Information Copyright 2006-2011. Send comments on this topic to Information Copyright 2006-2011. All Rights Reserved. Listed below are the properties of UnPark: Property Object Type Token Wait Action Description The entity object to be unparked. Simio LLC. . Specified as either the object associated with the executing token or the parent object.Simio D oc umentation UnPark UnPark The UnPark step may be used to transfer an entity object out of a node's parking station and into the node. Options include WaitUntilTransferredEvent and WaitUntilTransferringEvent. The wait action to be taken by the token arriving to the UnPark step. The Token Wait Action property indicates whether the token is going to wait in the step until the transferring entity ‘Transferring’ or ‘Transferred’ event is fired. Send comments on this topic to Information Copyright 2006-2011. This is used in conjunction with the Subscribe step. Listed below are the properties of Unsubscribe: Property Event Name Process Name Description The name of the event that is being canceled as a triggering event for a process.Simio D oc umentation Unsubscribe Unsubscribe The Unsubscribe step may be used to cancel a triggering event for a process. See the Subscribe step for an example of use. . The name of the process that the canceled triggering event applies to. All Rights Reserved. Simio LLC. Simio D oc umentation VisitNode VisitNode The VisitNode step may be used within a node object's logic to initiate the OnVisitingNode process of the entity associated with the executing token. All Rights Reserved. Note: This Step can only be used from within a Node object. The token waits until the entity's OnVisitingNode process is completed before exiting the step. Send comments on this topic to Information Copyright 2006-2011. . Simio LLC. Tokens will not be released from the Wait step when the specified event occurs unless this optional condition is also true. The tokens are released from the Wait step in order that they arrived to the step (that is.Simio D oc umentation Wait Wait The Wait step may be used to hold the arriving token in the step until a specified event occurs. For an example of using the Wait step. all tokens are released when the specified event is fired. When multiple tokens are waiting at the Wait Step. Simio LLC. Send comments on this topic to Information Copyright 2006-2011. please refer to the SimBit EntityStopsOnLink. All Rights Reserved. Listed below are the properties of Wait: Property Event Name Release C ondition Description The arriving token is held in the Wait step until this event occurs. First In First Out). . The Wait step can be used in conjunction with the Fire step. External defines the graphical representation of a model that is instantiated as an object into another model. . Properties. states. States are dynamically changing values that can be thought of as output responses that change throughout the execution of the object logic. Simio LLC . states and events are either inherited or explicitly added to your model. or transporters. states and events have a green arrow to their left. Properties are model input parameters that do not change during the simulation run. The one exception is that you can hide or change the display name. Send comments on this topic to Information C opyright 2006-2011. The Definitions tab also allows the user to view the Simio properties. and events is only available with the Microsoft Vista O/S or higher. You can add/edit/delete your own. Events are logic triggers used within the Processes window. states and events.Simio D oc umentation The Definitions Window The Definitions Window The Definitions window displays a panel of buttons where the user can define the following: Elements represent things in a process that change state over time. Tokens execute the steps in a process flow within the Processes window.g. Earlier versions of the O/S will not see the inherited properties. Definitions Window Note: The collapsable feature of the inherited properties. Inherited properties. the value returned (e. Although the definition cannot change. category. but in general you cannot edit or delete inherited properties. states and events collapsed. nodes. objects. and description of an inherited property. states and events that are automatically generated with each new model. All Rights Reserved. an evaluated expression or random variable) may change. Lists are used to define a collection of strings. . and then attach the batched members to a parent entity. Elements are added to a list and then referenced by one or more process steps in the Processes window. Send comments on this topic to Information C opyright 2006-2011. The Insert and Remove steps are used to insert and remove objects from the storage element's queue. Station element may be used to define a capacity constrained location within an object where one or more visiting entity objects can reside. Please refer to the User Interface for more details. RoutingGroup element is used with a Route step to route an entity object to a destination selected from a list of candidate nodes. OutputStatistic element defines an expression that can be optionally recorded at the end of each replication of a simulation. Operation is a sequence of activities that are performed by an object over time. Material can be consumed and produced by tokens. TallyStatistic element tallies observational statistics that are recorded using the Tally step. StateStatistic element may be used to record time-persistent statistics on a state variable. Storage element may be used to define a custom queue state for temporarily holding one or more objects.Simio D oc umentation Elements Elements Ribbon Tab Elements represent things in a process that change state over time. Timer element fires a stream of events according to a specified IntervalType. and C trl-V (Paste) is supported for all Elements. C trl-C (C opy). The elements within Simio include the following: Activity is performed by an operation that is owned by an object. All Rights Reserved. NOTE: C trl-X (C ut). Failure element may be used to define a failure mode. The Transfer step is used to transfer entities into and out of a station. Simio LLC . Monitor element may be used to monitor a state variable and fire an event whenever there is a discrete change or threshold crossing of the state value. Network is a list of links to which an entity may be assigned to follow via the shortest path to its destination. form those entities into a batch. Failure downtime occurrences are started and ended using the Fail and Repair steps. BatchLogic element may be used in conjunction with the Batch step to match multiple entities together. Simio D oc umentation Elements Reference This Elements Reference section has detailed information for all elements in Simio. . All Rights Reserved. Simio LLC. Send comments on this topic to Information Copyright 2006-2011. This list value (numeric) is typically provided by a list property (color. then defaults to the operation quantity. This activity's time duration if there has not been a change in the value of the Entity Property from the previous entity to the current entity.Simio D oc umentation Activity Activity An activity is performed by an operation that is owned by an object. The time duration of this activity. The quantity consumed is based on the activity Batch Size. size. If not specified. Dependent times are based on an entity list value. The maximum length of the time interval from the start of this activity until the completion of this activity. Activities may be started and ended. All Rights Reserved. Simio LLC. An expression whose value defines the characteristic used to determine the setup time. The material consumption of this activity. The material which is to be either specifically produced or whose bill of materials is to be produced by this activity. The material which is to be either specifically consumed or whose bill of materials is to be consumed by this activity. This activity's time duration if there has been a change in the value of the Entity Property from the previous entity to the current entity. The material production of this activity. .) on the entity. An activity time scales by a work schedule (if any). Listed below are the properties of Activity: Property Report Statistics Duration Type Duration Duration Unit Type Entity C haracteristic Duration If Same Description Specifies if statistics are to be automatically reported for this element. Indicates whether the specified duration is per item or per batch. Time slots for operations/activities may be reserved in the future. Duration If Different C hangeover Matrix Batch Size Maximum Make Span Work Schedule Restriction Duration Buffer Time Material C onsumption C onsumed Material Name Material Production Produced Material Name Send comments on this topic to Information Copyright 2006-2011. type. change dependent. The name of the changeover matrix that defines the activity times dependent on the value of the Entity Property from the previous entity to the current entity. Activity times can be specific. The method used to determine how the time duration for this activity is specified. etc. The batch size for this activity. Determines what restriction applies (if any) to performing this activity with regards to the parent object's work schedule. The quantity produced is based on the activity Batch Size. An operation is a sequence of activities that are performed by an object over time. The buffer time added to this activity's duration when reserving a time slot for this activity. or sequence dependent. Determines how member entities and parent entities are grouped. 'MatchMembersAndParent' indicates that parents must also be matched with members to attach a group to a parent. The expression used with a SmallestValueFirst or LargestValueFirst parent ranking rule. The queue of entities waiting to be added as a member to a batch. The expression whose value must be the same among all member entities in order to create a batch. Listed below are the properties of BatchLogic: Property Report Statistics Batch Quantity Matching Rule Description Specifies if statistics are to be automatically reported for this element. The expression for the parent entity whose value must be the same as the match expression for the batch members in order to attach the batch to the parent. The number of member entities that will be attached (assembled) to each parent entity. Simio LLC.Simio D oc umentation BatchLogic BatchLogic The BatchLogic element may be used in conjunction with the Batch step to match multiple entities together. The rule used to rank the queue holding the parent entities waiting to be matched. All Rights Reserved. 'MatchMembers' indicates that members must be matched together using a specified expression. . The rule used to rank the queue holding the member entities waiting to be matched. The expression used with a SmallestValueFirst or LargestValueFirst member ranking rule. 'AnyEntity' indicates that the first members of the specified batch quantity will be taken and attached to the first parent. and then attach the batched members to a parent entity. Send comments on this topic to Information Copyright 2006-2011. form those entities into a batch. Member Match Expression Parent Match Expression Parent Ranking Rule Parent Ranking Expression Member Ranking Rule Member Ranking Expression Listed below are the states of BatchLogic: State ParentQueue MemberQueue Description The queue of entities waiting to collect a batch of members. Simio LLC. Listed below are the Functions associated with a Failure: Function Active Description Returns the value of 1 if the Failure is currently active (object is in a failed state) and returns a value of 0 if the Failure is not currently active (object is not failed) Returns the average amount of time that this Failure was active (object in failed state) Returns the start time of the last failure. Failure downtime occurrences are started and ended using the Fail and Repair steps. . Optional process that is executed when a failure downtime occurrence ends. All Rights Reserved.Simio D oc umentation Failure Failure The Failure element may be used to define a failure mode. Returns the maximum amount of time that this Failure was active (object in failed state) Returns the minimum amount of time that this Failure was active (object in failed state) Returns the number of times that this Failure has become active (object in failed state) AverageDownTime LastFailureStartTime MaximumDownTime MinimumDownTime NumberOccurences Send comments on this topic to Information Copyright 2006-2011. Listed below are the Properties of Failure: Property Report Statistics On Failed Process On Repaired Process Description Specifies if statistics are to be automatically reported for this element. Optional process that is executed when a failure downtime occurrence begins. Listed below are the properties of Material: Property Report Statistics Initial Quantity Ranking Rule Ranking Expression BillOfMaterial BillOfMaterial.Material Name BillOfMaterial. The expression used to rank the queue holding the member tokens waiting for material. All Rights Reserved. The ranking rule used to allocate this material among competing entities. For an example of using the Material element. please refer to the SimBit ScheduledMaterialArrivals. Simio LLC. Only the first waiting token may consume material. Material may be consumed/produced at the top level. Description .Quantity Description Specifies if statistics are to be automatically reported for this element. SmallestValueFirst and MaxValue rankings are based on the priorty specified on the C onsume step. The initial quantity of the material in the system. Material is hierarchical and may hold a bill of material that is required to produce the top level material. The material component in the Bill Of Materials.Simio D oc umentation Material Material Material can be consumed and produced by tokens using the C onsume and Produce steps. Listed below are the states of Material: State QuantityC onsumed QuantityProduced QuantityAvailable AllocationQueue Send comments on this topic to Information Copyright 2006-2011. or the expanded bill of material. The bill of material defined by a repeat group of material and quantity. The quantity of this material required to make one unit of the parent material. Specifies whether the monitor is enabled when the system is initialized. if there are any processes specified to be triggered by that event. The state variable to be monitored. When a Monitor event is fired. . before the execution of any other simulation logic in the system. For additional information. Optional process that is immediately executed when the monitor's event if fired. All Rights Reserved. Simio LLC.Discussions and Examples page. Initially Enabled Send comments on this topic to Information Copyright 2006-2011. visit the Monitor . For examples of using the Monitor element. please refer to the SimBits DynamicallyC reatingVehicles. UsingaMonitor and WritingToAFile.Simio D oc umentation Monitor Monitor The Monitor element may be used to monitor a state variable and fire an event whenever there is a discrete change or threshold crossing of the state value. then the created tokens are associated with the object that owns the Monitor element. The type of state information to be monitored. Listed below are the properties of Monitor: Property Report Statistics Monitor Type State Variable Name Threshold Value C rossing Direction On Event Process Description Specifies if statistics are to be automatically reported for this element. The monitor's event is fired if the state variable value crosses this threshold value in the crossing direction. The monitor's event is fired if the state variable value crosses the threshold value in this crossing direction. It is added to a model from the Elements panel found within the Definitions window. The Monitor has an Enabled state that allows the Monitor to be enabled/disabled. This will cause this process to be executed each time the specified Monitor fires an event.C ontents. the Triggering Event property on the Process must be set to the name of the Monitor's event.Discussion and Examples Discussion In order to have a process execute when a Monitor fires its event. which holds the value for the number of entities currently waiting in the InputBuffer of the object called Server1. select the name of the Monitor (. A new process can be created from the Steps tab of the Processes Window by clicking the C reate Process button in the ribbon. it will execute 'Monitor1_OnEventProcess' before any other logic is executed. All Rights Reserved. l Because the CrossingDirection property is set to 'Positive'. Simio LLC . Since its MonitorType property is set to 'C rossingStateC hange'.C ontents crosses over the specified Threshold Value. the Monitor will fire when the value crosses in the positive direction from 3 to 4. l The On Event Process property is set to the process named 'Monitor1_OnEventProcess' so as soon as the Monitor's event is fired. .InputBuffer. not in the negative direction from 3 to 2.Event) from the drop down of the Triggering Event property. l Properties Window of a Monitor Element Send comments on this topic to Information C opyright 2006-2011. called Server1. this Monitor will fire an event when the value of Server1. which is 3. Linking a Monitor's Event and a Process Monitor Example 1 The following is an example of a Monitor that watches a predefined Simio queue state. In the Properties window of this new process.Simio D oc umentation Monitor .InputBuffer. An occurence of this event will update the network's shortest path calculations to be based on the current DesiredDirection states of all member links. A link may be in multiple networks. where n is the number of network nodes. Indicates whether updates of the network's shortest path calculations will automatically occur whenever the DesiredDirection state of a member link changes. When both counts are zero. and the local list of network nodes owned by the node. This can be improved by implementing a compare function to sort the list. Each vector is indexed in the same order as the master network node list owned by the network. Specifies if statistics are to be automatically reported for this element. Automatic Updates Update Event Report Statistics Listed below are the states of Network: State VisitRequestQueue Send comments on this topic to Information Copyright 2006-2011. . Each network node keeps a list of outbound member links. Hence the runtime computation is O(n). and then using a binary search. If the method is 'Default'. A node is considered connected if it has at least one incoming or outgoing link that is a member of the network. Simio LLC. the node is removed from both the master list and the node list.Simio D oc umentation Network Network A Network is a list of links to which an entity may be assigned to follow via the shortest path to its destination. Each network node has a vector of shortest path links from this node to all nodes in the master network node list. and a count of inbound member links. For more information regarding the Turnaround Method. Listed below are the properties of Network: Property Turnaround Method Description The method used by travelers on this network to turn around at nodes in order to move in the opposite direction on bidirectional links. The shortest path link is found by locating the network node for the destination transfer station in this master list.one for each network that the node is a member (by being the starting or ending node of a member link). then the Network Turnaround Method specified for the entity type will be assumed. Description A queue of visit requests associated with this network. with the calculations based on the current DesiredDirection states of all link members. The Network keeps a master list of network nodes for each node that is connected in the network. The C omputeShortestNetwork method is called to compute the shortest path vector for each of these nodes. Each interection has a list of network nodes . All Rights Reserved. and then using the index of this node to index into the shortest path vector. The shortest path vector is only computed for network nodes with 2 or more outbound links. see the Path .Discussion and Examples page. Hence each network node is both on the master list of network nodes owned by the network. Move Priority Activity Resources. evaluated for each candidate object.Object List Name Activity Resources. If not specified. The name of the activity. Indicates whether a move to a specified location will be requested from the seized resource(s).C apacity. The name of the object type that is required. This operation's activities in the sequence that they must be performed.Activity Index Activity Resources.Selection Expression Activity Resources.Units Per Object Activity Resources.Selection Goal Activity Resources. An operation may have one or more activities. The expression criteria.Request Move Description The item quantity assumed for each entity executing this operation. The number of capacity units that are required per object. This operation's activities in the sequence that they must be performed. The goal used to rank object preference when multiple candidates are available. An optional condition evaluated for each candidate object that must be true for the object to be eligible for seizing. C andidate. Simio LLC. Listed below are the properties of Operation: Property Quantity Activities Activities. If not specified. then this property defaults to that entity's Priority state value. The method for specifying the object(s) required as a secondary resource. Optional process that is executed by a token associated with a seized object after the seize occurs. The executing token will be held in the Seize step until the resources have arrived to the requested location. and the owner object performing the seize is an entity object at a node. In the condition.On Seized Process Activity Resources. Defines the maximum amount of time which this operation can be performed. Use the keyword C andidate at the beginning of the expression.Activity Range Activity Resources.Activity Name Activity Resources Activity Resources.Object. Specifies if statistics are to be automatically reported for this element. from the start of the first activity until the end of the last activity. The number of objects that are required.Remaining).On Released Process Maximum Makespan Report Statistics Send comments on this topic to Information Copyright 2006-2011.Simio D oc umentation Operation Operation An operation is a sequence of activities that are performed by an object over time.g. use the keyword C andidate to reference an object in the collection of candidates (e. The range of activities that the secondary resource is required for. All Rights Reserved. Activity Resources..Destination Node Activity Resources. The specific activity specified as an index in the operation's activity list. . and the owner object performing the seize is an entity object.Object Name Activity Resources. The name of the specific node location that the seized resource (s) will be requested to move to. The priority of the move request if a PlanVisit step or SelectVisit step is used by the seized resource(s) to choose a visit destination from the multiple candidates. used with a SmallestValue or LargestValue selection goal.Object Type Activity Resources. The name of the object list from which to select objects. Optional process that is executed by a token associated with a released object after the release occurs.Number Of Objects Activity Resources.Selection C ondition Activity Resources. then this property defaults to that owner entity's current node. Simio LLC. If defaulted. Optional string used as the C ategory field for classifying results reported by this statistic element. Optional string used as the Data Item field for classifying results reported by this statistic element. If defaulted. The expression to be recorded. then the element name is assumed. then the string 'Output' is assumed. . C ategory Data Item Send comments on this topic to Information Copyright 2006-2011. All Rights Reserved. Listed below are the properties of OutputStatistic: Property Report Statistics Expression Data Source Description Specifies if statistics are to be automatically reported for this element. then the string 'UserSpecified' is assumed.Simio D oc umentation OutputStatistic OutputStatistic The OutputStatistic element defines an expression that can be optionally recorded at the end of each replication of a simulation. Optional string used as the Data Source field for classifying results reported by this statistic element. If defaulted. All Rights Reserved.Discussion and Examples OutputStatistic Example 1 The following is an example of a OutputStatistic element that is evaluating an expression which uses three different state variables to determine a price for bad customer service.Simio D oc umentation OutputStatistic . indicating that this OutputStatistic will appear in the user defined C ategory called 'C osts' in the pivot table within the Results Window. It does the same for the states WaitForGreeting and WaitForFood. Simio LLC . l The Category property is set to 'C osts'. using different pricing factors and adds these all together.5. l The Expression property is evaluated and recorded at the end of each replication of the simulation. . Properties Window of the OutputStatistic Element Send comments on this topic to Information C opyright 2006-2011. It multiplies the value of the state WaitForTable and multiplies it by a factor of 3. the algorithm is to search through the RouteRequestQueue starting at Rank 1 and find the first eligible entity that meets eligibility requirements. Therefore. C an be one of several Dynamic Selection Rules C onditional expression used to indicate whether a candidate destination in this routing group's node list is considered blocked. All Rights Reserved. A user can create their own RoutingGroup element for use in a custom object.. Use the keyword C andidate at the beginning of the expression. a user should use their own custom Route step logic (with their own RoutingGroup element) if they need the dynamic selection capability. The expression used with a Smallest Value First or Largest Value First ranking rule. the RoutingGroup element provides a Dynamic Selection rule to dynamically select one of the waiting entities.e. Simio LLC. Listed below are the properties of RoutingGroup: Property Report Statistics Node List Name Ranking Rule Ranking Expression Dynamic Selection Rule Blocked C ondition Description Specifies if statistics are to be automatically reported for this element. select the next entity to route from multiple blocked waiting locations). . The rule used to dynamically select a route request to this routing group. Send comments on this topic to Information Copyright 2006-2011. The list of nodes in this routing group.Simio D oc umentation RoutingGroup RoutingGroup The RoutingGroup element is used with a Route step to route an entity object to a destination selected from a list of candidate nodes (a Node List). The standard library Transfer Node object uses a RoutingGroup element in its internal logic to determine where the entities will travel when they leave the node. If multiple routing entities are blocked and waiting for an available destination (i. There is one example where the standard TransferNode does not take full advantage of the possibilities in a Routing Group. when the destination in the Routing Group becomes available. This is a similar feature to a resource object being able to dynamically select an entity waiting to seize. If using only a static Ranking Rule on a Routing Group. The static rule used to rank competing route requests to this routing group. Listed below are the states of RoutingGroup: State RouteRequestQueue Description The queue of entities waiting to route to a destination in this routing group's node list. The TransferNode object doesn’t expose or take advantage of that dynamic selection feature. It is added to a model from the Elements panel within the Definitions window. Optional string used as the Data Item field for classifying results reported by this statistic element. Otherwise. see the StateStatistic . NOTE: Runtime confidence interval half-widths are never calculated when running an experiment scenario for multiple replications or when running the model interactively. Stopping C ondition Data Source C ategory Data Item Send comments on this topic to Information Copyright 2006-2011. All Rights Reserved. If defaulted.Discussion and Examples page. For examples of a StateStatistic. a rectangular integration method is used. then the string 'Output' is assumed. then the element name is assumed. If the state variable is a continuous-change variable. Logical expression that is evaluated each time a value is recorded for the state statistic.Simio D oc umentation StateStatistic StateStatistic The StateStatistic element may be used to record time-persistent statistics on a state variable. If defaulted. then a trapezoidal integration method is used to record the statistical observations. Simio LLC. The confidence level used to calculate the confidence interval half-width statistic for the average of the recorded state values. For more information. Listed below are the properties of StateStatistic: Property Report Statistics State Variable Name C onfidence Level Description Specifies if statistics are to be automatically reported for this element. The state variable for which time-persistent statistics are to be recorded. If specified as 'Default'. The simulation run is ended if the expression evaluates to 'True'. Optional string used as the Data Source field for classifying results reported by this statistic element. then the string 'UserSpecified' is assumed. The C onfidence Level property of a StateStatistic element thus only applies if running an experiment scenario for a single replication. If defaulted. . or will be the Experiment's specified confidence level if running an experiment scenario for a single replication. Optional string used as the C ategory field for classifying results reported by this statistic element. for a discrete state variable. then the confidence level used will be either 'None' if running the model interactively. see the Batch Means section of Experiments page. l Since its State Variable Name property is set to 'NumberFailed'. it will collect statistics on the state variable called NumberFailed.Simio D oc umentation StateStatistic . it will collect statistics on the state variable called NumberInSystem. l . l The Data Item property is set to 'General' which indicates that in the Pivot Table of the Results Window. In this example. the simulation run ends whenever the NumberInSystem equals 0 and the simulation has run for at least 8 hours. When it is evaluated. StateStatistic Element and How it Appears in the Results Window StateStatistic Example 2 The following is an example of a StateStatistic element that is also being used to stop the simulation run. if the expression evaluates to 'True' then the simulation run is ended. l The Stopping Condition property is evaluated each time a value is recorded for the statistic NumberInSystem. l The Category property determines what will appear in the Pivot table of the Results Window in the C ategory field. Since its State Variable Name property is set to 'NumberInSystem'. the word 'General' will appear in the Data Item cateogry. In this case. it will show the value of 'User'. The user can put any word into this field in order to add custom organization of the Pivot Table. The user can put any word into this field in order to add custom organization of the Pivot Table.Discussion and Examples StateStatistic Example 1 The following is an example of a StateStatistic element. All Rights Reserved.StateStatistic Element with Stopping Condition to End the Simulation Run Send comments on this topic to Information C opyright 2006-2011. Simio LLC . . The Transfer step is used to transfer entities into and out of a station. Listed below are the Functions of Station: Function NumberArrivals NumberDepartures C apacity C apacity. Server. Returns the initial capacity of the station. Separator and Workstation match the resource allocation and batching ranking rules (in the C ombiner case) that the user specifies in the properties of these objects. Visit the Station . Station elements are built into some of the Simio Standard Library objects. Returns the current capacity of the station. The C apacityC hanged event provides notification that the capacity of the station has changed. The initial maximum number of entities that can be simultaneously located in the station.Discussions and Examples page for more information. .Processing. C ombiner.Remaining C apacity. The queue of entities currently located in the station. Simio LLC. Description Returns the number of entities that have arrived at this station. etc.Minimum C apacity.RideStation. All Rights Reserved. Separator. Workstation.Initial C apacity. Some examples are: Server.ParentInputBuffer. Busy = 1). A station that an entering entity is automatically redirected to if the capacity of this station is zero. Description State indicating whether an entity is currently transferring into the station (Idle = 0. The queue of entities waiting for capacity to enter the station. The static ranking rule used to rank the station's 'C ontents' queue of entity objects currently located in the station. Returns the previous capacity of the station. Returns the minimum capacity of this station during the run. The Exited event provides notification that an entity has exited the station. Server. The current capacity of the station. Listed below are the Properties of Station: Property Report Statistics Initial C apacity Entry Ranking Rule Entry Ranking Expression Dynamic Selection Rule Description Specifies if statistics are to be automatically reported for this element. when capacity to enter the station becomes available. This Ranking Rule for the InputBuffer station of the standard Server.Simio D oc umentation Station Station The Station element may be used to define a capacity constrained location within an object where one or more visiting entity objects can reside. dynamically selects the next entry from its statically ranked entry queue using a dynamic selection rule.MemberOutputBuffer.Previous C apacity. Vehicle. A Station element is added to a model from the Elements panel within the Definitions window. The static rule used to rank entry into this station among competing entities. Returns the maximum capacity of this station during the run.Processing. C ombiner. Indicates whether this station. Returns the current capacity that is remaining at this station. Returns the number of entities that have departed from this station. C ontents Ranking Rule Redirect Station Listed below are the States of Station: State TransferInState C ontents EntryQueue C apacity Listed below are the Events of Station: Event Entered Exited C apacityC hanged Description The Entered event provides notification that an entity has entered the station.OutputBuffer. The expression used with a Smallest Value First or Largest Value First ranking rule.InputBuffer.Maximum Send comments on this topic to Information Copyright 2006-2011. . Simio LLC . if this Stations capacity becomes available and there are entities in the Entry Queue. .Discussion and Examples Station Example 1 The following is an example of a Station element that uses a Dynamic Selection Rule to select which entity can enter in to this Station next. l The Value Expression property is set to 'C andidate. l Properties Window of a Station Element Send comments on this topic to Information C opyright 2006-2011.PartType == 2' so it will only look to select entities that meet this criteria. this Station will select entities from the Entry Queue based on the rule of Largest Value First.Simio D oc umentation Station .ModelEntity. Since its Dynamic Selection Rule property is set to 'Largest Value First'. All Rights Reserved. so the Station will select the entity with the largest value for the state ModelEntity.Priority. l The Filter Expression property is set to 'C andidate.Entity.Priority'. A queue can be animated from the Drawing Tab by selecting Detached Queue. The expression used with a Ranking Rule of Smallest Value First or Largest Value First. All Rights Reserved. Send comments on this topic to Information Copyright 2006-2011. There are functions that can be used to get information about a Queue State. Simio LLC. to rank the queue holding the objects in the storage. Listed below are the properties of Storage: Property Report Statistics Ranking Rule Ranking Expression Description Specifies if statistics are to be automatically reported for this element. . The Insert and Remove steps are used to insert and remove objects from the Storage element's queue. A Storage element is added to a model from the Elements panel in the Definitions window.Simio D oc umentation Storage Storage The Storage element may be used to define a queue for temporarily holding one or more objects. The rule used to rank the queue holding the objects in the storage. Storage Element and Related Steps Send comments on this topic to Information C opyright 2006-2011. when a Remove step is used to take entities out of the queue.Simio D oc umentation Storage . In this example. l Since its Ranking Rule property is set to 'FirstInFirstOut'. . the entities simply follow the static ranking rule of FirstInFirstOut to determine their placement in the queue. l Since Rank Placement property is blank. l A Remove Step takes the entity out of the queue. An entity also leaves the queue if it has been destroyed elsewhere in the system. so the Object Type property of the Insert Step is set to 'AssociatedObject'.Discussion and Examples Storage Example 1 The following is an example of a basic Storage element. an entity is the associated object of the token that is executing the process. Simio LLC . l An Insert Step is used to add entities to the Storage queue. All Rights Reserved. the first entity that enters this queue will be the first to leave. If defaulted. Stopping C ondition Data Source C ategory Data Item Send comments on this topic to Information Copyright 2006-2011. NOTE: Runtime confidence interval half-widths are never calculated when running an experiment scenario for multiple replications or when running the model interactively. then the string 'UserSpecified' is assumed. Optional string used as the Data Item field for classifying results reported by this statistic element. The simulation run is ended if the expression evaluates to 'True'. Optional string used as the Data Source field for classifying results reported by this statistic element. then the element name is assumed.Simio D oc umentation TallyStatistic TallyStatistic The TallyStatistic element tallies observational statistics that are recorded using the Tally step. Logical expression that is evaluated each time a value is recorded for the tally statistic. A single TallyStatistic element may be referenced by multiple Tally Steps. The C onfidence Level property of a TallyStatistic element thus only applies if running an experiment scenario for a single replication. Listed below are the properties of TallyStatistic: Property Report Statistics C onfidence Level Description Specifies if statistics are to be automatically reported for this element. The confidence level used to calculate a confidence interval half-width statistic of the recorded observations. If defaulted. If specified as 'Default'. It is added to a model from the Elements panel within the Definitions window. If defaulted. see the Batch Means section of Experiments page. then the confidence level used will be either 'None' if running the model interactively. For more information. then the string 'Output' is assumed. . Simio LLC. Optional string used as the C ategory field for classifying results reported by this statistic element. or will be the Experiment's specified confidence level if running an experiment scenario for a single replication. All Rights Reserved. The TallyStatistic element is referenced by the Tally step which specifies a value to be tallied. LastRecordedValue TallyStatistic. a Tally Step must be inserted into the logic of the model. l Using a TallyStatistic Element Send comments on this topic to Information C opyright 2006-2011.Simio D oc umentation TallyStatistic . category and data item in its properties window.Average TallyStatistic.Discussion and Examples Discussion The following functions are available for a TallyStatistic and can be used in an Expression within your model logic or displayed in a Status Label or Floor Label in the Facility window (see Functions for information on what value they return): l l l l l l TallyStatistic. the Confidence Level property is set to 90%. The TallyStatistic is created in the Elements panel within the Definitions window.Minimum TallyStatistic.ModelEntity.NumberObservations TallyStatistic Example 1 The following is an example of a TallyStatistic element that tallies the time it takes for an entity to arrive at Server2. l In order to use a TallyStatistic.HalfWidth TallyStatistic. which will determine how the Half Width is calculated in the results. . All Rights Reserved. In this example.TimeC reated'. an optional label. the Tally Step is added to a process that is triggered by the Entered Add-On process trigger of the Input Node of Server2. TimeNow is the current simulation time and ModelEntity. Simio LLC . It is simply given a name.Maximum TallyStatistic. In this example. l The Value property is set to the expression 'TimeNow . The result of this expression is recorded into the TallyStatistic each time this Tally Step is executed.TimeC reated is a Simio function that returns the simulation time when this entity was first created. The name of the event which determines when the next timer event is fired. For examples of how it uses the timer. it can be used as the triggering event that executes a Process. then the first event occurs at TimeOffset. then the actual arrival time will occur earlier than the scheduled time by that duration. The MaximumEvents expression will be re-evaluated each time it is required to be looked at. Rate Scale Factor Triggering Event Triggering Event C ount Arrival Time Property Arrival Events Per Time Slot Arrival Time Deviation No-Show Probability Repeat Arrival Pattern Maximum Events Maximum Time . see the Source Discussion and Examples page. The maximum number of timer events that will be fired. see the Timer . If the IntervalType is Time or TimeInState. then the first event time is determined by the rate pattern. The state variable holding a specific value that the Time Offset and Time Interval applies to. Note that the actual timing of an arrival event may deviate from the expected schedule if the Arrival Time Deviation and Arrival No-Show Probability options are being used. The standard Source object uses a Timer element to generate arrivals. The Timer has an Enabled state that allows the Timer to be enabled/disabled. The rate table that defines how the rate of timer events changes over time (the event occurrences follow a nonstationary poisson process). This expression may return a negative or positive value. To disable a Timer. The maximum time from a timer reset after which the timer will stop firing events. If a positive deviation value is returned.Simio D oc umentation Timer Timer The Timer element fires a stream of events according to a specified IntervalType. The maximum number of timer events is limited to MaximumEvents. The probability that a scheduled arrival in the arrival table will be a 'no-show' and thus not actually occur. If the timer is disabled and it is an EventC ount timer. The factor used to scale the rate values specified in the rate table. Note that this feature is automatically disabled if random sampling in the simulation is disabled. It is added to a model from the Elements Window from within the Definitions Tab. Listed below are the properties of Timer: Property Report Statistics Interval Type Time Offset Time Interval State Variable Name State Value Rate Table Description Specifies if statistics are to be automatically reported for this element. Note that this feature is automatically disabled if random sampling in the simulation is disabled.Enabled) to 0. TimeInState. The time offset until the first timer event. EventC ount or ArrivalTable. The state variable value that the Time Offset and Time Interval applies to. set its Enabled property (Timer. When a Timer event is fired. For additional information on using Timers. Enter the chance of a no-show as a value bewteen 0 and 1 (including values of 0 or 1). Expression used to model differences (typically random) between the scheduled times in the arrival table and the times during the simulation run that the arrivals actually occur. If a negative deviation is returned. then the created tokens are associated with the object that owns the Timer element.e. then the actual arrival time will occur later than the scheduled tim by that duration. The number of Triggering Event occurrences required to trigger the next timer event. then the calendar event stream is stopped. The number of timer events expected to be fired at each arrival time specified in the Arrival Time property. or RateTable timer. then the triggering event fire notification is stopped. Indicates if the pattern of arrival times specified in the Arrival Time Property should be repeated when the end of the pattern is reached. The name of the numeric table property (i. For an example of using the Timer element. event count or the numeric table property. The time interval between two successive timer events. If there are any processes specified to be triggered by that event. table column) that defines the times when the timer event is fired. please refer to the SimBit ScheduledMaterialArrivals. If the timer is disabled and it is a Time. The Reset event will reset the timer. The mode used by the Timer to determine the time interval between two successive timer events. If the IntervalType is RateTable.Discussions and Examples page. Listed below are the states of Timer: State Enabled ElapsedTime Description Indicates whether the timer is currently enabled. . Resets the timer.Reset Event Initially Enabled An occurance of this event will reset the timer. Simio LLC. All Rights Reserved. Specifies whether the timer is enabled when the system is initialized. The time (or time in state if applicable) that has elapsed since the last timer event. Description The timer event. Listed below are the events of Timer: Event Event Reset Send comments on this topic to Information Copyright 2006-2011. In the Properties window of this new process.If((myState==3)||(myState==4). This would cause the TimeOffset and Interarrival Time values of the timer to be based on the time that the state variable 'myState' had values of 3 or 4. The Maximum Events property tells the Timer to stop firing after 5 events have been fired. l . again when 15 entities have entered.Math. if Interval Type = 'TimeInState'. the Timer fires an event after 5 entities have entered the input node. an hour apart. then again when 10 entities have entered. then State Value expression is re-evaluated on every state change.Entered' which determines that this is the event that is counted by the Timer. State Value = 'Math. etc. The Interval Type property is set to 'Event C ount' so this Timer counts the number of specified events to determine when to fire its own event next. For example.NaN)'. Timer Example 1 The following is an example of a Timer that fires 5 events. A new process can be created from the Processes Window by clicking the C reate Process button in the ribbon.Discussion and Examples Discussion In order to have a process execute when a Timer fires its event. Therefore. l The Triggering Event Count property tells the Timer to fire its event after 5 occurences of [email protected]) from the drop down of the Triggering Event property. l The Triggering Event property is set to 'Input@Server1. select the name of the Timer (.Entered. Properties Window of a Timer Element Timer Example 2 The following is an example of a Timer that fires an event every time 5 entities have entered the Input Node of Server1. This will cause this process to be executed each time the specified Timer fires an event. l l l The Time Offset property is set to '2 hours' so this Timer does not fire it's first event until 2 hours into the simulation run. Linking a Timer's Event and a Process If the Timer element's Interval Type is 'TimeInState'. This allows the user to model an expression whereby the timer's Time Offset and Interarrival Time values are based on multiple possible state values instead of a single state value. The Time Interval property is set to '1 hour' which indicates that the events are fired with one hour in between events. the Triggering Event property on the Process must be set to the name of the Timer's event. State Variable Name = 'myState'.myState.Simio D oc umentation Timer . starting at 2 hours after the beginning of the run. If a Date Time property is used. So if the starting date of the simulation was 1/1/2008 12:00:00 AM.Properties Window of a Timer Element Timer Example 3 The following is an example of a Timer that fires its event based on information in a Data Table.Resource. l The Arrival Time Property property is set to 'Table1. All Rights Reserved. to determine when to fire its next event. the event will fire at the simulation start time plus the numeric value of the property. when Server1 has been busy for a total of 3 hours. The Timer reads information from a Date Time. Simio LLC . the timing of the event will be calculated by the time span from the starting date of the simulation to the value in the table. the timer will fire. Properties Window of a Timer Element Send comments on this topic to Information C opyright 2006-2011.Notification' which tells this Timer to read the property called Notification from the table called Table1.5 hours. the timer will fire when the total time that Server1's ResourceState = 1 reaches 3 hours. l The Interval Type property is set to 'Arrival Table' so this Timer looks to a property in a Data Table to determine when to fire its next event. . the event would be fired at time 2. and the Date Time in the table was 1/1/2008 2:30:00AM. In this example. l The Interval Type property is set to 'TimeInState' so this Timer looks to the state variable Server1. If a Real or Integer property is used.TotalTime to determine when to fire its next event. Properties Window of a Timer Element Timer Example 4 The following is an example of a Timer that fires its event based on the amount of time spent in a state. an Integer or Real property in a Data Table to determine when to fire its next event. In other words. chm.). All Rights Reserved. etc.Simio D oc umentation User Defined Elements Simio provides an open architecture that allows users to add new steps and elements to the system.NET language (Visual Basic. Send comments on this topic to Information Copyright 2006-2011. For additional information on creating your own custom Elements. See Simio Visual Studio Templates for information on how to use the templates provided by Simio to get started with User Defined Elements. Simio LLC. Steps and elements may be coded in any . You would simply add your *. J#. C #. see C ustom Simio Extensions and C:\Program Files\Simio\Simio API Reference Guide. . Simio provides several sample User Defined elements including BinaryGate and File.dll files to the UserExtensions folder of Simio. A BinaryGate is initially closed and must be opened before any object can flow through it.Simio D oc umentation BinaryGate BinaryGate The BinaryGate user defined element defines the gate name and its characteristics. Simio LLC. Listed below are the properties of BinaryGate: Property Public Report Statistics Description Specifies if this element is publicly accessible outside of its containing object. All Rights Reserved. The BinaryGate element is used in conjunction with the OpenGate. . Specifies if statistics are to be automatically reported for this element. C loseGate and PassThruGate user defined steps. Send comments on this topic to Information Copyright 2006-2011. Simio D oc umentation File File The File user defined element defines the file name and its characteristics. The user should ensure that they have sufficient privledges to write to the location that they specify for the file path. Simio LLC. All Rights Reserved. The full path of the file to read from or write to. Listed below are the properties of File: Property Public Report Statistics File Path Send comments on this topic to Information Copyright 2006-2011. . Specifies if statistics are to be automatically reported for this element. Description Specifies if this element is publicly accessible outside of its containing object. The File element is used in conjunction with the Read and Write user defined steps. See the WritingToAFile SimBit for an example on how to use the File Element. These repeat group type properties allow the user to specify multiple. There are four different types of Properties that can be added to the model by selecting the appropriate icon in the ribbon menu.Simio D oc umentation Properties Properties Properties of a model object are the input parameters associated with that object. They are added to a model from the Properties panel of the Definitions window. It is a static input parameter (e. Depending upon the rule selected. Object Reference Properties and Repeat Group Properties. For example. Properties are added to the model from the Properties panel of the Definitions window. such that it appears within a given "section" of properties for that model object. A property may be categorized. Properties may also be put into repeating groups. A Property holds a specific data type. there is a property named RankingRule. This will allow you to customize what the user of a model sees based on the values input into other properties. Properties can also be switched in/out based on other values. processing time. an additional property called RankingExpression will be switched in/out. Standard Properties.g. in the Server object from the Standard Library. Element Reference Properties. An example of a repeating property is the Assignments(More) property of the Assign step in the Processes window. Learn more about the properties of the Simio standard objects by viewing the details of each Standard Library Object. Here are the many different property types a user can create and use within their project. . batch size) for the object and does not change during the running of the simulation. similar properties within a different interface. within the "Process Logic" category of properties. See Repeat Groups for more information. the Switch Condition would be 'Equal'and the Switch Value would be '1. Once a Referenced Property is added to a model. separated by commas. The easiest way to simultaneously add the main level properties and create the reference to it is to right-click on a property of interest for an object within your model and select “Add Reference Property”. A Property can be used as an input parameter into an Experiment. The user can enter a value into the table for that Property and might choose to run multiple scenarios. 4'. C hanging the default value of the property affects the model if that property is referenced by objects in the model. To specify multiple values within the Switch Value field. enter the values. It does not make sense to display Capacity if the Capacity Type is 'WorkSchedule'. then the Switch Property Name for Property2 would be 'Property1'.e. Switch Condition is set to 'Equal' and Switch Value is set to 'Fixed'. they get their values from these properties. each with a different value entered for the Property(s). Switch Condition and Switch Value. For example. and C trl-V (Paste) is supported for Properties. NOTE: C trl-X (C ut). 2. if a property. Property1. Therefore. Each property has three properties called Switch Property Name. This adds a new property to the parent model and sets the reference to this new property.The main model properties may be referenced by properties of objects within your model – i. For example. is displayed only if another property. the property of a Fixed object type called InitialCapacity is only displayed if the property Capacity Type is equal to the value 'Fixed'. C trl-C (C opy). Properties panel and select the property InitialCapacity to see this example. See the main Model's Definitions window. 2 or 4. has a value of either 1. Property2. Please refer to the User Interface for more . on the property Capacity. The Switch Value property can have multiple values associated with it. These are used if this particular property is only used based on the value of another property. You can see this new property by clicking on the Definitions tab and selecting the Properties panel for your main model. it then appears in the table of the Experiment Design Window. the Switch Property Name is set to 'C apacityType'. A State Property can be used to reference a state variable (e. if the starting date of the simulation was 1/1/2008 12:00:00 AM. Then ensure that it is selected (highlighted) and add the properties that you wish to be part of the repeating group. The DateTime is a Numeric Property that returns the time span from the starting date of the simulation to itself.Properties. the value of the expression does. In order to add rows to a Repeating Group Property. . Hence although the expression definition does not change during the run. The sub-properties will appear in the Properties window under a category such as RepeatingProperty1. An Expression Property can be used to reference an expression or it can be used to return the value of the expression. Send comments on this topic to Information C opyright 2006-2011.details. and the DateTime is 1/1/2008 2:30:00AM. For example. Note: An Expression Property may contain random variables or state variables that return a different value each time. This is done by expanding the C aptions category in the Enum properties window and selecting or unselecting values or changing the display name of the value. The user has the ability to hide values for an Enum Property or to change the caption that is displayed in the Enum property. the value 2. Both a State Property and an Expression Property have dual behavior because they are derived from a Numeric Property. Simio LLC . All Rights Reserved. statistics element) or it can be used to return the value of the state variable.5 is returned if DateTime is referenced in an expression or an Arrival Table.g. first add a Repeat Group property in the Properties window. Within the Standard Library objects. For example. in this example) with a SetRow Step.Simio D oc umentation Repeat Groups Repeat Group Properties Properties may be put into repeating groups. This example then references the Entity_Type property of that Repeat Group in the Object Instance Name property of a C reate Step to determine which type of entity to create. similar properties within a different interface. A repeating property is shown in the user interface with a default value of '0 Rows' with a small button on the right side containing '.. as well as the Seizes property of the Seize step. the repeating property dialog opens to allow any number of repeating property assignments. from elsewhere in your model. These repeat group type properties allow the user to specify multiple. state assignments can be made On Entering or Before Exiting the Server. In this case. Examples of a repeating property are the Assignments(More) property of the Assign step. within the Server. in the Processes window. . you are setting a reference to a particular index in a Repeating Group property so you can utilize the data in that Repeat Group.'. It demonstrates how to set a reference to a Repeat Group property (Entity_Types. By pressing the button. Repeating Properties within the State Assignments of a Server Setting a Reference to the contents of a Repeat Group Property You can set a reference to the contents of a Repeat Group Property. similiarly to how you set a reference to a Data Table. This will allow you to reference data inside of a Repeat Group property. The following screen shot is from the SourceWithC ustomEntityTypeProperty SimBit. This is similar to setting a reference to a row in a table in order to utilize the data in a Simio table.. many of the objects have repeating properties in the State Assignments section. When Simio encounters the table reference in the repeat group tuple. the entity previously was assigned a pointer to a specific row in the table. PartB requires Joe). when referencing a table column. Simple Table References Tables may be referenced within a repeating property and repeat group field. used a SetRow of EntityNames and the particular row number. please see the SimBits TableReferenceInRepeatingProperty.ResourceName'. This referencing assumes that the user has already put an explicit SetRow to this same table earlier in the logic.Setting a Reference to a Repeat Group Property Referencing Tables within Repeating Properties The procedure for referencing a table entry from within a repeating property depends upon how the table is referenced. EntityNames. where MyPropertyName is the name of the property column within the table. The Object Name references the table by using 'EntityNames. there are two entity types (PartA and PartB) which require a different resource for processing at a Workstation (PartA requires Jane. When referencing a table column within a particular repeating property. Typically. The processing entity.MyPropertyName. RelationalTableInRepeatingProperty and SourceWithC ustomEntityTypeProperty. '1 Row' will appear in the Secondary Resources property of the Workstation. the resource can be determined because it already has a row set for that table for the current entity. This is done using the SetRow step in the Processes window or through the Table Reference Assignment within the Source object. prior to referencing the table. For more information on referencing tables within repeating properties. Below are the steps for referencing a simple table and a relational table from within a repeating property. Once the table is referenced within the repeating property. In the below example. The information about the entity types and associated resource needed is stored in a table. you would specify MyTableName. . EntityTable and Resources.Referencing a Simple Table and Column Property within a Repeating Property Relational Table References Relational tables may also be referenced within a repeating property and repeat group field by using MyRelationalTableName. there are two tables in the model. PartA and PartB and is set as a key column. Referencing a Relational Table and Column Property within a Repeating Property In this case. This referencing assumes that the user has done a SetRow to a different. the software will know that there are not a fixed number of entries based on what has been entered into the repeat group. In addition to referencing the table and property column within the actual repeating property. the Entity Reference is a Foreign Key. When entities in the model are created. There is also a table named Resources that contains the names of the resources that each of the two part types requires for processing at a given Workcenter. Resources. one additional step is needed. See Tables for more information. and Resource Needed specifies one or more resources for each entity type. The EntityTable simply lists the Entity Names. For example.MyPropertyName. but it is based on what is shown in the table. because the entity has no known row within the Resources table. By doing this. but related table earlier in the logic. In the diagram shown below. as shown below. is referenced in the Secondary Resources property. . as shown in the diagram below. the table. To reference a table within a property. In this Resources table. right click on the property and select the Set Referenced Property and select the table name to reference. the table name must be referenced in the main property. their SetRow should be set to either PartA or PartB from the EntityTable. Referencing the Table Name within a Repeat Group Property Repeating Groups and Object Building When building an object.MyTime • MyRepeatGroup. You may utilize the SetRow step with the Table Name set as ‘MyRepeatGroup’. . Other table functions. For example. please see the SimBits TableReferenceInRepeatingProperty. RelationalTableInRepeatingProperty and SourceWithC ustomEntityTypeProperty. Send comments on this topic to Information C opyright 2006-2011. let’s say you have a repeat group named MyRepeatGroup with two properties within the repeat group. you may need to define a repeat group and repeating properties.MyTime. may also be referenced within an expression. for such steps as Assign. Seize or Release.RandomRow • MyRepeatGroup. as shown below. as a reference property in places that take an entity reference For more information on using repeating properties. One feature of repeat groups and their properties is that they may be referenced similar to referencing tables.AvailableRowC ount • MyRepeatGroup. Simio LLC . such as a Source or Server. • MyRepeatGroup.MyTime • MyRepeatGroup[x].MyEntityReference. MyTime and MyEntityReference. All Rights Reserved. acceleration and acceleration duration parameters are discrete-change values that may be changed by assignment logic at discrete times during a model run. the status of a machine selected from an enumerated state list. Time units available in Simio are Hours. If the Dimension property is set to 'Vector'(or a one is typed into the Dimension property). The state's rate parameter is a discrete-change value that may be changed by assignment logic at discrete times during a model run. The state's rate. A State might represent a count of completed parts. An Integer discrete-change state variable represents an integer numeric value that may change by assignment logic at discrete times during a model run. A DateTime discrete-change state variable represents a datetime value that may change by assignment logic at discrete times during a model run. the temperature of an ingot heating in a furnace. Feet Per Second. For more information. C trl-C (C opy). NOTE: C trl-X (C ut).Simio D oc umentation States States Simio allows the user to add either a Discrete State (Real or List) or a C ontinuous State (Level or Level with Acceleration) to the model. Meters Per Minute.Rate can be used to modify the rate of change throughout the simulation run. A Boolean discrete-change state variable represents a boolean (true or false)value that may change by assignment logic at discrete times during a model run. A Level with Acceleration continuous-change state variable defines a numeric variable that may change continuously over time based on the current value of its rate and acceleration. To learn more about inherited States on each type of object. A Real or Integer state has a property called Unit Type. The choices are Time. based on the LevelStateName. see the help topic Assigning States. Kilometers Per Hour. Integer. A Level continuous-change state variable defines a numeric variable that may change continuously over time based on the current value of its rate. If the Dimension property is set to 'Matrix' (or a 2 is typed into the Dimension property). Boolean and DateTime states can become arrays or a matrices by changing the value of the Dimension property. C entimeters. This classifies the units of the values stored in this state variable. Inches. l l l l l l l l A Real discrete-change state variable represents a real numeric value that may change by assignment logic at discrete times during a model run. Statistics can be recorded on state variables by creating a StateStatistic element in the Elements Window. and the state will automatically collect and report time-persistent statistics for each of its state values. Yards and Miles. Node objects. see String States. If the Dimension property is set to 'Scalar' (or a zero is typed into the Dimension property) the State does not have a dimension and is therefore a scalar Discrete State. Days and Weeks. Meters Per Second. see List States. A String discrete-change state variable represents a string value that may change by assignment logic at discrete times during a model run. For additional information on how to assign a State to an object. A list state's value may be changed by assignment logic at discrete times during a model run. A List discrete-change state variable represents an integer variable with a discrete set of possible values from 0 to N. For more information. Please refer to the User Interface for more details. Seconds. States and Events help pages for Entity object. Minutes. the Rows and Columns properties will determine the . Feet. see the following Functions. Travel Rate units available in Simio are Meters Per Hour. and C trl-V (Paste) is supported for all States. Every object in Simio has States that are inherited from its base class. An automatic rate variable. TravelRate and Length. Feet Per Minute and Miles Per Hour. States are added to a model from the States panel within the Definitions window. State Arrays The Real. or the accumulation level on a conveyor belt. Length units available in Simio are Meters. Kilometers. Link objects. A zero-based indexed string list is used to define the possible integer values for the state. A State variable is assigned a value using an Assign Step in a process. Transporter objects and Resource objects. the State is 1 dimensional and the Rows property will determine the number of rows in the array. the level of oil in a ship being filled. set the Dimension property of the state to '[Table]' and select the appropriate Data Table from the drop down of the Table Name property. To bind an array to a table. simply type in the number of dimensions into the Dimension property. such as. Queue States A Queue State holds a list of objects or tokens.3] where 2. . There are a number of functions that can be used with Queue States. Up to 10 dimensions are supported. Queue states are used in such things as Station and Storage elements. use the syntax StateArray[2].number of rows and columns in the matrix. When bound. and the array data will be initialized from the data in the table as well. the user should bind the array to a Data Table. State Array indexing is 1 based. where StateArray is the name of the State variable and 2 is the value of the row that is referenced. Simio LLC . the array size will be initialized from the number of rows and numeric columns in the table. In order to initialize a State Array.3 is the index to the matrix in this 2 dimensional array. StateArray[2. All Rights Reserved. Queue states in Storage elements can be modified by using the Insert and Remove step to add and remove objects from them. In order to reference a State Array. If you would like an array larger than 2 dimension. Send comments on this topic to Information C opyright 2006-2011. A multi dimensional State Array can be referenced similarly. namely the 'ObjectName. therefore. Vehicle. C ombiner and Separator 'ResourceStateName' string list for the Server. Setup and Teardown are all AllocatedAutoStates). The List State references a String List that is defined in the List panel in the Definitions window. The simulation engine also will ‘save’ the last assignment as the state value to be now used whenever it comes back to that particular autostate condition. in the Workstation list shown below. C ombiner and Separator object 'ResourceState' list state and the numerical equivalents include: l l l l l Starved (0) Processing (1) Blocked (2) Failed (3) Offshift (4) Resource 'ResourceStateName' string list for the Resource object 'ResourceState' list state and the numerical equivalents include: l l l l l l Idle (0) Busy (1) Failed (3) Offshift (4) FailedBusy (5) OffShiftBusy (6) Workstation 'ResourceStateName' string list for the Workstation object 'ResourceState' list state and the numerical equivalents include: l l l l l l l Starved (0) Processing (1) Blocked (2) Failed (3) Offshift (4) Setup (5) Teardown (6) Vehicle 'ResourceStateName' string list for the Vehicle object 'ResourceState' list state and the numerical equivalents include: l l l l l Idle (0) Busy (1) Failed (3) FailedBusy (5) Transporting (7) Worker 'ResourceStateName' string list for the Worker object 'ResourceState' list state and the numerical equivalents include: l l l l l l Idle (0) Busy (1) Offshift (4) OffShiftBusy (6) Transporting (7) OffShiftTransporting (9) User Defined List States The user may define one or more List States for a model under the States panel in the Definitions window. This is done by specifying the List Name property . Workstation. Multiple list entries may be associated with a single autostate (i.. These automatic resource states have statistics calculated for the number of occurences and percentage of time spent in each given state. Server. This list state references a string list named 'ResourceStateName' and the states are automatically assigned as 'ResourceAutoStates'. you may use the Assign step to assign a list state that is following autostates. Additionally. The Status Pie may be used to graphically display the various states of an object. Specify the Data Type property as 'ListState' and the List State property is 'ResourceState'.. Resource. Automatic List States for Server.ResourceState'. Processing.e. A Status Pie may be added by highlighting the desired object. The assignment is allowed as long as the state value being assigned is associated with the current autostate condition.Simio D oc umentation List States List States There are two types of List States including Automatic List States and User Defined List States. Separator. Below are the contents of the string list 'ResourceStateName' for the various objects and the object states that may be assigned. and Worker With many of the Standard Library objects. and clicking on the Status Pie on the Symbols tab. There are also functions available to use with List States. i. Combiner. no user assignments to the list state are required. there is an automatic List State that is updated during the simulation. Server1.e. the interface displays and allows the configuration of the autostates associated with the possible list state values. When using the 'ResourceAutoStates'. PercentTime(1)' utilizes the resource state for Server1 to determine the percentage of time that the server has the state value of 1 (which is Processing.ListName. use the expression 'Worker1[2]. The first value in the String List is value 0. the ResourceStates can also be used during the simulation run.ResourceState. which is Idle. List States Functions The following functions are available for List States: AverageTime(stateValue) NumberOccurances(stateValue) PercentTime(stateValue) TotalTime(stateValue) Therefore.PercentTime(0) would show the percentage of time that the first unit of Vehicle1 has the state value of 0. For example.PercentTime(1)+ Worker1 [2]. 'Vehicle1[1]. using the object's list state in an expression can show the percentage of time in each state. While a status pie graphic for an object's list state can give you a pie chart of the various states that the object is in. It may be desireable to determine the percentage of time in multiple states for an object. There are no automatic assignments made during the simulation. use the syntax [ObjectName]. The Initial State Value must be a value from the String List and should represent the state of the model when it initially starts running.ResourceState. and Automatic Assignment Type as 'None'. similar to referencing a list elsewhere in the model. Utilization Statistics The ResourceState list states provide time-persistent statistics for many of the objects in the simulation system. as shown in the above section). the expression 'Server1. The String List should include any possible states that the user may want to assign to the List State using the Assign step. User Defined List State using Lists. the Assign step in the Processes Window should be used to change the List State value from one string value to another.Value'.ResourceState. as with the above automatic ResourceStates.as 'MyStringListName'.PercentTime (stateValue). Thus. the information is available to track resource utilization statistics during a simulation run to be displayed with a status label. For example. Likewise.ResourceState. Because Simio automatically tracks the list states for the various objects.PercentTime(7)' to display the percentage of time that the second unit of Worker1 is either busy at a stationary task or busy transporting or moving between nodes. States and Assign step User defined List States will automatically generate statistics for the model (not specific object) on the number of occurences and percentage of time the List State has a value for each of the given string values. The List State can also be graphically displayed by using the Status Pie found on the Animation tab of the ribbon. . if a worker is used for transporting tasks as well as stationary tasks. where stateValue is the number referencing the state in the String List. to reference the percentage of time that an object was in a certain state. Assignments to the List State in the Assign step are made by specifying the State Variable Name property as 'ListStateName' and the New Value property as 'List. In addition to tracking these utilization statistics for the Results page. All Rights Reserved. Worker). Simio LLC . Send comments on this topic to Information C opyright 2006-2011. Vehicle. and Resource) and dynamic objects (Entity.Refer to the SimBits ExamplesOfFunctions_StaticObjects and ExamplesOfFunctions_DynamicObjects for examples of using and displaying various functions with static objects(Source. Sink. . Server. Path. substring) String. For example.Format(string. you are 30 years old” returns 0 if the strings are equal.ToDateTime(string) String. you are {1} years old”. arg2. …) String. arg1. so “Hello” + “ World” turns into “Hello World”. of a string based on the start date and time of the simulation model (String.Simio D oc umentation String States String Expression Functions Available There are a number of functions that are available when utilizing strings in an expression. 2010 00:00:00” ) returns a datetime representation. 30) turns into “Hello Friend. See the StringStates SimBit to see an example of using String States in Simio. -24 if the start date is October 12. the expression 'MyStringstate==”Red"' and 'MyStringState > “A”' are valid for use in a Decide step. “Friend”. 2010”) turns into 0 if that is the start date of the simulation. Send comments on this topic to Information C opyright 2006-2011.FromDateTime(value) Return Value returns the length of a string return true if substring is in string.C ompare(string1.C ompareIgnoreC ase(string1. string2) String. Also supported are the logical comparison operators such as ==.C ontains(string. Simio LLC . 1 if string1 > string2 same as above.C ompareIgnoreC ase(“fred”. etc.Length(string) String.ToReal(string) String.) returns a new string formatted with the specified format string and arguments.FromReal(value) String. Listed below are the String Expression Functions available: Function String.FromReal (6) turns into “6”) returns a real value representation of a string (String. We follow the .>.Format(“Hello {0}. but ignores casing in comparison. “FRED”) does not return 0. so String.FromDateTime(6) turns into “October 1.ToDateTime(“October 11. in hours.NET string formatting syntax here: String. “FRED”) does return 0.Substring(string. 2010 06:00:00” if the start date of the simulation is “October 1.ToReal (“6. etc. . string2) Simio supports '+' for strings. otherwise false returns a substring of string starting at startindex and of the specified length returns a string representation of a real value (String. startindex.C ompare(“fred”.2”) turns into 6. All Rights Reserved. String. 24 if the start date is October 10.2) returns a string representation of a datetime value based on the start date and time of the simulation (String. -1 if string1 < string2. but String. length) String. Simio LLC . For an example of adding new Events.Exited Output@ObjectName. and C trl-V (Paste) is supported for Events.C apacityC hanged Input@ObjectName. .C apacityC hanged Standard Entity and Vehicle Objects l l l l Standard Node Objects l l l l Standard Link Objects l Send comments on this topic to Information C opyright 2006-2011. An Event is added to a model from the Events panel within the Definitions window. A Wait step can also be used to wait for an event to be fired. The Subscribe step can be used to dynamically add a triggering Event to a process.C apacityC hanged ObjectName. C ombiner and Separator are also similar except that C ombiner has both ParentInput and MemberInput and Separator has both ParentOutput and ParentInput. C trl-C (C opy).Exited [email protected] apacityC hanged ObjectName. Standard Resource Object l l l ObjectName. The following events are summarized by object type.C apacityC hanged [email protected] apacityC hanged [email protected] ObjectName. An Event is fired with a Fire step in a process.Simio D oc umentation Events Events An Event is a notification that can be given by one object and responded to by several.Entered [email protected] apacityC hanged ObjectName.RiderWaiting Note: Source and Sink objects are similiar except that Source does not have an Input Node and Sink does not have Output Node. Please refer to the User Interface for more details.Transferring ObjectName. A Process waits for a fired event by having its Triggering Event property set to the name of the event that it is waiting for.Engaged ObjectName.Transferred ObjectName.Allocated ObjectName. where ObjectName is replaced by the name of the actual object: Standard Server and Workstation Objects l l l l l l l l ObjectName.Exited ObjectName.Entered ObjectName. NOTE: C trl-X (C ut). All Rights Reserved. There are a number of events that are automatically fired by Simio.RiderWaiting **only for TransferNode ObjectName. please refer to the SimBit UsingButtonsToAffectSystem.Entered Output@ObjectName. List are also used to define the possible changeover states for a changeover matrix (e. or to provide a list from which a selection is to be made (e. if we have a list named C olor with members Red. as well as the Model. etc. Yellow. If we have a ListProperty (i.). Small. For example. then List. String List Defines a string list (e. Medium.g. NOTE: C trl-X (C ut). A List is added to a model from the Lists panel within the Definitions window.ListName. color. nodes. or the possible from-to states in a changeover table. Server object) that allow for a selection of an object from a list of objects.Simio D oc umentation Lists Lists Lists are used to define a collection of strings.).g. Search step) and objects (e. Examples of using string lists are the SimBits SelectEntityC olorFromStringList and WorkstationWithSequenceDependentSetup. Please refer to the User Interface for more details. or transporters. and C trl-V (Paste) is supported for all Lists. Fred. objects.Value. a resource to seize.C olor. String lists must be defined in Definitions window for both the ModelEntity.g. transporter to select. . A List value may be referenced in an expression using the format List.e. Green. Blue. Large) that is used to define a list property that can have any value from the list. String List Example Object List Defines an object list (e. Sue. a property whose possible values are list members) named BikeC olor we can test conditions like BikeC olor == List.Yellow returns a value of 3.g. Tom) referenced by steps (e. etc. Examples of using object lists include the SimBits SelectingResouresAsAGroup and SelectingResourceFromList.g.Yellow.g.C olor. size. C trl-C (C opy). The members of list have a numeric index value that begins with 0. Ride step) and objects (e.g. MergePoint) that is used by the TransferNode step and the RoutingGroup element to dynamically route an entity to a node based on the current state.g. C art2. Input@Drill. OneQueueForMultipleServers and UsingAStorageQueue. C art3) that is used by steps (e. There are many examples of using the node list including the SimBits SelectServerWithShortestLine.g. . TransferNode) that allow for the selection of a transporter from a list of transporters.Object List Example Node List Defines a node list (e. C art1.g. Input@Lathe. Node List Example Transporter List Defines a transporter list (e. Simio LLC . All Rights Reserved. .Transporter List Example Send comments on this topic to Information C opyright 2006-2011. the Token State can be applied to a State on the new Entity. A Token may have one or more user defined states that carry information from Step to Step. All Rights Reserved. C trl-C (C opy). with the Create Type set to 'NewObject'. Simio LLC . to create a new Entity and they would like the new entity to have one of the same States that the original Entity has. . An example of why a user might want to create a custom Token is if they are using a C reate step. Please refer to the User Interface for more details. and C trl-V (Paste) is supported for Tokens. You only need to add a Token through the Token panel of the Definitions tab if you require a Token with one or more custom states or if you wish to use a Token as a counter in a process loop. Before the C reate step. And then from the C reated segment of the C reate step. NOTE: C trl-X (C ut). A Token may also reference an associated object such as an Entity that is visiting the parent object. the Entity State can be saved into a custom Token State. Simio provides you with a default token named Token that you can use for most of your processes. Send comments on this topic to Information C opyright 2006-2011.Simio D oc umentation Tokens Tokens A Token executes the steps in a process flow. to enter the newly defined object. When utilizing hierarchy in building a model (for example. The External window may also contain animated queue states for the model. . along with external node symbols that define associated node objects that serve as entry and exit points for the object. and C trl-V (Paste). Agent. with Node Class of 'TransferNode' is automatically created. such as entities.Simio D oc umentation External External The External panel of the Definitions window allows the user to define the graphical representation of a model that is instantiated as an object into another model. This is comprised of a 3D drawing that depicts the object. as well as C trl-X (C ut). The node class (e. Additionally. a new external node. Transporter type models. This window is used for Fixed. Users may wish to selectively show some objects. are supported for all objects in this window. with Node Class of 'BasicNode' and Input Logic Type of 'FacilityNode' is automatically created. BasicNode / TransferNode) can be specified in the property window for each given node. a new external node. By right-clicking on an input node in the Facility window and selecting the option 'Bind to External Input Node'. external nodes within the Facility window can be 'bound' to external nodes within the External window. objects that are placed within the model's Facility window are. Entity. shown in the External window. Refer to the C reating New Objects page for more information on building objects with hierarchy from the Facility window. This will allow other objects. C trl-C (C opy). rightclicking on a particular object or group of objects allows the 'Externally Visible' option to be turned on and off. first place a graphical symbol representing the model by using the Place Symbol button or drawing features on the Drawing tab. Please refer to the User Interface for more details. and not others. Within the Facility window.g. NOTE: Multi-Select of objects. by default. For transfer nodes. The property InputLogicType specifies how entries into the object are to be handled (station or object arrival). Depending on the type of model you are building. by right-clicking on an output node in the Facility window and selecting the option 'Bind to External Output Node'. you are likely going to place one or more external nodes for entry into and exit from the model. this is specified as None. building an object from two servers connected with a path). When creating the graphical representation for a model. Similarly. from the Facility window into the External window. These associated node objects are automatically created whenever this object is instantiated into a model. . Simio LLC .External Window Send comments on this topic to Information C opyright 2006-2011. All Rights Reserved. Function Tables define lookup tables that return a function value based on a lookup value. All Rights Reserved. . The Data Window Send comments on this topic to Information C opyright 2006-2011. Schedules define work schedules that control the availability of an object.Simio D oc umentation The Data Window The Data Window The Data window allows you to access a number of panels to create and edit data to be used in your model. including the following: Tables hold model data that can be referenced by entities/tokens. Simio LLC . Rate Tables define time-varying arrival rates for firing events or creating entities. C hangeovers are used to model situations where an activity time is sequence dependent. Nodes and Transporters. activities. if you are referencing an Entity object column. Tables may also be used with the C andidate keyword in an expression while evaluating a condition. Table Ribbon (from Table Panel in Data Window) To reference a particular row in a table.NumericProperty where the table name is DataTable. A user can also Bind a table to a . These properties are typically used to store entity types for arriving entities. The user can also import the data from a comma separated value (csv) file or from a Microsoft Excel file into the table by clicking on the Import From Icon in the ribbon menu. the data in the row and the row it points to (via the TableName. it attempts to keep all values in the rows of that column. the column (property) in the table is NumericProperty and the row number is 1. as well as the UsingRelationalTables SimBit and the EntityFollowsSequenceWithTable2 SimBit for examples on using the relational table functionality. strings. When performing an import from Excel. which will link the rows in those tables to a row in this table. Therefore. delete all the columns in the table and do the import again with a blank Simio table. An expression that returns an integer can be used in the brackets to specify a row. or other numeric data. A Foreign Key reference is used to relate data from multiple data and/or sequence tables.C olumn property. It is important to note that the type of property this column becomes is based on the Table Key's TableName. The Set C olumn as Key and Foreign Key are used together for relational type data tables. Standard Properties include data such as integers. this column will also be Entity objects. it throws the data away. The C hange Type drop down button on the ribbon is available when a column is selected. model events and states. This button makes the current column a Key for this table (you may have multiple columns that are Key in a single table). If you run into this problem. expressions. failures and other elements that are defined in the Elements panel of the Definitions window. When the row in this table is referenced using a SetRow step in the Processes Window. rate tables and schedules. the following syntax is used: DataTable[1]. An Element Reference includes data such as stations. selecting the Table panel allows a user to add either a Data Table or a Sequence Table by clicking on the appropriate icon in the ribbon menu. as well as references to Node and Transporter Lists. it will always assume the first row selected is a column name. the user may have to edit the values based on the column type that is being used. It is recommended that the initial table be generated by first exporting an existing (possibly blank) table from Simio. quantities. Edit C olumn The Set Column As Key button allows the user to indicate that the highlighted column may be referenced by another data and/or sequence table. however. NOT whatever row the executing entity is bound to. it may be used when selecting a Worker to seize from a list of workers. The Move Left and Move Right buttons on the Table tab can be used to move the column within the table.C olumn listed in the Table Key property) will be immediately available.csv file or a Microsoft Excel file. This can be done by selecting the table column you wish to move by highlighting the column header. reals.C olumnName > 100". A table can be searched by using a Search Step to browse the table looking for certain criteria. See Relational Tables. and references to other data such as lists. arrival times or percentages for incoming part types. resources to use for processing. An Object Reference includes data such as Entity types. the import logic always tries to match up already existing column names in the table with column names from the data. and if it cannot match a column from the data up with a column in the table (and the table actually has columns already in it). string -> real. Also. etc…). the Table Key property is used to make a row in this table link directly to another row in the table specified by the Table Key. This column's data can then be referenced by Foreign Key properties in other tables. Any column may be deleted by simply highlighting the column header and pressing the Remove C olumn button.Simio D oc umentation Tables Tables Within the Data window. or vehicles to request for movement. Note that it is not necessary for the user to have Excel installed to utilize the Excel Import function. This is particularly useful to create a table in the proper format if you wish to add your table data externally (e. material. . The TableName. Element Reference.g. where each worker is bound to a particular table row. Importing and Exporting Data into Tables The user can export the table to a comma separated value (csv) file by clicking on the Export Icon in the ribbon menu.C olumn that is referenced must be specified as 'Set C olumn As Key'.TableName. For example. See below for additional information on binding tables. Once a column has been added to the table. it may be moved to the left or to the right to reorganize the table. the Selection Expression may read "C andidate. These properties are typically used to store process times. Add C olumn The data columns within a data or sequence table are added by selecting a Standard Property. It allows the user to change an existing column to a new type (real -> expression. Here you need the candidate keyword to tell Simio you want to know about the row each candidate worker is bound to. in Excel) and later import it into Simio. When converting. Object Reference or Foreign Key from the Properties area of the Table ribbon. When a foreign key property is added. Objects such as Resource Names. C opy the data from Excel. this indicates that the table has been bound to an external file.csv file or a Microsoft Excel file. and C trl-V (Paste) is supported for Data and Sequence Tables. NOTE: C trl-X (C ut). Filtering a Table Column Send comments on this topic to Information C opyright 2006-2011. All Rights Reserved. Simio also provides the name of the file and the location is the space above the Table. in order to direct users to the external file that is currently bound to that Table. . C lick the filter glyph in a column header and select an option from it. A Table that is Bound to an External File See the functions that can be used with Tables. Simio LLC . If a table is binded to a file. Please refer to the User Interface for more details. or specify a custom filter. and edit the filter. If you open a model that was created by another user and the Table ribbon within the Data window has the Import From and the Bind To buttons greyed out. the data is read into the table from the file each time a run begins.csv or Excel File to a Data Tables A user can Bind a table to a .Data can be copied out of Excel and pasted into a Simio table. Binding a . see your most recent filters. You should also see the Remove Binding button is active so that you can remove the binding. There is a bar at the bottom to turn the filter on/off. C trl-C (C opy). This allows the user to change the contents of the table without having to do an import each time the data has been changed. Table Filtering The columns within the tables include a small filter icon that can be used to filter the data within the particular column. click on the appropriate row and column of the Simio table and click C trl-V to paste the data into the Simio table. You may filter based on a particular entry in the column. Unit Types When using a Standard Property of type Real or Expression. Data Table import/export supports all field types as strings. thus. You can then import any data into your table. class types. The following functions can be used with data tables: TableName. All Rights Reserved.PropertyName: references a property value in the active row. etc. When the time unit is specified within the table. then the time units specific to the delay are not shown. product mix). However.ProcessTimes' within a delay. that time unit is used when the table is directly referenced in a time delay type field. such as 'Table1. For example.ProcessTimes * 0. TableName. as the table will convert the values to the base units. TableName[RowNumber]. Each entity/token in the model can then reference a specific row of data in the table. the delay times will not be reflective of the values desired. if the same table entry is referenced within an expression in a time delay. The data columns in the table can be any of the property types provided by Simio including expressions. the Unit Type should not be specified within the table.AvailableRowCount: returns the number of rows in the given table. . and the delay field will also convert the values to the appropriate units. All errors are noted after the import is complete.PropertyName.RandomRow: returns a random row index using the values in the property as weights (e.5'. You may wish to start with designing your table and using the Export button to get the proper format. Send comments on this topic to Information C opyright 2006-2011. If the data table already has some data within it. Data import and export can be used for both Data Tables and Sequence Tables. an import will simply add file contents at the bottom of the table. In this case.g.PropertyName: references a property value in any row. object references. NOTE: Reals and Expressions -. TableName. Each entity/token can set an active row of the table using the SetRow step in the Processes Window. if Table1 has a real property ProcessTimes that are specified as 'minutes' in the Unit Type property. the Unit Type may be specified as a Time unit. the time units of the table column (minutes) are used. and the table is referenced 'Table1. Simio LLC .Simio D oc umentation Data Tables Data Tables Tables are used to hold model data that may be referenced by individual entities and/or tokens. etc. the Type of Service is defined as a Key C olumn. which will link the rows in those tables to a row in this table. This approach allows exploition of relational data design to simplify Simio tables. A Foreign Key reference is used to relate data from multiple data and/or sequence tables.). . Type of Service column is set as a Foreign Key type of property and thus references the Type of Service column within the Service Times table). Send comments on this topic to Information C opyright 2006-2011. users can see a “detail” view. the Table Key property is used to make a row in this table link directly to another row in the table specified by the Table Key. The Set C olumn As Key button allows the user to indicate that the highlighted column may be referenced by another data and/or sequence table. All Rights Reserved. Relational tables include Master-Detail. such as tables or lists. Note that the name of a Foreign Key column does not have to be the same as the Key C olumn name. This column's data can then be referenced by Foreign Key properties in other tables. edit rows. The detail view can be edited just like the main view (insert / remove rows.. a foreign key may be used to create a table relation. copy/paste. The Set C olumn as Key and Foreign Key are used together for relational type data tables. Simio LLC . within the Arrivals table. this column can be used within another table as a reference (i. in the screen shot shown above. Additionally. which allows the relationships bewteen various tables to be visually seen. This button makes the current column a Key for this table (you may have multiple columns that are Key in a single table).e. The small ‘+’ sign in front of the row indicates that the detail view is available. When the ‘+’ is pressed. those specific to the entry that was expanded. When a foreign key property is added. Master-Detail shown within Relational Data Tables For example. which is a collection of rows pointing to a specific keyed row in a table. will be shown. Therefore.Simio D oc umentation Relational Tables Relational Tables As mentioned in the Tables page. a keyboard shortcut (C trl+Shift+’+’) can be used to insert rows into any data grid. portions of the related table. For those tables that have a column that is designated as ‘Set C olumn As Key’. a Server) has a single associated input node then the destination can be specified in shortened form as Server (instead of Input@Server). Send comments on this topic to Information C opyright 2006-2011. The active row in the sequence table is automatically incremented each time the destination is set “By Sequence”. if the object has multiple input names (e.PropertyName). The sequence table that an entity follows can be initially set as a property of the entity instance. the job routing sequence in a job shop). You can then import any data into your table.g. If an object (e.g.g. The routing logic for an entity can specify that the entity destination is to be set “By Sequence”. All errors are noted after the import is complete. C ombiner). an import will simply add file contents at the bottom of the table.Simio D oc umentation Sequence Tables Sequence Tables A Sequence Table is a data table that has a destination column that is used to specify a sequence of destinations for an entity (e. Data import and export can be used for both Data Tables and Sequence Tables. ParentInput@C ombiner and MemberInput@C ombiner). TableName. By default only the input nodes for objects are in the list of destinations. You may wish to start with designing your table and using the Export button to get the proper format. then the input nodes must be fully qualified as NodeName@ObjectName (e. When setting the next destination “By Sequence” the next table row in the entities’ sequence table is made active and the entities’ destination is set to the destination specified in that row. All Rights Reserved. If you want to set a destination to another node in the model. If the data table already has some data within it. This may be specified in the routing logic for the TransferNode or SetNode step. You can also add additional data columns to the sequence table and reference these values like any other table (e.g.g. A destination can be any node in your model. This is convenient for routing between the objects in your model. click on the Destination column header and change the Accepts Any Node property to "True". Simio LLC . The sequence table and active row within that table can also be reassigned during the run using the SetRow step. Sequence Table import/export supports all field types as strings. However. . The value of a function can be specified in an expression using the format Function. Send comments on this topic to Information C opyright 2006-2011. number of completed cycles). The function value is computed using linear interpolation between the defined values. Functions tables a function value based on a lookup value. If the index is out of the defined range then the closest endpoint (first/last) point in the range is returned. C trl-C (C opy). and C trl-V (Paste) is supported for Function Tables.g. Please refer to the User Interface for more details.TableName[X_Expression]. Simio LLC .C ycleTime(NumberBusy) returns the value from the function table named C ycleTime based on the current value of the NumberBusy state. NOTE: C trl-X (C ut). and X_Expression (specified as any valid expression) is the independent index value into the function.Simio D oc umentation Function Tables Function Tables By clicking on the Data tab and selecting the Function Tables panel.g. . users may add a table to model situations where a value (e. All Rights Reserved. processing time) is dependent on some other value (e. For example Function. where TableName is the name of the function table. C trl-C (C opy). to increase the Rate Table values by 50%. a nonstationary Exponential distribution is used to calculate the rates. The rate pattern automatically repeats during the running of the simulation.Simio D oc umentation Rate Tables Rate Tables The Rate Tables panel in the Data window allows the user to model situations where an arrival/event rate varies discretely over time. and C trl-V (Paste) is supported for Rate Tables. NOTE: C trl-X (C ut). The number of fixed rate periods and the length of each rate period can be specified in the Rate table. Send comments on this topic to Information C opyright 2006-2011. For example. . Please refer to the User Interface for more details. regardless of the time units specified for the intervals of the rate table. simply specify the Rate Scale Factor within the Source to '1.5'. In order to use a Rate Table with the standard Source object. All Rights Reserved. Internally. The rate units for the Poisson arrival process is Arrivals per Hour. A Rate table is used by the Source object / Timer element to generate entities / events with a time-varying rate. The Source also includes a Rate Scale Factor property that can be used to easily modify the values within the table by a given factor instead of changing the values separately. set the Arrival Mode property in the Source to 'Time Varying Arrival Rate' and then select the appropriate Rate Table for the Rate Table property. Simio LLC . Simio D oc umentation Schedules Schedules Schedules are used to model situations where the capacity of an object varies over time. A Work Period exception may be used for overtime.g. and is defined by starting day/time and . or have a capacity Value of '0'. Work Schedule Window A Day Pattern consists of a single or multiple Work Periods that define on shift and off shift periods with a starting time.. Any periods that are not defined are considered to be off shift. A schedule is comprised of a repeating base pattern called a Work Schedule with superimposed exceptions (e. Multiple Day Patterns can be defined within the Day Patterns tab.g. holidays or planned maintenance). A Work Day exception may be used for holidays or single days and is defined by a single calendar day and an alternative Day Pattern for tat calendar day. Multiple work schedules can be defined within the Work Schedules tab. An on shift Work Period entry has a value that defines the capacity of the object that is following this schedule. Day Pattern / Work Period window Exceptions override the repeating work schedule for the duration of the exception. etc. Server) can have an associated schedule that automatically changes its capacity over time. Schedules panel of a model. Schedules are defined within the Data tab. vacation periods. both from the Work Schedule tab. Exceptions can be defined within the Work Day Exceptions tab and within the Work Period Exceptions tab. duration and ending time. planned maintenance. An object (e. A Work Schedule is defined by specifying the number of repeating days within the schedule and the associated Day Pattern for each day. When this date is encountered. For a Work Day exception. Within the Work Period exceptions. a work schedule named 'Standard Week' is already available for use or modification. the capacity Value can be specified. l Select a Day Pattern name for each day specified. With the Work Periods. how many days until this schedule repeats itself. Important Note regarding Schedules and Worker object: The Value field for a worker should either be '1' (indicating On Shift) or '0' (indicating Off Shift). select the Date for the exception and specify a Day Pattern that should be used for this date. as the capacity of the Worker object is defined within the object itself using the Initial Number In System property. based on the Start Date specified. Within the End column. enter the capacity Value that will be used instead of the value specified in the associated Work Schedule's Day Pattern. If any schedule has more days than another schedule.ending day/time. enter the date and time that the exception will end. To add a new day pattern. To add a new schedule. . press the '+' next to the name and the Work Periods will open. the extra days for the particular schedule will be grayed and not editable. not capacity values. enter the Start Time. If there is a time period where no information is specified. A default Day Pattern named 'DayPattern1' has been provided. By default. For that same exception. Multiple Work Period rows may be added for various capacities throughout the day. l For a Work Period exception. days will be shown as days of the week. Adding a Work Day or Work Period Exception to the Schedule l l l Within the Work Schedules tab. Simio will use the exception Day Pattern instead of the Day Pattern specified in the main Work Schedule. The schedule for the Worker should be used only to define On Shift or Off Shift times. See notes below on limitations for Worker schedules. In other words. Simio assumes the capacity to be '0'. l Specify how many days are in the schedule by inserting a number between 1 and 28Days property. Creating a Day Pattern with Work Periods l l l l l Day Patterns are defined within the Day Patterns tab of the Schedules window. Work Day Exceptions and Work Period Exceptions Creating a Work Schedule l l C lick on the Data window tab and click on the Schedules panel. If the number of Days is '7'. To enter values into the Day Pattern. you can either press the Work Schedule button on the Schedule toolbar or simply enter a new work schedule Name. l The starting date of the schedule should be entered in the Start Date property in date format. You may then enter either the Duration (and the End Time will be determined) or the End Time (and the duration will be calculated). The Value field is used to determine the capacity of the object using the schedule. enter the Start column and select the date and time of the exception. you can either press the Day Pattern button on the Schedule toolbar or simply enter a new day pattern Name. select the Work Schedule that will have Exceptions C lick on the '+' next to the Work Schedule. From the Experiment design window. go to the object that will be following the work schedules and set the Work Schedule property of that object instance to reference the new Schedule property that you created above. Please refer to the User Interface for more details. and C trl-V (Paste) is supported for Schedules. from the Definitions window. To experiment with a schedule.An experiment can be run that uses a Schedule as an input into the model. All Rights Reserved. NOTE: C trl-X (C ut). From within the Facility window. This allows for the user to experiment with how different work schedules can affect their key performance metrics. Simio LLC . . create a Schedule type property on the model. C trl-C (C opy). you can input the name of a Work Schedule into different scenarios on an Experiment. Send comments on this topic to Information C opyright 2006-2011. All Rights Reserved. size. C trl-C (C opy). etc. Conceptual Example of Changeover Matrix NOTE: C trl-X (C ut). . Please refer to the User Interface for more details. Simio LLC . The row is selected based on this value for the previous entity. part family. Send comments on this topic to Information C opyright 2006-2011. and C trl-V (Paste) is supported for C hangeovers. the setup time for a workstation) is sequence dependent.g.Simio D oc umentation Changeovers Changeovers C hangeover matrices are used to model situations where an activity time (e. and the column is selected based on this value for the current entity. The activity time is the matrix value indexed in row/column by a list value such as color. The two windows will now be displayed horizontally on top of each other. Watching the Dashboard and the Facility Window Simutaneously Send comments on this topic to Information C opyright 2006-2011. Gauges and Buttons into their Dashboard. All Rights Reserved. right click on the top of one of the two windows and select Return to the Previous Tab group (or Next Tab group). To return the windows to their original position. These can also place these into their Facility Window. right click on the top of the tab where it says Facility and select New Horizontal Tab Group from the drop down. A convenient way to look at the Dashboard Window during a run is to tile the windows. Pie C harts. . Plots. and C trl-V (Paste). This will allow you to watch both views during the interactive run. To do this. NOTE: Multi-Select of objects. C trl-C (C opy). a user can right click on the model objects and get a dynamic view of the object’s state over time. are supported for all items on the Drawing tab. as well as C trl-X (C ut).Simio D oc umentation The Dashboard Window The Dashboard Window By adding dashboards to a model. Simio LLC . A user can place Status Labels. Please refer to the User Interface for more details. Simio D oc umentation Status Labels. Adding a Button will provide the user the opportunity for firing an event within the model while it is running. they will travel with those dynamic instances. The user can add a Status Label for displaying static text or the value of an expression inside a text display rectangle. The Status Plot allows for more than one expression. Status Plots. eliminating the oldest 25 points every time it reaches a total of 100.IdleTime. The following is an example of a Status Pie can displays the Maximum value of two different State Statistics (i. The following is an example of first using the Status Label for text and then using it to display an expression. and then drag and left click again to add the opposite vertex. create a new Entity at a Source. A Status Label in the Dashboard Window The Status Plot displays the value of an expression over time inside a display rectangle. etc. In other words. and then drag and left click again to add the opposite vertex. Gauges and Buttons Status Labels. Floor Labels. C ircular Gauges. Linear Gauges. After selecting Button left click in the dashboard view to place the first vertex. the percentages shown in the pie chart are percentages relative to the total of all values in the pie chart. if the focus is not on the Facility Window when the user wants to click the button.e. If they are attached to Entities or Transporters. Plots. They can also be attached to objects in the Facility Window. After selecting Status Plot left click in the dashboard view to place the first vertex. . in addition to the Dashboard Window. and then drag and left click again to add the opposite vertex. the user will need to first click somewhere in the Facility Window to return focus to this window and then click on the button to fire the Event. MissedDeliveries. and Buttons can also be placed in the Facility Window and the External Window. During a run.Maximum where MissedDeliveries is a State Statistic). A button can be used during the run to trigger a Process. The following is an example of a Status Plot with two expressions: Average Number Waiting and the Total Number of Failures at the Server. The Plot displays a maximum of 100 data points. A Status Plot with Two Expressions The Status Pie shows the values of a list of expressions (in percentages of their total summation). Status Pies. After selecting Status Label left click in the dashboard view to place the first vertex. In this case the expression shown is Server1. The user can also change the scale of the gauge by changing the values in the Scale section of the ribbon. A Circular Gauge in the Dashboard Window The Linear Gauge will display the value of an expression in a the style of a linear gauge. Simio LLC . as seen in the ribbon in the example below. . The following is an example of a linear gauge displaying the value of Server1. The following is an example of a circular gauge displaying the value of Server1. as seen in the ribbon in the example below. The user can choose from one of many different style choices.C apacity.Average. A Linear Gauge in the Dashboard Window Send comments on this topic to Information C opyright 2006-2011.Allocated. The user can also change the scale of the gauge by changing the values in the Scale section of the ribbon.A Status Pie The Circular Gauge will display the value of an expression in a the style of a circular gauge. All Rights Reserved. The user can choose from one of many different style choices.NumberWaitingAllocation. Send comments on this topic to Information C opyright 2006-2011. Simio LLC . The data from the Pivot Grid can be exported into a .Simio D oc umentation The Results Window Results Window The Results window allows the user to display the the results in the form of a Pivot Grid or a Report. For information on how to add manual statistics to the project. see OutputStatistic. . StateStatistic and TallyStatistic. depending upon which is selected in the panel.csv file. All Rights Reserved. This is similar to features found in the pivot table provided by Microsoft Excel. status bar. ResourceState . The Results window displays the Pivot Grid panel by default. units scheduled and utilization of the object. C apacity – category used for statistics related to capacity. You can drag and drop columns in the table to rotate or “pivot” the data. Scheduled utilization is calculated based on the units utilized divided by the units scheduled. and display data and provides a powerful mechanism for exploring your data (data mining). Throughput – category used for totals on items entered/created or items exited/destroyed. you are viewing the Pivot Grid.category used to show occurances. You can also filter and sort the information that is shown.Simio D oc umentation Pivot Grid Pivot Grid The Pivot Grid displays result data from a simulation run(s). including number of units allocated over time. and trace window. A Pivot Grid This Pivot Grid provides a very easy way to manipulate. The section of the Pivot Grid ribbon labeled "Status Units" allows the user to specify the units to be displayed in the reports. such as NumberInSystem or NumberOnLink. summarize. . watch window. FlowTime – category used for entity time in system (population or by Sink) or entity time on link. The following categories help to organize the result data: l l l l l l C ontent – category used for statistics on the number of things inside or on something. HoldingTime – category used for entity time held in a station location or held in a batch. pivot grid. So when you first click the Results tab. It lets the user interactively analyze the results in the form of a dynamic rotatable table. percent and average times in each of the resource states in which an object may be. If you click on that triangle (or in fact almost anywhere in the heading box). You may also drag the columns to different positions to cause the data to be grouped differently. Send comments on this topic to Information C opyright 2006-2011. it will toggle the column sort order between ascending and descending. simply uncheck the Paths item and all of the statistics associated with paths will be suppressed. if you hover the mouse over the upper right corner of the Object Type box (the one you just moved to the filter area). If you check the Minimum or the (Show All). For example. if you wanted all of your data items displayed together (e. you will see that funnel appear. . Grouping: For example. If you have no interest in seeing statistics on your paths for example. you will see all the minimum values will now be added to your report. The remaining items can be hidden if desired. but rather only by Object Name. For example. This means that any items labeled with Minimum have been suppressed (our default setting). you will see the value of 0 for the Units Scheduled statistic in the pivot grid. Note: The pivot grid cannot display the word 'Infinity' but will instead display the value 0. in front of Object Name. Filtering All column headings and items in the filter area have this filtering capability. row items.The three red circles above identify the filter items. Filtering: You may have noticed that the Statistic heading in the Pivot table above has an extra symbol in the upper right corner – a funnel. left click and drag the leftmost column named Object Type to the top row (next to Data Source Type). if your Resource object has a capacity of Infinity. and column items (left to right). Simio LLC . Sorting: You will see a small triangle in every column heading – this determines the sorting order for that column. If you click on the funnel you will see a menu indicating all possible values in that column and you will see that Minimum has been unchecked. For example. All Rights Reserved. all the Arrivals statistics together) you could drag the Data Item column to the far left. Data items may be moved between these areas to reconfigure the table. C licking on that funnel shows all object types found in the report. This indicates that it is filtering the data.g. You will see that the data is no longer grouped by Object Type. All Rights Reserved. select the appropriate report from the C urrent Report dropdown in the ribbon menu. After clicking on the Results tab and Reports panel button to view the reports. Simio LLC . .Simio D oc umentation Reports Reports The Reports panel of the Results tab displays a traditionally formatted report that provides flexible visual formatting for inclusion in printed documents and is useful in presenting results to others. Send comments on this topic to Information C opyright 2006-2011. Reports are provided for both a single scenario and for comparing two scenarios. Simio allows the user to make changes to the model during the run in order to see how it will affect the system. In order to draw conclusions from the model. This flexibility allows the user to see how the system might change with a modeling change while also acting as a helpful debugging tool.Simio D oc umentation Interactive And Experiment Results Interactive Results Verses Experiment Results Interactive results should not be used for making decisions or drawing conclusions. Simio LLC . All Rights Reserved. a multi-replication experiment should be run and the results from this experiment can be considered valid. . with this flexibility brings possible inaccuracy with the interactive model results. Send comments on this topic to Information C opyright 2006-2011. However. the user has a choice of exporting the details or the summary. Send comments on this topic to Information C opyright 2006-2011. The detailed export will include data from all the replications.csv file by clicking the Export Results icon in the ribbon menu when viewing the Pivot Grid. If an experiment was run with more than one replication. The summary export will only include the summary across all the replications. All Rights Reserved. . Simio LLC .Simio D oc umentation Exporting Exporting Results data can be exported to a . Simio LLC .Simio D oc umentation The Gantt Window Gantt Window A Gantt window allows you to see a graphical pattern over time of what activities have taken place on each resource as well as future planned activities. . The Gantt feature is part of Simio Scheduling Edition (not yet released). All Rights Reserved. Send comments on this topic to Information C opyright 2006-2011. Destroys entities and records statistics. Models a multi-channel service process with input/output queues. to interrupt processing activity at a Server. A simple intersection of Links. Models a resource that can be used by other objects. see the Functions help page. All Rights Reserved. Models a 3-phase workstation with setup. A pathway with a specified travel time. or Separator. To view all the Functions available for these Intelligent Objects. Name Source Sink Server Resource C ombiner Separator Workstation Vehicle Worker Basic Node Transfer Node C onnector Path Time Path C onveyor Class Fixed Fixed Fixed Fixed Fixed Fixed Fixed Transporter Transporter Node Node Link Link Link Link Description C reates entities that arrive to the system. A pathway between two Nodes where entities travel based on speed. There is no travel time required to pass through a node (although time could be required to execute any logic specified in a node). processing. Send comments on this topic to Information C opyright 2006-2011. Separates entities from batches. The process in these objects performing the processing delay activity is named 'OnEnteredProcessing'. C arries entities between Fixed objects. . and teardown. and Servers have a Size property. Simio LLC . This provides the relationship between animated size and the physical size in the model (when needed). In the Standard Library.Simio D oc umentation Standard Object Library Standard Object Library Simio comes with a Standard Object Library that includes 15 pre-built object definitions that can be used to model a wide range of systems. Most library objects such as Entities. C ombiner. C ombines entities in batches. A zero-time connection between two Nodes. and Separator objects are now marked as interruptible. you may now use the Interrupt step to interrupt the 'OnEnteredProcessing' process of the target object. Right clicking on an object in the Standard Library allows the user to subclass it into their own Project Library. Sinks. Thus. C arries entities between Fixed objects and processes entities at a fixed location. Sources. C ombiner. An intersection where entities set destination and wait on Transporters. Nodes are an exception and do not have any physical space in the model. the processing time delays for the Server. An accumulating/non-accumulating C onveyor device. All Rights Reserved. The transfer attempt will be performed by an entity immediately upon entering the node and. Last In First Out. if successful. all other entry. The Add-On Process Triggers allow additional logic to be specified when using the Basic Node. Occurs when a traveling entity's leading edge has entered this node's crossing point. The static ranking rule used to order entities waiting to be allocated capacity of this node object. Largest Value First Expression Description The initial fixed capacity of this node object. Specifies whether the node's logic automatically transfers an entity after the entity enters the node. A Boolean property may be True or False and used in expressions as a numeric 1. The value type 'Expression' records the value of the specified expression. The preference used by a traveler to select an outbound link from this node to its next destination. To Parent External Node Bound External Output Node Node Instance Name Report Statistics True or False Report Gantt True or False Send comments on this topic to Information Copyright 2006-2011. The type of value to record. The rule used by an entity to select the outbound link from this node to its destination node (if a destination node has been set). The expression value to be recorded. The condition required to record the tally statistic. Optional tally statistics to be calculated when an entity has exited the node object.Simio D oc umentation BasicNode A Basic node is a simple node to support connection between links. The name of an external output node that this node has been bound to in order to transfer entities out of the parent object. Occurs when the simulation run is ending. The expression used with a Smallest Value First or Largest Value First ranking rule. Transporter Entering TallyStatistic Element Name Expression. No C ondition. Tally Statistics Repeat Group. Basic nodes are used as starting and/or ending points of links. Simio LLC. Entity Entering. A Boolean property may be True or False and used in expressions as a numeric 1. Ranking Expression Outbound Link Preference Any. Occurs when the simulation run is initialized.0 (True) or 0. Available Outbound Link Rule Shortest Path.0 (True) or 0. The value type 'TimeBetween' records the time between arrivals to Tally steps referencing the tally statistic. TimeBetween Value (Tally Statistics) Run Initialized Add On Process Run Ending Add-On Process Entered Add On Process Expression Process Instance Name Process Instance Name Process Instance Name Exited Add On Process Auto Transfer On Entry Process Instance Name None.0 (False) value. Most objects that support incoming connections have an associated (embedded) basic node. Listed below are the properties of the Basic Node: Property Initial C apacity Ranking Rule Valid Entry Expression First In First Out.0 (False) value. If this option is enabled then all C rossing Logic and Routing Out Logic for the node is ignored. Many times. Occurs when a traveling entity has departed this node's crossing point. They may also used as intersection points for vehicle networks. By Link Weight On Entering On Exited Tally If (Tally Statistics) Tally Statistic Name (Tally Statistics) Value Type (Tally Statistics) Repeat Group. crossing and routing logic for the node will be ignored. The tally statistic for which the value is to be recorded. Optional tally statistics to be calculated when an entity enters the node object. . Tally Statistics C ustom C ondition. Smallest Value First. in which case. if the rule is ‘Shortest Path’. Entity Destination l Automatic destination is to continue From the basic node. then the user will recieve a warning that this has occurred. If the preference is ‘Any’. then the ‘ShortestPath’ rule is not applicable and instead the ‘ByLinkWeight’ rule will be assumed. this entity is instead going to a specific node. For example.33% chance of being selected. Send comments on this topic to Information C opyright 2006-2011.Discussion and Examples Discussion Which Path will the Entity Take? l If the OutboundLinkRule is 'ShortestPath' If the entity has a destination set then this rule will choose the shortest path to the entity’s set destination. if there are two links. and the second link a 66.66% chance. as determined by the rules mentioned above. then simply the shortest path will be chosen. In some cases. the entity will be automatically destroyed. the entity will simply choose the outbound link according to the outbound link rule. they may disable the warnings. then the entity will prefer to choose the shortest path available. the entity will automatically destroyed. For example. If the Warning Level is set to either Alert User or Write to Trace Only. l Outbound Link Preference If the preference is ‘Available’. All Rights Reserved. If no paths are immediately available.75 and the second a selection weight of 1.5. . Simio LLC . and the first has a selection weight of . users may intend for this to occur. If a SetNode step was used in the Processes Window. l If the OutboundLinkRule is ‘By Link Weight' The Selection Weight of each outbound link will be evaluated and the probability of an outbound link being selected is then based on its proportional selection weight. then the entity will prefer choosing a link that can immediately be entered. For example. l ** If the entity's destination is not reacheable If the entity's destination is not reachable because there is no physical link between the basic node and the destination node. If the entity does not have a destination set.Simio D oc umentation BasicNode . then the first link has a 33. if there are no paths from the node leading out or no path to the specific destination specified (SetNode). the entity will simply continue down the appropriate path leaving this node. The method used to set a destination node for entities departing this node. The goal used to rank transporter preference when multiple candidates are available to ride on.InputLocation. use the keyword 'C andidate' to reference a node object in the collection of candidates (e. Listed below are the properties of the Transfer Node: Property Initial C apacity Ranking Rule Valid Entry Expression First In First Out. C andidate. Largest Value First Expression Description The initial fixed capacity of this node object. The rule used by a traveler to select an outbound link from this node to its next destination.Overload) The rule used to define destination selection if there are blocked routings. In the condition. Ranking Expression Outbound Link Preference Any. By Sequence. Smallest Value. Indicates whether entities departing this node object will select and ride on a transporter object for travel. First Available At Location Preferred Order. The name of the list of transporter types that the entity may ride on. Smallest Value. Largest Value Expression Selection Expression Selection C ondition Expression Blocked Routing Rule Ride On Transporter Select Any. For more information. The expression criteria. 'On Same Network' indicates all transporters that are currently on the same network as the entity. then the 'By Link Weight' rule is assumed. evaluated for each candidate destination. Note that if this rule is set to 'Shortest Path'. Largest Value .Simio D oc umentation TransferNode A Transfer Node is a more comprehensive node that supports connection to paths as well as the ability to select destination. The method used to select and reserve a transporter object to ride on.g. Any Transporter Name Transporter List Name Reservation Method Selection Goal Transporter instance name Transporter list name Reserve C losest. Specific. Largest Distance. The name of the specific transporter type that the entity may ride on. The Add-On Process Triggers allow additional logic to be specified when using the Transfer Node. Smallest Value First. The name of the specific node object to set the destination value to.Node. path. and the traveler does not have an assigned destination. Random. By Link Weight Entity Destination Type C ontinue. 'By Sequence' requires that the entity object has been assigned a sequence table. An optional condition evaluated for each candidate destination that must be true for the destination node to be selected. From List. The transporters that may be selected to ride on. The expression used with a Smallest Value First or Largest Value First ranking rule. The goal used to select a destination node from the list of candidates. Last In First Out. The name of the list of node objects from which a destination will be selected. C yclic.Discussion and Examples. Select From List Node Name Node List Name Selection Goal Node Instance name Node List Table Name Smallest Distance. Preferred Order. Select Available Only. Prefer Available Only True or False Transporter Type Specific. Reserve Best. Most objects that support outgoing connections have an associated (embedded) transfer node. see Transfer Node . and transfer device. Available Outbound Link Rule Shortest Path. The static ranking rule used to order travelling entities waiting to cross through this node object. used with a Smallest Value or Largest Value selection goal. Use the keyword C andidate at the beginning of the expression. The destination node value will be set to the next destination in the sequence. The preference used by a traveler to select an outbound link from this node to its next destination. The expression value to be recorded. TimeBetween Value (Tally Statistics) Run Initialized Add-On Process Run Ending Add-On Process Entered Add-On Process Expression Process Instance Name Process Instance Name Process Instance Name Exited Add-On Process Process Instance Name Bound External Output Node Node Instance Name Report Statistics True or False Report Gantt True or False Send comments on this topic to Information Copyright 2006-2011.Selection Expression Expression The expression criteria. The condition required to record the tally statistic. The type of value to record. and which must be true for the transporter to be eligible to ride on. all other entry. . Simio LLC. The value type 'TimeBetween' records the time between arrivals to Tally steps referencing the tally statistic. No C ondition. Optional tally statistics to be calculated when an entity enters the node object. Occurs when a travelling Entity or Transporter's leading edge has entered this node's crossing point. The transfer attempt will be performed by an entity immediately upon entering the node and. Transporter Entering TallyStatistic Element Name Expression.0 (True) or 0. Occurs when a travelling Entity or Transporter has exited this node's crossing point. Tally Statistics C ustom C ondition. Selection C ondition Expression On Entering On Exited Tally If (Tally Statistics) Tally Statistic Name (Tally Statistics) Value Type (Tally Statistics) Repeat Group. evaluated for each candidate transporter object. A Boolean property may be True or False and used in expressions as a numeric 1. The value type 'Expression' records the value of the specified expression.0 (False) value. crossing and routing logic for the node will be ignored.0 (False) value. Optional tally statistics to be calculated when an entity has exited the node object.0 (True) or 0. All Rights Reserved. An optional condition evaluated for each candidate transporter object. Tally Statistics Repeat Group. A Boolean property may be True or False and used in expressions as a numeric 1. Entity Entering. Occurs when the simulation run is ending. The name of an external output node that this node has been bound to in order to transfer entities out of the parent object. used with a Smallest Value or Largest alue selection goal. if successful. The tally statistic for which the value is to be recorded. Occurs when the simulation run is initialized. [Attribute]' or 'C andidate.[NodeC lass]. For example. A Node List is created in the List panel.Simio D oc umentation TransferNode . the Selection Goal.Node. *For any of the above blocked routing rules. that condition always filters the list first before applying Selection Goal or Blocked Routing Rule logic).66% chance.[Attribute]' to evaluate attributes of either the candidate destination nodes themselves or objects associated with those candidate nodes. and the first has a selection weight of . the entity will be automatically destroyed. the next destination in the sequence is used to determine where this entity will travel to. l ** If the entity's destination is not reacheable If the entity's destination. And Prefer Availble will send the entity on links that are not blocked. For example. For example.Node. a candidate destination in the node list is considered ‘blocked’.RoutingOut. as determined by any of the above rules.Server. this entity is indeed going to a specific node but the entity desintation here can be set to C ontinue.[NodeAssociatedObjectC lass].C apacity' or 'C andidate. the Selection C ondition must always evaluate to ‘True’ for a destination (whether considered blocked or unblocked) to be selected (i.5. [NodeAssociatedObjectC lass]. the entity will still be sent on its way selecting the best destination of all the blocked locations using the Selection Goal. if there are two links.Load >= C andidate. the Selection Expression property appears so the user can specify what expression should be evaluated to determine the Smallest Value or the Largest Value. If the preference is ‘Any’. The default value for this expression is C andidate. The Blocked Routing Rule property is used when the determined route is blocked. which is defined as the 'load' on the input location minus the capacity of the input location. l If the Entity Destination is 'Specific' This entity will travel to a specific destination that is set in the Node Name property. Selection Condition and Blocked Routing Rule properties appear. A SetRow step is needed to set which Sequence table should be used and when the entity departs this transfer node.InputLocation. and the second link a 66. If the entity does not have a destination set. but if there are all links are blocked. the entity will automatically destroyed. If a SetNode step was used in the Processes Window. the entity will simply choose the outbound link according to the outbound link rule. If Select from List is selected. The user can select one node from the drop down of Node Name.Overload. The Selection Goal determines how Simio chooses the destination node off the specified list.Discussion and Examples Discussion Which Path will the Entity Take? l If the OutboundLinkRule is 'ShortestPath' If the entity has a destination set then this rule will choose the shortest path to the entity’s set destination. If all destinations are currently blocked.[Attribute]' or 'C andidate.Node. In this expression.C apacity' (which) would be acceptable syntax if all the candidate nodes were associated with Server objects). The Selection Condition property is an optional condition evaluated for each candidate destination that must be true for the destination node to be selected. if the . If it evaluates to ‘True’. l If the OutboundLinkRule is ‘By Link Weight' The Selection Weight of each outbound link will be evaluated and the probability of an outbound link being selected is then based on its proportional selection weight. The Selection Expression property is a foreign expression and therefore the keyword C andidate must be used. which can be found by clicking on the Definitions tab. For example. This property will appear once Specific is selected. as determined by the rules mentioned above. a destination is considered blocked in the node list specified in the TransferNode by evaluation of the following expression: C andidate.Node.InputLocation. In the expression. Entity Destination l If the Entity Destination is 'Continue' The entity will simply continue down the appropriate path leaving this node. If Smallest Value or Largest Value is selected for the Selection Goal. Likewise. use the syntax 'C andidate. then simply the shortest path will be chosen.InputLocation.RouteRequestQueue until a destination in the list becomes available.33% chance of being selected. then the first link has a 33.C apacity). Select Available Only will only allow the entity to travel to its destination along paths that are not blocked.. l If the Entity Destination is 'Select From List' The destination is selected from a Node List. use the syntax 'C andidate. use syntax such as 'C andidate. then the entity will prefer to choose the shortest path available.[Attribute]' to evaluate attributes of either the candidate destination nodes themselves or objects associated with those candidate nodes. Additionally. Select Any will send the entity on its determined route regardless of the block.[NodeC lass].e.Node. then the entity will prefer choosing a link that can immediately be entered. If no paths are immediately available.IsExternalInputNode & & (C andidate. if the destination is 'C ontinue' and there are no paths from the node leading out. if the rule is ‘Shortest Path’.InputLocation. is not reachable because there is no physical link between the transfer node and the destination node. l If the Entity Destination is 'By Sequence' This entity's destination is determined by a Sequence Table. l Outbound Link Preference If the preference is ‘Available’. then the ‘ShortestPath’ rule is not applicable and instead the ‘ByLinkWeight’ rule will be assumed.75 and the second a selection weight of 1. the entity will wait in the TransferNodeName. The keyword C andidate must also be used in this expression if a transporter is referenced. a Transporter List must be defined in the List panel. Preferred Order will select in the member order of the object list or population. If From a List is selected. Simio LLC . Reserve Best simply looks to the Selection Goal and Selection Criteria and finds the transporter that best fits the goal.RemainingRideC apacity). The Selection Goal property is used to rank transporter preference when there are multiple candidates available to ride on. All Rights Reserved. then the user will recieve a warning that this has occurred. The Transporter Type can either be Specific or From a List.Transporter. This will cause five other properties to be displayed in the properties grid. It should be set to True. When Smallest Value or Largest Value is selected. they may disable the warnings. the Selection Goal property will be used to determine which transporter to select. use the keyword C andidate to reference a transporter object in the collection of candidates (e. l l l Send comments on this topic to Information C opyright 2006-2011. If the user is selecting a specific transporter. Since foreign objects (such as transporters) might be used in this expression. Reserve Closest will find the transporter that is physically closest to the transfer node. . The Transporter will only be selected from the list if it meets the criteria of the Selection Condition. Entities that will travel on Transporters l Transfer Nodes are used to specify whether or not the entities that enter this node will need to ride on transporters for travel out of this node. The optional property Selection Condition can be used in conjunction with selecting from a list. the property Selection Expression appears so the user can specify what should be evaluated for the Smallest value or the Largest value. which is found by clicking on the Definitions tab. The Selection Condition is an optional property that is evaluated for each candidate transporter and it must be true for that transporter to be eligible to ride on. For example. The Reservation property is used to determine which transporter will be selected. So if the user is selecting from a list. the transporters will be selected in the order that they are listed in the transporter list. If Specific is selected. users may intend for this to occur. the standard library object Vehicle must be in the Facility Window before it will appear in the Transporter Name property. In some cases. If the Warning Level is set to either Alert User or Write to Trace Only. The first property that needs to be set to indicate that entities require a transporter is the Ride On Transporter property. if there is more than one available. preferred order will be used to select from the population of transporters .entity destination is 'Specific' and there is no path connecting the transfer node and the specific node specified. if there are more than one of that specific type in the system. a transporter must be part of the model. the entity will be automatically destroyed. If there are two that are of equal distance. C andidate. in which case.g. The First Available at Location will cause the entities to wait for a transporter to move itself to the node. Note that this initial entity creation is not included in (counted against) the arrival mode's Maximum Arrivals. On Event. table column) that defines the list of scheduled times when arrival events are expected to occur. The name of the event which causes entity arrivals at this Source object.. For more information. The Source has an Output Buffer where entities can wait before leaving the Source via a Node. the arrival 'batch size') is then determined by the Entities Per Arrival property. Upon each arrival event occurence. see Source . When an arrival event occurs. The name of the numeric table property (i. The mode used by this Source object to automatically generate a stream of entity arrivals. the number of entities created (i. The time offset until the first arrival.e.e. The factor used to scale the arrival rate values specified in the rate table.. The number of arrival events expected to occur at each arrival time specified in the Arrival Time property. The time interval between two successive arrivals. The number of occurrences of Event Name required to trigger the next entity arrival at this Source object. the arrival 'batch size') will be determined by the Entities Per Arrival property.. An initial number of entities to be created by this Source object at the beginning of the simulation run. a reference to the table row holding the arrival time will be automatically assigned to any individual entities created by the event.Discussion and Examples. in addition to entities created by the 'On Event' arrival mode. From this node the entities leave on the outgoing link(s) to wherever the designed logic is going to send them. Arrival Table Expression Expression Description The type of entities created by this Source object.e. This property may be specified using a random sample from a distribution (typically the exponential distribution). Time Varying Arrival Rate. State assignments can be made upon exiting the Source. The rate table that defines how the arrival rate changes over time (arrival process is a non-stationary poisson). The number of arrival event occurences at each scheduled time is determined by the Arrival Events Per Time Slot property.Simio D oc umentation Source A Source is an object that allows the creation of entities at a specified rate. The Add-On Process Triggers allow additional logic to be specified when using the Source. Listed below are the properties of the Source: Property Entity Type Arrival Mode Valid Entry Entity Instance Name Interarrival Time. Time Offset Interarrival Time Rate Table Rate Table Instance Rate Scale Factor Initial Number Entities Expression Expression Event Name Event C ount Event Instance Name Expression truncated to integer Arrival Time Property Numeric Table Property (column) Arrival Events Per Time Slot Expression . Note that the actual timing of an arrival event may deviate from the expected schedule if the Arrival Time Deviation and Arrival No-Show Probability options are used. The number of entities created by each arrival event (i. by a specified arrival pattern. on the firing of an event. The name of the table to assign a reference to when this Source is about to create an arrival of one or more entities. Optional state assignments when an entity is ready to exit the object. Note that this feature is automatically disabled if random sampling in the simulation is disabled. The time duration from the beginning of the simulation run after which this Source object will stop generating arrivals.0 (False) value. Occurs when an entity has exited this Source object. If specified as 'Default'. A Boolean property may be True or False and used in expressions as a numeric 1. Occurs when the simulation run is ending. The one-based row index into the table. Default. This expression may return a negative or positive value. Assignments Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name Disable. If a negative deviation is returned. Occurs when this Source object is about to create an arrival of one or more entities. The probability that a scheduled arrival in the arrival table will be a 'no-show' and thus not actually occur. If a positive deviation value is returned. No-Show Probability Expression Entities Per Arrival Expression Truncated to Integer Repeat Arrival Pattern True or False Maximum Arrivals Expression truncated to integer Maximum Time Expression Stop Event Name Event Table Name (Before C reating Entities) Table Name Row Number (Before C reating Entities) Table Name (On C reated Entity) Expression Table Name Row Number (On C reated Entity) Before Exiting (state assignment) Run Initialized Add-On Process Run Ending Add-On Process C reating Entity Add-On Process C reated Entities Add-On Process Exited Add-On Process Transfer-Out C onstraints Expression Repeat Group. The name of an event which will cause this Source object to stop generating arrivals. Occurs when the simulation run is initialized. Occurs when an entity has been created by this Source object. The number of entities that will be created by this Source object for each arrival event. Indicates if the pattern of arrival times specified in the Arrival Time property should be repeated when the end of the pattern is reached. The condition required to allow an entity to transfer out of this fixed object via an external output node. The table reference will be added to and carried by the created entity. C ustom C ondition Transfer-Out C ondition Expression Report Statistics True or False . Enter the chance of a no-show as a value between 0 and 1 (including values of 0 or 1). Indicates the type of constraints used to determine whether entities can transfer out of this fixed object via external output nodes. The one-based row index into the table.0 (True) or 0. then the Can Transfer In & Out of Objects property setting for the entity type will determine whether an entity can perform a transfer out of the object. The maximum number of arrivals to be automatically generated by this Source object. then the actual arrival time will occur later than the scheduled tim by that duration. then the actual arrival time will occur earlier than the scheduled time by that duration. Note that this feature is automatically disabled if random sampling in the simulation is disabled.Arrival Time Deviation Expression Expression used to model differences (typically random) between the scheduled times in the arrival table and the times during the simulation run that the arrivals actually occur. The name of the table to assign a reference to after this Source has created an entity. Report Gantt True or False A Boolean property may be True or False and used in expressions as a numeric 1. .0 (False) value.0 (True) or 0. Simio LLC. Send comments on this topic to Information Copyright 2006-2011. All Rights Reserved. the pattern will begin again from the beginning. the Source will stop generating arrivals after 2 hours . The Repeat Arrival Pattern property allows the user to specify if the arrival pattern specified in the referenced table should repeat when the end of the pattern is reached. How to Stop Arrivals l Define a Maximum Number of Arrivals The standard Source object has a property called Maximum Arrivals. and many other situations. when the pattern will start to repeat. the Interval Size would be 1 hour and the Number of Intervals would be 8. and so on. 24/0. but then no arrivals are specified until time 24 (end of day 1). and was repeating. the noshow probability is applied to the entire arrival batch size that is created at any given time. If a DateTime property is used. 13/1. 32. For example. the Source will stop producing entities when the number of arrivals equals the value set in the Maximum Arrivals property. the arrival will occur at the simulation start time plus the numeric value of the property. based on the rate specified for each time interval. the simulation returns the time span from the starting date of the simulation to itself. 14/1. a Real property or an Integer property. The Event Count property can be used to signify that a given number of occurences of the specified event are required before triggering the next entity arrival. For example. The event would be specified as Input@Sink1. This way. Specifying a Time Offset greater than 0. if Maximum Time is set to 2. The referenced Data Table property should be either a DateTime property.Uniform(-. l If the Arrival Mode is ‘Arrival Table' The Source object generates entities based on the value of a numeric property in a table. The rate pattern will automatically repeat during the simulation run.5 and 3. This method is useful for modeling pull-type systems. the Time Varying Arrival Rate method of arrivals is a good option. The Arrival Time Deviation property will allow you to offset the arrival table value by a certain deviation time. l If the Arrival Mode is ‘Time Varying Arrival Rate' The Time Varying Arrival Rate option should be used if the arrival rate changes over time. Properties of each rate table include the Number of Intervals in which the rate will change and the Interval Size.Simio D oc umentation Source . the Rate Scale Factor property should be 1. This way. If true.e.5 hours. 15/1. then the arrival may occur anywhere bewteen 2. If the scheduled arrival time is at the simulation start time or later. If you have arrivals between 9 am and 5 pm. The Interarrival Time specifies the time bewteen arrivals of entities into the system and can be based on a constant value. If a Real or Integer property is used. if the arrival table entry value is '3' hours and the Arrival Time Deviation is 'Random. When this property is set to something other than 'Infinity'. the Source will stop producing entities when the simulation run has reached the specified amount of time in the Maximum Time property. another entity in generated through the Source. A non-stationary Exponential distribution is used to calculate the arrivals. customers) arrive to the system at a less frequent rate for several hours. 8 and 16. the gap between 5 pm and the next day 9 am includes no arrivals. 12/1. Then you would specify pairs (Arrival Time / Arrival Quantity). However. The entities will be generated at the start of the simulation (time 0) and will not be included in the Event C ount. and the DateTime in the table was 1/1/2008 2:30:00AM. 16/1.5)'. l If the Arrival Mode is ‘On Event' The Source object may also generate entities only when a given event occurs. For example. For example. . if a data table had two entries. 10/1. if customer arrival rates change every hour during an 8 hour day. to increase the Rate Table values by 50%. one arrival enters every hour between 9 and 5. A different rate may be specified for each of the 1 hour intervals within the 8 hour day. a simple illustration would be when an entity exits the system through Sink1. The Rate Scale Factor property can be used to increase or decrease the values in the Rate Table by a given amount. l Define a Maximum Amount of Time for the Source to Generate Arrivals The standard Source object has a property called Maximum Time. but the deviation expression is moving the actual arrival time earlier than the simulation start time. then at a more frequent rate for several hours.. if entities (i. The number of entities in each 'group' is based on the Entities Per Arrival. such as 9/1.5. Entities are triggered to arrive when a specified event or number of events occur. For example. So if the starting date of the simulation was 1/1/2008 12:00:00 AM. 16.5'. there is a 50% chance that the any of the 10 arrival groups of Entities Per Arrival entities will not be created at a given point in time.0 will cause the Source to wait until that time elapses before generating any entities. expression or distribution. 24. this event generates another entity to be created. The No-Show Probability is applied independently to each of the Arrival Events Per Time Slot specified. which is found by clicking on the Data tab of the model.5. the arrival would be scheduled at time 2. 11/1.Discussion and Examples Discussion How Often Will the Entities Arrive? l If the Arrival Mode is 'Interarrival Time' Using the Interarrival Time option requires two additional properties including Time Offset and Interarrival Time. The deviation is applied independently to each of the Arrival Events Per Time Slot.Entered and once an entity enters the sink. The Arrival Events Per Time Slot can be used to generate 'groups' of events that will occur at the specified time. When this property is set to something other than 'Infinity'. For example.5 hours. you may have a table that includes the number of arrivals. The arrival information is then specified in a Rate Table. 17/1. you would have an arrival at 8.0. Simio will interpret that as an arrival at time 0. For example. The Initial Number Entities property can be used to start a given number of entities into the system with this 'On Event' Source. For example. which can be defined from the Rate Tables panel. inventory replentishment. if the Arrival Events Per Time Slot is '10' and the No-Show Probability is '. and want that pattern to repeat. Enabled to '0'.OrderNumber.from the beginning of the simulation run. The user can disable this Timer in order to stop arrivals from occuring. the Source object will stop generating arrivals when this event is fired.RandomRow). named EntityArrivals. to trigger arrivals. All Rights Reserved. l The Timer Element inside of the Source can be disabled The standard Source object uses a Timer element. l Define a Stopping Event The standard Source object has a property called Stopping Event. . The Row Number property is used to indicate which row number to reference in the table.EntityArrivals. the Data Table might contain information on what type of entity to create or information that will be assigned to a state on the entity. OrderTable. For example. Send comments on this topic to Information C opyright 2006-2011. set Source1. The RandomRow function can be used to randomly select a row from the table (i. How to Get Data from a Table before Creating Entities l You can reference a Data Table before the Source creates entities The standard Source object has a property called Table Name which can be used to reference a Data Table before the Source creates an arrival. When an Event is specified in this property.e. This can be used to get information from a Data Table that will be used to create an entity. Simio LLC . To disable the Timer. C ustom C ondition Transfer-In C ondition Expression Report Statistics True or False Report Gantt True or False Send comments on this topic to Information Copyright 2006-2011. Occurs when the simulation run is ending.Simio D oc umentation Sink The Sink destroys entities.0 (True) or 0. This property may be specified using a random sample from a distribution. Assignments Process Instance Name Process Instance Name Process Instance Name Process Instance Name Disable. The ‘TimeInSystem’ TallyStatistic generated by this object has its C onfidence Level property specified as ‘Default’. The condition required to allow an entity to transfer into this fixed object via an external input node. Indicates the type of constraints used to determine whether entities can transfer into this fixed object via external input nodes. then the Can Transfer In & Out of Objects property setting for the entity type will determine whether an entity can perform a transfer into the object. Occurs when the simulation run is initialized. State assignments can be made upon entering the Sink. The user may change the C onfidence Level used by the Sink's tally by simply changing the C onfidence Level in the Experiment. The Add-On Process Triggers allow additional logic to be specified when using the Sink.0 (False) value. Simio LLC. Default.0 (True) or 0. Optional state assignments when an entity is entering the Sink object. A Boolean property may be True or False and used in expressions as a numeric 1. Occurs when an entity is about to be destroyed by this Sink object. . If specified as 'Default'. Listed below are the properties of the Sink: Property TransferIn Time Valid Entry Expression Description The time required to transfer an entity into this Sink object. Occurs when an entity has entered this Sink object. A Boolean property may be True or False and used in expressions as a numeric 1. On Entering (state assignment) Run Initialized Add-On Process Run Ending Add-On Process Entered Add-On Process Destroying Entity Add-On Process Transfer-In C onstraints Repeat Group.0 (False) value. It also has the capability to collect automatic statistics. All Rights Reserved. Last In First Out. C alendar Time Based. see Server . This property may be specified using a random sample form a distribution. dynamically selects the next allocation request from its statically ranked allocation queue using a dynamic selection rule. For more information. and the method used to trigger the failure occurrences. Largest Value First Expression Description The method used to specify the capacity of this Server object. The number of entities that can be held in this Server object's output buffer.The three station approach allows for the capability to have both infinite and finite capacity queues. Event C ount Based Event Instance Name Expression Event Name Uptime Between Failures C ount Between Failures Expression Time To Repair Expression On Entering (State Assignment) Repeat Group. The time required to transfer an entity into this Server object. the entity then appears at the process station's queue.Simio D oc umentation Server In Simio. The Add-On Process Triggers allow additional logic to be specified when using the Server. A Server may have failures. This property may be specified using a random sample from a distribution. The time required to repair a failure when one occurs. Assignments .Discussion and Examples. When the server is ready to process the entity. The name of the event which determines when the next failure occurs. A Server is an object that contains three capacitated stations with associated queues. This station has a member Queue which can also be considered a list of present entities. The capacity work schedule that this Server object follows. or one of several Dynamic Selection Rules TransferIn Time Expression Processing Time Expression Input Buffer C apacity Output Buffer C apacity Failure Type Integer >= 0 Integer >=0 No Failures. The number of entities that can be held in this Server object's input buffer. A Token is a completely different object than an entity. which are specified within the Reliability section of the property grid. Specifies whether this Server object has failures that affect the object's availability. when its capacity becomes available. Indicates whether this object. The count between failure occurrences. This property may be specified using a random sample from a distribution. State assignments can be made upon entering and exiting the Server. It is used to trigger logical events in the Processes Window of the model. Listed below are the properties of the Server: Property C apacity Type Initial C apacity Work Schedule Ranking Rule Valid Entry Fixed. Secondary Resources may be seized and/or released by the entity upon entering the Server. The logic that is being performed once the entity enters the Server object spawns what is called a Token. From there it leaves on the outgoing connector(s) to wherever the designed logic is going to send it. In the Facility Window. The expression used with a Smallest Value First or Largest Value First ranking rule. After the logic of the process has completed. An entity processing at a Server may be interrupted with the Interrupt step. and before and after processing occurs. The time required for this Server object to process each entity. Ranking Expression Dynamic Selection Rule None. The static ranking rule used to order entities waiting to be allocated capacity of this Server object. This property may be specified using a random sample from a distribution. The initial fixed capacity of this Server object. Work Schedule Expression Work Schedule Name First In First Out. Smallest Value First. if there is space the entity will be moved to the output member queue. The Processing Time delay is the only interruptible delay within the Server. This property may be specified using a random sample from a distribution. a Server represents a capacitated resource with optional constrained input and output buffers. Processing C ount Based. Optional state assignments when an entity is entering the Server object. an entity arrives at the first node of the Server via a connector. The uptime between failure occurrences. Occurs when an entity has been allocated server capacity and is about to start processing.Object. Resource Seizes After Processing (Other Resource Seizes) Repeat Group. Occurs when the repair time for a failure at this object is starting. use the keyword C andidate to reference an object in the collection of candidates to be seized (e. Resource Releases Before Processing (Other Resource Releases) Repeat Group. The method for specifying the object to be seized and held for the Server's processing time.Remaining). Optional secondary resource seizes after an entity has finished processing. In the expression. Object Instance Name Object List Instance Name Smallest Distance. Indicates whether a move to a specified location will be requested from the seized resource. From List. Optional secondary resource seizes once an entity has been allocated Server capacity. Occurs when the object goes 'on shift' because of its specified work schedule. Optional secondary resource releases after an entity has finished processing. Occurs when the object goes 'off shift' because of its specified work schedule. before starting the processing time. Optional secondary resource releases to be performed when an entity is entering the Server object. The goal for selecting objects to seize. To Node Destination Node (Secondary Resource for Processing) On Entering (Other Resource Seizes) Before Processing (Other Resource Seizes) Node Instance Name Repeat Group. Occurs when a failure is repaired at this object. The name of the specific node location that the seized resource will be requested to move to. Resource Seizes On Entering (Other Resource Releases) Repeat Group. Request Move (Secondary Resource for Processing) None. to be completed before starting the processing time. ParentObject Optional state assignments when an entity is ready to exit the Server object.. The name of the object list from which an object will be selected to be seized. Largest Distance. Occurs when an entity has entered this Server object. Occurs when the simulation run is initialized. Processing will not be able to start until the resource has arrived to the requested location. Optional secondary resource seizes when an entity is entering the Server object. Occurs when the simulation run is ending. Resource Seizes Repeat Group. C andidate. Resource Releases Process Instance Name Process Instance Name Process Instance Name Process Instance Name Processed Add-On Process Process Instance Name Exited Add-On Process Failed Add-On Process Repairing Add-On Process Repaired Add-On Process On Shift Add-On Process Off Shift Add-On Process Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name . Occurs when an entity has exited this Server object. Preferred Order.Before Exiting (State Assignment) Object Type (Secondary Resource for Processing) Object Name (Secondary Resource for Processing) Object List Name (Secondary Resource for Processing) Selection Goal (Secondary Resource for Processing) Selection Expression (Secondary Resource for Processing) Repeat Group. Assignments Specific. to be completed before releasing the Server capacity. Largest Value Expression The expression evaluated for each object that is a candidate to seize. Occurs when an entity has completed processing and is about to release the server capacity.C apacity. Smallest Value. Optional secondary resource releases once an entity has been allocated Server capacity. Resource Releases After Processing (Other Resource Releases) Run Initialized Add-On Process Run Ending Add-On Process Entered Add-On Process Processing Add-On Process Repeat Group. before releasing the Server capacity. Occurs when this object has failed.g. The name of the object to be seized. Indicates the type of constraints used to determine whether entities can transfer out of this fixed object via external output nodes. The condition required to allow an entity to transfer out of this fixed object via an external output node. . The condition required to allow an entity to transfer into this fixed object via an external input node. If specified as 'Default'. If specified as 'Default'. Default. Specifies if resource usage and state details are to be automatically logged for this object. All Rights Reserved. then the Can Transfer In & Out of Objects property setting for the entity type will determine whether an entity can perform a transfer out of the object. Transfer-In C ondition Expression Transfer-Out C onstraints Disable. C ustom C ondition Transfer-Out C ondition Expression Report Statistics Resource Logging True or False True or False Send comments on this topic to Information C opyright 2006-2011. Simio LLC . then the Can Transfer In & Out of Objects property setting for the entity type will determine whether an entity can perform a transfer into the object. Default. Specifies if statitsics are to be automatically reported for this object.Transfer-In C onstraints Disable. C ustom C ondition Indicates the type of constraints used to determine whether entities can transfer into this fixed object via external input nodes. If the Server has a capacity greater than 1. The numeric values for the state are Starved=0. it is considered Processing when one or more units of the server are busy. you may wish to show the percentage of time that a server is processing during the simulation run. A work schedule is defined from the Schedules panel. For more information on list state values and utilization statistics. it will only be evaluated once at the beginning of the run and the capacity will remain unchanged. l WorkSchedule If the Capacity Type property is set to 'Work Schedule'. To animate the server ResourceState. This would be done by utilizing the function Server. which is found by clicking on the Data tab. and OffShift=4. The ResourceState variable is used to display utilization statistics for the Server in the Results window. If a random distribution is specified in the capacity expression.ResourceState from the List State property list. the value of the initial capacity will be used to determine the capacity for the Server at the start of the simulation run. given that the token referencing this function is associated with the server.Simio D oc umentation Server . For example. Simio LLC .C urrentC apacity. ServerName.C apacity. For example. Blocked=2. . if you have a Server named Server1. Processing=1. You will see Resource State results for the Server objects in the Results window. a work schedule must be specified in the Work Schedule property. see List State page. All Rights Reserved. you simply specify the Server name and the desired function. This would be done by placing a status label with the expression ServerName. Server has ResourceState State Variable that Tracks Its States l The ResourceState state variable is a List State automatically tracked for the Server. Failed=3. you may wish to place a Status Pie. Send comments on this topic to Information C opyright 2006-2011. The capacity can be specified with an expression. This will change the value of the capacity function.ResourceState in the logic. this list state can be used to display utilization statistics during the simulation run. specify the Data Type as 'ListState'and select Server1.PercentTime(1).Discussion and Examples Discussion Fixed Capacity or Capacity Varying by Work Schedule l Fixed If the Capacity Type property is set to 'Fixed'. Additionally. You can use the ResourceState in process logic to check whether a server is ‘Processing’. ServerName. The Assign step can be used to change the Server's capacity during the simulation run by using the Server state.‘Starved’ or other state.ResourceState. Occurs when a failure is repaired at this object. The Add-On Process Triggers allow additional logic to be specified when using the Resource. WorkSchedule Expression WorkSchedule Name First In First Out. Smallest Value First. The capacity work schedule that this Resource object follows. It does not move within the Facility window. The expression used with a Smallest Value First or Largest Value First ranking rule. A resource object may have a capacity of 0 to N and is considered 'OffShift' if capacity = 0 or 'OnShift' if capacity > 0. Occurs when this Resource object has had capacity allocated to another object. Resources can be grouped together in an object list so they can be seized as a group or selected from a list of possible resources based on a selection criteria. C alendar Time Based. Listed below are the properties of the Resource: Property C apacity Type Initial C apacity Work Schedule Ranking Rule Valid Entry Fixed. objects allow or disallow themselves to be seized and released by other objects. The initial capacity of this Resource object. which are specified within the Reliability section of the property grid. Ranking Expression Dynamic Selection Rule None. Event C ount Based Event Name Uptime Between Failures Event Instance Name Expression C ount Between Failures Expression Time To Repair Expression Run Initialized Add-On Process Triggers Run Ending Add-On Process Allocated Add-On Process Triggers Released Add-On Process Triggers Failed Add-On Process Triggers Repairing Add-On Process Triggers Repaired Add-On Process Triggers Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name .Discussion and Examples. Occurs when the simulation run is initialized. dynamically selects the next allocation request using an expressionbased rule. A seize operation requires a negotiation between the objects involved. Hence in Simio.Simio D oc umentation Resource A Resource is a static capacitated Fixed Object that can be seized. Occurs when the simulation run is ending. The count between failure occurrences. Specifies whether this Resource object has failures that affect the object's availability. consider seizing capacity of a Vehicle or Worker object. Usage C ount Based. when allocation of its capacity is performed. The uptime between failure occurrences. Occurs when the repair time for a failure at this object is starting. If you would like a moveable Resource. Occurs when this object has failed. An object could refuse the seize request because he/she has other activities to perform. For more information. The static ranking rule used to order entities waiting to be allocated capacity of this Resource object. Largest Value First Expression Description The method used to specify the capacity of this Resource object. Occurs when this Resource object has had capacity released by another object. and the method used to trigger the failure occurrences. The name of the event which determines when the next failure occurs. see Resources . This property may be specified using a random sample from a distribution. This property may be specified using a random sample form a distribution. This property may be specified using a random sample from a distribution. A Resource may have failures. The time required to repair a failure when one occurs. or one of several Dynamic Selection Rules Failure Type No Failures. A resource's capacity can be fixed or controlled by a work schedule. Last In First Out. Indicates whether this Resource object. ReturnValue) indicates that the allocation attempt is rejected. Simio LLC .0 (True) or 0. A Boolean property may be True or False and used in expressions as a numeric 1. Occurs when the object goes 'off shift' because of its specified work schedule.0 (True) or 0. Occurs when the object goes 'on shift' because of its specified work schedule. A Boolean property may be True or False and used in expressions as a numeric 1. assigning a value of less than or equal to '0' to the executing token's ReturnValue state (Token.Evaluating Seize Request Add-On Process Process Instance Name Triggers Occurs when this Resource is evaluating whether to accept or reject a capacity allocation attempt. see the help topic Resources .0 (False) value. . On Shift Add-On Process Triggers Off Shift Add-On Process Triggers Report Statistics Process Instance Name Process Instance Name True or False Report Gantt True or False For additional information on Resources. Send comments on this topic to Information C opyright 2006-2011. The Token that executes this process is associated with the C andidate object. In the executed decision process.Discussion and Examples.0 (False) value. All Rights Reserved. This would be done by utilizing the function Resource. In other words. which is found by clicking on the Data tab. FailedBusy=5. You will see Resource State results for the resource objects in the Results window. the value of the initial capacity will be used to determine the capacity for the resource at the start of the simulation run. The ResourceState variable is used to display utilization statistics for the Resource in the Results window. if you have a Resource named Tool1. it is considered busy when one or more units of the resource are busy. These are the Allocated and Evaluating Seize Request Add-On Processes. If the DynamicSelectionRule property is set to either 'Smallest Value First' or 'Largest Value First'. if the resource goes offshift. Failed=3. Busy=1.ResourceState in the logic. you may wish to place a Status Pie. The Ranking Rule property is used to order the requests that are waiting to be allocated capacity of this object. It is only used when Ranking Rule is set to 'Smallest Value' or 'Largest Value'. there is an Add On Process called Evaluating Seize Request. l WorkSchedule If the Capacity Type property is set to 'Work Schedule'. so the keyword C andidate must be used in this expression. The Ranking Expression property is the value that is used to evaluate the requests that are waiting allocation of this object. Basic Node and Transfer Node are considered resources. you simply specify the resource name and the desired function. A Resource is considered busy when it is Seized by a token using a Seize step. Manually Trigger an Allocation Attempt l Simio has an Allocate Step. For example. The numeric values for the state are Idle=0. For more information on list state values and utilization statistics.Simio D oc umentation Resources . The capacity can be specified with an expression. it uses the expression in the DynamicSelectionExpression property to evaluate which request should be serviced next. it will only be evaluated once at the beginning of the run and the capacity will remain unchanged. Additionally. the Ranking Rule is used as a backup. This Add On Process is executed when the object is evaluating whether to accept or reject the capacity allocation request. Evaluating Requests for this Object’s Capacity l Ranking Rule A resource object has a single (internal) allocation queue with Ranking Rule and Ranking Expression properties that define the static ranking of that queue. l Evaluating Seize Request Add On Process In the Resource object from the standard object library. OffShift=4.ResourceState from the List State property list. Fixed Capacity or Capacity Varying by Work Schedule l Fixed If the Capacity Type property is set to 'Fixed'. The value '1' indicates that the allocation attempt was successful.C urrentC apacity. A user might decide to use the Resource standard library object because as a convenience. To animate the resource ResourceState. Regardless of where the Seize step takes place.ResourceState. C ombiner. . The resource object may have a capacity of 0 to N and is considered 'OffShift'if capacity = 0 or 'OnShift' if capacity > 0. specify the Data Type as 'ListState'and select Tool1. In the executed decision process. the property Resource Object in the object definition is set to 'True' for each of these standard library objects. given that the token referencing this function is associated with the resource.Discussion and Examples Discussion What makes an Object a Resource? l Of the standard library objects. This would be done by placing a status label with the expression ResourceName.PercentTime(1). which can be used to manually trigger an allocation attempt of the parent object’s available capacity to other objects that are waiting for units of the capacity. The Assign step can be used to change the resource's capacity during the simulation run by using the resource state. there are two Add-On Processes in this object that are useful with capacity allocation. This expression is a foreign expression since it is evaluating other objects that have made a request for this object’s capacity. If the resource has a capacity greater than 1.C apacity. ResourceName. it is considered OffShiftBusy until all units are no longer allocated for processing. For example. If both the static Ranking Rule and the DynamicSelectionRule are set. ResourceName. you may wish to show the percentage of time that a resource is busy during the simulation run. Resource has ResourceState State Variable that Tracks Its States l The ResourceState state variable is a List State automatically tracked for the Resource. l Dynamic Selection Rule The Resource object can dynamically select which request is addressed next.ReturnValue) to indicate that the allocation attempt is rejected. every seize request for this object goes into that single allocation queue. if the capacity is greater than 1 and it is busy. the Server. by definition. Resource. If a user is defining a new object from scratch and would like to make this object a resource. OffShiftBusy=6. see List State page. the user should assign a value of less than or equal to '0' to the executing token’s Return Value state (Token. For example. A work schedule is defined from the Schedules panel. the Resource Object property must be set to True in the object definition. Separator. You can use the ResourceState in process logic to check whether a resource is ‘Busy’ or ‘Idle’. a work schedule must be specified in the Work Schedule property. If a random distribution is specified in the capacity expression. Similarly. some of the standard library objects use the Allocate Step to trigger an allocation attempt after a failure has occurred. This will change the value of the capacity function. this list state can be used to display utilization statistics during the simulation run. This means that their capacity can be seized and released. The details of this work schedule could be found in the Schedules Panel within the Data Window of this model. The user can write logic based on the current capacity of the resource. Simio LLC .Priority. And if the capacity of the resource changes with a schedule. the function C apacity. This Resource Object will also dynamically select from its internal resource allocation queue using the expression ModelEntity.Functions that can be used with Resources l There are two functions that might be useful to use with Resource objects. Send comments on this topic to Information C opyright 2006-2011.Previous can be used to find the capacity before the last change. It will select the entity with the smallest value for ModelEntity. using the function C apacity. . Examples Example 1 Resource Object_Example 1 This Resource Object from the standard object library will have a changing capacity that is based on a work schedule named Schedule1.Priority to be allocated capacity next. All Rights Reserved. Largest Value First Expression Member Ranking Expression C apacity Type Fixed. An entity arrives at the parent input node of the C ombiner. If there is a criteria. a variable or a random distribution). The rule used to rank the order of entities in this C ombiner object's member input buffer. If the entity is be processed by the C ombiner. The Add-On Process Triggers allow additional logic to be specified when using the C ombiner. The rule used to rank the order of entities in this C ombiner object's parent input buffer. 'Match Members And Parent' indicates that parents must also be matched with members to attach a group to a parent. one for the member input buffer. The Processing Time delay is the only interruptible delay within the C ombiner. the processing station and the output buffer station. which are specified within the Reliability section of the property grid. Entities also arrive to the member input node which has its own queue and capacity. one station for the parent input buffer. The C ombiner object contains four capacitated stations with associated queues. 'Match Members' indicates that members must be matched together using a specified expression . The expression used with a Smallest Value First or Largest Value First ranking rule. The entities wait in these queues until they batch together according to the logic specified in the properties of the C ombiner. An entity processing at a C ombiner may be interrupted with the Interrupt step. For more information. see C ombiner . The expression for the parent entity whose value must be the same as the match expression for the group members in order to attach the group to the parent. A C ombiner may have failures. The method used to specify the number of batching operations that this C ombiner object can simultaneously process. Match Members And Parent Member Match Expression Expression Parent Match Expression Expression Parent Ranking Rule First In First Out. Determines the number of member entities that will be attached (assembled) to the parent entity. The quantity of the batch can be specified by an expression (i. Work Schedule Initial C apacity Work Schedule Parent TransferIn Time Expression WorkSchedule name Expression . Match Members. The four station approach allows for the capability to have both infinite and finite capacity queues. Determines how member entities and parent entities are grouped.e. and before and after processing occurs. The Matching Rule property specifies if the entities should meet a certain criteria before they can be batched together. This property may be specified using a random sample from a distribution. if there is space the entity will be moved to the output member queue. the Member Match Expression and the Parent Match Expression is where the criteria is specified. After the logic of the process has completed. Smallest Value First. 'Any Entity' indicates that the first members of the specified batch quantity will be taken and attached to the first parent. Last In First Out. The initial capacity of this C ombiner object. Secondary Resources may be seized and/or released upon the parent entity entering the C ombiner. Largest Value First Expression Parent Ranking Expression Member Ranking Rule First In First Out. The expression used with a Smallest Value First or Largest Value First ranking rule. Matching Rule Any Entity.Discussion and Examples. it also has process logic and capacity logic similar to a Server Object. Last In First Out. The C ombiner does not only batch entities together. The capacity work schedule that this C ombiner object follows. This station has a queue and a capacity. The time required to transfer a parent entity into this C ombiner object. The expression whose value must be the same among all member entities in order to create a group. Listed below are the properties of the Combiner: Property Batch Quantity Valid Entry Expression truncated to integer Description Expression evaluated for each parent entity when it enters the C ombiner. State assignments can be made upon entering and exiting the C ombiner.Simio D oc umentation Combiner A Combiner represents a capacitated resource with two input buffers and one output buffer. Smallest Value First. it then appears at the process station's queue. .C apacity. To Node Destination Node (Secondary Resource for Processing) On Parent Entering (Other Resource Seizes) Before Processing (Other Resource Seizes) Node Instance Name Repeat Group. Indicates whether a move to a specified location will be requested from the seized resource. Smallest Value. the assembly or batching time). The time required for this C ombiner object to attach the specified quantity of member entities to each parent entity (i. This property may be specified using a random sample form a distribution. C andidate. The name of the object to be seized. Request Move (Secondary Resource for Processing) None. This property may be specified using a random sample from a distribution. Resource Seizes . Largest Value Expression The expression evaluated for each object that is a candidate to seize. and the method used to trigger the failure occurrences. The name of the event which determines when the next failure occurs. The count between failure occurrences. The number of entities that can be held in this C ombiner object's member input buffer. The time required to repair a failure when one occurs. Event C ount Based Event Instance Name Expression Event Name Uptime Between Failures C ount Between Failures Expression Time To Repair Expression On Parent Entering (State Assignment) On Member Entering (State Assignment) Repeat Group. The uptime between failure occurrences.. From List. Assignments Specific. This property may be specified using a random sample from a distribution. In the expression. C alendar Time Based. The name of the specific node location that the seized resource will be requested to move to.g. Resource Seizes Repeat Group. Assignments Before Exiting (State Assignment) Object Type (Secondary Resource for Processing) Object Name (Secondary Resource for Processing) Object List Name (Secondary Resource for Processing) Selection Goal (Secondary Resource for Processing) Selection Expression (Secondary Resource for Processing) Repeat Group. The name of the object list from which an object will be selected to be seized. Optional state assignments when an entity is ready to exit the C ombiner object. Optional secondary resource seizes when an entity is entering the parent input buffer of the C ombiner object. ParentObject Object Instance Name Object List Instance Name Smallest Distance. Processing C ount Based.Object. The goal for selecting objects to seize. The number of entities that can be held in this C ombiner object's parent input buffer. to be completed before starting the processing time. Optional state assignments when a parent entity is entering the C ombiner object. Largest Distance. Preferred Order. Optional state assignments when a member entity is entering the C ombiner object. The number of entities that can be held in this C ombiner object's output buffer. Processing Time Expression Parent InputBuffer C apacity Member InputBuffer C apacity Integer >= 1 Integer >= 1 OutputBuffer C apacity Failure Type Integer >= 0 No Failures. This property may be specified using a random sample from a distribution. Specifies whether this C ombiner object has failures that affect the object's availability.Member TransferIn Time Expression The time required to transfer a member entity into this C ombiner object. Optional secondary resource seizes once a batch's parent entity has collected its batch members and been allocated C ombiner capacity. use the keyword C andidate to reference an object in the collection of candidates to be seized (e.e. Processing will not be able to start until the resource has arrived to the requested location.Remaining). This property may be specified using a random sample from a distribution. Assignments Repeat Group. The method for specifying the object to be seized and held for the C ombiner's processing time. The condition required to allow an entity to transfer into this fixed object via an external input node. Resource Releases After Processing (Other Resource Releases) Repeat Group. Occurs when the simulation run is ending. Occurs when an entity has entered the parent input buffer of this C ombiner object. Specifies if resource usage and state details are to be automatically logged for this object. Occurs when a batch's parent entity has completed processing and is about to release the combiner capacity. Resource Seizes Optional secondary resource seizes after a batch's parent entity has finished processing. Occurs when the repair time for a failure at this object is starting. Occurs when the simulation run is initialized. Indicates the type of constraints used to determine whether entities can transfer into this fixed object via external input nodes. Indicates the type of constraints used to determine whether entities can transfer out of this fixed object via external output nodes. Occurs when an entity has entered the member input buffer of this C ombiner object. Occurs when a failure is repaired at this object. before starting the processing time. Occurs when a batch's parent entity has exited this C ombiner object. Optional secondary resource releases to be performed when an entity is entering the parent input buffer of the C ombiner object. Optional secondary resource releases once a batch's parent entity has collected its batch members and been allocated C ombiner capacity.After Processing (Other Resource Seizes) Repeat Group. Occurs when this object has failed. Default. If specified as 'Default'. to be completed before releasing the C ombiner capacity. Occurs when the object goes 'off shift' because of its specified work schedule. Specifies if statistics are to be automatically reported for this object. C ustom C ondition Transfer-Out C ondition Expression Report Statistics Report Gantt True or False True or False . Occurs when the object goes 'on shift' because of its specified work schedule. The condition required to allow an entity to transfer out of this fixed object via an external output node. C ustom C ondition Transfer-In C ondition Expression Transfer-Out C onstraints Disable. Optional secondary resource releases after a batch's parent entity has finished processing. On Parent Entering (Other Resource Releases) Repeat Group. Occurs when a batch's parent entity has been allocated combiner capacity and is about to be removed from the parent input buffer and start processing. Resource Releases Before Processing (Other Resource Releases) Repeat Group. If specified as 'Default'. Default. then the Can Transfer In & Out of Objects property setting for the entity type will determine whether an entity can perform a transfer into the object. then the Can Transfer In & Out of Objects property setting for the entity type will determine whether an entity can perform a transfer out of the object. before releasing the C ombiner capacity. Resource Releases Run Initialized Add-On Process Run Ending Add-On Process ParentEntered Add-On Process Process Instance Name Process Instance Name Process Instance Name Member Entered Add-On Process Process Instance Name Processing Add-On Process Process Instance Name Processed Add-On Process Process Instance Name Exited Add-On Process Failed Add-On Process Repairing Add-On Process Repaired Add-On Process On Shift Add-On Process Off Shift Add-On Process Transfer-In C onstraints Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name Disable. . All Rights Reserved.Send comments on this topic to Information C opyright 2006-2011. Simio LLC . For example. C ombinerName. and OffShift=4.BatchSize' is evaluated and not the member entity values. see List State page. Blocked=2. Combiner has ResourceState State Variable that Tracks Its States l The ResourceState state variable is a List State automatically tracked for the C ombiner. the batch size that will be used is based on the entity. If the Member Match Expression of an entity arriving to the member input buffer does not match the other Member Match Expressions of the other entities watching to be batched. The Assign step can be used to change the C ombiner's capacity during the simulation run by using the C ombiner state. The capacity can be specified with an expression. C ombinerName. The numeric values for the state are Starved=0.Simio D oc umentation Combiner .ResourceState from the List State property list. a work schedule must be specified in the Work Schedule property. If a random distribution is specified in the capacity expression. If the Member Match Expression of an entity arriving to the member input buffer does not match the other Member Match Expressions of the other entities watching to be batched and the parent entity waiting to be batched. l If the Batch Quantity is set to an expression based on the entity.ResourceState in the logic. for example 'ModelEntity. Processing=1. By using an entity property or state. This would be done by placing a status label with the expression C ombinerName. given that the token referencing this function is associated with the server. You can use the ResourceState in process logic to check whether a server is ‘Processing’. it will only be evaluated once at the beginning of the run and the capacity will remain unchanged. You will see Resource State results for the C ombiner objects in the Results window. you simply specify the C ombiner name and the desired function. specify the Data Type as 'ListState'and select Palletizer1. you may wish to place a Status Pie.ResourceState.C apacity. Examples Example 1 . l If the Matching Rule is set to 'Match Members'.Discussion and Examples Discussion Batch Quantity If the Batch Quantity is set to an integer value X. the parent entity's value for 'ModelEntity. the value of the initial capacity will be used to determine the capacity for the C ombiner at the start of the simulation run. the entity will wait until enough other entities arrive that provide a match for this value and the total number of matching entities equal the Batch Quantity.C urrentC apacity. this list state can be used to display utilization statistics during the simulation run. where X is the number specified in Batch Quantity.BatchSize'. Failed=3. This will change the value of the capacity function. the C ombiner will only batch member entities together if the value of the Member Match Expression is the same amongst all the member entities and the parent entity. l WorkSchedule If the Capacity Type property is set to 'Work Schedule'. This Batch Quantity does not include the parent entity arriving to the parent entry node. For more information on list state values and utilization statistics.PercentTime(1). A work schedule is defined from the Schedules panel. the C ombiner will wait until X members arrive to the member entry node before the batch is processed. l Fixed Capacity or Capacity Varying by Work Schedule l Fixed If the Capacity Type property is set to 'Fixed'. and therefore can vary. Additionally.‘Starved’ or other state. the C ombiner will use the Batch Quantity property to determine how many entities to batch together and it will batch the first X entities that arrive to the C ombiner. The ResourceState variable is used to display utilization statistics for the C ombiner in the Results window. if you have a C ombiner named Palletizer1. the C ombiner will only batch member entities together if the value of the Member Match Expression is the same amongst all the member entities. you may wish to show the percentage of time that a combiner is processing during the simulation run. This would be done by utilizing the function C ombiner. it is considered Processing when one or more units of the combiner are busy. If the C ombiner has a capacity greater than 1. which is found by clicking on the Data tab. To animate the combiner ResourceState. For example. the entity will wait until enough other entities arrive that provide a match for this value and the total number of matching entities equal the Batch Quantity. l If the Matching Rule is set to 'Match Members and Parent'. l Matching Rule If the Matching Rule is set to 'Any Entity'. .PartType. they will be delayed within this C ombiner object for 5 minutes before exiting through the output node. Send comments on this topic to Information C opyright 2006-2011.Combiner Object_Example 1 This C ombiner Object from the standard object library will have a changing capacity that is based on a work schedule named TwentyMinBreak. All Rights Reserved. It also has the Processing Time property set to 5 minutes so after the entities are batched together. Simio LLC . only if they have a matching value for the state called ModelEntity. This C ombiner Object will batch entities that arrive to both its parent input node and member input node together. The C ombiner will batch 3 member entities together. the Separator will unbatch the specified number of entities from the parent entity. For more information. If 'Make C opies'. The initial capacity of this Separator object. The number is specified in Split Quantity. The method used to specify the number of batching operations that this Separator object can simultaneously process. Indicates whether this object. If the entity is be processed by the Separator. The original entity will depart the Separator from the parent output node and the copies will depart from the member output node.Discussion and Examples. when its capacity becomes available. one station for the input buffer. This station has a queue and a capacity. one for the processing station. If the Separation Mode is set to 'Split Batch'. or one of several Dynamic Selection Rules TransferIn Time Expression Processing Time Expression Input Buffer C apacity Parent Output Buffer C apacity Integer >= 0 Integer >= 0 . An entity processing at a Separator may be interrupted with the Interrupt step. The static ranking rule used to order entities waiting to be allocated capacity of this Separator object. it also has process logic and capacity logic similar to a Server Object. Last In First Out. The Separator object contains four capacitated stations with associated queues. The number of copies to make of the original incoming entity. the Separator will create the number of entities that is specified in Copy Quantity. Work Schedule Initial C apacity Work Schedule Ranking Rule Expression WorkSchedule name First In First Out. see Separator . The time required to transfer an entity into this Separator object. This property may be specified using a random sample from a distribution. Secondary Resources may be seized and/or released by the entity upon entering the Separator. one for the parent output buffer and another station for the member output buffer. Largest Value First Expression Ranking Expression Dynamic Selection Rule None. The four station approach allows for the capability to have both infinite and finite capacity queues. and before and after processing occurs. The capacity work schedule that this Separator object follows. Make C opies Description The method for separating the incoming entity. The number of entities that can be held in this Separator object's parent output buffer. which is the parent entity. An entity arrives at the input node of the Separator. The original entity. then the Separator object will make the specified number of copies of the original incoming entity. which are specified within the Reliability section of the property grid. if there is space the entity will be moved to the output member queue. will depart from the parent node and the member entities depart from the member output node. The number of member entities to split/unbatch. The Separator does not only unbatch entities and make copies of entities. The Processing Time delay is the only interruptible delay within the Separator. The Add-On Process Triggers allow additional logic to be specified when using the Separator. dynamically selects the next allocation request from its statically ranked allocation queue using a dynamic selection rule. After the logic of the process has completed. Listed below are the properties of the Separator: Property Separation Mode Valid Entry Split Batch. The time required for this Separator object to complete the split or copy operation. State assignments can be made upon entering and exiting the Separator. A Separator may have failures. If 'Split Batch' .Simio D oc umentation Separator A Separator represents a capacitated resource with one input buffers and two output buffers. Smallest Value First. it appears at the process station's queue while its being processed and then performs the logic of separating or copying entities. then the Separator object will split/unbatch the specified number of member entities from the parent entity. The number of entities that can be held in this Separator object's input buffer. Split Quantity C opy Quantity C apacity Type Expression Expression Fixed. If the Separation Mode is set to 'Make C opies'. This property may be specified using a random sample from a distribution. The expression used with a Smallest Value First or Largest Value First ranking rule. Optional state assignments when a separated member entity is ready to exit the Separator object. Assignments Repeat Group. Request Move (Secondary Resource for Processing) None. Optional secondary resource releases to be performed when an entity is entering the Separator object. Smallest Value.. Indicates whether a move to a specified location will be requested from the seized resource. The goal for selecting objects to seize. Assignments Before Member Exiting (State Assignment) Object Type (Secondary Resource for Processing) Object Name (Secondary Resource for Processing) Object List Name (Secondary Resource for Processing) Selection Goal (Secondary Resource for Processing) Selection Expression (Secondary Resource for Processing) Repeat Group. In the expression. This property may be specified using a random sample from a distribution. Optional secondary resource seizes when an entity is entering the Separator object. The count between failure occurrences. before releasing the Separator capacity and then executing the separation logic. use the keyword C andidate to reference an object in the collection of candidates to be seized (e. Optional secondary resource seizes after an entity has finished processing. Event C ount Based. From List. The method for specifying the object to be seized and held for the Separator's processing time. Optional secondary resource seizes once an entity has been allocated Separator capacity. Optional secondary resource releases once an entity has been allocated Separator capacity. Resource Seizes On Parent Entering (Other Resource Releases) Before Processing (Other Resource Releases) Repeat Group. Optional state assignments when a parent entity is ready to exit the Separator object. Resource Releases Repeat Group. Resource Releases Run Initialized Add-On Process Process Instance Name .Failure Type No Failures. Resource Seizes After Processing (Other Resource Seizes) Repeat Group.Remaining). Optional secondary resource releases after an entity has finished processing. before starting the processing time. Resource Releases After Processing (Other Resource Releases) Repeat Group. The time required to repair a failure when one occurs. and the method used to trigger the failure occurrences. Occurs when the simulation run is initialized. This property may be specified using a random sample from a distribution. to be completed before starting the processing time. The name of the object list from which an object will be selected to be seized. The name of the event which determines when the next failure occurs. To Node Destination Node (Secondary Resource for Processing) On Parent Entering (Other Resource Seizes) Before Processing (Other Resource Seizes) Node Instance Name Repeat Group. Assignments Specific.C apacity. Preferred Order. Processing will not be able to start until the resource has arrived to the requested location. Event Name Uptime Between Failures Event Instance Name Expression C ount Between Failures Expression Time To Repair Expression On Entering (State Assignment) Before Parent Exiting (State Assignment) Repeat Group. Largest Distance.g.Object. ParentObject Object Instance Name Object List Instance Name Smallest Distance. Resource Seizes Repeat Group. The uptime between failure occurrences. Largest Value Expression The expression evaluated for each object that is a candidate to seize. to be completed before releasing the Separator capacity and then executing the separation logic. C alendar Time Based. This property may be specified using a random sample form a distribution. Optional state assignments when an entity is entering the Separator object. C andidate. The name of the object to be seized. Event C ount Based Specifies whether this Separator object has failures that affect the object's availability. The name of the specific node location that the seized resource will be requested to move to. Indicates the type of constraints used to determine whether entities can transfer out of this fixed object via external output nodes. All Rights Reserved. then the Can Transfer In & Out of Objects property setting for the entity type will determine whether an entity can perform a transfer out of the object. If specified as 'Default'.0 (True) or 0. Processed Add-On Process Process Instance Name Parent Exited Add-On Process Member Exited Add-On Process Failed Add-On Process Repairing Add-On Process Repaired Add-On Process OnShift Add-On Process OffShift Add-On Process Transfer-In C onstraints Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name Disable. Occurs when the object goes 'off shift' because of its specified work schedule. Occurs when this object has failed. Occurs when an entity has completed processing and is about to release the separator capacity. The condition required to allow an entity to transfer into this fixed object via an external input node. Occurs when an entity has entered the input buffer of this Separator object. A Boolean property may be True or False and used in expressions as a numeric 1. The condition required to allow an entity to transfer out of this fixed object via an external output node. Occurs when an entity has been allocated Separator capacity and is about to start processing. A Boolean property may be True or False and used in expressions as a numeric 1.Run Ending Add-On Process Entered Add-On Process Processing Add-On Process Process Instance Name Process Instance Name Process Instance Name Occurs when the simulation run is ending.0 (True) or 0. C ustom C ondition Transfer-In C ondition Expression Transfer-Out C onstraints Disable. then the Can Transfer In & Out of Objects property setting for the entity type will determine whether an entity can perform a transfer into the object. Occurs when the object goes 'on shift' because of its specified work schedule. . Occurs when a failure is repaired at this object. Occurs when a parent entity has exited this Separator object. If specified as 'Default'. Simio LLC .0 (False) value. Default. Occurs when a separated member entity has exited this Separator object. Indicates the type of constraints used to determine whether entities can transfer into this fixed object via external input nodes. C ustom C ondition Transfer-Out C ondition Expression Report Statistics True or False Report Gantt True or False Send comments on this topic to Information C opyright 2006-2011.0 (False) value. Occurs when the repair time for a failure at this object is starting. Default. If a random distribution is specified in the capacity expression. Processing=1. However.‘Starved’ or other state. Simio LLC . Failed=3. Send comments on this topic to Information C opyright 2006-2011. you may wish to place a Status Pie.BatchMembers is specified in the Split Quantity property because this holds the number of member entities in the batch if the entity is a parent entity. The capacity can be specified with an expression. For more information on list state values and utilization statistics. l WorkSchedule If the Capacity Type property is set to 'Work Schedule'. l Fixed Capacity or Capacity Varying by Work Schedule l Fixed If the Capacity Type property is set to 'Fixed'. All Rights Reserved. To animate the separator ResourceState. l If the Separation Mode is set to 'Make C opies'. a work schedule must be specified in the Work Schedule property. the value of the initial capacity will be used to determine the capacity for the Separator at the start of the simulation run. specify the Data Type as 'ListState'and select Depalletizer. where X is the quantity specified in Copy Quantity.ResourceState from the List State property list. This would be done by utilizing the function Separator. The ResourceState variable is used to display utilization statistics for the Separator in the Results window. By default. For example.C urrentC apacity. Separator has ResourceState State Variable that Tracks Its States l The ResourceState state variable is a List State automatically tracked for the Separator.C apacity. Additionally. this list state can be used to display utilization statistics during the simulation run. The original entity will depart through the parent output node and the new copies will depart through the member output node. For example. given that the token referencing this function is associated with the separator. A work schedule is defined from the Schedules panel. the Separator will make X number of copies of the parent entity. You can use the ResourceState in process logic to check whether a separator is ‘Processing’. and OffShift=4. you simply specify the Separator name and the desired function. which is found by clicking on the Data tab. the Separator will use the Split Quantity property to determine how many entities to separate. .ResourceState.PercentTime(1). SeparatorName. This will change the value of the capacity function. it is considered Processing when one or more units of the separator are busy. you may wish to show the percentage of time that a separator is processing during the simulation run.ResourceState in the logic. If the Separator has a capacity greater than 1. SeparatorName. Blocked=2. it will only be evaluated once at the beginning of the run and the capacity will remain unchanged. You will see Resource State results for the Separator objects in the Results window. if you have a Separator named Depalletizer1. see List State page. The Assign step can be used to change the Separator's capacity during the simulation run by using the Separator state. The numeric values for the state are Starved=0. Entity. any value can be specified in the Split Quantity property.Discussion and Examples Discussion Separation Mode If the Separation Mode is set to 'Split Batch'.Simio D oc umentation Separator . This would be done by placing a status label with the expression SeparatorName. Indicates whether this Workstation object dynamically selects the next entity to work on when the workstation is ready to process another job. For example a lot that has a maximum make span of 3 hours will not start 2 hours before an off-shift period of 8 hours begins.g. or one of several Dynamic Selection Rules TransferIn Time Expression . and teardown. Material or a Bill of Material may be required to start the processing of each batch. A Workstation is modeled as a sequence of three Activities: Setup. The Add-On Process Triggers allow additional logic to be specified when using the Workstation. it is simply interpreted as 1 by the Workstation. However. see Workstation . any number of secondary resources may be required and held by each batch across one or more of the three activities.Discussion and Examples. it has a fixed capacity of 1. or follow a capacity schedule. The lot can be processed as a single production unit. however because the standard Workstation object can only process one job at a time. Last In First Out. The capacity is fixed at 1 and cannot be changed. instead of only using the ranking rule to determine processing order. The next production lot to be processed can be selected based on both a static ranking and a dynamic selection process. The entity that is processed through the workstation represents a production lot. A Workstation may have failures. A batch of produced material may also have a transfer time before it becomes available for consumption by other workstations. and Teardown. For example a lot of 1000 units may be processed in batches of 100 at a time. because it’s make span would exceed its maximum value. the processing of all batches. State assignments can be made upon entering and exiting the Workstation. Processing. if the schedule has a capacity greater than 1. This value can be a constant or be product/order dependent by referencing a table. In addition. size or color). A production lot may have a maximum make span that limits when it can be started based on the availability of the primary resource. Work Schedule Work Schedule Name Ranking Rule First In First Out. C hange-Dependent. The data for a production lot is typically held in data tables. a Bill of Materials is used for consumption and a Material is produced.Simio D oc umentation WorkStation In Simio. take note that the standard Workstation object only processes one job at a time. which are specified within the Reliability section of the property grid. A Specific time can be a constant or be product/order dependent by referencing a table. the make span check does not guarantee that material and/or secondary resources will be available at the needed times. Smallest Value First. Note that a single setup and teardown activity is performed. The Operation Quantity specifies the number of “items” in the production lot that is represented by each arriving entity. Material or a Bill of Material may also be produced at the end of each batch processing. a Workstation represents a capacitated resource with optional constrained input and output buffers. Listed below are the properties of the Workstation: Property C apacity Type Valid Entry Fixed. The time required to transfer an entity into this Workstation object. The Setup Time can be Specific. but 10 separate batches of 100 are sequentially processed through the processing activity. The capacity work schedule that this Workstation object follows. The sequence of Activities is referred to as an Operation. C hange/Sequence dependent times can be based on any characteristic of the product (e. The static ranking rule used to order entities waiting to be allocated capacity of this Workstation object. The expression used with a Smallest Value First or Largest Value First ranking rule. The make span check verifies that that the primary resource is available to complete the operation within the maximum make span. however Simio also allows for a Bill of Materials to be produced. The maximum make span may be a constant or order/product dependent by referencing a table. *Note* C urrently the GUI allows a user to add a Work Schedule with capacity greater than 1 to a Workstation. In other words. Hence a production lot that passes the make span check may still exceed it’s make span if delays in material/secondary resources occur. Largest Value First Expression Ranking Expression Dynamic Selection Rule None. The workstation may have a fixed capacity. Typically. However. This makes it easy to model situations involving intermediate transfer batching. or Sequence-Dependent. setup. to model cases such as disassembly. Work Schedule Description The method used to specify the capacity of this Workstation object.e. and then referenced by the entity. The Workstation object is considered to be a primary resource that is required during the entire operation: i. or the lot can be broken into a sequence of batches that are processed one at a time until the entire lot has been produced. For more information. Secondary resources can be specific resources or selected based on rules from a list of resources. This property may be specified using a random sample from a distribution. This property may be specified using a random sample from a distribution. The secondary resources that are required for activities at this Workstation object. The name of the object list from which one or more objects will be selected. Processing. the operation attribute expression is evaluated as a zero-based index into the C hangeover Matrix string list for which 'from-to' pairs are defined. The range of activities that the secondary resource is required for. Specific. then the batch size is assumed to be the operation quantity and the processing activity is performed in a single batch.Activity Range SecondaryResources. C hange Dependent. From List Object Instance Name Object List Instance Name All. The teardown time required for an operation after completing the processing of all batches. Note that. This property may be used with Processing Batch Size property to perform an operation's processing activity in a single batch or a set of sequential batches. Teardown . Optional batch size used instead of the Operation Quantity to perform the processing activity as a set of sequential batches. This property may be specified using a random sample from a distribution. All But Specific Setup. The changeover matrix that defines the operation's setup time dependent on the attribute change from the previous operation to the current operation. The time required to process an individual batch. Referencing a list property on the processing entity as the operation attribute is particularly useful for modeling sequence-dependent setup times.Object List Name SecondaryResources.Operation Quantity Expression The item quantity assumed for each operation performed at this Workstation. an operation attribute of '0' means that the entity's comparison value is the first value in the changeover matrix string list. Sequence Dependent Expression Operation Attribute Expression Setup Time If Same Expression Setup Time If Different Expression C hangeOver Matrix C hangeover Matrix Instance Processing Batch Size Expression Processing Time Expression Teardown Time Expression Secondary Resources Repeating Property SecondaryResources. The setup time if there has been a change in the Operation Attribute from the previous operation to the current opeartion.Object Name SecondaryResources. Setup Time Type Setup Time Specific. The expression evaluated for each operation that is used to determine the change-dependent or sequence dependent setup time. If not specified. The setup time required at this Workstation object before processing an entity. The method for specifying the object(s) required as a secondary resource. Must be less than or equal to the operation quantity.Activity Specific. This property may be specified using a random sample from a distribution. for a sequence dependent time. The specific activity at this Workstation object that the secondary resource either is or is not required for. This property may be specified using a random sample from a distribution. For example.Object Type SecondaryResources. The name of the object type that is required. The setup time if there has not been a change in the Operation Attribute from the previous operation to the current opeartion. The method used for specifying the setup time at this Workstation object. This property may be specified using a random sample from a distribution. If not specified.SecondaryResources.. The number of capacity units that are required per object. Material.Units Per Object (SecondaryResources)Selection Goal Expression truncated to integer Expression truncated to integer Smallest Distance.Remaining). Bill Of Materials Produced Material Name Material Instance Name Produced Quantity Produced Material Transfer Time Expression Expression . The material which is to be either specifically consumed or whose Bill of Materials is to be consumed. Smallest Value. C andidate. A delay time that must occur until the produced material quantity is considered available for consumption by other processing activities in the system.g. In the condition. Preferred Order. then this property defaults to the processing entity's Priority state value. C andidate. Workstation activity will not continue until all resources have arrived to the requested location.Selection Goal Smallest Distance.Request Move None. The priority of the move request if a PlanVisit step or SelectVisit step is used by the seized resource(s) to choose a visit destination from multiple candidates. SecondaryResources.C apacity. use the keyword C andidate to reference an object in the collection of candidates to be seized (e. An optional condition evaluated for each candidate object that must be true for the object to be eligible for seizing. Largest Distance. use the keyword C andidate to reference an object in the collection of candidates. In the expression. The goal for selecting objects to seize.Object.Number Of Objects SecondaryResources. The material production that occurs after processing a batch at this Workstation object.g. Largest Value (SecondaryResources)Selection C ondition Expression SecondaryResources. Largest Value SecondaryResources.Move Priority Expression SecondaryResources. An optional condition evaluated for each candidate object that must be true for the object to be eligible for seizing. The quantity of material or Bill of Materials to be produced before processing a batch.Destination Node Node Instance Name SecondaryResources. Preferred Order. The quantity of material or Bill of Materials to be consumed before processing a batch. The name of the specific node location that the seized resource(s) will be requested to move to.Selection Expression Expression The expression evaluated for each object that is a candidate to seize. The goal used to rank object preference when multiple candidates are available. Smallest Value. The material which is to be either specifically produced or whose bill of materials is to be produced. and the owner object performing the seize is an entity object.Remaining) The material consumption required to process a batch at this Workstation object. The number of objects that are required. In the condition. Material..Selection C ondition Expression Material C onsumption C onsumed Material Name None. To Node Indicates whether a move to a specified location will be requested from the seized object(s). use the keyword C andidate to reference an object in the collection of candidates (e. Bill Of Materials Material Instance Name C onsumed Quantity Expression Material Production None. SecondaryResources.C apacity. Largest Distance.Object. This property may be specified using a random sample from a distribution. The time required to repair a failure when one occurs. Assignments Process Instance Name Process Instance Name Process Instance Name Setting Up Add-On Process Finished Set Up Add-On Process Process Instance Name Process Instance Name Processing Add-On Process Processed Add-On Process Process Instance Name Process Instance Name Tearing Down Add-On Process Finished Teardown Add-On Process Process Instance Name Process Instance Name Finished Good Operation Add-On Process Process Instance Name Finished Bad Operation Add-On Process Process Instance Name . The count between failure occurrences.Maximum Makespan Expression The maximum length of the time allowed for this operation. Occurs when an operation has finished and the makespan of the operation has exceeded the Maximum Makespan condition. Processing C ount Based. if the Workstation object is following a Work Schedule. C alendar Time Based. Occurs when the simulation run is initialized. Occurs when the processing time for a batch has completed and the material production or release of secondary resources due to finish the batch is about to occur. Occurs when an operation's setup time is about to begin. Makespan Buffer Time Expression Input Buffer C apacity Output Buffer C apacity Failure Type Integer >= 0 Integer >=0 No Failures. Optional state assignments when an entity is entering the Workstation object. Note that. Occurs when an operation has finished and the makespan of the operation has satisfied the Maximum Makespan condition. Occurs when an operation's teardown time is about to begin. Event C ount Based Event Instance Name Expression Event Name Uptime Between Failures C ount Between Failures Expression Time To Repair Expression On Entering (state assignment) Before Exiting (state assignment) Run Initialized Add-On Process Run Ending Add-On Process Entered Add-On Process Repeat Group. The name of the event which determines when the next failure occurs. Optional state assignments when an entity is ready to exit the Workstation object. Specifies whether this Workstation object has failures that affect the object's availability. Occurs when an operation's setup time is finished and the release of secondary resources due to finish setup is about to occur. This property may be specified using a random sample from a distribution. Occurs immediately after an entity as entered this object and is about to start TransferIn Time. Occurs when an operation's teardown time is finished and the release of secondary resources due to finish teardown is about to occur. Occurs when the processing time for a batch is about to begin. and the method used to trigger the failure occurrences. Occurs when the simulation run is ending. The number of entities that can be held in this Workstation object's input buffer. then 'off-shift' periods in the schedule will be factored into and extend the estimated makespan time. The uptime between failure occurrences. from the start of the setup activity until the completion of the teardown activity at this Workstation object. An operation cannot be started unless its estimated makespan is less than this Maximum value minus the Makespan Buffer Time. The number of entities that can be held in this Workstation object's output buffer. Assignments Repeat Group. This property may be specified using a random sample form a distribution. An operation cannot be started unless its estimated makespan is less than the Maximum Makespan minus this Buffer Time. If specified as 'Default'. Occurs when the object goes On Shift because of its specified Work Schedule. C ustom C ondition Occurs when an entity as exited this object. Transfer-In C ondition Expression Transfer-Out C onstraints Disable. All Rights Reserved. Indicates the type of constraints used to determine whether entities can transfer into this fixed object via external input nodes. .0 (True) or 0. A Boolean property may be True or False and used in expressions as a numeric 1. If specified as 'Default'.Exited Add-On Process Failed Add-On Process Repairing Add-On Process Repaired Add-On Process On Shift Add-On Process Off Shift Add-On Process Transfer-In C onstraints Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name Disable. Default. A Boolean property may be True or False and used in expressions as a numeric 1. Occurs when this object has failed. Simio LLC . Occurs when the object goes Off Shift because of its specified Work Schedule. Occurs when the repair time for a failure at this object is starting.0 (True) or 0.0 (False) value. then the Can Transfer In & Out of Objects property setting for the entity type will determine whether an entity can perform a transfer out of the object. then the Can Transfer In & Out of Objects property setting for the entity type will determine whether an entity can perform a transfer into the object. The condition required to allow an entity to transfer out of this fixed object via an external output node. Occurs when a failure is repaired at this object. The condition required to allow an entity to transfer into this fixed object via an external input node. Default.0 (False) value. C ustom C ondition Transfer-Out C ondition Expression Report Statistics True or False Report Gantt True or False Send comments on this topic to Information C opyright 2006-2011. Indicates the type of constraints used to determine whether entities can transfer out of this fixed object via external output nodes. or the lot can be broken into a sequence of batches that are processed one at a time until the entire lot has been produced. both units of the Material and units of the components of the Material (if there are components in the Bill of Materials) are consumed or produced. the quantity of those materials must be available for the operation to continue. If 'Bill of Materials' is selected for the Material Consumption or the Material Production properties of the Workstation. These material quantities are typically initialized using the Initial Quantity property of the Material element. This value can be a constant or be product/order dependent by referencing a table. . but 10 separate batches of 100 are sequentially processed through the processing activity. all of the components of that Material are consumed or produced. A batch of produced material may also have a transfer time before it becomes available for consumption by other workstations. If the workstation consumes material (either through the Bill of Materials or simply Material). For example a lot of 1000 units may be processed in batches of 100 at a time. Add a new Material element from the Elements panel of the Definitions Window. Material and Bill of Material l Material or a Bill of Material may be required to start the processing of each batch. Note that a single setup and teardown activity is performed. Material or a Bill of Material may also be produced at the end of each batch processing. Bill of Material is a repeating property that may contain component materials used to build the parent material. This makes it easy to model situations involving intermediate transfer batching.Simio D oc umentation Workstation . The Material icon can be found in the Workflow group of the Ribbon. In the example below. the Workstation object consumes one unit of Hamburger. Toy and Milk each time a batch is processed.Discussion and Examples Discussion Operation Quantity and Batch Size l The operation quantity specifies the number of “items” in the production lot that is represented by each arriving entity. FrenchFries. The lot can be processed as a single production unit. If 'Material' is selected for Material Consumption or the Material Production properties of the Workstation. The Produce step can be used to increase the available quantity of a given material or bill of materials during the simulation run. This is because a HappyMeal contains these 4 different Materials. setup. In addition.e. Secondary resources can be specific resources or selected based on rules from a list of resources. the processing of all batches. and teardown. . A secondary resource is added through the Secondary Resource property on the Workstation.Consuming Material Primary and Secondary Resources l The Workstation object is considered to be a primary resource that is required during the entire operation: i. any number of secondary resources may be required and held by each batch across one or more of the three activities. The Setup Time Type property should be set to 'C hange Dependent'. the setup time for this Workstation is 1 minute. Resource1 is only seized for the Setup and Teardown activities. a Workstation is the primary resource and the secondary resource is an object named Resource1. If two entities with the same value for ModelEntity. the setup time for this Workstation is 5 minutes. Details of the Secondary Resource on a Workstation Change Dependent Setup Time l The Setup Time for each entity arriving to the Workstation can be set to one duration if the value for Operation Attribute of the current operation is the same as it was for the previous operation and set to a different duration if the value for Operation Attribute of the current operation is different than the last operation. Notice the Activity Range and Activity properties. The Operation Attribute is set to an expression that is evaluated to compare this operation to the previous operation and therefore leads to the use of either Setup Time if Same or Setup Time if Different. If two entities with different values for ModelEntity.C olor are processed directly after one another. The following example of a C hange Dependent set up time uses the State ModelEntity.C olor to compare sequential operations and determine which setup time should be used.Adding a Secondary Resource to Workstation In this example below. not the Processing activity.C olor are processed directly after one another. . instead of using the Work Schedule. Sequence Dependent Setup Time Makespan and Capacity Changes l The Workstation object has a fixed capacity of 1 unless you specify a work schedule. The Setup Time Type property should be set to 'Sequence Dependent'. The numeric values for the state are Starved=0. care should be taken not to use the Maximum Makespan property. 'Teardown' or other state. Setup times for From-To pairs are defined in a C hangeOverMatrix). This would be done by utilizing the function Workstation. If the user manually assigns the capacity of a workstation using the state. Teardown=6. You can use the ResourceState in process logic to check whether a workstation is ‘Processing’. WorkstationName. If the WorkstationName. this is what is used to determine the Setup Time from the C hangeOver Matrix.e.Change Dependent Setup Time Sequence Dependent Setup Time l The Setup Time for each entity arriving to the Workstation can be set to a value that is determined by the combination of an attribute on the previous entity and the same attribute on the current entity (i. The Operation Attribute is evaluated as a zero based index into the C hangeover Matrix string list. Medium and Large.‘Setup’. The ModelEntity object has a String List with three values. Setup=5. given that the token referencing . Please note that the Workstation object does currently have a Maximum Makespan feature that prohibits allowing an operation to start unless the job can finish within the specified makespan.ListProperty1. Small. Blocked=2. Processing=1. Each ModelEntity has a different value for the ListProperty. a warning will be displayed (if warnings are not disabled) and the capacity will automatically adjusted to the value of '1'.ResourceState in the logic. Since the Operation Attribute is set to ModelEntity. OffShift=4. An Operation Attribute value of '0' means that the entity's comparison value is the first in the String List. Workstation has ResourceState State Variable that Tracks Its States l The ResourceState state variable is a List State automatically tracked for the Workstation. Failed=3. The makespan estimate includes spanning any specified work schedule.C urrentC apacity is manually assigned to a value other than 0 or 1.C urrentC apacity. The following example of a Sequence Dependent Setup time uses a List Property to compare sequential operations and determine which setup time should be used. BatchC ount EstimatedMakespan Return Value Returns the item quantity for the entity's current operation.Activity. Simio LLC .ResourceState. You will see Resource State results for the Workstation objects in the Results window. you may wish to place a Status Pie. For more information on list state values and utilization statistics. Functions l The following are some of the workstation specific functions that are available for use with Workstation: Function Operation. For example. Returns the operation's estimated makespan for the entity object associated with the executing token. Returns the batch size for the entity's current operation activit Send comments on this topic to Information C opyright 2006-2011.PercentTime(1). All Rights Reserved. you may wish to show the percentage of time that a workstation is processing during the simulation run.Quantity Operation.BatchTime Operation. Additionally. This would be done by placing a status label with the expression WorkstationName. For example. To animate the workstation ResourceState.BatchIndex Operation. if you have a workstation named Workstation1. you simply specify the Workstation name and the desired function. .ResourceState from the List State property list.Activity. specify the Data Type as 'ListState'and select Workstation1.Activity.this function is associated with the workstation. this list state can be used to display utilization statistics during the simulation run. Returns the total number of batches for the entity's current operation activity.Activity.BatchSize Operation. Returns the batch index of the entity's current operation activity. see List State page. Returns the batch time for the entity's current operation activity. The ResourceState variable is used to display utilization statistics for the Workstation in the Results window. The time required for this Vehicle object to unload an entity (i. AGV.. note that you cannot dynamically Destroy a Vehicle because resource objects in Simio are not destroyable. You can define the Initial Number In System for the Vehicle population. you could create an object definition for a subway car. park at a node in a network).e. then drop the entities off at a destination location. The time required for this Vehicle object to load an entity (i. e.g. You may also use the C reate step or Source object to dynamically create and add new members to the population during the run. or bus. Rotate in Place. A Vehicle may have failures. which are specified within the Reliability section of the property grid. Load Time Unload Time Expression Park To Load/Unload True or False Initial Desired Speed Expression Initial Network Network Instance Name Network Turnaround Method Exit & Re-enter. Indicates whether objects of this type are by default allowed to transfer into and out of fixed objects via those object's external input / output nodes.You can create other transporter models that behave differently than the standard Vehicle model. For more information. The strategy used by the Vehicle object to select its next transport pickup or dropoff task. First In Queue Expression Description The carrying capacity of this Vehicle object.. This object also has the ability to move off of a network while maintaining association with a node on the network (i. An ‘On Demand’ Vehicle object may be used as a moveable resource that is seized and released by model logic for non-transport tasks. Listed below are the properties of the Vehicle: Property Ride C apacity Task Selection Strategy Valid Entry Integer Smallest Distance.e. Reverse Initial Priority Expression C an Transfer In & Out of Objects True or False Initial Node (Home) Node Instance Name . Indicates whether this Vehicle object should park to load and unload entities at a node. The Add-On Process Triggers allow additional logic to be specified when using the Vehicle. the non-transport tasks will always be prioritized before transport tasks. Largest Priority.Simio D oc umentation Vehicle Vehicles A Vehicle object may be used to define a dynamic population of moveable unit resources in the modeled system. the default method used by objects of this type to turn around at a node in order to move in the opposite direction on a bidirectional link. The initial network of links used by this Vehicle object to travel between node locations. carry those objects through a network of links or free space. If an ‘On Demand’ Vehicle object is being used for both transport and non-transport tasks. A ‘Fixed Route’ vehicle will never be available to be seized.Discussion and Examples. However. see Vehicle .e. the unload time per entity). the load time per entity). The initial priority value of this Vehicle object at the beginning of the simulation run.. then by default. When traveling on a network. Largest Distance. Each individual vehicle member in the population is tracked separately.Smallest Priority. The initial desired speed value for this Vehicle object when traveling between locations. as the behavior of that type of vehicle is designed to maintain its specified fixed routing sequence and only do pickups and drop-offs at the locations specified along the route. in terms of both animation and statistics. The initial node location of this Vehicle object at the beginning of the simulation run. Vehicles are modeling objects that can pickup entity objects at a location. Also indicates the vehicle's 'Home' location if the object's 'Idle Action' is specified as 'Park At Home' or 'Go To Home'. The 'Turnaround Method' property of a Network element may also be used to override this default on a network-bynetwork basis. Parking a vehicle can be useful to avoid blocking other travelers on the network. Specifies whether this Vehicle object has failures that affect the object's availability. Largest Value First. The count between failure occurrences. then the vehicle will follow a fixed route sequence to transport riders and will only load and unload entities at locations on the specified route. Occurs when the simulation run is initialized. Largest Value First Ranking Rule Ranking Expression Expression Dynamic Selection Rule None. In the expression. The static ranking rule used to order requests waiting to seize this Vehicle object for a process task. Note: This trigger will only occur for Vehicle objects created by the Intiial Number in System setting. The expression used with a specified dynamic selection rule. The time required to repair a failure when one occurs. dynamically selects the next seize request from its statically ranked allocation queue using a dynamic selection rule. C alendar Time Based. This property may be specified using a random sample from a distribution. Fixed Route Specifies the routing behavior of this Vehicle. use the keyword 'C andidate' to reference an object in the collection of candidates (e. Park At Home.Entity. Note: This feature only applies to an 'On Demand' routing type vehicle. The expression used to filter the list before the specified rule is applied.. Route Sequence Idle Action Sequence Instance Name Park At Node.Routing Type On Demand. use the keyword 'C andidate' to reference an object in the collection of candidates. The expression used with a 'Smallest Value First' or 'Largest Value First' static ranking rule for ordering requests waiting to be allocated capacity of this object. Indicates whether this vehicle. The action of this Vehicle object when it does not have any transportation tasks to perform. C ampaign C ycle. In the expression. An 'On Demand' vehicle may also be used as a moveable resource that is seized and released for non-transport related tasks by model process logic. If 'Fixed Route'. C andidate. If 'On Demand'.g. Smallest Value First Value Expression Expression Filter Expression Expression Park While Busy True or False Failure Type No Failures. Indicates whether this Vehicle object should park while busy at a node due to a seize request. or when another object has seized this Vehicle resource for some nontransport related task. This property may be specified using a random sample from a distribution. Last In First Out. Roam First In First Out. Parking a vehicle can be useful to avoid blocking other travelers on the network. Event C ount Based Event Name Uptime Between Failures Event Instance Name Expression C ount Between Failures Expression Time To Repair Expression Run Initialized Add-On Process Triggers Process Instance Name Run Ending Add-On Process Allocated Add-On Process Triggers Process Instance Name Process Instance Name . C ampaign Down. The uptime between failure occurrences. when it becomes available. Occurs when the simulation run is ending. Smallest Value First. Note: This feature only applies to an 'On Demand' routing type vehicle. Remain In Place.Priority).then the vehicle will route to locations on the network according to visit requests. C ampaign Up. The sequence table that defines the route sequence that this vehicle will loop. and the method used to trigger the failure occurrences. Occurs when this Vehicle resource has been allocated to perform some transport tasks. The name of the event which determines when the next failure occurs. This property may be specified using a random sample from a distribution. Go to Home. Failed Add-On Process Triggers Repairing Add-On Process Triggers Repaired Add-On Process Triggers Entered Node Add-On Process Triggers Unloaded Add-On Process Triggers Loaded Add-On Process Triggers Exiting Node Add-On Process Triggers Evaluating Transport Request Add-On Process Triggers Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name Evaluating Seize Request Add-On Process Process Instance Name Triggers Initial Number in System Integer Maximum Number in System Integer Report Statistics True or False Report Gantt True or False Send comments on this topic to Information Copyright 2006-2011. . In the executed decision process. assigning the value less than or equal to 0. Vehicles are initially located in free-space at the object instance location.ReturnValue) indicates that the potential rider is rejected.0 (True) or 0. assigning a value less than or equal to 0.Released Add-On Process Triggers Process Instance Name Occurs when this Vehicle resource has been released after completing a set of tranport tasks.0 (False) value. A Boolean property may be True or False and used in expressions as a numeric 1. Simio LLC. Occurs when the repair time for a failure at tihs object is starting. In the executed decision process.0 (False) value. Occurs after an entity is unloaded from this vehicle.0 to the executing token's ReturnValue state (Token. Occurs after an entity is loaded onto the vehicle. Occurs when this vehicle has entered a node. or when another object has released this Vehicle resource from some non-transport related task.0 (True) or 0. Occurs when this vehicle is evaluating whether or not to accept the pickup of a rider. If this limit is exceeded then a runtime error is generated. All Rights Reserved. Occurs when this vehicle object is about to begin exiting a node. Occurs when a failure is repaired at the vehicle.ReturnValue) indicates that the allocation attempt is rejected. Occurs when the vehicle has failed. A Boolean property may be True or False and used in expressions as a numeric 1.0 to the executing token's ReturnValue state (Token. The maximum number of objects of this instance that can be simultaneously in the system. Occurs when an 'On Demand' routing type Vehicle is evaluating whether to accept or reject a seize allocation attempt by some process in the system. The initial number of Vehicle objects of this type in the system. If you want to implement even more customized control of how an ‘On Demand’ Vehicle object selects its next task then you may take advantage of the Evaluating Transport Request and Evaluating Seize Request Add-On process triggers. There are two ways to animate the parking area. The numeric values for the state are Idle=0. Seizing an 'On-Demand' Vehicle for Non-Transport Tasks l You may use a Seize step to seize an ‘On Demand’ vehicle and then have that vehicle move to a requested location. change the Ride On Transporter property in the Transfer Node Property grid to 'True'. you may use the Ranking Rule or Dynamic Selection Rule properties available in the Process Logic category of the Vehicle object’s properties. If the Park While Busy property is specified as 'True'.g. you can use those Add-On processes to implement logic on a particular vehicle such as “Don’t accept any non-transport tasks until all my transport tasks are finished first”. For example. expand the Transporter Type by clicking on the + and change the value in the Transporter Name property to the determined vehicle’s name. the model has to be told to have the entities “ride” on the vehicle. You might also easily change the symbol animation on the vehicle to reflect its current state (e. this list state can be used to display utilization statistics during the simulation run. Although all nodes and links are part of the Global network by default. Before moving. Next.ResourceState function in the Current Symbol Index property of the vehicle. as the behavior of that type of vehicle is designed to maintain its specified fixed routing sequence and only do pickups and drop-offs at the locations specified along the route. then note that by default nontransport tasks will always be prioritized before transport tasks. or searches its RideStation to determine its next dropoff destination. You will see Resource State results for the vehicle objects in the Results window. identical to the ResourceState state provided by all of the processor objects in the standard library (Server. the first entity incurs its own load time. Somehow. the first one will be picked up. l l Loading and Unloading Times l Load and unload times are incurred per entity. or searches the global VisitRequestQueue for a ride reservation. you must explicitly reference the index of the vehicle within the dynamic population. You can use the ResourceState in process logic to check whether a vehicle is ‘Busy’ or ‘Idle’. Vehicle has ResourceState State Variable that Tracks Its States l The ResourceState state variable is a List State automatically tracked for the Vehicle.PercentTime(7). Vehicles can serve as Transporters which move entities to and from locations. the Transfer Node has to be configured to have the entities leave on the vehicle. if the capacity of a Vehicle is 2. l How the Task Selection Strategy Property Works l When Vehicle object searches a RidePickupQueue for the next pickup at a node. it is not accessible on the network. it will use the option specified in the Task Selection Strategy property to determine how to choose from the appropriate queue. click on a specific node and then select the Parking .ResourceState in the logic. For more information on list state values and utilization statistics. C ombiner. Failed=3. etc. For example. you must change the associated Network property of the Vehicle. Transporting=7. if you have a vehicle with the Name 'Vehicle1' and the Initial Number In System property for the vehicle set to '2'.Simio D oc umentation Vehicle . the second entity is picked up and incurs its loading time.).Discussion and Examples Discussion First Steps in Using a Standard Vehicle Object l Drag and drop a Vehicle object from the Standard Library window into the Facility Window. plus the load time of the second entity before the vehicle starts the transfer. such as a Source or Server.C ontents and draw the animated queue. If you want the vehicle to ride on a specific Network of Paths. The ResourceState variable is used to display utilization statistics for the Vehicle in the Results window. then release the vehicle using the Release step. There are two ways to animate the parking area. If an ‘On Demand’ Vehicle object is being used for both transport and non-transport tasks. given that the token referencing this function is associated with the vehicle. FailedBusy=5. up to two waiting entities may be picked up to be moved. two Status Pies may be placed and the List States can be referenced as Vehicle1[1]. First. There is one key property of the Vehicle object that must be set.ResourceState. If the Park to Load/Unload property is specified as 'True'. A Vehicle is considered busy when it is Seized by a token using a Seize step. Specify a starting or “home” node in the Initial Node (Home) property. you may wish to show the percentage of time that a vehicle is doing transport type tasks during the simulation run. Resource.ResourceState and Vehicle1 [2]. For example. To prioritize specifically among transport tasks. This would be done by placing a status label with the expression VehicleName[unit#]. click on a specific node and select Draw Queue / ParkingStation. Select the node by left-clicking on the Transfer Node of an object. Note that a ‘Fixed Route’ vehicle will never be available to be seized. First.ResourceState. the vehicle(s) will be placed in the parking area of the node at which it is processing. Then. and incur its loading time. In order to have the vehicles move the entities from one Node to another. see List State page. To animate the vehicle ResourceState. Additionally. click on a specific node and then select the Parking Queue button from the Appearance ribbon. show ‘Busy’ versus ‘Idle’ symbols) by using the Vehicle. It might delay for some processing time. until an initial position is specified for a Transporter. This allows the same ‘On Demand’ Vehicle object to be utilized for both transport as well as non-transport tasks.. Alternatively. Thus. If two entities are waiting for pickup. the vehicle(s) will be placed in the parking area of the node at which it is loading or unloading. For example. The vehicle is considered transporting when it is utilized for a movement type task (either moving to the entity for transport or moving with the entity to its destination location). This would be done by utilizing the function Vehicle. Busy=1. specify the Task Selection Strategy in the Transport Logic category of the Vehicle object’s properties. To prioritize specifically among non-transport tasks. Function.SiblingVehicleIndex].RidePickupQueue at the time it arrives at the Output node. Network Turnaround Method and Bidirectional Paths l The Network Turnaround Method property for an entity. With both of these methods.C urrentC apacity is manually assigned to a value other than 1.C ontents and draw the animated queue. Send comments on this topic to Information C opyright 2006-2011.Function. Referring to a Specific Vehicle within the Dynamic Population l You may use a bracket and number to explicitly refer to a specific unit of the dynamic population of vehicles in the system. for example. Examples Example 1 l Vehicle_Example 1 This shows the Transfer Node properties window for the Output Node of a Server and the Vehicle properties window for Vehicle1. the entity that wants to turn around will always immediately first exit the link (moving essentially into free-space at the node) before attempting to re-enter. worker or vehicle is used in conjunction with bidirectional paths. The Ride Capacity property is set to 'Infinity' so the Transporter will pick up all the entities that are waiting in the Output@Server1. All Rights Reserved.Discussion and Examples page. In the SimBit.Function or Vehicle1[Vehicle1[x]. . The entities that enter this node will wait to be picked up by the Transporter named Vehicle1. By default. click on a specific node and select Draw Queue / ParkingStation.Discussion and Examples page. whereas 'Reverse' will appear that the entity is moving backwards. while the Ride Capacity specifies the number of objects that the particular vehicle may move at any time. causing the vehicles to appear to hang at a given node location. if you have a vehicle with the Name 'Vehicle1' and the Initial Number In System property for the vehicle set to '2'. DynamicallyC reatingVehicles. as well as the Warning Level page. The other two turnaround methods are 'Rotate in Place' and 'Reverse'. followed by brackets. Capacity of a Vehicle l Vehicles are singular resources that are designed to only have a fixed capacity of 1 (as Vehicle which currently does not support work schedule (offshift) behavior). you may wish to evaluate a function of a specific unit. within an expression. 'Rotate in Place' will always keep the 'head' of the entity at the front. a warning will be displayed (if warnings are not disabled) and the capacity will automatically adjusted to the value of '1'. then it will wait in the link’s EntryQueue. If there are more than one type of Vehicle1 objects in the model at the time. Vehicle1[1]. for example. 'Vehicle1 [1]. with an expression in those brackets giving the index into the agent population. The Vehicle1 object will take the entities from the Output Node of the Server to the Input Node of Sink1. the C reate step is used to create a new vehicle into the system. Vehicles and Deadlocking l Vehicles traveling along bidirectional paths have the potential to deadlock. Vehicle1[1]. the C loset will be reserved. If the Vehicle. see the Path . automatically created with a capacity of 1. For example. but will simply turn around and move in the opposite direction. Simio LLC . Please see the discussion on the Path . the entity that wants to turn around will not leave the link. as specified in the Node Name property of the Node. For more information regarding the Turnaround Method.Queue button from the Appearance ribbon. the 'Exit & Re-enter' method is used. You may use any agent instance name.RideC apacityRemaining > 3' within a Decide step. With this method. Alternatively. The Initial Number in System property defines the number of individual vehicles in the system. they can be referenced as Vehicle1[1] and Vehicle1[2] with regards to functions.FunctionName. if the entity cannot immediately re-enter. Vehicle [1+0]. Therefore. And. new seize requests are always prioritized over new transport requests. when it becomes available. the Worker will complete any traveling to the requested task destination. see Worker . However. The name of the schedule that specifies the capacity for this object over time. defined by the Intial Node (Home). similar to a resource. Listed below are the properties of the Worker: Property C apacity Type Work Schedule Ranking Rule Valid Entry Fixed. Largest Value First Expression Description The capacity type of this object. The initial network of paths used by this Worker object to travel between locations. use the keyword 'C andidate' to reference an object in the collection of candidates (e. Indicates whether this Worker object. In the expression.Simio D oc umentation Worker A Worker object may be used to define a dynamic population of moveable unit resources in the modeled system. The Add-On Process Triggers allow additional logic to be specified when using the Worker. Parking a worker can be useful to avoid blocking other travelers on the network. Workers may have a fixed capacity or may utilize a defined work schedule. Additionally. there is the option of using the Interrupt step to do so. It will then remain at that location until released. If in the 'OffShiftBusy' state. it will go into the 'OffShift' state and perform the Off Shift Action (Park at Node. Ranking Expression Dynamic Selection Rule None. For more information. No new seize or transport requests will be accepted during the off-shift period. If in the 'OffShiftTransporting' state. Last In First Out. Smallest Value First. use the keyword 'C andidate' to reference an object in the collection of candidates. Each individual worker member in the population may have a resource capacity of 0 (OffShift) or 1 (OnShift). Each individual worker member in the population is tracked separately. similar to vehicles. etc. Note: If the user would like to interrupt a process task delay when a Worker goes off-shift (to immediately preempt usage of and release the worker).). The expression used with a specified dynamic selection rule. By default. Once released. The expression used with a Smallest Value First or Largest Value First ranking rule.Priority). The Initial Number In System may be defined for the Worker population. The worker may have a home location to which it moves when idle / off-shift. if the worker is still in the process of performing a task then it will first complete any remaining work before going into the 'OffShift' resource state. The Worker will also finish any remaining rider drop-offs. In the expression. Additionally. When a Worker object is scheduled to go 'Off-Shift'. note that Worker objects cannot be dynamically destroyed (Destroy step) because resource objects in Simio are not destroyable. a worker may be used to transport entity objects between node locations. Once all remaining drop-offs are completed and the Worker object's RideStation queue is empty. Workers have characteristics of both the Standard Library objects of Vehicles and Resources. A Worker can follow an OnShift/OffShift work schedule or have a fixed capacity..Entity. the worker object will be in either the 'OffShiftBusy' state or 'OffShiftTransporting' state.g.Discussion and Examples. in terms of both animation and statistics. Work Schedule Schedule Property First In First Out. may remain at its last utilized location or may roam the network of paths. Idle Action and Off Shift Action properties specified with the Worker. The expression used to filter the list before the specified rule is applied. dynamically selectes the next seize reqeuest from its statically ranked allocation queue using a dynamic selection rule. Workers have a physical location in the Facility window. Indicates whether this Worker object should park while busy at a node due to a seize request. it will go into the 'OffShift' state and perform the Off Shift Action specified. C andidate. the C reate step or Source object may be used to dynamically create and add new members to the population during the run. In Simio. a Worker may be used as a moveable resource that is seized and released to process tasks by model process logic. Workers also physically move between objects and can carry one or more entities from one location to another. The static ranking rule used to order requests waiting to seize this Worker object for a process task. The initial value for the desired travel speed of this Worker object when traveling between locations. or one of several Dynamic Selection Rules Value Expression Expression Filter Expression Expression Park While Busy True or False Intial Desired Speed Expression Initial Network Network Instance Name . the Worker will complete any pickups at a reserved node location (if it has already accepted a pickup transport request). While finishing those tasks. Indicates whether objects of this type are by default allowed to transfer into and out of fixed objects via those object's external input / output nodes. or when another object has released this Worker resource from some non-transport related task. load time per entity). The 'Turnaround Method' property of a Network element may also be used to override this default on a network-bynetwork basis. The initial node location of this Worker object at the beginning of the simulation run. if the worker is busy when an off shift period begins. Note: This trigger will only occur for Worker objects created by the Intiial Number in System setting. Rotate in Place. Reverse When traveling on a network.Network Turnaround Method Exit & Re-enter. The carrying capacity of this Worker object. Largest Priority. The time required for this Worker object to load an entity (i. Indicates whether this Worker object should park to load and unload entities at a node. Largest Distance.e. Go to Home. Note that. In the executed decision process. Occurs when this Worker resource has been released (freed) after completing a set of tranport tasks. Occurs when the simulation run is initialized. Occurs when this Worker resource has been allocated to perform some transport tasks. the default method used by objects of this type to turn around at a node in order to move in the opposite direction on a bidirectional link. Occurs after an entity is loaded onto the Worker. Also indicates the worker's 'Home' location if the object is specified to 'Park At Home' or 'Go To Home' when idle or off shift. Parking a worker can be useful to avoid blocking other travelers on the network. Go to Home. then this action is not taken until the worker is released from its last task. Remain In Place. Occurs after an entity is unloaded from this Worker.e. assigning the value less than or equal to 0.ReturnValue) indicates that the transport request is rejected. Occurs when the simulation run is ending. Remain In Place. Initial Priority Initial Node (Home) Real Node Instance Name C an Transfer In & Out of Objects True or False Idle Action Off Shift Action Park At Node. Park At Home. Roam Park At Node. The action of this Worker object when it does not have any tasks to perform. The initial priority value of this Worker object.. unload time per entity). First In Queue Process Instance Name Run Initialized Add-On Process Triggers Run Ending Add-On Process Load Time Process Instance Name Expression Unload Time Expression Park To Load/Unload True or False Allocated Add-On Process Triggers Process Instance Name Released Add-On Process Triggers Process Instance Name Entered Node Add-On Process Triggers Unloaded Add-On Process Triggers Loaded Add-On Process Triggers Exiting Node Add-On Process Triggers Evaluating Transport Request Add-On Process Triggers Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name .0 to the executing token's ReturnValue state (Token.. The time required for this Worker object to unload an entity (i. The strategy used by the Worker object to select its next transport task. Park At Home Ride C apacity Task Selection Strategy Integer Smallest Distance. The action of this Worker object when it goes 'off shift'.Smallest Priority. or when another object has seized this Worker resource for some nontransport related task. Occurs when this Worker object has entered a node. Occurs when this Worker object is about to begin exiting a node. Occurs when this Worker object is evaluating whether or not to accept or reject a transport request from a potential rider. ReturnValue) indicates that the seize request is rejected. The initial number of Worker objects of this type in the system. In the executed decision process. Simio LLC. The maximum number of objects of this type that can be simultaneously in the system. Specifies if statistics are to be automatically reported for this object. All Rights Reserved. If this limit is exceeded then a runtime error is generated. Occurs when the object goes 'on shift' because of its specified work schedule. assigning a value less than or equal to 0. On Shift Add-On Process Triggers Off Shift Add-On Process Triggers Initial Number in System Maximum Number in System Process Instance Name Process Instance Name Integer Integer Report Statistics Report Gantt True or False True or False Send comments on this topic to Information Copyright 2006-2011. Occurs when the object goes 'off shift' because of its specified work schedule. .0 to the executing token's ReturnValue state (Token.Evaluating Seize Request Add-On Process Process Instance Name Triggers Occurs when this Worker object is evaluating whether to accept or reject a seize allocation attempt by some process in the system. Specifies if Gantt statistics are to be reported for this object. click on a specific node and select Draw Queue / ParkingStation. the second entity is picked up and incurs its loading time. Thus.. or searches its RideStation to determine its next dropoff destination. Worker has ResourceState State Variable that Tracks Its States l The ResourceState state variable is a List State automatically tracked for the Worker. Before moving. A work schedule is defined from the Schedules panel. as the capacity of the Worker is set through the Initial Number in System. given that the token referencing this function is associated with the worker. l l Fixed Capacity or Capacity Varying by Work Schedule l Regardless of whether a Worker object has a Fixed C apacity or C apacity Varying by Work Schedule. The Seize and Release steps in the Processes window should be used to request a Worker object to perform a stationary task. the Transfer Node has to be configured to have the entities leave with the Worker. A Worker is considered 'Busy' when it is Seized by a token using a Seize step for a process task. the model has to be told to have the entities “ride” on the worker. therefore. Next. no are breaks or off-shift time. Alternatively. Transporting=7. expand the Transporter Type by clicking on the + and change the value in the Transporter Name property to the determined worker’s name. If the Worker. that is. You will see Resource State results for the Worker objects in the Results window. A different color or symbol could be used for each of those states. you must explicitly reference the index of the worker within the dynamic population. If two entities are waiting for pickup. OffShiftBusy=6. the symbols for Idle (0). etc. For example.ResourceState. Upon seizing a Worker object. you must change the associated Network property of the Worker. In order to have the worker move entities from one Node to another. up to two waiting entities may be picked up to be moved. such as Server. Then. Busy=1. a warning will be displayed (if warnings are not disabled) and the capacity will automatically adjusted to the value of '1'. Busy(1).C urrentC apacity is manually assigned to a value other than 0 or 1. You can use the ResourceState in process logic to check whether a Worker is ‘Busy’ or ‘Idle’ or ‘Transporting’. First. and incur its loading time. . Select the node by left-clicking on the Transfer Node of an object. l l WorkSchedule If the Capacity Type property is set to 'Work Schedule'. if you have a worker with the Name 'Worker1' and the Initial Number In System property for the worker set to '2'. if you want the Worker to move on a specific Network of Paths. change the Ride On Transporter property in the Transfer Node Property grid to 'True'. For example. l How the Task Selection Strategy Property Works l When Worker object searches a RidePickupQueue for the next pickup at a node. OffShiftTransporting=9. such as a Source or Server. This work schedule will be utilized for each of the Initial Number in System workers to allow them to go off-shift for breaks and/or off-shift time.ResourceState and Worker1 [2].Discussion and Examples Discussion First Steps in Using a Worker l Place a Worker object from the Standard Library window into the Facility window. Use of these steps can be done through the Add-On Process Triggers in any of the Standard Library objects. the requesting entity's location) before the Seize is considered 'completed'. The Value property within the schedule should always be '1'. you may use the Request Move option in the Seize step to optionally require the seized worker to move to a specified node location (for example. You might also easily change the symbol animation on the Worker to reflect its current state (e.Simio D oc umentation Worker . the worker(s) will be placed in the parking area of the node at which it is loading or unloading. This would be done by utilizing the function Worker. Vehicle. two Status Pies may be placed and the List States can be referenced as Worker1[1]. which is found by clicking on the Data tab. To animate the worker ResourceState. If the Park to Load/Unload property is specified as 'True'. There are two ways to animate the parking area. BasicNode or TransferNode. click on a specific node and then select the Parking Queue button from the Appearance ribbon. then each of the Initial Number In System workers will have a fixed capacity during the simulation run. the number of workers available to the system is based on the Initial Number In System property.C ontents and draw the animated queue. Fixed If the Capacity Type property is set to 'Fixed'. plus the load time of the second entity before the vehicle starts the transfer. identical to the ResourceState state provided by various other objects in the standard library (Server. C ombiner. Resource. The Worker is considered 'Transporting' when it is utilized for a movement type task (either moving to the entity for transport or moving with the entity to its destination location). it will use the option specified in the Task Selection Strategy property to determine how to choose from the appropriate queue.ResourceState function in the Current Symbol Index property of the vehicle. or searches the global VisitRequestQueue for a ride reservation. the first one will be picked up.ResourceState in the logic. Note that you would need to animate all possible symbols to reflect them properly. a work schedule must be specified in the Work Schedule property. Note: This applies to Vehicle as well. The Worker may also be used for stationary tasks (as opposed to moving an entity from location to location). Workers can serve as Transporters which move entities to and from locations. For example. OffShift=4. show ‘Busy’ versus ‘Idle’ symbols) by using the Worker.). The schedule is intended to be used for On-Shift and Off-Shift times for the Worker. Somehow. if the capacity of a Worker is 2. shown under the Dynamic Objects section. the first entity incurs its own load time. and Transporting(7) should be utilized if the worker has a fixed capacity. The Worker physically moves around the Facility window and has specific locations. Loading and Unloading Times l Load and unload times are incurred per entity.g. The numeric values for the state are Idle=0. You may use any agent instance name. There are two ways to animate the parking area. It might delay for some processing time. Therefore. specify the Task Selection Strategy in the Transport Logic category of the Vehicle object’s properties. And. you may use the Ranking Rule or Dynamic Selection Rule properties available in the Process Logic category of the Worker object’s properties.The ResourceState variable is used to display utilization statistics for the Worker in the Results window. For example. then note that by default non-transport tasks will always be prioritized before transport tasks. To prioritize specifically among transport tasks. the worker(s) will be placed in the parking area of the node at which it is processing.Discussion and Examples page. for example. This would be done by placing a status label with the expression WorkerName[unit#]. click on a specific node and select Draw Queue / ParkingStation.C ontents and draw the animated queue. within an expression. If the Park While Busy property is specified as 'True'. you may wish to show the percentage of time that a worker is doing transport type tasks during the simulation run. The other two turnaround methods are 'Rotate in Place' and 'Reverse'. Please see the discussion on the Path . whereas 'Reverse' will appear that the entity is moving backwards. if you have a worker with the Name 'Worker1' and the Initial Number In System property for the vehicle set to '2'. Simio LLC . With both of these methods. 'Worker1 [1]. if the entity cannot immediately re-enter.Function. click on a specific node and then select the Parking Queue button from the Appearance ribbon. Worker1[1]. see List State page. Workers and Deadlocking l Workers traveling along bidirectional paths have the potential to deadlock. then it will wait in the link’s EntryQueue. If a Worker object is being used for both transport and non-transport tasks. Send comments on this topic to Information C opyright 2006-2011. you may wish to evaluate a function of a specific unit.SiblingWorkerIndex]. then release the worker using the Release step. All Rights Reserved. Seizing a Worker for Non-Transport Tasks l You may use a Seize step to seize a Worker. To prioritize specifically among non-transport tasks.PercentTime(7). If you want to implement even more customized control of how a Worker object selects its next task then you may take advantage of the Evaluating Transport Request and Evaluating Seize Request Add-On process triggers. . followed by brackets. Additionally. but will simply turn around and move in the opposite direction. For example. Worker1 [1+0]. For more information regarding the Turnaround Method. For example.RideC apacityRemaining > 3' within a Decide step. By default. Network Turnaround Method and Bidirectional Paths l The Network Turnaround Method property for an entity. as well as the Warning Level page. Worker1[1]. the entity that wants to turn around will always immediately first exit the link (moving essentially into free-space at the node) before attempting to re-enter.ResourceState. see the Path . First. causing the workers to appear to hang at a given node location. they can be referenced as Worker1[1] and Worker1[2] with regards to functions. worker or vehicle is used in conjunction with bidirectional paths. Referring to a Specific Worker within the Dynamic Population l You may use a bracket and number to explicitly refer to a specific unit of the dynamic population of workers in the system.Function or Worker1[Worker1[x]. this list state can be used to display utilization statistics during the simulation run. This allows the Worker object to be utilized for both transport as well as non-transport tasks.Function.Discussion and Examplespage. you can use those AddOn processes to implement logic on a particular worker such as “Don’t accept any non-transport tasks until all my transport tasks are finished first”. the 'Exit & Re-enter' method is used. With this method.FunctionName. for example. the entity that wants to turn around will not leave the link. Alternatively. For more information on list state values and utilization statistics. 'Rotate in Place' will always keep the 'head' of the entity at the front. with an expression in those brackets giving the index into the agent population. EntryRankingExpression SelectionWeight Expression Send comments on this topic to Information Copyright 2006-2011. which is different behavior than the standard Path link type. The weight expression for this link when using the 'By Link Weight' rule to select an outbound link from a node. C onnectors can be animated with Path Decorators. Simio LLC. Entities waiting to enter a C onnector are inserted into the C onnector's EntryQueue. All Rights Reserved. The outbound link with the highest weight is selected. The weight expression for this link when using the 'By Link Weight' rule to select an outbound link from a node.0’. but will always instead immediately do a node-tonode direct transfer across the link. Largest Value First Expression Description The expression used with a Smallest Value First or Largest Value First ranking rule. Listed below are the properties of the Connector: Property EntryRankingRule Valid Entry First In First Out. The outbound link with the highest weight is selected. Entities will never actually enter. Last In First Out. . move across or exit a C onnector. Note that entities travel across a C onnector one at a time. Smallest Value First. It is a Link object that is hard-coded with its DrawnToScale property set to ‘False’ and its LogicalLength property set to ‘0.Simio D oc umentation Connector A Connector object is a link that may be used to define a non passing pathway between two node locations where the travel time is instantaneous. 0 (True) or 0. Occurs when a traveler's leading edge has entered this path. Bidirectional First In Entry Queue. The initial desired direction of traffic on this bidirectional path. The maximum speed at which an entity can travel along this path. Passing may or may not be allowed. but instead will pass each other if speeds vary. The rule used to rank entry onto this path among competing entry requests. Prefer Desired Direction None. Speed Limit Allow Passing Double True or False Drawn To Scale True or False Logical Length Run Initialized Add-On Process Triggers Run Ending Add-On Process Entered Add-On Process Triggers Trailing Edge Entered Add-On Process Triggers Reached End Add-On Process Triggers Exited Add-On Process Triggers Report Statistics Double Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name True or False Report Gantt True or False Selection Weight Expression Send comments on this topic to Information Copyright 2006-2011. Largest Value First Expression Description The type of traffic movement through this path.0 (False) value. Paths can be animated with Path Decorators. Specifies whether the path's drawn length in the Facility View is the length to be used for the simulation logic. For more information. The Add-On Process Triggers allow additional logic to be specified when using the Path. The weight expression for this link when using the 'By Link Weight' rule to select an outbound link from a node. The expression used with a Smallest Value First or Largest Value First ranking rule.0 (True) or 0. A Boolean property may be True or False and used in expressions as a numeric 1. Passing means that entities will not be blocked along the path. Simio LLC. Indicates whether passing is allowed on this path. Reverse First In First Out. All Rights Reserved.Discussion and Examples. Occurs when the simulation model is initialized. Smallest Value First. Match Desired Direction. Last In First Out.0 (False) value. Occurs when a traveler's trailing edge has entered this path. . A Boolean property may be True or False and used in expressions as a numeric 1. Occurs when a traveler has exited this path. The path length to be used for the simulation logic. Occurs when a traveler's leading edge has reached the end of this path. Forward.Simio D oc umentation Path A Path object is a link that may be used to define a pathway between two node locations where the travel time is determined by the path length and a traveler's speed. The rule used to direct traffic entry onto this bidirectional path. Listed below are the properties of the Path: Property Type Traffic Direction Rule Initial Desired Direction Entry Ranking Rule Entry Ranking Expression Valid Entry Unidirectional. see Path . The outbound link with the highest weight is selected. Occurs when the simulation run is ending. Either. Priority == 2 so that all entities with their Priority state equal to 2 will travel down this path. By default. It can be set to a numerical value. If this occurs. It is important to note that traffic cannot travel in two different directions on one Link at the same time. What this means is that entity. there should be an adequate area for the entity to wait without blocking the exit for the link (by-pass area). Simio LLC . or vehicle movement may stop because one object is at a node trying to move onto a bidirectional link. l To help prevent deadlocking. 'Rotate in Place' will always keep the 'head' of the entity at the front. With both of these methods. With this method.Discussion and Examples Discussion Using Bidirectional Paths l The Type property allows the user to specify whether or not the Path is 'Unidirectional' or 'Bidirectional'. consider having two unidirectional links side by side each going in the opposite direction. you may need to use occasional unidirectional 'bypass' paths to minimize deadlocking. Bidirectional Paths and Deadlocking Whenever bidirectional paths are used. 20% of the entities will travel on this path. while another object is trying to move through the same node onto another link.2 so that if there is a choice between this path and another path. If a potential deadlock is found. The size of this by-pass area depends upon the rate and size of the incoming entities. Send comments on this topic to Information C opyright 2006-2011. l When using bidirectional paths. a warning will be displayed. they will all travel on this path regardless of whether or not their Priority state equals 2. vehicle) on a bi-directional link attempting transfer through the node onto another bi-directional link. When there is a node where an entity can get onto a bidirectional link. Please refer to the BidirectionalPaths SimBit. this is the only path for entities to take. the entity that wants to turn around will not leave the link. if there is no other choice of path. . as well as the MiningExample. So even if the capacity of the Link is set to Infinity. In order to allow traffic to travel in opposite directions at the same time. there is a potential for deadlocking to occur. Selection Weight Property l The Selection Weight property can be used to specify which entities should travel on this path. worker. the entity that wants to turn around will always immediately first exit the link (moving essentially into free-space at the node) before attempting to re-enter.spfx under Example Projects to see examples of by-pass links. the 'Exit & Re-enter' method is used. The other two turnaround methods are 'Rotate in Place' and 'Reverse'. the entity or transporter will wait until the traveling entity is off the link before it enters. Additionally. there are some modeling suggestions.Simio D oc umentation Path . And. worker or vehicle is used in conjunction with bidirectional paths. Additionally. All Rights Reserved. l Network Turnaround Method and Bidirectional Paths l The Network Turnaround Method property for an entity. In this example. but will simply turn around and move in the opposite direction. It can also be set to an expression. any spurs on that network should have the link capacity of 1. whereas 'Reverse' will appear that the entity is moving backwards. in other words. if you have a network of paths. This will allow entities to enter and exit the spur without another entity blocking the entry. worker. SimBit PathSelectionRule demonstrates the use of the Traffic Selection Rule property of a path. if the entity cannot immediately re-enter. then it will wait in the link’s EntryQueue. Simio checks for potential deadlocks at a node if there is an entity object (entity. such as ModelEntity. such as . if there is traffic traveling one direction and an entity or a transporter would like to enter the link and travel in the opposite direction. the simulation model will appear to 'hang' at that particular node. See the SimBit BidirectionalPaths for an example. Listed below are the properties of the TimePath: Property Type Traffic Direction Rule Initial Desired Direction Entry Ranking Rule Entry Ranking Expression Valid Entry Unidirectional. The expression used with a Smallest Value First or Largest Value First ranking rule. Smallest Value First. Match Desired Direction. The rule used to rank entry onto this path among competing entry requests. The Add-On Process Triggers allow additional logic to be specified when using the TimePath.0 (True) or 0. Travel Time Run Initialized Add-On Process Triggers Run Ending Add-On Process Entered Add-On Process Triggers Trailing Edge Entered Add-On Process Triggers Reached End Add-On Process Triggers Exited Add-On Process Triggers Report Statistics Expression Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name True or False Report Gantt True or False Selection Weight Expression Send comments on this topic to Information Copyright 2006-2011. Forward. A Boolean property may be True or False and used in expressions as a numeric 1. Occurs when a traveler's leading edge has entered this path. . The initial desired direction of traffic on this bidirectional path. The time required to travel the length of this path. Last In First Out.0 (True) or 0. Occurs when a traveler's trailing edge has entered this path. Simio LLC. Bidirectional First In Entry Queue. A Boolean property may be True or False and used in expressions as a numeric 1. Largest Value First Expression Description The type of traffic movement through this path. The rule used to direct traffic entry onto this bidirectional path. All Rights Reserved. Reverse First In First Out.Simio D oc umentation TimePath A TimePath object is a link that may be used to define a pathway between two node locations where the travel time is user specified. Occurs when the simulation run is ending. The weight expression for this link when using the 'By Link Weight' rule to select an outbound link from a node. Prefer Desired Direction None. Either. Occurs when the simulation run is initialized.0 (False) value. The outbound link with the highest weight is selected.0 (False) value. Occurs when a traveler's leading edge has reached the end of this path. Occurs when a traveler has exited this path. TimePaths can be animated with Path Decorators. which are specified within the Reliability section of the property grid. then an entity can engage at any location on the conveyor. Largest Value First Expression Description The maximum number of travelers that can be simultaneously on this link. the number of cells is specified. Specifies whether this C onveyor object is accumulating or non-accumulating. The count between failure occurrences. Using this option allows the cell boundries of each link on which an entity travels to become synchronized with the first entity that passes through that link. Listed below are the properties of the Conveyor: Property Traveler C apacity Entry Ranking Rule Valid Entry Integer First In First Out. and the method used to trigger the failure occurrences. then entities are allowed to continue moving and accumulate if progress is blocked. see C onveyor . Last In First Out. Fixed Number C ells C ell Size Auto Align C ells Real With First Entity. The method for aligning engaged entities on this C onveyor object. The method used to specify the fixed interval spacing of cells on the link. If nonaccumulating. If 'Fixed C ell Size'. No Number Of C ells Drawn To Scale Integer True or False Logical Length Accumulating Double True or False Failure Type No Failures. The rule used to rank entry onto this conveyor among competing entry requests. and the leading edge of an engaged entity must align with a cell boundry. C ell Location C ell Spacing Type Fixed C ell Size. C onveyors can be animated with Path Decorators. then the cell size can be specified. then the entire conveyor stops if an entity reaches the end and cannot exit. The Add-On Process Triggers allow additional logic to be specified when using the C onveyor.Simio D oc umentation Conveyor Conveyor A C onveyor is a link that can represent both accumulating and non-accumulating devices. The expression used with a Smallest Value First or Largest Value First ranking rule. C alendar Time Based. Specifies whether the conveyor's drawn length in the Facility View is the length to be used for the simulation logic. This property may be specified using a random sample from a distribution. If 'Any Location'. If accumulating. then the conveyor length has a discrete number of cell locations. The number of discrete cell locations on this C onveyor object. The initial desired speed of this C onveyor object. The distance between cell boundries on the link. The conveyor length to be used for the simulation logic. The uptime between failure occurrences. Event C ount Based Event Name Uptime Between Failures Event Instance Name Expression C ount Between Failures Expression . A C onveyor may have failures. This property may be specified using a random sample form a distribution. Specifies whether this conveyor object has failures that affect the object's availability. The name of the event which determines when the next failure occurs.Discussion and Examples. For more information. If 'C ell Location'. Smallest Value First. Entry Ranking Expression Initial Desired Speed Entity Alignment Expression Any Location. Indicates whether the position of the cell boundries on the link will be automatically adjusted to align with the first entity that engages the link. The specific conveyor defined in the Standard Object Library supports both fixed and variable spacing and accurately models the merging of entities of various sizes on the conveyor. If 'Fixed Number C ells'. Time To Repair Expression The time required to repair a failure when one occurs. Occurs when the repair time for a failure at this object is starting. Occurs when the simulation run is initialized.0 (True) or 0. Occurs when this object has failed. The outbound link with the highest weight is selected. Simio LLC. . Occurs when a traveler's trailing edge has entered this conveyor. Run Initialized Add-On Process Triggers Run Ending Add-On Process Entered Add-On Process Triggers TrailingEdgeEntered Add-On Process Triggers ReachedEnd Add-On Process Triggers Exited Add-On Process Triggers Failed Add-On Process Triggers Repairing Add-On Process Triggers Repaired Add-On Process Triggers Report Statistics Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name Process Instance Name True or False Report Gantt True or False Selection Weight Expression Send comments on this topic to Information Copyright 2006-2011. A Boolean property may be True or False and used in expressions as a numeric 1.0 (True) or 0. Occurs when a failure is repaired at this object.0 (False) value. All Rights Reserved. The weight expression for this link when using the 'By Link Weight' rule to select an outbound link from a node. Occurs when the simulation run is ending. Occurs when a traveler's leading edge has reached the end of this conveyor. Occurs when a traveler has exited this conveyor. A Boolean property may be True or False and used in expressions as a numeric 1. Occurs when a traveler's leading edge has entered this conveyor.0 (False) value. This property may be specified using a random sample from a distribution. if an entity is stopped at the end of the conveyor.Accumulated.. If the Accumulating property of the standard library C onveyor object is set to ‘False’. Both scenarios assume "0" input buffer capacity for Server1. The example below shows one conveyor with Number of Cells set to '2' and the other with Number of Cells set to '3'. the NumberTravelers. For instance. See the definition of Accumulation in the Link section of the Object Types page.Simio D oc umentation Conveyor .Discussion and Examples Discussion Accumulation The following functions are available to track Accumulated entities on a conveyor (or other type of links): l l l l NumberTravelers.Maximum NumberTravelers. everybody else) should stop. .Average The C onveyor's Accumulating property indicates that if the entity at the end of the conveyor is stopped.Accumulating Verses Non-Accumulating Example 2 C onveyor object with Entity Alignment property set to 'C ell Location'.Accumulated. If the conveyor is non-accumulating.Accumulated function may still be positive.Accumulated. Conveyor .Accumulated NumberTravelers.Minimum NumberTravelers. the conveyor stops and all entities keep their spacing when the server is busy. it will be considered Accumulated. When Server1 is processing an entity. all entities on the conveyor will continue moving to the server with an accumulating conveyor. Examples Example 1 C onveyor object with Accumulating property set to True and then False. then the conveyor itself (i.e. . All Rights Reserved. Simio LLC .Conveyor with Specific Cell Location Send comments on this topic to Information C opyright 2006-2011. The Project Library For information on how to create a new object for the Project Library. To import a library. Send comments on this topic to Information C opyright 2006-2011. models) that are contained within a project. see C reating New Objects. It appears under the Standard Library and it can be expanded vertically in the case of a large library. The Project Library is found in the Libraries window. Models from this imported library can be copied or subclassed into the current project from within the Project window. . this indicates that it cannot be placed into the active Facility window because that particular model is currently active and you cannot drag a model into itself. edited and deleted. Simio LLC . If the model appears grey in the Project Library. from within the Facility window. A model can be dragged into the Facility window of another model from the Project Library. it appears in the Project Library. Select an . To navigate to the Project window. select the Load Library icon from the Project Home ribbon. They can also be subclassed with a simple right click from the Project Library window. where they can be renamed. select the name of the project within the Navigation window. A user can import a library of objects from another project into the current project and they will appear in the Project Library and therefore available for use in the current project.spf file and the models from that selected project will then appear in a new Library called MySimioProject. You can also edit a model by selecting the model from within the Navigation window.Simio D oc umentation Project Library The Project Library is a list of objects (i. All Rights Reserved. The models within the Project Library can also be viewed in the Project window.e. When a new model is created. For information on the difference between Entities and Tokens. All Rights Reserved. Reverse Description The initial desired speed value for objects of this type. If this limit is exceeded then a runtime error is generated. The maximum number of objects of this type that can simultaneously be in the system. An initial destination sequence that objects of this type use for routing purposes. The initial priority value for objects of this type. see the Tokens and Entities help page. Initial Priority Initial Sequence C an Transfer In & Out of Objects Expression Sequence Property True or False Initial Number in System Numeric Maximum Number in System Numeric Destroyable True or False Send comments on this topic to Information Copyright 2006-2011. The initial number of objects of this type in the system at the beginning of the simulation run. Specifies whether objects of this type can be destroyed using the Destroy Step. Listed below are the properties of the ModelEntity: Property Initial Desired Speed Initial Network Network Turnaround Method Valid Entry Rate Table Instance Network Element Property Exit & Re-enter. Rotate in Place. However. A user does not need to drag it into the Facility window. When traveling on a network. Entities are initially located in free-space at the object instance location. A ModelEntity called DefaultEntity is already part of the Project and can therefore be created by a Source object or with the C reate Step without having an instance in the Facility window. you need to drag a ModelEntity into the Facility window from the Project Library. . The 'Turnaround Method' property of a Network element may also be used to override this default on a network-bynetwork basis. Additional instances of ModelEntity can also be dragged into the model. Indicates whether entities of this type are by default allowed to transfer into and out of fixed objects via those object's external input / output nodes. The ModelEntity is the default entity definition in your project. The network of links used by objects of this type to travel between node locations. if you would like to change the symbol of the Entity or change any of the properties of the instance.Simio D oc umentation ModelEntity You will find one ModelEntity automatically created within a new Project Library. the default method used by objects of this type to turn around at a node in order to move in the opposite direction on a bidirectional link. Simio LLC. "Movement". For example.Simio D oc umentation Entity Routing and Movement Entity Routing l Entities can be routed in Simio in a number of different ways. Send comments on this topic to Information C opyright 2006-2011.Y. . Note: Acceleration of an entity on a traveling on a Link is not yet supported. Movement.X. l Notes on an Entity's speed An entity in Free Space or on a network Link will by default travel at its DesiredSpeed state value (ModelEntity. For example. Movement.X will return the entity's current location along the X axis. Simio LLC . You can set the initial value of the DesiredSpeed state using the Initial Desired Speed property. Entity routing is generally determined by the TransferNodes that the entities pass through. You can also use the Assign Step to assign new values to these parameters during the run. A -30 degree Pitch will cause the entity to descend at an angle of 30 degrees relative to the surface. FREE SPAC E MOVEMENT IS AC TIVE.Heading.Pitch and Movement. a 45 degree Pitch will cause the entity to fly at an angle of 45 degrees to the floor (i. Movement. to change the movement of the entity. have a Speed Limit property. which causes their own process logic to ultimately control the entity’s actual movement rate on the Link. HEADING AND PITC H ON A MODELENTITY TRAVELING ON A LINK IS NOT YET FULLY SUPPORTED.Rate. Hence the following headings produce the following movements: ¡ ¡ ¡ ¡ 0 – along the floor to the north (up) 90 – along the floor to the east (right) 180 – along the floor to the south (down) 270 – along the floor to the west (left) The user can set Pitch relative to the floor in degrees. These equate to compass headings with a compass placed on the floor and pointing with north in the up direction. Note: C HANGING AC C ELERATION. All Rights Reserved. such as the C onveyor object or Path object. These functions will return the current value. The Movement State on ModelEntity l The standard ModelEntity has an inherited movement state called.DesiredSpeed). such as using Sequences. Read this TransferNode help page for more detailed information on how to determine how the entity will travel through the system. Heading is measured in degrees from “north” where “north” points up when viewed in the 2D top down view. going to specific nodes or following along on paths and using their Selection Weights to determine where to go next. Some Link objects. It returns the total linear distance that this object has traveled in free space or on its current network link.Z. You can also have logic manually slow down or speed up an entity by assigning the DesiredSpeed state directly using the Assign step. But the DesiredSpeed value is considered the entity’s default rate for traveling. such as ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ Initial State Value Rate Value Acceleration AccelerationDuration Heading Pitch Roll (not currently supported) X Y Z You can see the information about a ModelEntity's movement during a run by accessing Movement. Movement. It has certain state parameters to it. The Entity Destination Type property determines how the entity will travel when it leaves the node. Movement. climb at 45 degrees to the surface).e. Therefore. It is sometimes referred to as a State Variable because its value can vary during the run. you’ll find States and Properties. it can be seen and accessed by all the objects within that main model. a State on an entity might contain a value that specifies this entity’s unique bar code. A State represents a numeric or string value that may change during the run. A State can be added to any object in your Project Library. For example. In Simio. Properties of an object are the input parameters associated with that object. where you can use an Assign Step. it is part of that object’s definition. it is similar to what is often referred to as a “global variable” in other software packages. All Rights Reserved. we provide a number of different ways to make assignments. in an expression. if you add a Discrete State to the default ModelEntity object. such as the ModelEntity object. processing time. Properties are used to send information between objects (inputs and outputs) and they are also used for experimentation when a user wants to experiment with using different input parameters for their model. When a State is added to another object. called “MyC ustomState”. this entity’s due date or a number that will be used to identify which shipment this entity should go into. And the value of the state can be updated or referenced during the run with the syntax ModelEntity. It is a static input parameter (e. to make an assignment to a State.g. Two Different Approaches for Making a State Assignment upon Entering the Server Object Send comments on this topic to Information C opyright 2006-2011. Simio LLC .Simio D oc umentation Assigning States You might be familiar with the term “attribute” or “variable” from other software packages. along with other logic. A Property holds a specific data type. The easiest and most straightforward way to make an assignment to a State variable is to use the properties found under the State Assignments category of each object. straightforward way to make an assignment to a State when an entity is either entering or exiting this object. . Therefore. a state on a ModelEntity is similar to what is often referred to as an “attribute” of each entity that is going through the system. you can use the Add-On Process triggers to execute a process. As an alternative. A common task in simulation is to assign values to a State within the model logic. For example. then each entity that enters the system will have MyC ustomState on it and therefore can have a unique value assigned to that State. batch size) for the object and does not change during the running of the simulation. These properties provide an easy. In Simio.MyC ustomState. When a State is added to the main model object. Any secondary resources specified in this manner are allocated for setup. This can be a single resource or one from a list. you may seize an operator upon entering Server1 and not release that operator within Server1. teardown or all activities. Within Workstations There are secondary resources that may be used with the Workstation object. and the properties are specified directly in the main property window for the object. Then the entity continues through several other servers and finally releases the Operator after processing at Server5. C ombiner and/or Separator objects. You may consider an operator. A resource that is specified as the 'Resource for Processing' will be seized before any resources specified in the 'Other Resource Seizes' / 'Before Processing' and will be released after any resources in the 'Other Resource Releases' / 'After Processing'. The secondary resources section of properties is broken up into three sections. the repeating property editor may be opened by pressing the small box to the right to enter multiple resources to seize or release at the specified time. Secondary Resources within a Workstation Within Servers. These resources are specified within the Secondary Resources section of properties for the object. For the Server and Separator.Simio D oc umentation Secondary Resources Secondary Resources Secondary resources are available within the Workstation object. based on the Activity Range property specified . this includes On Entering. Within each of these categories. 'Other Resource Seizes' and 'Other Resource Releases'. These resources are specified within the Other Requirements section of properties for the Workstation and are allocated to the entity for specific processing tasks within the workstation. as well as the Server. For example. Within the 'Resource for Processing' section. A secondary resource is simply an additional resource that may be seized and/or released to assist with processing at the object. any resource specified here will be seized before the entity begins processing within the object and will be released once processing is complete. including the 'Resource for Processing'. Secondary resources allow the user the flexibility to 'carry' resources between objects. For the C ombiner. Each of the objects mentioned has a 'primary' resource that is included with the object that is used for processing. tool or any other limited resource that is needed for all or part of processing to be a secondary resource. Before Processing and After Processing. multiple resources can be specified for seizing / releasing at various other times within the object. C ombiner and Separator objects in the Standard Library. Before Processing and After Processing. worker. . Additionally. it includes On Parent Entering. The activitites which the resources are used for are specified within the Secondary Resources repeating property editor. C ombiners and Separators There are also secondary resources that can be used with the Server. processing. Secondary Resources within a Server Send comments on this topic to Information C opyright 2006-2011. All Rights Reserved. Simio LLC . . Add-On Process Example The Source object currently has four add-on process triggers: l l l l Initialized occurs when the Source object is initialized. Add Steps to the Process l l C lick on the Processes tab and the new Add-On Process will appear in the window. How to Utilize the Add On Process Triggers of a Standard Object Select the Object and the Process Trigger l Select the object in the Facility Window and then expand the Add-On Process Triggers list. C lick and drag a Step into the Process between the beginning and end step instances. C lick on the trigger that you would like to use and select C reate New from the drop down list of that trigger. Created Entity occurs when an entity has been created by this Source object Exited occurs when an entity has departed the Source object. The example below shows a trigger called "C reated Entity". The objects in the Standard Library contain Add On Process triggers. The example below illustrates a Source object with an add-on process named AssignC ustomProperties that is called just after each entity has been created. Creating Entities occurs when a Source object is about to create an arrival of one or more entities.Simio D oc umentation Add-on Process Triggers Add-on Processes are a special case of processes. . with an Assign Step that assigns a new State Variable to the Entity. the Add On Process is executed. These images are from the Process Window of the new Add-On Process. it then executes the defined process. an event is fired that this trigger picks up and if there is a process defined in the "C reated Entity" Add On Process Trigger. when the object fires a particular event. The functionality of this Step can be customized by changing the properties in the Properties window in the lower right corner. When the Source object creates an entity. When an Add On Process is defined in the Add On Process trigger property of an object. Add-on processes are typically defined by a user to help customize object behavior or add specific behavior into a model. Send comments on this topic to Information C opyright 2006-2011. . Simio LLC . All Rights Reserved. The On Exited tally statistics are generated prior to releasing the crossing capacity (if specified) and Exited add on process. or when a transporter (vehicle or worker) enters/exits the node. Alternatively. All Rights Reserved. Within the repeating property editor. as shown below. On Entering Tally Statistics As with the Tally step within the Processes window. Simio LLC .Simio D oc umentation Tally Statistics Tally Statistics Tally statistics are available within the BasicNode and TransferNode objects. the Tally Statistic Names of 'Blue_In_Server' and 'Total_In_Server' must be defined. the user may select the situation when the tally statitstic will be calculated. Multiple tallies can be generated by simply specifying multiple rows in the repeat group. in the above screen shot. Sink. The Tally If property determines whether tallies are generated when an entity enters/exits the node. Tally statistics can be specified when an object enters a node (On Entered) and when an object exits a node (On Exited). For example. C ombiner. any tallies that are generated with the Tally Statistics section of an object must have an associated Tally Statistic element defined within the Elements panel of the Definitions window. the tally may be generated when any object enters ('No C ondition') or when a specific condition is met ('C ustom C ondition'). Send comments on this topic to Information C opyright 2006-2011. as well as the Source. . Server. the On Entered tally statistics are generated prior to the 'On Entered' add on process and crossing capacity (if specified) is allocated. Separator and Workstation external nodes. With either basic or transfer type node. C ombiner. the entity will stop processing (and its remaining processing time stored). Workcenter. the user will specify both the Uptime Between Failures. Examples Example 1 . l Processing Time Based Failures l l The Failure Type of 'Processing Time Based' is available for the Server. there are no failures when an object is initially placed in the Facility Window. then failures will not occur for the specific object. the object should be subclassed and customized. then an associated event. Resource. the failure will occur. Once the failure has been repaired. expression or distribution). Uptime Between Failures. C ombiner. as well as the Time to Repair properties. Separator. via an Event. After the object has processed a specified amount of time determined by the uptime (which may be based on an integer value. The Count Between Failures property determines how many times the given Event Name must be called before a failure will take place. Calendar Time Based Failures l If the Failure Type is set to 'C alendar Time Based' failures. while 'Usage C ount Based' may be specified for a Resource object.Simio D oc umentation Reliability Reliability The Reliability section of property grid is included in the following standard library objects: Server. and Workstation objects. expression or distribution). After the object has processed the number of entities determined by the count (which may be based on an integer value. If the entity is being processed by the object at the time the failure occurs. With this type of failure. the Uptime Between Failures. Separator. C ombiner. there are no failures for an object when it is originally placed in the Facility Window. Both of these failure types work in a similar way. With a count based failure. Note: The standard library objects are defined so that if they go off-shift during a repair. the repair time continues during the off-shift period. Event Name. If the user would like the repair time to stop during the off-shift period. Vehicle and C onveyor. The Time to Repair determines how long object is failed. This allows the user to associate something happening in the system. By default. the processing or usage count will restart at zero. as well as the Time to Repair are specified. This section allows the user to define failure and repair time information for the object. and the failure begins for the repair time specified. the entity will resume processing at the object. By default. No Failures l If the Failure Type is set to 'No Failures'. and Workstation objects. to become the cause of the failure. Separator. l Event Count Based Failures l If the Failure Type is set to 'Event C ount Based' failures. the processing time duration will restart at zero. Once the repair is completed. must occur a number of times before the failure occurs. Once the repair is completed. the failure will occur. the Count Between Failures. the simulation clock is used to determine when the failure will begin. Processing Count Based and Usage Count Based Failures l The Failure Type of 'Processing C ount Based' is available for the Server. as well as the Time to Repair are specified.C alendar Time Based Failures Reliability_Example 1 . With a processing time based failure. Therefore. the failure will occur and will take between 3 to 5 minutes. Once the failure has been repaired at 10 minutes. When the failure occurs at time 8 minutes. the failure will occur for a repair time based on a triangular distribution with a mean of 2 minutes. Example 3 . to be repaired. All Rights Reserved. the Server has a processing count based failure based on a Uniform distribution between 50 and 100 entities. based on a uniform distribution. based on the event called ‘Tool_C hange’. Simio LLC .Reliability_Example 1 In this example. the Server may begin processing an entity at time 0. once that number of entities has completed processing through the Server.Processing C ount Based Failures Reliability_Example 3 In this example. the remaining 2 minutes of the entity processing begins. the Server has event count based failures. Example 2 .0 for 10 minutes. mode of 4 minutes and maximum of 6 minutes. . Send comments on this topic to Information C opyright 2006-2011. the entity processing stops and the failure repair time begins for 2 minutes.Event C ount Based Failures Reliability_Example 2 In this example. After this event has been called 10 times. Therefore. There are three approaches to defining the model logic for an object. This is done by creating a new model and then placing objects from the Standard Libary into the Facility window of the model. you can represent a wide variety of systems in a model. Separators and Sinks. Models from other libraries can also be subclassed and used as a basis for creating a new object. events. Once an object is subclassed. One approach is to sub-class an existing object definition and then change/extend its behavior using processes. This approach is typically used when there is an existing object that has behavior similar to the desired object. by selecting the Override icon in the ribbon. a user might need to customize the internal process logic. Once a new object is created within the project. This approach can also be combined with the use of add-on processes to define custom behavior within the facility objects. This approach is typically used for building up higher level facility components such a work center comprised of two machines. And an object itself is a model because it has it's own internal logic and there might be other objects inside of an object. It is worth noting here that Model and Object are used interchangably throughout this document. Servers. The simplest way of adding logic to a model is by using the Standard Library objects in this new Fixed C lass object. and can be “tweaked” in terms of property names. The Project Library is located below the Standard Object Library on the left side of the interface. and tooling. If the desired behavior cannot be created by simply using Add On Processes. A second approach is to create your model hierarchically using a facility model. such as Sources. and connecting them with various types of links. All three approaches are described below. which is why it can also be referred to as a model. try to keep in mind that the Model and Object are one in the same. . a process must be Overridden. This is because in Simio a model is actually an object that can be used inside of another model. and behavior to meet the needs of the new object. before any changes can be made. By placing a number of objects. it can be added to models by dragging it from the Project Library into the Facility window of a model. states. A more common and easier way to create a new object is to copy (or subclass) one of the Simio Standard Library objects and use the standard logic as a base when customizing the logic for your own needs. The third and most flexible approach is to create the object definition behavior from scratch using a process model. An object can be subclassed from within the Project window. An object definition has five primary components: properties. a worker. This is the approach that was used to create the Standard Library. C ombiners. Objects can be created from scratch by the user by selecting one of the Simio object classes or or by using APIs.Simio D oc umentation Creating New Objects There a several ways to create new objects in Simio. The main model within a project is usually a Fixed class object. external view. Creating an Object by Subclassing Another Object Simio comes with a standard library of object models that are located in the Standard Object Libary and their behavior can be enhanced with Add-On processes. descriptions. This is done by first subclassing an object and then overriding the processes. and logic. Subclassing from the Facility Window Creating an Object by Copying or Cloning an Object from the Library Selecting the Copy From Library to Edit button allows a user to choose a model from any attached library and copy it into their project. so it can then be modified. You would use this option when you want to create a new object and want to use an existing object as a starting point. located on the left side of the interface.Subclassing a Standard Library Server from the Project Window Models can also be subclassed from the Facility window by right clicking on the object in the library window. The difference between this option and subclassing from the library is that when a change is made to the . Properties. Select the Clone From Library button allows a user to choose a model from any attached library and copy it into their project. This approach can also be combined with the use of add-on processes to define custom behavior within the Facility objects. If the user would like to modify the objects. When the logic of the model is specified within the Facility window. This should be used when the user wants to re-arrange where models live in different libraries. found in the Definitions window.original object's definition. Node or Link. Entity. as seen below. . The user can then add logic to their new model by adding objects in the Facility window. each object placed in the Facility window has its 'Externally Visible' option on. Events and Lists from the Definitions window. States. Whereas a subclassed object will inherit the changes to all processes that were not "overriden". the new model is a Fixed object class. adding processes within the Processes window. Copying or Cloning from Library Creating an Object from an Simio Object Class A new model is added to the project either by clicking on the New Model icon on the Project Home ribbon tab or by clicking the New Model icon from within the Project window. Transporter. and adding Elements. By default. New Model New Object Logic within the Facility Window One approach to creating a new object's logic is to create your model using hierarchy in a Facility model. By clicking the top portion of this icon. and tooling. a worker. they should consider Copy from Library to Edit or Subclass From Library. C licking on the bottom section of the New Model icon presents a choice of the type of object to create. The external image of this new object is defined in the External panel. you also have the option of showing the graphical representation from the Facility window in the new object. This approach is typically used for building up higher level facility components such a work center comprised of two machines. an object that was copied is not updated with the new changes in the original object's definition. Fixed. This option can be viewed and changed by simply right-clicking on an object (or group of objects) in the Facility window and selecting 'Externally Visible'. For external output nodes. External window. the Node Class is specified as 'BasicNode'. Input Logic Type as 'FacilityNode' and the Node Name is automatically generated.Externally Visible The input and output nodes for the object whose logic is in the Facility window can also be automatically added to the External view. This is done by right-clicking on the node and selecting either the 'Bind to New External Input Node' or 'Bind to New External Output Node' options. the Node Class is 'TransferNode' and the . as shown below. Binding to External Nodes Within the Definitions tab. For external input nodes. new nodes are placed that will be used to connect into and out of the newly defined model logic in the Facility window. refer to the SimBit FacilityModelWithinModel. By selecting New Model > Fixed Object > Processor from the Project Home tab. called a Processor. we have provided a basis for new object logic within the Processes window. This is the approach that was used to create the Standard Library. as shown below.Input Logic Type is 'None'. It also includes a process for processing entities. . and it includes a Station and Input and Output Nodes. External Window For an example of using building a new object with logic in the Facility window. Within Simio. This can be seen in the example below. the node name is placed in the Facility window's node Advanced Options area under the property Bound External Output Node. It is important to note that with the Transfer Node that is generated by using 'Bind to External Output Node'. Additional logic would be added between the EndTransfer and Transfer steps within the Processes window. New Object Logic within the Processes Window The most flexible approach is to create the object definition behavior from scratch using a process model. a new Fixed model is added. Events fire and trigger actions. Simio LLC . By default. located on the lower right side of the GUI. Properties (static) pass values into the model logic for the object. States can be referenced during the simulation run as they dynamically change over time. All Rights Reserved. refer to the SimBit ProcessModelWithinModel. can define a wide range of behaviors within each object class. See the C ustom Simio Extensions page and C:\Program Files\Simio\Simio API Reference Guide. all objects placed in the Facility window will be automatically shown in the External view. An object type defines a mode of behavior (e.chm for additional information on creating custom logic with code.g. Steps and Elements. The rightclick menu when an object is selected allows the user to turn off the 'Externally Visible' option on an object by object basis. Level or Movement. the external view is used to place the external nodes (entry / exit points). Anatomy of an Object Object Types define core functionality. entity (agent) and Transporter (entity). Events can be added or changed within the Events panel of the Definitions window of an object.g. Standard Library Objects have a fixed number of properties that are important for the behavior of that object. accumulating conveyor). plots and buttons can be placed in an object's dashboard to graphically view the simulation progress and states throughout the simulation run. as a user. link. The properties for the object are shown in the Properties window. provides a pathway between two nodes). The External view is defined in the External panel within the Definitions window. A user can create their own custom Steps and Elements from any . Dashboards depict the dynamic state over time. States (dynamic) change over time. as well as the symbol of the object and graphical queues. External views define the object’s graphical appearance within a Facility window and entry and exit points for the object. Send comments on this topic to Information C opyright 2006-2011. States can be specified as Discrete. or Dynamic Selection Rules should be placed in the [Simio Binary Directory]\UserExtensions\ directory. agent. node.NET language and then use these to create their own Simio objects. All of the properties for a given object can be found in the Properties panel in the Definitions window. . User created Steps. When defining a new model object or modifying a subclassed object.Processor For an example of using building a new object with logic in the Processes window. Status labels. You. Element. Add-Ins. Sub-classed objects can include the original object properties and also any user-defined properties. The state names for a given model can be seen in the States panel of the Definitions window. An object model defines the actual behavior of the object within its class (e. Object Types include fixed. Additional states can be added in this panel as well. Objects created by Custom Code Simio objects are created from Simio Processes. The user can easily add logic to the model to change the appearance of objects and entities as they change states throughout the run. vehicles. Status Plots. Simio provides symbols in the following categories. . The user can import their own images or download from the Google 3D warehouse or Autocad. people. The ability to change the view and see the model from a 3D perspective provides a excellent tool for presenting the real life view of the system. see the Dashboard help page. labels and imported screen shots into the model as well. Simio allows the user to add static symbols. But Simio does not limit the user to the symbols provided. They can also be attached to objects in the Facility Window. equipment. modeling and animation are done as a single step. Send comments on this topic to Information C opyright 2006-2011. See the example models to see Simio animation in use. Status Labels. The Facility window is a 3-D drawing space in which you place objects that represent the physical components of your system. The appearance of these objects can be easily changed by altering the color of the default objects or replacing the objects with a symbol from the large library of default symbols provided by Simio. Simio LLC . C ircular Gauges. restaurant. medical. You can layout your model with realistic spatial relations that accurately mimic your real life system. trucks and other. and Buttons can be placed in the Facility Window. Status Pies. They can be placed in the External and Dashboard views as well. Floor Labels. To see specific information about this features. If they are attached to Entities or Transporters. they will travel with those dynamic instances. All Rights Reserved. This feature allows you to incorporate symbols that provide a more realistic feel to your model.Simio D oc umentation Animation Animation In Simo. buildings. Linear Gauges. Simio will display the new symbol in an Import pop up window. such as attached queues and status labels. import a symbol or download a symbol from the Google 3D Warehouse. then select the status label or queue button. . Status Labels on a Source and a Server Downloading. such as an Entity. Symbols can be added as static objects within the Facility window or they can replace the standard Simio symbol of an object. You must have an internet connection to access this website. For example.C apacity. and place it within the Facility Window. For example a label with expression 'Server1. simply highlight the object.Allocated' on a Server named 'Server1' would animate the number of busy units of that given Server. go to the Project Home tab in the ribbon menu and click on the New Symbol icon. import and create new symbols from the Symbols tab ribbon. is selected in the Facility Window. as well as download. to change the symbol of the Default Entity from a green triangular to a custom symbol. After the symbol has been selected from the Google 3D Warehouse and the user downloads it. or Server.Simio D oc umentation Symbols Symbols A user can add animation components. The queue state or expression for the status label should involve the instance which you are attaching it to. such as an attached queue state or status label to that object. Importing and Creating New Symbols New Symbol Icon from the Project Home Tab Downloading A symbol can be downloaded from the Google 3D Warehouse. Select the option for Download Symbol and you will be connected to the Google 3D Warehouse. the attached queue and/or status label moves with it. When the dynamic object is moved. To attach a status label or queue to an object. To download a symbol. Source. the user has the ability to add additional animation symbols. This is a site on the web that contains hundreds of thousands of 3D images that you can incorporate into your model. simply select the entity object and then either select a symbol from the Simio symbol library. Symbols Tab Ribbon Adding Animation to a Dynamic Object When a dynamic object. ssf files placed in this folder will be recognized by Simio and will be accessible via the Place Symbol drop down menu from the Drawing Ribbon tab. Importing A symbol can be imported from a file. Select the option for C reate New Symbol and a new window will appear where you can create the new symbol. In addition to displaying the downloaded image in Simio.g. 10 or 1 degrees clockwise or counterclockwise. such as a symbol created in Google Sketchup or AutoC AD (*.) Symbols can be imported from a . To import a file. it is stored in [public documents]\Simio\Symbols. The user can resize the symbol (in terms of meters) with the length. The large blue arrow on the image shows the user which direction Simio will consider to be the front of this image. The image of a person is displayed next to the symbol to provide a hint regarding the size of this symbol as compared with the size of a human in the Simio application.ssf). Select the option for Import Symbol and find the file to import.dxf). To create a new symbol. Exporting a Simio symbol and Using a Simio Symbol in another project A symbol can be exported out of Simio. colors and textures.dxf files generated from programs other than AutoC AD. select the object and then click the Import Symbol icon in the Symbols ribbon menu. Or if you'd like to import a symbol for an object. width and height boxes in the Object Size panel. adding or removing components or changing colors).jpg file and the symbol will become a 2D image. Viewing Your Symbols . This new symbol can be exported so that it can be reused in other projects. You should be able to find the Symbols folder under \Public\PublicDocuments\Simio. The symbol will be displayed in the Import Window and can be resized and rotated similar to a downloaded symbol discussed above. If the user wishes to rotate the symbol. Any . Creating New Symbols A new symbol can be created by the user using the drawing tools.Import Window after Downloading a Tank Symbol The image is first shown in 2D but can also be viewed in 3D by clicking on the 3D icon in the top left corner of the import window. AutoC AD is a very popular standard supported by many products that features both 2D and 3D drawings. The symbol can then be used in another project. When it is exported. (Note: Not all products follow the standard closely so results may vary on *. In order for the symbol to be used in another project. Google Sketchup (free download) can be used to customize an image (e. the Sketchup file is also stored in the \My Documents\My Simio3D Warehouse Downloads directory of your computer. the Rotate icon provides options for rotating at 90. it must be placed in the correct directory on your computer so that Simio can recognize it. It is saved as a Simio specific format(. go to the Project Home tab in the ribbon menu and click on the New Symbol icon. go to the Project Home tab in the ribbon menu and click on the New Symbol icon. there is some symbol size information to keep in mind. the simulation itself may be slower with moving objects because of the additional logic involved. the Symbols panel can be selected from the icons on the left. but it is highly dependent on your particular graphics card and C PU. Viewing Your Symbols Symbols and File Size / Run Performance When downloading and editing symbols. 100 stationary servers will draw just as fast as 100 moving entities.Symbols will be added to your Project window. However. Additionally. deleted and edited. Simio LLC . there is no difference in drawing speed for stationary or moving objects. using images with low polygon count will keep the project file size small. Symbols can be copied. . using lower fidelity 3D models may make your animation run faster. The Project Graphics can also be viewed in the Place Symbol drop down found in the Drawing Tab. Within the Project window. Send comments on this topic to Information C opyright 2006-2011. The project window is found by clicking on the name of the project within the Navigation window. And finally. All Rights Reserved. First of all. with the index value of 1. notice that the Active Symbol icon is now active and reads (2 of 2). Adding Additional Symbols When the object is selected in the Facility Window. is symbol 2 of 2. You can also rotate the symbol by pressing the control key and dragging the corner around so that it is in the position you desire. Whatever value is returned by the expression in this property will determine which symbol is displayed during the run. each new object will be randomly assigned a symbol from the associated list of symbols. (The object should still be selected) You can verify that you have the correct symbol selected by reading the number (i.e. The user can also replace the selected symbol with a symbol from the symbol library by expanding the symbol library that is located in the Project Symbols grouping of the ribbon menu.Picture. 2 of 2) in the Active Symbol icon. To change the appearance of the symbols that were just added to this object. In the example below. With the symbol selected. With the object selected. In the example below. change the color or texture of the symbol. the box. first click on the object in the Facility View. select a symbol from the Active Symbol icon drop down menu. the current symbol that is displayed. click on the Add Additional Symbol icon in the symbols tab of the ribbon menu. the symbol in the Facility View would show as a plant.the symbols that are displayed in the Active Symbol list. the expression in the C urrent Symbol Index is ModelEntity. which indicates which symbol is currently being displayed on that selected object. When the Random Symbol property is set to True. . The value returned must be an integer so that it corresponds to a value in the symbol list.Simio D oc umentation Adding Additional Symbols Adding Additional Symbols A user might want to add additional symbols to an object in order to have some model logic change the appearance of the object from one symbol to another while the model is running. The user can change the Current Symbol Index property and put an expression that will return a value that is the index in the associated symbol list . Once that icon is clicked. the user can change the properties of the object instance in the Properties window. The user can keep adding additional symbols by clicking the Add Additional Symbol icon again until the desired number of symbols have been created. This is a built-in state variable that can be used to hold a value for the entity symbol. If the user were to select 0 from the drop down. In order to add additional symbols to an object. Simio LLC . All Rights Reserved.Properties Window Send comments on this topic to Information C opyright 2006-2011. . it will be added as a vertex at the end of the line. Adding Labels to the Facility Window Simio provides the ability to add two different types of labels to the Facility Window. NOTE: Multi-Select of objects. curves. lines. such as <red> Floor Labels can also show the value of expressions. ellipses. The Floating Label is simple. For example. rectangles.Floor(Run. would show “The current day is: 2”. polygons and labels to the Facility Window or External Window of their model. Please refer to the User Interface for more details. Once the Floor Label is drawn in the Facility Window. With polylines and curves. If the new vertex is placed on the line between two other vertices. font or color cannot be changed in this label. are supported for all items on the Drawing tab. If the new vertex is placed outside of the line. You may click to place the vertex anywhere in the Facility window. additional vertices may be added or removed by using the Add Vertex and Remove Vertex buttons on the Edit ribbon. the label remains flush to the floor.e. the object's height or the line width by selecting the object (i. The Floor Label draws a text box on the floor of the Facility Window. with the 2 in bold text. the label will always remain faced at the screen (upright in the Z direction). C trl-C (C opy). simply click on the vertex to remove and select the Remove Vertex button and the line will be redrawn. The text size. at hour 50. To remove a vertex.TimeNow/24)}</b>”. In order to change the appearance of the text. a label with the text “The current day is: <b>{Math. as well as C trl-X (C ut). in 3D view. it will be added to the middle section of that line. Therefore. After adding these drawings to the model. You can also change the text for the label by clicking the Edit button found in the Text group of the Ribbon. To specify an expression put it between curly braces. In both 2D and 3D view. select it to see the Appearance Tab in the Ribbon. It has more flexibilty for changing the appearance of the text. curve) and viewing the Drawing tab. The Appearance Tab allows you to control how many characters per line will appear in the label. the polyline or curve will get an extra vertex added to the end. When a polyline or curve is selected and the Add Vertex button is pressed. one line of text. A Label Text dialog will appear where you may change the text. Drawing Tab Ribbon (from Facility Window) You can also change the color of any object or add texture to the object. the user can change the line style. It is similar to the labels that are attached to the objects that are placed in the window. .Simio D oc umentation Drawing Drawing A user can add symbols. you can use the following tags: l l l l l <b> and </b> will make the text bold <i> and </i> will make the text italic <u> and </u> will make the text underlined You can also change the color of the text by putting the name of the color in a tag. and C trl-V (Paste). The background color for this label can easily be changed by clicking on the Background C olor icon. Simio LLC . This can be controlled by the Tile Texture and Stretch Texture icons on the Drawing ribbon. the Drawing Tab also contains an icon called External Node. All project textures can be viewed from the Project window. you will need to decide if it should be tiled or stretched. Send comments on this topic to Information C opyright 2006-2011.Appearance Tab Ribbon (when Floor Label is selected) Adding Textures to Objects You can add a texture to the surface of an object. Texture applied to a rectangle Adding External Nodes to the External Window When seen from the External Window. Simply select New Texture from the drop down of the Texture icon in the Drawing ribbon or the New Texture icon in the Project Home ribbon. but you can also add your own textures from any . Adding this to the External Window provides an entry or exit point into and out of the model.jpg file. The following image was created by the user drawing a rectangle in the Facility Window and then applying a texture to that rectangle.jpg file. Select the .jpg file from your computer and it will be imported into your project library. Simio provides a library of a few textures. When applying the texture to an object. . which is the Simio Logo saved as a . All Rights Reserved. Right click and drag up and down to zoom. When selected. An item must be made visible first before it can be edited. Named Views allow you to place the camera at a location and save that view for later using Add View. are put onto the C hange Item list for selection at the start of the simulation run. the C hange Item button will remain disabled in run mode. etc. C hange or delete a specific view using the Manage Views option. Options include 'Move camera with object'. The Background Color icon will change the background color of the entire Facility window floor in both the 2D and 3D views. 'Watch from a distance'. Therefore selecting. you can click on the button part of Change Item to cycle between tracking different items in the model. providing multiple camera angles from which to view agents. The 3D icon changes the view to a 3D perspective view. Arrows. These icons are disabled until you enter run mode and have at least one item for tracking. Left click on any empty space and drag to pan. The Auto Rotate icon starts auto-rotating the view. highlights the links within the network(s) that are selected. Links. The View Ribbon. The C amera Placement dropdown allows you to change the perspective of tracking and how you would like to track the object. You can either pick a specific view to go to. the particular feature will not appear in the window. such as Workers and Vehicles. Once you select the 'Track with C amera' option. If there are no Workers or Vehicles in your model. The link is in the union of the selected networks if it is a member of ANY of the networks. Status and Buttons icons are highlighted. There are many ways to move around in the 3D view including: l l l l l l l l l l l l l l l l Left click on any empty space and drag to pan Right click and drag up and down to zoom and drag left and right to rotate Left-click and drag any object to move it in the horizontal plane C trl and drag any object to move it on top of another object C trl and drag any object selection handle to rotate it Left-click to select a node object C trl+Shift and left-click on a node to start drawing a link C trl+Scroll wheel changes the viewing angle of the camera Shift+Scroll wheel moves the camera straight up and down Up arrow moves forward Down arrow moves left Left arrow turns left (or moves left in top-down mode) Right arrow turns right (or moves right in top-down mode) Shift+Left arrow moves left Shift+Right arrow moves right [W] key sets the camera 1. with the angle pointing almost straight out (i. Queues. There are two buttons in the Camera Tracking group. as seen from the Facility Window The 2D icon changes the view to a 2D top down view. Selecting 'Track with C amera' when the item is already on the C hange Item list will remove it from the tracking list.e.Simio D oc umentation Changing the View Changing the View From within the Facility Window. Each network highlight can be individually toggled on and off. The View Networks dropdown. it also is not editable. When selected. the Intersection icon shows the intersection of all selected networks. meaning you want to turn off tracking. you can select a specific item. of groups of objects will not select anything that is not visible. Axes. or cycle through them using the Change View option. The link is in the intersection of the selected networks if it is a member of ALL of the networks. It is important to note that when an feature is not visible. the Union icon shows the union of all selected networks. until you have selected 'Track with C amera' for an object. 'Follow behind' and 'Lead in front'. If the user clicks on any of these icons and unhighlights it. the View Ribbon can be used to change how the objects and the background appear in the window. or [None]. the view will remain where it currently is. “walking mode”) The View All icon brings all objects into view within the window. You may right click on any Agent. . When selected. the agent / entity / transporter identifier will appear on the C hange Item list. or tracking nothing. The user can click on any empty space to stop the rotation. Simio will put you back to the view you were when you first selected the item to be tracked. If you click the drop down part. and letting you move the camera where you wish. This is the default view. Entity or Transporter (this includes Workers / Vehicles) and select the 'Track with C amera' option.7 meters off the ground. including Change Item and Camera Placement. When an item you are tracking (such as an entity) gets destroyed. When running. copying. When the Grid. this indicates that they are visible within the window. the camera icon will have a small black square around it. By default. Nodes. Labels. all non-destroyable agents. Once autorotation is stopped. deleting. Example of Camera Placement buttons. as seen with dropdowns Send comments on this topic to Information C opyright 2006-2011. . Simio LLC . All Rights Reserved. as well as options to add and remove vertices from the link. Because you haven't selected which type of link this is yet. the small menu will be displayed that asks you to select the type of link you'd like. This contains a library of path decorators.Simio D oc umentation Animating Links Drawing and Animating Links Links generally animate best if they are drawn approximately or exactly to scale. In our example. the nodes should be placed so that their centers are directly on the vertical lines. While this might not matter in early experimentation. it could be important in your final analysis. Select and then drag and drop a Source and a Sink object 10 meters apart. that means that the Logical Length property will be ignored and instead the length used in your model logic will be determined by the length drawn in your animation. Another way to add a conveyor is to click on the transfer node displayed on the Source while holding down the C trl+Shift keys and dragging the link to the Sink node. simply click on the vertex to remove and select the Remove Vertex button and the link will be redrawn. move the Source and Sink in our example closer or further apart) that adjustment will not be reflected in the model. If they are not close to scale. In this example. If Drawn To Scale is set to True. To ensure that they are 10 meters apart. Simply clicking on a path decorator from that window will change the appearance of the link that is selected. it is likely that you drew the conveyor slightly more or less than 10 meters. This is best to use if you know the exact link length and it is important that the model reflect that. Additional vertices may be added to or removed from a link by using the Add Vertex and Remove Vertex buttons. then you will see entities animate with overlap or gaps between them that do not really exist in the logical model. To get an idea of how nodes should be placed see the image below: Source and Sink with nodes exactly 10 meters apart Let's add a conveyor between the Source and the Sink. The Drawn to Scale option in the Properties grid determines the relationship between the animated length and the logical length used in calculating movement in your model. The disadvantage of this approach is that if you later adjust the path (e. that means that the logical length will be exactly the value specified in the Logical Length property. If Drawn To Scale is False. In our example. This is best to use when you are experimenting with different layouts and you want the model logic to reflect what you are currently looking at. the Edit tab is displayed in the Ribbon. we will place a conveyor between a Source and Sink object.g. . When a link is selected and the Add Vertex button is pressed. Adding a Vertex to a Link There is a library of path decorators that are provided with Simio. C lick on the C onveyor object in the Standard Library and then click on the transfer node displayed on the Source and have the conveyor end at the basic node displayed with the Sink. we will select the conveyor path decorator that is found in the window. When the link is selected in the Facility window. in this case we'd select C onveyor. a green vertex is provided that can be placed anywhere along the link. The disadvantage of this approach is that you don’t have an exact logical length. To remove a vertex. Path Decorators in the Project Window Send comments on this topic to Information C opyright 2006-2011. Simio LLC . Path Decorators are stored in [public documents]\Simio\PathDecorators . . it appears in the Path Decorators panel within the Project window. any type of link can have a Path Decorator displayed on it. C lick on the name of the Project in the Navigation window to open the Project window. Even though this example was for a conveyor type link. All Rights Reserved.Conveyor Path Decorator Once the path decorator is added to an object in our project. see the Functions page. . The user should type in the word Random into the expression editor. followed by a period (.) and they will be given the choice of all the math functions supported by Simio. The Expression Editor The Expression Editor is found in the property window for many different properties throughout the Simio product. For detailed information on the available random distributions. Functions and Events for each object type. When the user types anything into this input box.) and they will be given the choice of all the random distributions supported by Simio. The following screen shot shows the choices at the beginning of the list. followed by a period (. a dropdown menu will appear below. To see a list of all distributions found in Simio. A horizontal input box will appear with a green checkbox and red X at the left end of the box. it can be accessed when the user selects the property in the properties window and clicks on the down arrow that appears to the left. The contents of the Simio enumerators can be found in the Enumerators page and an explanation on when to use the keyword 'Candidate' in an expression can be found here. see the Distributions help page. see the Distributions page. The top of the list that appears when a user types Random. when the user types an "A" into the input box.Simio D oc umentation Expression Editor. into the Expression Editor The expression editor can be used to apply math functions to any value. The top of the list that appears when a user types an "A" into the Expression Editor The expression editor can be used to specify a random distribution. The user should type in the word Math into the expression editor. showing the user a list of possible entries. If the property type utilizes the expression editor. Continue reading below for information on how to use our Expression Editor. Functions and Distributions For detailed information on the available States. The Math Functions page will give details on the available Math Functions to use in the Expression Editor. If a double greater than sign (>>) appears after a name listed in the Expression Editor drop down.) and add additional information to the expression in order to get a valid response. this indicates that if this name is selected alone. The top of the list that appear when ModelEntity. the object instance name or the object runspace (i. the available functions will appear. is a valid selection that will return a value. To learn more about functions that are available in Simio. there are other functions available with this choice.e. it is a valid expression. . you need to type a period (. followed by a period (. see the Functions help page.The top of the list that appears when a user types Math. You might also need clarification on what name to put into a function. See the example below. See the Object Hierarchy page to learn whether to reference the object definition name. ModelEntity vs DefaultEntity). If the selection is not in bold. into the Expression Editor If the user should type in the name of an object from the model into the expression editor.).). is entered into the Expression Editor Anything that appears bold in the expression editor dropdown. properties and states that can be referenced for this particular object. However. they will be given the choice of all the functions. By selecting the name in the drop down and then typing another period (. A logical expression is one that compares two terms or expressions and results in a True or False.(Subtraction) * (Multiplication) / (Division) ^ (Power). The following example demonstrates how both types of expressions can be used .Understanding >> in the Expression Editor Logical Operators Available in Simio The following logical operators are available for use throughout Simio: == (Equal To) > (Greater Than) < (Less Than) >= (Greater Than or Equal To) <= (Less Than or Equal To) && (And) || (Or) ! (Not) . such as !Is. True is interpreted as 1 and False is interpreted as 0. such as (2^3 results in 8) Flexibility With Buiding Expressions Simio supports the use of both logical expressions and numeric expressions together. When used in a mixed (logical and numeric) expression.Transporter (is not a Transporter) != (Not equal) Math Operators Available in Simio The following math operators are available for use throughout Simio: + (Addition) . Simio converts everything to the base time units for calculations.Priority>3) * 10 If PartA. All Rights Reserved. that has specified time units.PropertyName'. Simio will convert the value of MyProperty to the base unit of Hours for calculation. i. is used within an expression.e. If you have a property that you've set the Unit Type to 'Time' and you've indicated that the Default Units are 'Minutes'. Referencing Tables within Expressions Table values can be referenced within an expression by using 'TableName. if you use this property in an expression. Time Units within Expressions When a property. Here is an example to aid in the understanding of how Simio does calculations.PropertyName * XYZ'. within a delay type field.together in a numeric expression field. even though you've specified the Default Units of MyProperty to be 'Minutes'. the units for the PropertyName value should not be specified within the table. Simio LLC .. then this expression will return 10. 'TableName. otherwise it will return 0. Send comments on this topic to Information C opyright 2006-2011. When using a table within a larger expression. such as 'MyProperty * 4'. The base time units in Simio is always Hours.Priority is greater than 3. (PartA. See Data Tables for more information. . startindex.TableRowC ount TableName.PercentTime (stateValue). to reference the percentage of time that an object was in a certain state." into the Expression editor.Simio D oc umentation Functions Functions Available to use with Objects There are a number of functions available for Fixed Resource Objects (i. Returns the total number of rows in the token’s assigned data table (if any) Returns the agent's row index into its assigned data table (if any). Returns the maximum time that an entity waits in this Queue. Run) Listed below are the Table Related Functions available: Function Token.e.SequenceTableRow Agent. see the Distributions page. Queue State. For more information on the available distributions. Returns the total number of rows in the agent's assigned data table (if any) Returns the entity's row index into its assigned sequence table (if any). etc) There are a number of functions available for Entity Objects. Servers. use the syntax [ObjectName].TableRow Token. Returns the total number of rows in the entity's assigned sequence table (if any) Returns the number of available rows for the table.TableRowC ount Entity. Return Value Returns the current number of entities waiting in this Queue. Functions available for the Simio state variable type Queue State: Function NumberWaiting AverageNumberWaiting AverageTimeWaiting MaximumNumberWaiting MaximumTimeWaiting MinimumNumberWaiting MinimumTimeWaiting Functions available for the Simio State variable type List States Function AverageTime(stateValue) NumberOccurences(stateValue) PercentTime(stateValue) TotalTime(stateValue) Return Value Returns the average time that the object has spent in this Resource State. Other Functions Available in Simio (Table Related. Functions available for the Simio String States: Function String. substring) String. List States. See the Functions for Node Objects for additional information.C ontains(string. The first value in the String List is value 0.TableRow Agent. Returns the minimum number of entities waiting in this Queue. C ombiners. For more information on the available options. By typing "Random. or function information about the destination node’s associated object versus the node itself. Returns the number of times that this object has gone into this Resource State. you can see all the available Math functions to use in Simio. see the Math Functions page.Substring(string. Tally Statistics. There are a number of functions available for Node Objects.AvailableRowC ount Return Value Returns the token’s row index into its assigned data table (if any). There are a number of functions available for Transporter Objects. Math and Random Distribution Functions Available By typing "Math. Therefore. Returns the average number of entities waiting in this Queue. Returns the percentage of the total simulation time that this object has been in this Resource State." into the Expression editor. There are some functions that can be used to get state. where stateValue is the number referencing the state in the String List. given the current table selection context. length) Return Value returns the length of a string return true if substring is in string. Returns the minimum time that an entity waits in this Queue. String States.TableRowC ount Agent. Returns the maximum number of entities waiting in this Queue. Workstations.Length(string) String. you can see all the available Random Distributions that are available in Simio. property. otherwise false returns a substring of string starting at startindex and of the specified length . Returns the average time that an entity waits in this Queue. Returns the total amount of time that this object has been in this Resource State. There are a number of functions available for Link Objects. FromDateTime(6) turns into “October 1. Returns the total number of observations recorded. Run. In interactive mode.EndingTime Return Value Returns the time in hours that the simulation run is scheduled to end. Returns the value of the last observation recorded.TimeNow Run. “FRED”) does return 0. string2) String. Applies to runs in experiment mode only. -1 if string1 < string2. 2010 06:00:00” if the start date of the simulation is “October 1. Returns the name of the experiment if running in experiment mode.ToReal (“6.C ompareIgnoreC ase(string1. …) String. in hours. Returns the scenario replication number that the run corresponds to.Format(string. arg2. Simio LLC . Returns the name of the experiment scenario if running in experiment mode. Return Value Returns the average value of the observations recorded.ToDateTime(string) String.ReplicationsRequired Run. but String. Returns the minimum time that an entity waits in this Queue. Returns the minimum value from the observations recorded. Numeric values returned by this function are Interactive Mode = 1. -24 if the start date is October 12. If the run's ending time is defaulted to 'Infinite'.ToReal(string) String. arg1.2”) turns into 6. or Operational Planning Mode = 3. All Rights Reserved.ModelName Run. so String. Returns the current simulation time in hours.) Returns the name of the main running model. 30) turns into “Hello Friend. etc. 1 if string1 > string2 same as above.FromReal(value) String. of a string based on the start date and time of the simulation model (String. Experiment Mode = 2.C ompare(string1.) returns a new string formatted with the specified format string and arguments.C ompare(“fred”.FromDateTime(value) returns a string representation of a real value (String. but can be changed within the Advanced Options button. 2010”) turns into 0 if that is the start date of the simulation. Returns the maximum value from the observations recorded. you are 30 years old” returns 0 if the strings are equal.ScenarioName Run.String.ExperimentName Run. We follow the . String.FromReal (6) turns into “6”) returns a real value representation of a string (String. “FRED”) does not return 0. then this function returns the largest possible floating-point value. Returns the name of the project containing the main running model.ReplicationNumber Run. Returns an empty string if running in interactive mode. Returns 0 if running in interactive mode. Returns an empty string if running in interactive mode. Returns the scenario replications required if running in experiment mode. string2) Functions available for the Simio element TallyStatistic: Function Average Maximum Minimum LastRecordedValue HalfWidth NumberObservations MinimumTimeWaiting Functions available for the Simulation Run: Function Run. the default replication number is 1. Returns the confidence interval half width around the average of the observations recorded.Mode Run.WarmUpPeriod Send comments on this topic to Information C opyright 2006-2011.2) returns a string representation of a datetime value based on the start date and time of the simulation (String. Returns the mode that the model is running in.RandomnessDisabled Run. but ignores casing in comparison. “Friend”. 2010 00:00:00” ) returns a datetime representation. (Note: Operational Planning Mode is for Enterprise software only.C ompareIgnoreC ase(“fred”.Format(“Hello {0}. 24 if the start date is October 10.NET string formatting syntax here: String. you are {1} years old”. Returns whether random sampling in the simulation run is disabled.ToDateTime(“October 11.ProjectName Run. Returns the time period in hours after the beginning of the run at which statistics are to be cleared. . Returns the average number in system.ID) l C an I manually change the capacity of an object.FirstID SeizedObjects. Returns the average scheduled capacity of the object during the run. Returns the minimum number of capacity units of the object that have been allocated during the run. Returns the minimum scheduled capacity of the object during the run.Minimum C apacity. Returns the maximum number of capacity units of the object that have been allocated during the run.Maximum C apacity. such as the standard Servers. Separators.Capacity function. .SeizedObjects.Allocated l How many units of capacity of Workstation1 are currently available to be seized/allocated? Workstation1. Server1.Allocated.Average C apacity.Remaining C apacity. Returns the ID of the first object in the list of objects currently seized and owned by this object. NOTE: This is an alternative to specifying a schedule for an object. Server1. "Server1") Returns the current number in system. using an Assign step? Yes. Listed below are the Functions available for Fixed Resource Objects.CurrentCapacity.Maximum NumberInSystem. Returns the previous capacity of the object.Maximum Name NumberInSystem NumberInSystem. Returns the ID number of the object that this object is located in.Remaining l Is this object based on a Fixed object class? (returns 1 for True and 0 for False) Is. Returns the average number of capacity units of the object that have been allocated during the run.Average SeizedObjects SeizedObjects.Capacity. Returns the maximum scheduled capacity of the object during the run. Returns the ID number of this object.Fixed l How do I determine the ID of the object Resource1? Resource1. Resources and Workstations: Function C apacity C apacity.Minimum C apacity.Initial C apacity.Average C apacity. Returns the number of capacity units of a specified objectID that are currently owned by this object.Previous C apacity. Returns the name of this object in String Format.Allocated C apacity.Allocated. Combiners. Returns the maximum number in system.LastID SeizedObjects. Returns the current unallocated capacity of the object.Allocated.ID l How many units of Resource1 does C ombiner3 currently have seized? Combiner3. Returns the ID of the last object in the list of objects currently seized and owned by this object. in an Assign step.Minimum NumberInSystem. Returns the initial capacity of the object. (e. by assigning the state of the object.Simio D oc umentation Functions. This will change the value that is returned by the Server1.g. Returns the minimum number in system.Total C apacity.C apacityUnitsOwned(seizedObjectID) ID ParentRunSpaceID Return Value Returns the current capacity of the object. Returns the current number of objects seized and owned by this object. Returns the current number of capacity units of the object that are allocated (have been seized).C ount SeizedObjects. Returns the total number of capacity units of the object that have been allocated during the run. States and Events for Objects Enabled as Resource Objects Examples for using Functions with Fixed Resource Objects l How many units of Server3 are currently allocated to some object in the system? Server3.CapacityUnitsOwned(Resource1.Capacity. Returns the current number of objects seized and owned by this object.Allocated. Simio uses the center of the fixed object's symbol. Location.Is Location. Blocked = 2. The current location of this object along the Z axis of the Simio grid. Simio uses the center of the fixed object's symbol.Y Used with '. Size. all other values denote on. A value of 0 denotes off.Height.InstanceName' for logic based on object characteristics.Length. Processing = 1. The current resource state of this object (numeric values for this state are Starved = 0. Send comments on this topic to Information C opyright 2006-2011. Inherited Events available for any object derived from the Simio base object class Node: Event C apacityC hanged Description Fired when the resource capacity for this object has been changed by a work schedule.Z Listed below are the Inherited States of any object derived from Simio base class . State that may be assigned to dynamically change the current capacity of this object. Has state parameters Size. The current location of this object along the X axis of the Simio grid. The queue of objects that are waiting to seize this object. The current location of this object along the Y axis (vertical) of the Simio grid. Failed = 3.X Location. and Size. Simio uses the center of the fixed object's symbol.C lassName' or '. All Rights Reserved.Width.Fixed object: State Trace Flag Size AllocationQueue C urrentC apacity ResourceState Description A flag to turn on/off trace information for this object. . Simio LLC . The current volume size of this object in cubic meters. OffShift = 4). then returns True if there is an entity immediately ahead on the same link.NumberInSystem.Population. Returns the number of nodes that the entity currently occupies the crossing point of (spanned by its leading and trailing edges). Returns the object's current table row index value.NumberInSystem l How many C ustomers (entity named C ustomer) have arrived into the system? Customer.TimeInSystem.NumberInSystem.IsRiding l Where is this entity (Patient) heading? (returns the ID of the Node) Patient. Returns the ID of the parent object for this agent. Returns the average number of objects of this object's type in the system. Returns the time duration (in hours) that this object has been in the system (is equal to TimeNow . then returns the ID of the next entity immediately ahead on the same link. For example.Entity object: Function Name Population.Simio D oc umentation Functions.Location. Returns the one-based index of the object in the population that the object is a member of. For example. If the entity is currently on a link.Average TimeInSystem Population.NumberDestroyed MemberIndex TableRow ParentRunSpaceID NumberOccupiedLinks NumberOccupiedNodes FrontTraffic FrontTraffic. first use a Search Step to find the ObjectInstance named PartA and then in the token that follows the Found segment of the Search Step.NumberCreated l What is the distance between the leading edge of this entity (ModelEntity) and the entity traveling ahead of it on the link? ModelEntity.Minimum Population. not the object definition.FrontTraffic. Returns the total number of objects of this object's that have been destroyed.Minimum Population.TimeC reated). Returns the minimum number of objects of this object's type in the system. Returns the number of links that the entity currently occupies (spanned by its leading and trailing edges). Returns the average time (in hours) that an object of this object's type was in the system.X or PartA. Returns the total number of objects of this object's type that have been created. States and Events for Entity Objects Examples for using Functions with Entity Objects Note: If you would like information on a dynamic object in the system.Location.DestinationNodeID l Where along the X axis is this entity currently located? ModelEntity.TimeInSystem.Maximum Population.NumberC reated Population. If there is no traffic ahead on the link. begin the function with the name of the object instance. Returns the minimum time (in hours) that an object of this object's type was in the system. Returns the time that the object was created in hours.NumberInSystem Population. If the entity is currently on a link. will be associated with PartA so you can use a function such as PartA. you might need to first get a token pointing to that particular instance so Simio knows which instance you are referring to. .TimeInSystem.NumberInSystem.X Listed below are the Functions available for any object derived from Simio base class . If you want to find out information about a specific instance.ID Return Value Returns the dynamic name of the entity in String Format Returns the current number of objects of this type in the system.Average TimeC reated Population. then returns 0. DefaultEntity is an example of an object instance and ModelEntity is the object definition.Maximum Population.NumberInSystem l How many PartA type entity objects are currently in the system? PartA.Distance l Is this entity (LargeBox) currently on a Transporter? (returns 1 for True and 0 for False) LargeBox. Returns the maximum number of objects of this object's type in the system. Returns the maximum time (in hours) that an object of this object's type was in the system. Pitch. The activity time scaled by the work schedules of the primary and secondary resources. FrontTraffic. When an entity is riding on a transporter.Y. Movement. Returns true if the entity is currently riding on a transporter. If the entity is currently on a link. the Z location of the transporter is returned by this function. returns the ID of the parent entity owning the batch. Returns true if entity is currently parked. or is riding on a transporter. When an entity is batched to a parent entity.Speed If the entity is currently on a link. The desired movement rate of this object.Length. When an entity is riding on a transporter. The queue of objects that are waiting to seize this object. The current priority value for this object. returns 0. then returns the ID of that transporter. all other values denote on. When an entity is riding on a transporter. Otherwise. and Movement. The cell alignment distance for this object. then returns the speed of the next entity immediately ahead on the same link. otherwise returns 0.Roll. Movement. Movement. Size. If there is no traffic ahead on the link. Returns True if the entity is currently a batch member in another entity's BatchQueue. The entity's speed on a conveyor with possible slippage based on a slower traffic entity in front. State that may be assigned to dynamically change the current capacity of this object. If the entity is a batch member. returns 0. The current location of this object along the Z axis of the Simio grid. Movement.FrontTraffic. This state can then be referenced in an expression for C urrent Symbol Index. A value of 0 denotes off. The total linear distance that this object has traveled in free space or on its current network link. If the entity's leading edge is currently in a node's crossing point.Width. Has state parameters Size.Heading. Returns the ID of the entity's destination node if it has a destination. If the entity currently has a transporter reservation. The current location of this object along the X axis of the Simio grid. the Y location of the parent entity is returned by this function. Otherwise. then returns the ID of that node.X Location. The current location of this object along the Y axis (vertical) of the Simio grid. and Size. the X location of the transporter is returned by this function. then returns the distance from the entity's leading edge to the end of the link. The queue of destination visit requests for this object. Returns true if the entity is currently waiting for a ride pickup in a node ride pickup queue.Height.Y Location.Z. otherwise returns 0. the Z location of the parent entity is returned by this function. If the entity's leading edge is currently on or at the end of a link.X. The unscaled time to perform the current activity. Non-zero does not mean the object is currently moving. Movement.Entity object: State Picture Trace Flag Size AllocationQueue C urrentC apacity Movement Description A utility state to hold a picture index. The current volume size of this object in cubic meters. When an entity is batched to a parent entity. then returns the desired speed of the entity.Rate.Distance SlipSpeed IsParked IsBatchMember BatchParentID IsWaitingRide IsRiding Location. otherwise returns 0. the Y location of the transporter is returned by this function. the X location of the parent entity is returned by this function. then returns the ID of that link.Z RideID DestinationNodeID C urrentNodeID C urrentLinkID ActivityTime ActivityWorkTime Listed below are the Inherited States of any object derived from Simio base class . When an entity is batched to a parent entity. If there is no traffic ahead on the link. DesiredSpeed Priority C ellRange VisitRequestQueue BatchQueue . Has state parameters Movement. The queue of batch members that this object owns. A flag to turn on/off trace information for this object. then returns the distance from the entity's leading edge to the trailing edge of the next entity immediately ahead on the same link. The Transferred event provides notification that the entity has completed transferring into another object or a station location.Listed below are the Inherited Events associated with any object derived from Simio base class . The Engaged event provides notification that the entity has been engaged (locked) to a location on a link. All Rights Reserved. Send comments on this topic to Information C opyright 2006-2011. . The Transferring event provides notification that the entity has started transferring into another object or a station location. Simio LLC .Entity object: Event C apacityC hanged Engaged Transferring Transferred Description Fired when the resource capacity for this object has been changed by a work schedule. InputLocation. this function returns the current available (unused) capacity of either the server's input buffer or processing station (if the server has no input buffer). a new set of InputLocation functions are now provided to return some basic information on the node’s input location.NumberRoutingIn. by using a function for Input@Server3. "Output@Source1") Returns the current number of entity objects with their destination set to the node.NumberParked For any external input node. returns the current available (unused) capacity of the location inside the associated object into which the node is inputting entities. such as the input location’s capacity. via Input@C ombiner1? [email protected] apacity For an external input node.C apacityRemaining NumberRoutingIn. . For example. this function returns the current number of entities residing in either the server's input buffer or processing station (if the server has no input buffer). refer to the 'C an Enter Objects' property setting for an entity instance type.InputLocation. l I'd like to know the capacity of the InputBuffer of Server3.NumberInLocation For an external input node. For an external input node. the new functions are useful in selecting the best destination node from a list of candidates.InputLocation. Input@Server3. Returns the current number of entity objects with their destination set to the node. whose entity type can enter other objects through those object's external nodes. load. returns the current capacity of the location inside the associated object into which the node is inputting entities. InputLocation. For more information. Returns whether the node is an external input node. Example: For a Server 'Input' node. in the TransferNode object in the Standard Library. States and Events for Node Objects Examples for using Functions with Node Objects l How many entities. returns the current number of entities residing in the location inside the associated object into which the node is inputting entities.Capacity Note: If Server3 does not have an InputBuffer (capacity = 0) then the value returned in this case would be the capacity of the Processing station of Server3. Such information on the input locations of input nodes is often useful or required to implement dynamic routing logic. Example: For a Server 'Input' node. l How many entities are waiting to enter C ombiner1.e. not transporters. this function returns the current capacity of either the server's input buffer or processing station (if the server has no input buffer).NumberWaitingEntry Functions available for any object derived from the Simio base object class Node: Function IsExternalNode IsExternalInputNode Name NumberRoutingIn NumberRoutingIn.Transporters InputLocation. remaining capacity.g. Returns the name of this object in String Format (e.CanEnterAssociatedObject l How many transporters are on their way to Input@Sink1? [email protected] D oc umentation Functions. when setting an entity’s next destination using the Select From List option. are on their way to BasicNode1 (i.Transporters l How many entities are currently parked at the node named "WaitingArea"? WaitingArea.NumberRoutingIn. Example: For a Server 'Input' node. have their destination node set to this node)? BasicNode1. or overload.C anEnterAssociatedObject Return Value Returns whether the node is an external node. Returns the current number of transporter objects with their destination set to the node. Example: For a Server 'Input' node. A value of 0 denotes off. and Size. The queue of entities that are waiting at this node to be picked up by and ride on a transporter. State that may assigned to dynamically change the current capacity of this object. returns the current 'load' on the location inside the associated object into which the node is inputting entities. InputLocation. Has state parameters Size.(on the standard TransferNode and BasicNode) Exited .Overload For an external input node. returns the current number of entities waiting to enter the location inside the associated object into which the node is inputting entities.Y Location. The value returned by this function is equivalent to the expression 'InputLocation. InputLocation. plus the current number of entities residing in the associated object's input location.NumberWaitingEntry For an external input node.Z Returns the number of entities currently parked at the node. returns the current difference between the capacity and 'load' values (a positive difference indicating 'overload') for the location inside the associated object into which the node is inputting entities. this function returns the current number of entities waiting to enter either the server's input buffer or processing station (if the server has no input buffer).Load . plus the current number of entities at the node waiting to enter the server.X Location. The queue of objects that are waiting to seize this object. plus the current number of entities arrived but waiting to enter the associated object. NumberParked Location.C apacity'. all other values denote on. Example: For a Server 'Input' node. The current location of this node along the Z axis of the Simio grid. The current location of this node along the X axis of the Simio grid. plus the current number of entities residing in either the server's input buffer or processing station (if the server has no input buffer). Inherited Events available for any object derived from the Simio base object class Node: Event C apacityC hanged Entered Description Fired when the resource capacity for this object has been changed by a work schedule.InputLocation. The current location of this node along the Y axis (vertical) of the Simio grid.Height. Inherited States available for any object derived from the Simio base object class Node: State TraceFlag Size AllocationQueue C urrentC apacity RidePickupQueue Description A flag to turn on/off trace information for this object. The Entered event provides notification that a traveler has entered the crossing point of the node. The 'load' on a node's input location is defined as the sum of entities currently en route to the node intending to enter its associated object.Width. The 'load' on a node's input location is defined as the sum of entities currently en route to the node intending to enter its associated object. plus the current number of entities residing in the associated object's input location. The current volume size of this object in cubic meters.Load For an external input node. plus the current number of entities arrived but waiting to enter the associated object.Length. (on the standard TransferNode and BasicNode) The Exited event provides notification that a traveler has exited the crossing point of the node.InputLocation. Size. this function returns the sum of entities currently en route to the node intending to enter the server. (on the standard TransferNode) Send comments on this topic to Information C opyright 2006-2011. All Rights Reserved.RiderWaiting The RiderWaiting event provides notification that a traveler has entered the RidePickupQueue of the node waiting for a ride. Simio LLC . . Simio D oc umentation Functions, States and Events for Link Objects Listed below are the Functions available for any object derived from Simio base class - Link object: Function Name NumberTravelers NumberTravelers.Minimum NumberTravelers.Maximum NumberTravelers.Average NumberTravelers.Entered NumberTravelers.Exited NumberTravelers.Accumulated Return Value Returns the name of this object in String Format. (e.g. "Path2") Returns the current number of travelers on the link. Returns the minimum number of travelers that have been on the link. Returns the maximum number of travelers that have been on the link. Returns the average number of travelers that have been on the link. Returns the total number of travelers that have entered the link. Returns the total number of travelers that have exited the link. Returns the total number of travelers that are accumulated on the link. Note:An entity is counted as an ‘Accumulated’ traveler on a link if the entity has reached the end of the link and has been stopped there without being engaged to the link OR if the entity’s leading edge has collided with the trailing edge of an entity in front of it on the link, and the entity has accumulated behind that entity without being engaged to the link. Therefore, the NumberTravelers.Accumulated function is tracking accumulation anywhere on the link, not just from the end. Once flagged as ‘Accumulated’, the entity will continue to be considered ‘Accumulated’ until either its leading edge leaves the link or the collision situation is cleared. If a link is a ‘Connector’ (i.e., drawn to scale with logical length = 0) then entities are never considered to be on the link and NumberTravelers and NumberTravelers.Accumulated are always 0. Accumulated Entities NumberTravelers.Accumulated.Minimum NumberTravelers.Accumulated.Maximum NumberTravelers.Accumulated.Average TimeOnLink.Minimum TimeOnLink.Maximum TimeOnLink.Average C urrentDirection Location.X Location.Y Location.Z Returns the minimum number of accumulated travelers on the link. Returns the maximum number of accumulated travelers on the link. Returns the average number of accumulated travelers on the link. Returns the minimum time that a traveler was on the link. Returns the maximum time that a traveler was on the link. Returns the aveage time that a traveler was on the link. Returns the current direction of traffic on the link. The current location of the beginning node of this link, along the X axis of the Simio grid. The current location of the beginning node of this link, along the Y axis (vertical) of the Simio grid. The current location of the beginning node of this link, along the Z axis of the Simio grid. Listed below are the Inherited States of any object derived from Simio base class - Link object: State Trace Flag Size AllocationQueue C urrentC apacity Description A flag to turn on/off trace information for this object. A value of 0 denotes off, all other values denote on. The current volume size of this object in cubic meters. Has state parameters Size.Length, Size.Width, and Size.Height. The queue of objects that are waiting to seize this object. State that may be assigned to dynamically change the current capacity of this object. TransferInState DesiredSpeed State indicating whether an entity is currently transferring onto this link (Idle = 0, Busy = 1). The desired movement rate of the 'Mark' on this link, which is a reference point along the link's length whose movement represents the link's movement. Non-zero does not indicate that the link 'Mark' is currently moving. The position of the 'Mark' on this link, which is a reference point along the link's length whose movement represents the link's movement. This state variable has a parameter that returns the current Rate (speed) of the mark. The queue of entities that are waiting to enter this link. The distance from the leading or trailing edge of the first entity on this link to the end of the link. The desired traffic direction on this link. Assignable values are Enum.TrafficDirection.Either, Enum.TrafficDirection.Forward, Enum.TrafficDirection.Reverse, or Enum.TrafficDirection.None. Movement EntryQueue DistanceFromFirstEdgeToEnd DesiredDirection Listed below are the Inherited Events of any object derived from Simio base class - Link object: Event C apacityC hanged Description Fired when the resource capacity for this object has been changed by a work schedule. Send comments on this topic to Information C opyright 2006-2011, Simio LLC . All Rights Reserved. Simio D oc umentation Functions, States and Events for Transporter Objects Examples for using Functions with Transporter Objects Note: Transporters are a dynamic population of moveable unit resources. Both Workers and Vehicles are considered Transporter Objects. Within each of these, an Initial Number In System may be defined. For each of the initial number in system, the specific unit may be referenced by using the instance name followed by brackets, such as Vehicle1[1] to refer to the first of the Vehicle1 objects. To refer to the entire set of objects, you may use just the name of the object in the function, such as Vehicle1.Size.Length. l How do I animate the resource state of a particular vehicle? VehicleName[1].ResourceState l How many entities are riding on the second of my two Vehicle1 objects? Vehicle1[2].NumberRiders l What is the length size of the vehicle group called Vehicle1? Vehicle1.Size.Length l What is the destination node of the third worker in my group of workers called Operator? Operator[3].DestinationNodeID Listed below are the Functions available for any object derived from the Simio base object class - Transporter: Function RideC apacityRemaining NumberRiders NumberRiders.C anDropoff NumberRiders.C anPickup Name Location.X Location.Y Location.Z Population.NumberInSystem Population.NumberInSystem.Minimum Population.NumberInSystem.Maximum Population.NumberInSystem.Average TimeInSystem Population.TimeInSystem.Minimum Population.TimeInSystem.Maximum Population.TimeInSystem.Average TimeC reated Population.NumberC reated Population.NumberDestroyed MemberIndex Population.C apacity Population.C apacity.Remaining Population.C apacity.Allocated Return Value Returns the remaining ride capacity of the transporter. Returns the number of riders currently on the transporter. Returns the number of riders that the transporter can drop off at its current node (if at one). Returns the number of riders that the transporter can pickup at its current node (if at one). Returns the dynamic name of this object in String Format (e.g. Vehicle1[1]]). The current location of this transporter along the X axis of the Simio grid. The current location of this transporter along the Y axis (vertical) of the Simio grid. The current location of this transporter along the Z axis of the Simio grid. Returns the current number of objects of the same type in the system. Returns the minimum number of objects of the same type in the system. Returns the maximum number of objects of the same type in the system. Returns the average number of objects of the same type in the system. Returns the time duration (in hours) that the object has been in the system (is equal to TimeNow - TimeC reated). Returns the minimum time (in hours) that an object of the same type was in the system. Returns the maximum time (in hours) that an object of the same type was in the system. Returns the average time (in hours) that an object of the same type was in the system. Returns the time that the object was created in hours. Returns the total number of objects of the same type that have been created. Returns the total number of objects of the same type that have been destroyed. Returns the one-based index of the object in the population that the object is a member of. Returns the sum of the current scheduled capacity for all objects of this object's type in the system. Returns the sum of the current unallocated capacity for all objects of this object's type in the system. Returns the sum of the current capacity that has been allocated for all objects of this object's type in the system. Population.C apacity.Allocated.Average Population.C apacity.Allocated.Minimum Population.C apacity.Allocated.Maximum Population.C apacity.Allocated.Total Population.C apacity.Average Population.C apacity.Minimum Population.C apacity.Maximum Population.C apacity.Utilized Population.C apacity.Utilized.Average Population.C apacity.Utilized.Minimum Population.C apacity.Utilized.Maximum Population.C apacity.ScheduledUtilization Returns the average of Population.C apacity.Allocated during the run. Returns the minimum of Population.C apacity.Allocated during the run. Returns the maximum of Population.C apacity.Allocated during the run. Returns the total number of capacity units for all objects of this object type that have been allocated during the run. Returns the average of Population.C apacity during the run. Returns the minimum of Population.C apacity during the run. Returns the maximum of Population.C apacity during the run. Returns the sum of the current utilized capacity for all objects of this object's type in the system. Returns the average of Population.C apacity.Utilized during the run. Returns the minimum of Population.C apacity.Utilized during the run. Returns the maximum of Population.C apacity.Utilized during the run. Returns the percent utilization of the total scheduled capacity for all objects of this object's type during the run. Listed below are the Inherited States available for any object derived from the Simio base object class Transporter: State Trace Flag Size AllocationQueue C urrentC apacity Movement Return Value A flag to turn on/off trace information for this object. A value of 0 denotes off, all other values denote on. The current volume size of this object in cubic meters. Has state parameters Size.Length, Size.Width, and Size.Height. The queue of objects that are waiting to seize this object. State that may be assigned to dynamically change the current capacity of this object. The total linear distance that this object has traveled in free space or on its current network link. Has state parameters Movement.Rate, Movement.X, Movement.Y, Movement.Z, Movement.Pitch, Movement.Heading, and Movement.Roll. The desired movement rate of this object. Non-zero does not mean the object is currently moving. The current priority value for this object. The cell alignment distance for this object. The queue of destination visit requests for this object. The queue of batch members that this object owns. The ID of the Node that is set as the Home node for this object. The current resource state of this object (numeric values for this state are Idle = 0, Busy = 1, Failed = 3, OffShift = 4). DesiredSpeed Priority C ellRange VisitRequestQueue BatchQueue HomeNodeID (on the standard Vehicle object) ResourceState (on the standard Vehicle object) Listed below are the Inherited Events associated with any object derived from Simio base class - Transporter object: Event C apacityC hanged Engaged Transferring Transferred RiderLoaded (on the standard Vehicle object) RiderUnloaded (on the standard Vehicle object) C alendarTimeBasedFailuresReset (on the standard Vehicle object) Description Fired when the resource capacity for this object has been changed by a work schedule. The Engaged event provides notification that the entity has been engaged (locked) to a location on a link. The Transferring event provides notification that the entity has started transferring into another object or a station location. The Transferred event provides notification that the entity has completed transferring into another object or a station location. The RiderLoaded event provides notification to the vehicle's OnVisitingNode process that a rider has been loaded. The RiderUnloaded event provides notification to the vehicle's OnVisitingNode process that a rider has been unloaded. An occurrence of this event will reset the 'C alendarTimeBasedFailures' timer. EventC ountBasedFailuresReset (on the standard Vehicle object) An occurrence of this event will reset the 'EventC ountBasedFailures' timer. Allocated (on the standard Vehicle object) The Allocated event provides notification to the vehicle's OnVisitingNode process that capacity of this Vehicle object has been allocated. The Released event provides notification to the vehicle's OnVisitingNode process that capacity of this Vehicle object has been released. Released (on the standard Vehicle object) Send comments on this topic to Information C opyright 2006-2011, Simio LLC . All Rights Reserved. Simio D oc umentation Distributions Distributions Simio supports a number of distributions used to draw random samples. Simio supports an infinite number of random number streams. To specify a particular stream for a distribution to use, list the number of the stream directly after the last parameter proceeded by a comma. For example, Random.Triangular(.1, .2, .3, 2) to use stream number 2. When running a model from an experiment, replications of the same scenario will use different portions of the stream and different scenarios will start from the same point in the stream. To access these distribution from within the Expression Editor, type in the word Random, followed by a period (.) to see the list of distributions. l l l l l l l l l l l l l l l l l l l l Beta Distribution Binomial Distribution C ontinuous Distribution Discrete Distribution Erlang Distribution Exponential Distribution Gamma Distribution Geometric Distribution JohnsonSB Distribution JohnsonUB Distribution LogLogistic Distribution LogNormal Distribution NegativeBinomial Distribution Normal Distribution PearsonVI Distribution Pert Distribution Poisson Distribution Triangular Distribution Uniform Distribution Weibull Distribution NOTE: Simio will produce an error if a delay time expression returns a negative value. This can occur if you use an unbounded distribution that might produce negative values, such as a Normal Distribution, within a Delay. Simio produces an error to alert you that your distribution would have a spike at time 0.0 and the mean would be higher than what you specified. If you want to use an unbounded distribution and convert all negative values to 0.0 (ignoring the above problems), then use an expression like: Math.Maximum(0.0, Random.Normal(5.0, 2.0)) Examples 1. How do I generate values for which: ¡ ¡ ¡ 10% of the time I get values between 0 and 25 35% of the time I get values between 25 and 50 55% of the time I get values between 50 and 100 Random.Discrete(x, .1, y, .45, z, 1) where x = Random.Uniform(0, 25), y = Random.Uniform(25,50), z=Random.Uniform (50,100) In other words: Random.Discrete((Random.Uniform(0, 25)), .1, (Random.Uniform(25,50)), .45, (Random.Uniform(50,100)), 1) Send comments on this topic to Information C opyright 2006-2011, Simio LLC . All Rights Reserved. Simio D oc umentation Beta Random.Beta(alpha1, alpha2) The Beta distribution has a range from 0 to 1 and can take a wide variety of shapes based on the two shape parameters (alpha1 and alpha2). The Pert distribution is a special case of the Beta and is often used as a rough model in the absence of data. The Expected Value of the Beta distribution is E(x) = Alpha1/(Alpha1+Alpha2). Example of the Shape of a Beta Distribution Send comments on this topic to Information C opyright 2006-2011, Simio LLC . All Rights Reserved. Simio D oc umentation Binomial Random.Binomial(ProbababilityOfSuccess, NumberTrials) The Binomial distribution is a discrete distribution representing the number of successes in a specified number of independent trails. The parameters are the probability of success for each trial, and the total number of trials. The Expected Value of the Binomial distribution is E(x) = ProbabilityofSuccess * NumberTrials. Example of the Shape of a Binomial Distribution Send comments on this topic to Information C opyright 2006-2011, Simio LLC . All Rights Reserved. Simio D oc umentation Continuous Random.Continuous(v 1, c 1, v 2, c 2, …. ,v N, c N) This is an empirical distribution defined by a set of value and cumulative probability pairs(v i , ci ) that define a piecewise linear cumulative distribution function for a continuous random variable over the defined range of values. This distribution may be used as an alternative to a theoretical distribution using empirical data to define the points on the cumulative distribution function. Note that there is always an even number of parameters since the parameters are defined in pairs (value, cumulative probability). The Expected Value of the C ontinuous distribution is Send comments on this topic to Information C opyright 2006-2011, Simio LLC . All Rights Reserved. Simio D oc umentation Discrete Random.Discrete(v 1, c 1, v 2, c 2, …. ,v N, c N) This is an empirical distribution defined by a set of value and cumulative probability pairs (v i , ci ) that define a stepwise linear cumulative distribution function for a discrete random variable. This distribution defines a set of N possible discrete values, where N is the number of value and cumulative probability pairs. Note that the number of parameters for this distribution is 2*N. This distribution is typically used to make random discrete assignments to a state. The Expected Value of the Discrete distribution is Send comments on this topic to Information C opyright 2006-2011, Simio LLC . All Rights Reserved. Erlang is the sum of K exponentials. The Erlang has parameters that specify the mean and number of integer phases (K). K) The Erlang distribution models an n-phase activity where the time for each phase is exponentially distributed. All Rights Reserved. . Simio LLC . each with an expected value of Mean/K. not the mean of the individual exponentials. The Mean parameter is the mean of the Erlang.Simio D oc umentation Erlang Random.Erlang(mean. Example of the Shape of a Erlang Distribution Send comments on this topic to Information C opyright 2006-2011. . The Expected Value of the Exponential distribution is E(x) = mean. Simio LLC . Example of the Shape of a Exponential Distribution Send comments on this topic to Information C opyright 2006-2011. This distribution has a single parameter that specifies the mean.Exponential(mean) The Exponential distribution is often used to model inter-arrival times based on a Poisson process.Simio D oc umentation Exponential Random. This distribution is generally not appropriate for modeling process delay times. All Rights Reserved. Example of the Shape of a Gamma Distribution Send comments on this topic to Information C opyright 2006-2011.Gamma(shape. All Rights Reserved. . The mean of the distribution is the product of these parameters. Simio LLC . scale) The Gamma distribution has a shape and scale parameter.Simio D oc umentation Gamma Random. The Expected Value of the Gamma distribution is E(x) = shape * scale. The Erlang is a special case of the Gamma with an integer shape parameter. The Expected Value of the Geometric distribution is E(x) = (1 . .ProbabilityOfSuccess) / ProbabilityOfSuccess. All Rights Reserved.Geometric(ProbabilityOfSuccess) The Geometric distribution is a discrete distribution and represents the number of failures before the first success. The parameter for the distribution specifies the probability of success for each independent trial.Simio D oc umentation Geometric Random. Simio LLC . Example of the Shape of a Geometric Distribution Send comments on this topic to Information C opyright 2006-2011. Simio D oc umentation JohnsonSB Random. Simio LLC . alpha2. min. All Rights Reserved. The Expected Value of the JohnsonSB distribution is Example of the Shape of a JohnsonSB Distribution Send comments on this topic to Information C opyright 2006-2011.JohnsonSB(alpha1. . max) The JohnsonSB is a bounded four-parameter distribution that can take a wide range of shapes based on the two shape parameters (alpha1 and alpha2) and the minimum and maximum values. the location parameter a. The Expected Value of the JohnsonSU distribution is Example of the Shape of a JohnsonSU Distribution Send comments on this topic to Information C opyright 2006-2011.Simio D oc umentation JohnsonSU Random.JohnsonSU(alpha1. . and scale parameter b. location. Simio LLC . scale) The JohnsonSU is an unbounded four parameter distribution that can take a wide range of shapes based on the two shape parameters (alpha1 and alpha2). All Rights Reserved. alpha2. All Rights Reserved. Simio LLC .Simio D oc umentation LogLogistic Random. The Expected Value of the LogLogistic distribution is Example of the Shape of a LogLogistic Distribution Send comments on this topic to Information C opyright 2006-2011. . This distribution has a range from 0 to infinity and is typically used to model a task time.LogLogistic(shape. both of which must be non-negative. scale) The LogLogistic distribution has one shape and one scale parameter. The Expected Value of the Lognormal distribution is E(x) = normalMean. normalStdDev) A sample from the Lognormal distribution is generated by first generating a sample N from the normal distribution. Simio LLC . You then use the normalMean and normalStdDev as the parameters of the Lognormal distribution to generate samples with mean and standard deviation given by LogNormalMean and LogNormalStdDev. Example of the Shape of a Lognormal Distribution Send comments on this topic to Information C opyright 2006-2011. In some cases you may know the mean and standard deviation of the Lognormal distribution and need to convert these to the corresponding mean and standard deviation of the normal for use in specifying the distribution. using the following equation: LN = eN Note that the parameters specified for the Lognormal are the mean and standard deviation of the underlying normal before transformation to the Lognormal distribution. You can calculate the mean (normalMean) and standard deviation (normalStdDev) of the underlying normal distribution using the following formulas.LogNormal(normalMean. and then converting this to a Lognormal sample. All Rights Reserved. LN.Simio D oc umentation Lognormal Random. Let LogNormalMean be the mean LogNormalStdDev be the standard deviation of the Lognormal. . NumberOfSuccesses) The NegativeBinomial distribution is a discrete distribution and represents the number of failures before reaching the specified number of successes. The parameters of the distribution are the probability of success for each trail.NegativeBinomial(ProbabilityOfSuccess. Example of the Shape of a Negative Binomial Distribution Send comments on this topic to Information C opyright 2006-2011.Simio D oc umentation NegativeBinomial Random. and the number of required successes. Simio LLC . The Expected Value of the NegativeBinomial distribution is E(x) = (ProbabilityOfSuccess * (1 NumberOfSuccesses))/NumberOfSuccesses. . All Rights Reserved. Example of the Shape of a Normal Distribution Send comments on this topic to Information C opyright 2006-2011.Simio D oc umentation Normal Random. standard deviation) The Normal distribution has parameters that specify the mean and standard deviation. The Normal Distribution is often used in situations where a value is the sum of several other values and by the central limit theorem can be approximated by a normal distribution. . The Expected Value of the Normal distribution is E(x) = mean. All Rights Reserved. Simio LLC .Normal(mean. PearsonVI(shapeA. . Both shape parameters and the scale parameter are non-negative. The Expected Value of the PearsonVI distribution is E(x) = (scale * shapeA)/ (shapeB . scale) The PearsonVI distribution has two shape parameters and one scale parameter.1) for all shapeB > 1. Simio LLC . Example of the Shape of a PearsonVI Distribution Send comments on this topic to Information C opyright 2006-2011. shapeB. This distribution has a range from 0 to infinity and is typically used to model a task time.Simio D oc umentation PearsonVI Random. All Rights Reserved. The Expected Value of the Pert distribution is E(x) = (minimum + maximum + 4 * mode) / 6. mode (most likely).Simio D oc umentation Pert Random. Unlike the triangular distribution the pert distribution provides a smooth curve which can closely approximate the normal or lognormal distributions. . Send comments on this topic to Information C opyright 2006-2011. maximum) The Pert distribution (also known as the Beta-Pert) is a special case of the beta distribution where the shape parameters are computed from the minimum.Pert(minimum. All Rights Reserved. Simio LLC . mode. and maximum parameters. This is a useful distribution for modeling expert data based on these three parameters. The mean of the pert distribution is equal to (minimum + maximum + 4 * mode) / 6. Simio LLC . This distribution is a discrete distribution that models the number of occurrences in an interval of time when the events are occurring at a constant rate according to a Poisson process. The time between each event is exponentially distributed and the number of events in a specified time is Poisson distributed. Example of the Shape of a Poisson Distribution Send comments on this topic to Information C opyright 2006-2011.Poisson(mean) The Poisson distribution has a single parameter that specifies the mean. . The parameter of the distribution is the rate of event occurrence (events per unit time). The Expected Value of the Poisson distribution is E(x) = mean. and must be a non-negative value.Simio D oc umentation Poisson Random. All Rights Reserved. Simio D oc umentation Triangular Random. and maximum values. mode. mode (most likely). . Simio LLC . The Expected Value of the Triangular distribution is E(x) = (minimum + mode + maximum)/3. This distribution is often used as a rough model in the absence of data. All Rights Reserved. The Pert Distribution may also be used in this situation. maximum) The Triangular distribution has parameters that specify the minimum.Triangular(minimum. Example of the Shape of a Triangular Distribution Send comments on this topic to Information C opyright 2006-2011. Simio D oc umentation Uniform Random. maximum) The Uniform distribution has parameters that specify the minimum and maximum values.Uniform(minimum. Example of the Shape of a Uniform Distribution Send comments on this topic to Information C opyright 2006-2011. Simio LLC . All values within this range have an equal probability of occurring. . The Expected Value of the Uniform distribution is E(x) = (minimum + maximum)/2. All Rights Reserved. Simio D oc umentation Weibull Random. All Rights Reserved. If the system has a large number of components that are all required for the system to function and each component fails independently then the time between failures can be approximated by this distribution. Simio LLC . The Expected Value of the Weibull distribution is E(x) = (shape/scale)*Г(1/scale) where Г is the Gamma function.Weibull(shape. scale) The Weibull distribution has a shape parameter and scale parameter. Example of the Shape of a Weibull Distribution Send comments on this topic to Information C opyright 2006-2011. This distribution has a range from 0 to Infinity and is skewed to the left. . One of the special rules of NaN is that it does not equal anything. expressions). (Note: The standard BasicNode and the standard TransferNode objects do a delay for Math. if you have the number 1.NaN can be used in conjunction with the Math. for example. followed by a period (. So the expression “Math.Round (value) Returns the closest integer to the specified number.IsNaN(Math. Math. then the function will return a "True" or 1. to return a value indicating that nothing was valid within the Math. Returns the value of 0 true and 1 if false. test3.Epsilon. otherwise value) ¡ l Math. Returns the value specified in valueN if the testN is True. If the value is NaN (which means Not a Number). Returns the value of Pi. value2. Math. value2) ¡ l Math.Pi ¡ l Math.Priority == 2. type in the word Math. It may be used in some special cases with Math. 3) would return the value of 1 if the expression ModelEntity.Log (value) ¡ l Math. Returns the value which is the minimum between the two specified values (i.NaN)” is true.Round(1. Returns the cosine of the specified number (in radians).e. For example. Returns the value which is the maximum between the two specified values (i.IsNaN()function. Returns the smallest integer not less than the specified number.NaN ¡ l Math.floor(value1/value2)*value2) l Math.Remainder (value1.Epsilon as a delay of 0.NaN == Math. Returns the value of NaN.3) returns 8.C eiling(value) ¡ l Math. Returns the logarithm (base 10) of the specified value. then you need to use Math. you would use the expression Math.Pow (value. Returns the arc cosine of the specified number (in radians).230000 If you would like to round it to 3 significant digits after the decimal. For example. If the value is not NaN. value1.5) will return 4 and Math.e ¡ l Math. power) ¡ l Math.) to see the list of functions.IsNaN().Pow(2.If(ModelEntity. The Delay step actually interprets Math. expressions).718. even itself. you will need to get creative with multiplying and/or dividing.Asin(value) ¡ l Math.Min (value1. which means Not a Number. In order to test if a value is NaN.2345 * ¡ . Returns the largest integer not greater than the specified number. Returns the natural logarithm (base e) of the specified value. to the power of the specified number.Log10 (value) ¡ l Math. ¡ If you would like to round a number to a specific number of significant digits. it will return a "False" or 0. For example.If() so there isn't a value. Returns the value of the mathematical constant e.NaN function. To access these math functions from within the Expression Editor. test2. which is defined as value1-(math. Returns the remainder. value3. in order to guarantee the correct order of events. Returns the value specified in otherwiseValue if all the testN are False. Returns the arc sine of the specified number (in radians).Atan(value) ¡ l Math.Abs(value) ¡ Returns the absolute value of the specified number. 1. which is approximately 2.1415.If().Round(4.51) will return 5. …. Represents the smallest real value greater than zero.2345 and you'd like to round it to 2 significant digits after the decimal. you would use the expression. based on the value that is evaluated.Round(4.C os(value) ¡ l Math.e. Returns the arc tangent of the specified number (in radians).Floor(value) ¡ l Math.IsNaN(value) ¡ l Math. This function rounds down from . The absolute value of a number is its unsigned magnitude.0. but it forces the event to be put at the end of the current event list. Math. value2) ¡ l Math.Simio D oc umentation Math Functions Math Functions Simio supports a number of math functions that can be used in an expression. Math.50 and rounds up from .If(test1. This function is used in conjunction with the Math.) Returns the value of the mathematical constant e.Acos(value) ¡ l Math. otherwise.NaN” would be false.Round(1. Math. Returns the result of the specified value to the specified power.Exp(value) ¡ l Math.Max (value1. For example. which is approximately 3. l Math.2345 * 100)/100 to get 1.Epsilon ¡ l Math.51.Priority == 2 is True and would return the value of 3. value2) ¡ l Math. so the expression “Math. 1000)/1000 to get 1.Sin (value) ¡ Returns the sine of the specified number (in radians).235000 l Math. . All Rights Reserved. Simio LLC .Sqrt (value) ¡ l Math. l Math.Tan (value) ¡ Send comments on this topic to Information C opyright 2006-2011. Returns the tangent of the specified number (in radians). Returns the square root of the specified number. C ombiner. ¡ ¡ ¡ Enum. type in the word Enum. used within a C reate Step.) to see the list.PreferAvailable Enum.BlockingModes.Simio D oc umentation Enumerators Enumerators Simio has a number of built in Enumeration types that are used throughout the product and can be referenced in an expression. Found in the Blocked Action property of the Transfer Step.BatchC ategories.C apacityType.BlockedRoutingRule. This is a scenario where a user is changing the direction of travel on a Path and can choose from a list of possible values from Enum.Fail Enum. ¡ ¡ Enum.ArrayDimension. ¡ ¡ ¡ Enum. 'New Object' creates new objects of the specified instance type.C opyParentObject Enum. such as the Server.SelectAny Enum. ¡ ¡ l Destination Modes . The Monitor's event will fire if the state variable value crosses the threshold value in this crossing direction.All Enum.The range of activities that a secondary resource is required for when seized for an operation. Found in the standard library Workstation object and within the Operation element. Found in the Capacity Type property of each of these standard library objects.ActivityRange.ActivityRange.Two l Batch Categories .Material Enum.ArrayDimension.Positive Enum. This is used in the .Fixed Enum.ProbabilityBased l Decide Type .BlockedRoutingRule.C rossDirection.ArrayDimension.One refers to the Rows dimension and Enum. Enum.Used in the Decide Step to indicate whether the decision is based on a probability or a condition.C opyAssociatedObject l Cross Direction .BOMActionRules.NewObject Enum. To access these enumerators from within the Expression Editor. Found in the Production Type property of the Produce Step and the Consumption Type property of the C onsume Step.The choices for defining the action to take when an entity cannot immediately initiate a transfer because it is blocked.Wait l BOM Action Rules .BlockedRoutingRule.BOMActionRules. Resource.One Enum.AllButSpecific Enum. ¡ ¡ Enum.TrafficDirection Using an Enum within an Assign Step Expression Built in Enumeration Types in Simio l Activity Range .C reateType. ¡ ¡ Enum. ¡ ¡ ¡ Enum. ¡ ¡ Enum.Parent l Blocked Routing Rule .DecideType.C reateType.BillOfMaterials Enum.C onditionBased Enum. An example of using an Enum within an expression is shown below. 'C opyParentObject' creates a copy of the parent object and 'C opyAssociatedObject' creates a copy of the object that is associated with the token that is executing the C reate Step.BOMActionRules.The choices for defining the dimension of an Array.DecideType.BlockingModes.C reateType.The choices for defining the action the entity should take when its routes are blocked (Blocked Routing Rule).The choices for defining the method to be used to Produce materials or C onsume Materials.C apacityType. ¡ ¡ ¡ Enum.Specific l Array Dimension .Used in the Monitor Element for Monitors with Monitor Type set to 'C rossingStateC hange'.OperationSpecified l Capacity Type .The choices for defining the capacity of a Resource type object.SelectAvailableOnly l Blocking Modes .WorkSchedule l Create Type . Found in the standard TransferNode when Entity Destination Type is set to 'SelectFromList'.BatchC ategories. followed by a period (.C rossDirection.Negative Enum. etc.ActivityRange. This can be found in the properties of a Discrete State when the Dimension property is set to either Vector or Matrix.The choices for defining the creation method.The choices for defining whether or not the parent entity or the member entity is executing the Batch Step.ArrayDimension. ¡ ¡ Enum.Two refers to the C olumns dimension.A choice of methods to use for determining the entity's destination node.Member Enum. InterruptedProcessAction.LinkType.Bidirectional Enum. ¡ ¡ Enum.ElementScope.This enumerator is found in the Type property of all Link objects.C ontinue l Extended Selection Goal . This enumerator is found in the Outbound Link Preference property of the standard TransferNode.SmallestValue Enum. The destination node value will be set to the next destination in the sequence. ¡ ¡ Enum. 'C hangeDependent' is used to specify an activity who's duration will be determined by one expression if the Comparison Expression is the same for the current entity as it was for the previous entity and a different expression if the value is different than the previous entity.ExtendedSelectionGoal.C hangeDependent Enum.InsertObjectType. by default. 'Match Members' indicates that members must be matched together using a specified expression.EntityAlignment. hence determining whether this element is publicly accessible outsides of its containing object.Destination Type property of the SetNode step.Found in the Ride Step and therefore the standard TransferNode when Ride On Transporter property is set to 'True'.DurationType. A bidirectional link allows entities to move in both directions on the link and a unidirectional link only allows movement in one direction at a time.LinkSelectionRule.ByLinkWeight Enum.Found in the Interrupt Step as a choice for how the interrupted process delay will be handled. The other Link objects have this property but it is not visible. the parent object or the object associated with the token. 'By Sequence' requires that the entity object has been assigned a sequence table. It is only visible on the standard library Path and TimePath. 'Any Entity' indicates that the first members of the specified batch quantity will be attached to the first entity in the parent queue.e.InsertObjectType. ¡ ¡ ¡ Enum. This allows the user to specify which object will be inserted into a storage queue. ByLinkWeight tells Simio to look at the Selection Weight properties of the outbound links to determine the routing for the entity. If the entity does not have a destination set (Entity.Unidirectional l Match Type . ¡ ¡ Enum.Used in an Activity element and the standard Workstation object to provide the choices available to determine how the per batch time duration for the activity or operation is specified.DestroyType.e.DestinationModes. This enumerator populates the Selection Goal property and allows the user to rank the transporter preference when multiple candidates are available to ride on. then the link length has a discrete number of cell locations.DestinationNodeID = 0). since it uses the Batching Logic element.ElementScope.Used for aligning travelers on a link.ExtendedSelectionGoal.LinkSelectionRule.ParentObject l Interrupted Process Action .AssociatedObject l Duration Type . However. then ByLinkWeight will be used for routing. ¡ ¡ Enum.Private Enum.Available l Link Selection Rule .Expression Destroy Type .AnyLocation Enum. ¡ ¡ Enum. This is used to define the element as either a public or private element. this is the direction in which the link was drawn in the Facility window (i. There is no specific matching criteria. If 'Any Location'. 'Specific' dictates that the duration of the activity will be a specific value that is evaluated as a user entered expression.Any Enum.ShortestPath l Link Type .LinkType. By default.Provides the choice of Associated Object or Parent Object.EndProcess Enum. the new token created by the Interrupt Step to handle the interruption occurrence ends its processing) ¡ ¡ Enum.ExecuteStepAction. EndProcess will immediately end the current delay.LargestValue l Insert Object Type . ¡ ¡ Enum.DurationType.SequenceDependent l Element Scope .ResumeProcess l Link Selection Preference .BySequence Enum.DurationType. then a traveler can engage at any location on the link. the choice of ResumeProcess will cause the interrupted delay to resume for the remaining delay time once the interruption process is finished (i.WaitUntilC ompleted Enum. 'SequenceDependent' is used to specify that the activity or operation should reference a C hangeOver matrix to determine its duration.AssociatedObject Enum.Used by an entity to select an outbound link from this location to the next.DestinationModes. This enumerator is found in the Outbound Link Rule property of the standard TransferNode.Found in the Execute Step and used to determine whether or not the token that is executing the Execute step waits until the new process is completed before continuing on in the current process or if the token continues in the current process while the new process is executed at the same time. for use in the Insert Step.Specific Enum.InterruptedProcessAction. ¡ ¡ ¡ Enum. A standard C onveyor object is the only link that displays the Entity Alignment enum property.Public l Entity Alignment .Found in the properties of all Elements.LinkSelectionPreference. This determines how the entities will be batched together. ¡ ¡ Enum.ExecuteStepAction.EntityAlignment. If 'C ell Location'.This enumerator is found in the Matching Rule property of the Batching Logic element and therefore the standard C ombiner object.DestinationModes. and the leading edge of an engaged traveler must align with a cell boundary.C ellLocation l Execute Step Action . ¡ ¡ ¡ l Enum.LinkSelectionPreference. 'Match Members and Parent' indicates that parents must also be matched with members .DestroyType.ExtendedSelectionGoal.ParentObject Enum. the direction the arrows are pointing).Used by an entity to select an outbound link from this location to its next destination. Shortest Path is only used when the entity already has a destination set.Used in the Destroy Step to indicate which object is to be destroyed. It will determine the shortest path between the current location and the destination of the entity.Specific Enum.PreferredOrder Enum. ¡ ¡ Enum. DiscreteStateC hange Enum.AssociatedObject l Park Unpark Type .ObjectReleaseOrder.LargestValueFirst l Remove Object Type .QueueRanking.MaterialOptions.AssociatedObject Enum. ¡ ¡ ¡ l Enum.Found in the Owner property of the Seize Step.MonitorType.ObjectSeizeType. The TransferNode uses it to order travelers waiting to cross through the node.OwnerType. ¡ ¡ Enum.C rossingStateC hange l Input Node Logic Type .ParentObject Enum.MatchType.Found in both the Park Type and UnPark Type properties of the Park Step and the UnPark Step.This enumerator is found in multiple places throughout Simio.This enumerator is found in the Monitor Type property of the Monitor element.MaterialOptions. found when an external node is placed in the External View of an object.InputNodeLogicType.RemoveObjectType.NodeSelectionGoal.Found in the Object Type property of the Seize Step. the parent object of the token or the associated object of the token.SmallestDistance Enum.Indicates the location type within the object that an entity will transfer into when entering from an external node.Random Enum.LargestDistance Enum. the Server uses this enumerator in its Ranking Rule property to order the requests waiting to be allocated capacity of the object. ¡ ¡ ¡ Enum. These properties are used to determine which object to park or unpark. For example.This enumerator is found in the Selection Goal property of the Route Step and therefore also in the standard TransferNode since this object uses a Route Step when its Entity Destination Type property is set to 'SelectFromList'. The enumerator value is used to decide which node to select from the nodes in the specified Node List.MatchType. If an object's external node has Input Node Logic set to ProcessStation.RemoveObject.NodeSelectionGoal.AssociatedObject l Queue Ranking . it is used in the Ranking Rule property of almost all of the standard library objects.MonitorType. In other words.FacilityNode l Node Selection Goal . this determines which object will be allocated capacity of the seized object.ParentObject Enum.InputNodeLogicType.None l Monitor Type .MatchMembersAndParent Material Options . If the object's external node has Input Node Logic set to FacilityNode. This enumerator is found in the Input Logic Type property on an External Node Instance.MaterialOptions.This enumerator is found in the Reservation Method property of the Ride Step and therefore also in the standard TransferNode since this object uses a Ride Step in its logic. ¡ ¡ ¡ Enum. ¡ ¡ Enum.C yclic Enum.ParkUnParkType.QueueRanking. the entity will be transferred to a Node that is defined within the Facility window of this object.ProcessStation Enum. which object will perform the seize .InputNodeLogicType.NodeSelectionGoal. ¡ ¡ Enum.FirstInFirstOut Enum.according to a specified expression.Specific l Owner Type . ¡ ¡ ¡ ¡ Enum. 'Specific' will allow the user to enter the name of a specific object in the Object Name property of the Seize step. 'Material' is indicating that a specific Material element will be consumed or produced.the parent object of the token or the associated object of the token. It provides choices for the static ranking rule of the queues of these objects. And 'ParentObject' will indicate that the Seize step should seize capacity of the parent object of the token that is executing this Seize step. the entity will be transferred into a station when it enters the object. This property specifies which method to use to .BillOfMaterials Enum.ParentObject Enum.QueueRanking. This determines if the Monitor will fire an event whenever the value of the State Variable changes (DiscreteStateC hange) or if it will only fire an event when the State Variables value crosses a specified threshold value in the crossing direction specified.FirstSeized Enum.ObjectSeizeType. this indicates the method for specifying the object(s) to be seized.MatchType. since this object uses the Activity Element.SmallestValueFirst Enum.OwnerType.AnyEntity Enum.QueueRanking.None Enum. 'BillOfMaterials' indicates that the Material(s) to be consumed/produced can be found as part of a Bill Of Materials.LastInFirstOut Enum. ¡ ¡ ¡ Enum.NodeSelectionGoal.Found in the Release Order property of the Release Step.MatchMembers Enum. It specifies whether the step is removing the parent object. ¡ ¡ Enum.Material Enum.ParkUnParkType. ¡ ¡ ¡ Enum.NodeSelectionGoal.LargestValue l Object Release Order . the object associated with the token or and object at a specific rank within the queue.PreferredOrder Enum.FromList Enum.This enumerator is found in the Material Consumption property and Material Production property of the Activity Element and the standard Workstation.This enumerator is found in the Removal Type property of the Remove Step.RemoveObjectType. It determines if material will be consumed or produced by this activity (per batch). 'FromList' will trigger the user to select an object list from the Object List Name property. this indicates the order in which to release objects that are owned by the specified owner. ¡ ¡ ¡ ¡ ¡ ¡ ¡ Enum. Most notably.ObjectReleaseOrder.SmallestValue Enum.LastSeized l Object Seize Type .ParentObject Enum. Either of these two choices (BillOfMaterials or Material) will switch on the Consumed Material Name and Consumed Quantity properties or Produced Material Name and Produced Quantity properties.ObjectSeizeType.NodeSelectionGoal.AtRankIndex l Reservation Method .NodeSelectionGoal. ObjectInstance Enum.TallyValueType. It specifies what type of behavior or movement to suspend or resume.SearchType.SuspendResumeType.TimeBetween .SeizeSelectionGoal.SearchC ollectionType.SearchType.StatisticC onfidenceIntervalType.ParentObjectMovement Enum.ReservationMethod. 'AssociatedObjectMovement' suspends or resumes the movement (Movement. 'Forward' indicates that the collection will be searched starting at the value set in the Starting Index property of the Search Step or at the beginning of the collection. It indicates where the Search Step will perform its search.Forward Enum.ParentObject Enum. ¡ ¡ ¡ Enum. The FirstAvailableAtLocation will cause the entities to wait for a Transporter to arrive to the node.ObjectsSeizedByParentObject Enum.This enumerator is found in the Value Type property of the Tally Step. executing token or the object associated with the executing token.This enumerator is found in the Search Type property of the Search Step.AssociatedObject l Statistic Confidence Interval Type .SeizeSelectionGoal.SeizeSelectionGoal.SeizeSelectionGoal.SetValueObjectType.SearchC ollectionType. It indicates whether a move to a specified location will be requested from the seized object(s).SuspendResumeType.Process l Tally Value Type .SmallestDistance Enum.LargestValue l Set Table Object Type . the node's Selection Goal property will be used to determine which transporter to select. by default. It specifies whether the step is setting the destination node value of the parent object or of the object associated with the executing token.ReserveBest Enum.This enumerator is found in both the Suspend Type property of the Suspend Step and the Resume Type property of the Resume Step.StatisticC onfidenceIntervalType. 'TimeBetween' records the time between arrivals to the Tally Step. ¡ ¡ Enum.Expression Enum.SearchC ollectionType. ¡ ¡ ¡ l Enum.Backward Enum. 'None' indicates that a move is not required.SetTableObjectType.ReservationMethod.MinimizeReturnValue Enum.Point90 Enum. ¡ ¡ ¡ ¡ ¡ ¡ Enum. ¡ ¡ ¡ ¡ ¡ Enum.ObjectInstance Enum.SmallestValue Enum.SearchC ollectionType.ObjectList Enum.This enumerator is found in the Object Type property of the Set Table Step.ParentObject Enum. It indicates what type of Search should be performed.StatisticC onfidenceIntervalType.SeizeSelectionGoal.SearchType. 'Expression' will record the value of the specified expression into the Tally Statistic.QueueState Enum.ObjectsSeizedByAssociatedObject Enum. 'MaximizeReturnValue' will search the collection and return the maximum value that it finds for the criteria listed in the Return Value property.MaximizeReturnValue l Seize Request Move Type . And 'Process' will suspend or resume the token that is executing the specified process.LargestDistance Enum.None Enum. The collection is then searched moving backward.SuspendResumeType.AssociatedObject Enum.TableRows l Search Type .StatisticC onfidenceIntervalType.SeizeRequestVisitType. ¡ ¡ Enum.SetValueObjectType. If there are two that are of equal distance.This enumerator is found in the Collection Type property of the Search Step.StatisticC onfidenceIntervalType.StatisticC onfidenceIntervalType. 'MinimizeReturnValue' will search the collection and return the minimum value that it finds for the criteria listed in the Return Value property.This enumerator is found in the Request Move property of the Seize Step.PreferredOrder Enum.SetTableObjectType. 'Default' will indicate that the confidence interval used will be either 'None' if running interactively. ReserveC losest will find the transporter that is physically closest to the TransferNode. It specifies what type of observation to record.AssociatedObjectMovement Enum. ¡ ¡ ¡ Enum. ¡ ¡ Enum. It specifies what confidence interval to use to calculate a confidence interval half width statistic for the average of the recorded values. 'ToNode' indicates that the seized object must arrive to the specified node before the token will be released from the Seize Step. by default.Token l Set Value Object Type .SearchC ollectionType.SetTableObjectType.ReservationMethod. The collection is then searched moving forward. or will be the experiment's specified confidence level if running an experiment scenario for a single replication.SearchC ollectionType. 'Backward' indicates that the collection will be searched starting at the value set in the Starting Index property of the Search Step or at the end of the collection. 'ParentObjectMovement' suspends or resumes the movement (Movement. ¡ ¡ ¡ ¡ ¡ ¡ Enum.Point95 Enum. It specifies whether the step is assigning a table reference to the parent object.This enumerator is found in the Select Goal property of the Seize Step.TallyValueType.This enumerator is found in the Confidence Interval property of the State Statistic Element and the Tally Statistic Element.FirstAvailableAtLocation Search Collection Type .Default Enum.Rate) of the token's parent object.This enumerator is found in the Object Type property of the Set Node Step. It determines the criteria that the Seize step will use to determine which object to seize.ReserveC losest Enum.SearchC ollectionType.Point99 l Suspend Resume Type . ReserveBest simply looks to the Selection Goal and Selection Criteria properties and finds the Transporter that best fits the goal.Point98 Enum. ¡ ¡ ¡ ¡ ¡ Enum.select and reserve a transporter to ride on.None Enum.SearchType.Rate) of the token's associated object.ToNode l Seize Selection Goal .SeizeRequestVisitType. TransporterType.TimeInState Enum. such as the Path.TimerIntervalType. ¡ ¡ ¡ ¡ Enum.TransferFromType.l Timer Interval Type .TransferFromType.TransferToType.This enumerator is found in the Task Selection Strategy property of the standard Vehicle object.TimerIntervalType.Station l Transporter Type .FirstInQueue Send comments on this topic to Information C opyright 2006-2011. ¡ ¡ ¡ ¡ ¡ Enum.This enumerator is found in the From property of all the Transfer Step.FreeSpace Enum.TimerIntervalType.Time Enum.TrafficDirection.EndOfLink l Transfer Object Type .Forward Enum. both forward and reverse.None l Traffic Direction Rule .Reverse Enum. The Timer determines the State from the specified value in the State Variable Name property and the State value property. This indicates the location type that the entity object is to be transferred from.TripSelectionGoal.TrafficDirection.TrafficDirection.EventC ount Enum.TrafficDirection.either to a specific transporter or select from a list of transporters.FromList l Trip Selection Goal .SmallestDistance Enum.TrafficDirectionRule.TimerIntervalType. It specifies the strategy used by the Vehicle object to select its next transport task.MatchDesiredDirection Enum.Node Enum.TransferFromType. .TransferToType. ¡ ¡ ¡ ¡ ¡ ¡ Enum. It determines the mode that is used by the Timer Element to determine the time interval between two successive timer events.C urrentStation Enum. ¡ ¡ Enum. Simio LLC . This specifies which entity object is to be transferred.This enumerator is found in the Object Type property of all the Transfer Step.Either Enum.TransferToType.TransferToType.LargestPriority Enum.TransferFromType. this property is switched on to allow the user to specify the rule that is used to direct traffic entry onto the bidirectional link. 'Reverse' restricts traffic to travel in the opposite direction. 'ArrivalTable' indicates that the Timer will fire events according to the times listed in the numeric table property (i.TripSelectionGoal. 'EventC ount' will trigger an event according to the number of Triggering Event occurrences.FreeSpace Enum.e.TransferToType.This enumerator is found in the Traffic Direction Rule property of all the standard Link objects. 'Forward' restricts traffic to travel in the forward direction. This indicates the location type that the entity object is to be transferred to. When the Type property is set to 'BiDirectional'.TripSelectionGoal.ParentExternalNode Enum. this property is switched on to allow the user to specify which direction the traffic should travel on this link. such as the Path. When Traffic Direction is set to 'None'. ¡ ¡ Enum. either the parent object or the object associated with the executing token.TripSelectionGoal.AssociatedObject l Transfer To Type .LargestDistance Enum. 'Either' indicates that traffic can travel in both directions.ParentObject Enum. which defines how the rate of timer events changes over time (the event occurrences follow a non-stationary poisson process).TimerIntervalType.ArrivalTable l Traffic Direction .FirstInEntryQueue Enum.PreferDesiredDirection l Transfer From Type .SmallestPriority Enum. 'TimeInState' indicates that the Timer will fire an event based on the amount of time spent in a certain state.TrafficDirectionRule.C urrentNode Enum. ¡ ¡ ¡ Enum. 'Time' indicates that the time between events is specified in the Time Offset and Time Interval properties.This enumerator is found in the Transporter Type property of the Ride Step and therefore also in the standard TransferNode since this object uses a Ride Step in its logic.TransferToType.OutboundLink Enum.This enumerator is found in the Initial Desired Direction property of all the standard Link objects. When the Type property is set to 'BiDirectional'.TransporterType.TrafficDirectionRule. or the direction that matches the direction in which the arrows are pointing. ¡ ¡ ¡ ¡ ¡ Enum.Specific Enum.TransferObjectType.AssociatedObject Enum. 'RateTable' tells the Timer Element to fire events according to the specified Rate table. entities cannot travel on this link. table column) of the specified table.RateTable Enum.TripSelectionGoal.This enumerator is found in the Interval Type property of the Timer Element.This enumerator is found in the To property of all the Transfer Step.TransferObjectType. This property specifies where to look to reserve a transporter to ride on . ¡ ¡ ¡ ¡ Enum. All Rights Reserved. Foreign expressions are also used in the Search step for searching a list. and the Seize step for selecting an object to seize. you must enable the ‘Foreign States’ option of the property.InputLocation.Capacity in the expression. to enter an expression for selecting between downstream nodes based on input capacity. For example. in the TransferNode’s Selection Property described above.Node. to include an object reference to a candidate object in the collection that is being evaluated.Node.InputLocation. In such an expression.C apacity will also work. Simio LLC .Simio D oc umentation Referencing Candidate Objects Use of the ‘Candidate’ or ‘Foreign’ Keyword in an Expression Property Some expressions in Simio are referred to as foreign expressions because they may include references to objects that are not the token’s associated object. you can use the reference Candidate. then a Selection Expression property is available where you specify an expression that is evaluated in the context of each of the candidate destination nodes in the list. Send comments on this topic to Information C opyright 2006-2011. if you select Entity Destination as ‘Select From List’ and specify the Selection Goal as ‘Smallest Value’ or ‘Largest Value’. The ‘C andidate’ or ‘Foreign’ keyword clearly declares to Simio’s expression parser that the reference is the value of the InputLocation. . you must prefix the reference with the keyword ‘Candidate’ or the keyword ‘Foreign’.C apacity function for each candidate node being evaluated in the collection. the Ride step for selecting a transporter. All Rights Reserved. Usage of the reference Foreign. in the TransferNode object in the Standard Library. For example. to allow a user to use the ‘C andidate’ or ‘Foreign’ keywords in the expression. rather than a value of the token’s associated object. Specifying the Support of Foreign States in an Expression Property Definition When adding an Expression property to a model. The Start and End time options are specified here. Running a model interactively allows the user to makes certain changes to the model during the run. Simio LLC . Send comments on this topic to Information C opyright 2006-2011. multiple replications. Advanced Options Within the Advanced Options button are Warning Level and Randomness. If the user would like to add a warm up period for the model. Save. Yet. pause or stop a run. An Experiment allows the user to run multiple scenarios. add controls and get responses. so it is the faster way to run a model. Stop Stepping through a Model The Step button in the ribbon is used to step from one point in the simulation logic to the next. All Rights Reserved. The Run Tab also has a Speed Factor slide bar which allows the user to control the speed of the animation during the interactive run. An Experiment is run in batch mode. Stepping in the Facility window stops the simulation when an entity moves from one object to another. in the reports. as well as disable randomness and/or run a particular replication. such as the ability to view or hide the Trace window. results pivot grid and watch window. However. without animation. the ability to add Breakpoints to the model and the ability to Watch states. Note that a run can begin by the user hitting F5 (and paused with F5) and can be stopped with Shift-F5. . Run. in the run status bar along the bottom of the interface. The Run Tab There is also a small run icon and stop icon in the Quick Access Toolbar at the very top left of the Simio application. See each of those help sections for more details. The Time Units in the Run Tab control the time units that are displayed in the Trace window. which allows the user to turn various warnings on and off. this can be specified in the properties of an experiment. The Run Tab is where a user can run a model interactively. Stepping works differently depending on which window is active when the Step button is clicked. C ertain tools are available while running the model interactively. stepping in the Process window stops the simulation as a token moves from Step to Step in a process. This can be accessed from anywhere in the application and allows the user quick access to start.Simio D oc umentation Running the Model Running the Model A Model can be run either via an Experiment or Interactively. functions and child elements that are associated with an object. If the user clicks the Trace Window icon again. Excluded Steps and Processes are not shown in the Trace.csv file. Send comments on this topic to Information C opyright 2006-2011. This file can be located in the same location where the project file is saved. It is important to note that if a project was saved with the Trace Window on. Entity. The Run Tab with the Model Trace Clicked On If the Trace has been on during the model run. right click and select the process or the object of interest from the menu. and Process. This file can be loaded into Excel so it can be filtered and sorted for ease in troubleshooting and understanding of the exact processing steps of the model. Simio will automatically open the Trace Window when opening a project to avoid running with the trace accidentally turned on.Trace On. if you would like to only trace the activities of one particular entity or one particular process.csv file might not contain all of the contents of the trace. . the contents will also be written to a . Simio allows for more than one filter at a time.) A user can filter the Trace by Object. For instance. Filtering Trace by Path1 and Starting to Add an Additional Filter to View only DefaultEntity. select a trace line that contains something you want to filter on. regardless of the Trace time units. This allows the user to hide sections of the trace so it is easier to analyze the sections of that are of interest. The Trace window will appear at the bottom of the application and will read Trace . you can filter so that you only view the activity of that entity or process in the Trace window. This window can be moved around the application by clicking and dragging.Trace Off. the window will remain but it will read Trace .Simio D oc umentation Trace Trace The Trace window can be displayed by clicking on the Trace Window icon in the Run Tab of the ribbon menu. There is a limit to the size of the file so if the model is run for a long period of time.12 on Path1. (Note: The time units found in the Results are always in Hours. To set a filter. The time units that are displayed within the Trace Window can be changed by selecting the desired units from the Time Units drop down. the user can click the X in the top right corner of the Trace Window. the . Simio LLC . All Rights Reserved. found in the Animation Speed panel on the Run Ribbon. To close the window. No other activity is displayed in the Trace until the filter is removed. node or link is selected in the Facility Window. the . Send comments on this topic to Information C opyright 2006-2011. . node or link is selected in the Facility Window.Simio D oc umentation Breakpoint Adding a Breakpoint A Breakpoint can be added to an object. A Breakpoint can be added in two ways. All Rights Reserved. Simio LLC . This file can be located in the same location where the project file is saved. the contents will also be written to a . node or link. A right click will bring up a small menu that includes Breakpoint. It causes the execution of the model to pause when an entity or a transporter arrives to the specified object. There is a limit to the size of the file so if the model is run for a long period of time.csv file might not contain all of the contents of the trace.csv file. By either clicking the icon in the Run Tab of the ribbon menu when the object. node or link. or by right clicking when the object. If the Trace has been on during the model run. minutes. seconds. a specific ending time of a date and time. or a run length in hours. All Rights Reserved. which is done in the properties of both a StateStatistic and a TallyStatistic. Simio LLC . The starting time can either be changed directly in the text box or by selecting a date and time using the calendar feature available with the drop down arrow. Send comments on this topic to Information C opyright 2006-2011. See Elements for information on these statistic elements.Simio D oc umentation Start and End Time Options Start and End Time Options The starting and ending time of the run is specified on the Run Tab of the ribbon menu. . Ending Types Simio also provides the user with the ability to specify a stopping condition for the model run. There are three choices of ending type: Unspecified (infinite). days or weeks. the user will be given the option to turn off future warnings of the same type. there is an option to Re-enable Disabled Warnings. Warning Levels area. which will re-enable all previous disabled warnings for the current simulation model. There are three levels of warnings: Alert User . In the bottom left corner of the pop-up.Turn off warning reporting. l When a warning pop-up is displayed. a box may be checked that indicates "Don't show this warning again". the runtime warnings for the current model will be written only to the Trace window. l Write to Trace Only . l Do Nothing . There are several automatic warnings that have been implemented within Simio. Within the Advanced Options. If this option is selected. .Report warnings to the Trace window. These include when the limit of a given object has been exceeded (as defined in the object's Maximum Number in System property). If this option is selected. when the number of active agents in the model is exceeded and when a potential deadlocking situation has occurred at a node (when two bidirectional links intersect at a node). the runtime warnings for the current model will be written to the Trace window and will also appear in pop-up message boxes during an interactive simulation run.Display warnings in a pop-up window. The user will have the option of preventing individual warnings from appearing in pop-ups.Simio D oc umentation Warning Level Warning Level The Warning Level sets the warning reporting level for the current model. Send comments on this topic to Information C opyright 2006-2011. . Simio LLC . All Rights Reserved. any random distribution reference will return the expected value instead of a random variate. This option may be used to generate the same sequence of random samples during an interactive run as would be generated for a specific replication when running the model in experiment mode. If the randomness is disabled. This is useful if the user detects an error. The True exit may have a Delay step that delays for Random. .Normal(10. meaning that distributions will be used.. Send comments on this topic to Information C opyright 2006-2011. the table property RandomRow function. All Rights Reserved. All random number streams will be initialized using seed values corresponding to the specified replication number. There is a DisableRandomness function that is available to determine during the simulation run whether the randomness is turned off or on. Disable Randomness Disabling randomness is often useful to facilitate verification and debugging. This function may be useful in process steps to change the logic or data in your system if the DisableRandomness button is 'True' or 'False'. Simio LLC . link selection weights. however. Replication Number The Replication Number option is for use in interactive model only. Additionally any probabilistic selection in the logic (e. and for generating deterministic schedules.1).5 (or “50%”) cumulative probability. Random selection goal in Route step) will always select the choice that includes the 0. the False exit may have a Delay step may delay for 11 minutes. the options to Disable Randomness and specify the Random Number are available. using a 10% 'buffer' since there are no distributions utilized.Simio D oc umentation Randomness Randomness Within the Advanced Options button on the Run ribbon within the Facility window and the Processes window. you may wish to have a Decide step that is 'C onditionBased'and evaluates the Expression 'DisableRandomness==False'. warning or problem with output in one of the simulation runs and would like to interactively view a particular replication. For example. probability based Decide step.g. where the average delay is 10 minutes. but is not appropriate for most typical simulation applications. so “10” will schedule a frame render for every 1 second of animation time. The scale is in tenths of a second. . The time between animation frames can be adjusted by using the Adjust Speed slider or by typing in a new value into the Speed Factor text box. Simio LLC . It will adjust how smooth the animation is by scheduling more or less frames to render. Animation Speed controls on the Run Tab Send comments on this topic to Information C opyright 2006-2011. All Rights Reserved. Lower values produce slower. and “600” will schedule a frame render for every minute of simulation time.Simio D oc umentation Speed Factor Speed Factor The Speed Factor represents the amount of simulation time between each animation frame. more fluid animation. Higher values produce faster. The speed of the animation will vary from machine to machine. more coarse animation. This is just an arbitrary scale. depending on your machine's performance. It is important to note that Watches are not saved with the project. The Watch window can be moved around the interface by clicking the top part of the window and dragging it to a new location. right click on the object and select Watch again or select the row for the object in the Watch window and hit the Delete key. If it is moved to the middle of the interface. The values are updated only when the run is paused or each time the user hits the Step button from the Run group. simply right click on the object in the Facility Window and select Watch. Simio LLC . i. Send comments on this topic to Information C opyright 2006-2011. You can explicitly show and hide the Watch window by using the Watch button in the Windows group on the Project Home tab. the values associated with that object will appear in the Watch window under the object's name.e. such as an entity. Watches added to instances persist across runs. To remove a Watch from an object. . can also be watched but the Watch only lasts as long as the entity is in the system. To add a Watch on an object. functions and elements during the run. When the model is run. All Rights Reserved. until it is destroyed or the run ends. A dynamic object. Functions and Elements During an Interactive Run The Watch window allows the user to view the values of an object's states. it can be resized to meet your needs. The Watch window also includes Processes and their active tokens under their parent object.Simio D oc umentation Watching an Object Watching States. Run Tab Options There are several options available on the Run tab for running a model interactively. It is very useful at this time to have the Model Trace button activated and the Trace window open. connected by paths. When Reset is used. Step The Step button is extremely useful when tracing through the simulation run. These include the Run/Pause. using the Step button in the same example above will stop at each individual step that occurs in the simulation. the number of entities in various queues. If your model runs and entities proceed through the objects as you’d expect them to. However. the simulation model will pause and entity will be seen moving between the following objects with each step: l l l l l l l l Source1 (in OutputBuffer. vehicle movements and much of what is going on in the system. One difference to note is that the Trace shown in the Trace window is not cleared when using the Stop button. to get a closer look at what is happening or to ‘debug’ a potential or known problem. This enables you to slowly “walk through” the simulation events one step at a time to determine whether the logic that has been incorporated is working as intended. Running Until a Given Time When debugging a model. The model trace allows you to see exactly what is occurring during the simulation run with each step that occurs. This includes the steps within the Standard Library objects. The Pause button then reverts back to a Run button to continue the simulation. General information for turning on/off debugging tools can be found in the Trace. Many times it is also helpful to be able to view the animation while stepping through at a detailed level. Run / Pause The Run button is useful for running the simulation model without specific pauses between objects or for particular logic. The Trace window can be displayed by clicking on the Trace Window icon in the Run tab of the ribbon menu. then using Step. it becomes a Pause button that you can press to simply Pause the model at the current simulation time. let’s say you have a simple simulation model of Source1 – Server1 – Sink1. Running the Model and User Interface sections of help. The steps that occur within the above example are too numerous to detail. This will make two windows visible within the main viewing area. this may be all you are likely to do. Fast-Forward The Fast-Forward button is useful when you would like to move quickly through a portion of the simulation model without viewing the animated objects in the Facility or Dashboard windows. If the Facility window is active. however. stepping when the Processes window is the active window will stop the simulation as a token moves from step to step in a process. through the Run tab. Making sure to have the Processes window active (highlighted). as it stops at each step within the processes window (including those built-in steps within a Standard Library object). you will need more information from the simulation run. You may do this by specifying. The Stop button is also used to stop the simulation run. Using the Stop button will cause the model to re-initialize upon using the Go or Step buttons. where you may have both the Facility window and Processes window visible simultaneously. Simio includes both 2D and 3D animation graphics that allow you to quickly and easily build a model and watch it run. Stop.) and run the simulation. This can be done by rightclicking on the Processes tab and selecting New Vertical Tab Group. etc.C ontents queue) Output@Source1 Transfer Node then moves along path to Input@Server1 Basic Node Server1 (in InputBuffer. More specifics about Trace can be found in the below section titled Trace Window Details. the processes that are occurring and the logic that is being executed are displayed in the Trace window. you may like to set the Starting Time and Ending Type to the appropriate values (8 hours. Typically when first running a model. 10 days. which we will discuss in the Running Until a Given Time section below. This is useful when you have a Breakpoint set and would like to get to that logic quickly. Trace Window A very important tool for debugging a simulation model is the model trace.C ontents queue above the Server) Server1 (in OutputBuffer. Fast-Forward and Reset buttons. It may also be useful to run until a certain time.C ontents queue to the left of the Server) Server1 (in Processing. When the active window is the Facility window. you can visually see the paths that entities take. Notice that when you click on the Run button. Step in Facility window For example. the Step button will stop the simulation when an entity moves from one object to another. Reset / Stop The Reset button can be used to re-initialize the model to its starting conditions. Breakpoint. all trace shown in the Trace window is cleared. However.Simio D oc umentation Debugging the Model One of the most common tools for debugging a simulation model is the animation. By watching the animation. You may find issues that cause you to investigate further why things are happening as they are and Simio has a number of tools to help. 1 day. the simulation model will pause much more frequently. Trace can be viewed even when the model is stopped. Step. there may be situations where you want to run the simulation for a given amount of time before pausing the model to review everything in more detail. and Ending Type of Run Length .C ontents queue) Output@Server1 Transfer Node then moves along path to Input@Sink1 Basic Node Step in Processes window If the Processes window is active. If you have a system with a lot of object interactions and/or you have an error occurring at a specific time with multiple entities.e. As you can see in the above picture. which is assigned by the simulation and will remain with the entity as it moves through the system until it is destroyed.32’ hours until time ‘1. where you may now wish to step. Running until a given time is very useful if you have a modeling error at a specific time and would like to get back to that error quickly. These time units may be changed during the simulation run and the change will be reflected in the Trace window. Delay. or if you have a particular time during the simulation where you would like to observe in detail what is happening. in time units as specified on the Run tab. Entity references include the name of the ModelEntity instance.’ These actions are very useful in determining exactly what is happening in your model on a step by step basis. Within the Processes window..ok [Step]StepName – The internal name of the step that the token is executing. the model will run until that particular step is executed.). Trace Window Details The Trace window is opened by clicking on the Model Trace button on the Run tab. Within the Process steps.with a given run length specified. node or link or when a token arrives at the specified step.. A breakpoint will cause the execution of the model to pause when an entity or transporter arrive to the specified object. Token – The token number that is executing a given step. Process – The process in which the entity’s’ associated token is executing. this Run Length can be changed and you may continue to step through or run the model. the breakpoint can be added to an object by highlighting the object and clicking on the Breakpoint icon on the Run tab or by right-clicking on the object and selecting Breakpoint. etc. With a breakpoint set. such as Source1. Within the Trace window. 1 for a single entity. such as Vehicle1[1] or Worker1[2]. Other references that are not Entities include timers and failures. allowing only one entity at a time into the system may allow you to more quickly determine what the problem is without having interaction and movement of other objects in the system. If the Processes window is active. as well as a defined number. However. Within the Facility window. Assign. You will notice that within the Trace window. Decide or Transfer followed by the user-defined name of the Step. right click on the entity you would like to view and select Add Entity Filter ‘EntityName. the breakpoint can be added by selecting the appropriate step and clicking on the Breakpoint icon in either the Process or Run tab. Object – The name of the object where the current entity is evaluating logic. This trace output is automatically saved to the file ‘ModelName_Model_Trace. the model trace can be quite extensive. Vehicles and Workers will include the name and dynamic object instance (i.35’ hours’ or ‘ Token branching on condition ‘Is.Number’. This may include names of fixed objects. if you are trying to determine why an entity is going a particular route or whether a specific process is working correctly. Action – The action that is taken based on the step that is executed. Token sent to False exit. For example.RedOnes. This may include a user defined process such as Server2_Processed or a Standard Library object process such as OnEnteredProcessing. [1].csv’ in the folder where the model is located. for example. This token is automatically created when the process execution is initiated and will exist only while in the steps in a given process. When you are writing your own processes the user-defined name can be very helpful in understanding and debugging your model. These columns include: l l l l l l l Time – The current simulation time. Server1 or Resource1. the actual model trace can be turned on/off by using the same Model Trace button. Entity – The current 'Associated Object' executing the logic. and run the model (or fast-forward). Creating a Single Entity Through the System Depending upon the complexity of your system and reason for debugging. For example. Within the Stopping C onditions section of the Source. It may also include nodes. For example. the trace file can also be filtered to include only information you wish to view.e. This is typically an Entity and includes ModelEntity objects. the Maximum Arrivals property allows you to specify the number of entities to create. this object is typically refered to as the 'Parent Object'. What benefit does that provide? When tracing through specific logic or stepping to see an object move through the system. [2]. perhaps you would like to view the specific trace information for a given entity instead of all entities in the system. End of Run shown on bottom left run status bar). You may wish to later view the file. as well as to a step within the Processes window. Once the model has run (or fast-forwarded) for that time. it may say ‘Delaying Token for ‘0. You may now change the Run Length to 3 hours and the run status bar at the bottom left will change to “Paused”. The trace can also be filtered by . Once the Trace window is opened. rename it or search the file for specific information. there are several columns to provide you with much information about what is happening in the simulation model. Within the entity column. for example. Running until a breakpoint can be especially useful when defining a process within Add-On Process Triggers in the Standard Library objects. The token can refer to both the Associated Object and the Parent object. in which case you will see the 'Associated Object' for that timer or failure. as well as Vehicles and Workers (since they are also “entities”). it may be very useful to allow only a single entity go through the system at a time. then this option would not work for you. for example. if you want to run the model for 2 hours then start stepping through the model. it may be useful to simplify the number of entities through the system. set the Run Length of 2 hours. Running Until a Breakpoint A breakpoint can be added to an object. you may wish to Step through the various steps in the process to make sure that the logic you added is working as intended. node or link in the Facility window. or links such as Input@Server1 or Path1 or dynamic objects. It will appear as though the model has run to completion (i. These filters can later be removed to view all of the trace content. this will allow you to make sure that values are being updated as you expect. variables and processes associated with it. ExamplesofFunctions_DynamicObjects. floor labels can include embedded expressions that can be very useful for debugging. you can view the values of various states and functions for any number of objects in the system. such as a Server. animation can be attached directly to an object. These include the ability to view certain pieces of information during the simulation model. you may graphically animate any number of variables or functions by using the tools on the Animation tab. The values are updated when the run has paused or when the Step button is used to move through the model. For example. ExamplesofFunctions_StaticObjects. from the number in a given queue to the value of particular function or statistic. The Watch button on the Project Home tab can be used to turn the Watch window off and on. This will automatically open the Watch window at the bottom portion of the project. Additionally. that you increase / decrease throughout the model.Object or by Process to view specific information. ‘inventory’. Within this window. right click on the object in the Facility window and select Watch. a status label may be useful for displaying the value of a user defined state variable. states and events pages for entity.spfx. as it moves through the system can provide invaluable information. resource and link objects for a listing of expressions you may wish to animate. plots or pies. Watch Window The Watch window is another very useful tool for viewing information during the simulation run. This can be a stationary object. the model itself has a section containing any user defined state variables as well. but can also be a dynamic object. Refer to the Watching an Object page for more details. such as status labels. node. See the following functions. Additionally. any objects that are being watched will be displayed with a “+”. All Rights Reserved. More detailed information about the user interface can be found in on the Watch window section of help. Status symbols can be stand alone or can also be attached to a particular object. Send comments on this topic to Information C opyright 2006-2011. Worker or Vehicle. . such as a Server or Node and selecting the animation symbol from the Symbol tab. transporter.spfx and OverflowWIP. By watching the values of functions and states on specific objects and the model. Reviewing Simulation Data via Animation objects or Watch window Other tools are also available when debugging a simulation model. such as an property or state of an entity. Simio LLC . using a combination of the Trace window. Watch window and/or animation within the Facility window can help provide great insight into the processes that are being run and decisions that are being made within your simulation model. See three SimBits. Whether you have an error that has occurred in your model or simply are stepping through the model to be sure that the logic you have implemented is working correctly. Viewing information.spfx to see many of the functions displayed in the Facility window and attached to objects. As just mentioned. such as an Entity. Animation in the Facility or Dashboard windows Within the Facility and Dashboard windows. To add a Watch on a particular object. This can be done by highlighting the object. When the model is run. C licking on the “+” will expand the object to show any functions. Summary Simio includes many interactive tools for helping in the verification phase of your simulation project. Early. In large models there could be many thousands of events scheduled on the event calendar to occur at different times. The Simio engine runs a model by executing the following event loop: While (simulation is running) { Remove the next event from the event calendar Advance TimeNow to the time of this event Execute the event logic for this event } Note that within this simple loop Simio is repeatedly removing the next event. and/or one or more elements in the model. Event method: A method that is to be called to execute the logic associated with the event. but one token executes its logic before the other. Event index: An index that is incremented and assigned to each event item when it is scheduled. an entity reaching the end of a link). These actions will take place millions of times in a typical simulation. The most common event that is executed by Simio in this loop is a “token arrived to a step” event. In addition to these it is also sometimes necessary to cancel a scheduled event (i. Each step with multiple departing tokens has a defined order for processing the departing tokens as documented in the Simio Reference Guide. However if a time delay occurs within the step (e. Event type: An event type (Normal. All of these actions must be very efficient in execution.g. Note that during this period time does not advance. either at the current time (TimeNow).Simio D oc umentation Simio Event Calendar The event calendar is the central core of any simulation engine. and removing the next event item from the calendar. Each scheduled event item (either on the current events list or future events heap) maintains the following information: Event time: The time that this event is to be executed. advancing TimeNow to the time of this event.e. The scheduled event time for each node in the tree is always less than or equal to the event times for the two nodes that are immediately below it in the tree (if any). The ordered list holds all current events that are scheduled to execute at the current time (TimeNow). remove it from the calendar even though it’s not the next event). and then executing the logic for that event. Two primary actions that repeatedly take place during the simulation run are scheduling of a calendar event to occur at either the current time or a later time. or adjust the scheduled event time. In many cases the step arrival event executes in zero simulated time and the arriving token can immediately continue to the next step without returning to the event calendar. and this is less than the event times (13. an entity) that is associated with the event. Event object: An object (e.g. a Delay step) then the token arrival to the next step in the sequence is scheduled on the calendar to occur at the end of the delay. Its purpose is to maintain an ordered list of events that need to be executed at the current and future times. The times on the future events heap will be greater than or equal to TimeNow. Each step has a method that is called when this event executes. The minimum heap is a tree structure that holds events that are scheduled to occur in the future. Hence the arriving token and secondary token depart the step at the same simulated time. Having an efficient mechanism for handling a large number of scheduled events is crucial to fast execution of the model. As time advances events are moved from the future events heap to the current events list. 12) immediately below it in the tree.g. It then advances time to the time of the next event on the future events heap (always the top item on the heap) and continues removing all events from the heap that are scheduled at that time and places them on the current events list for execution. making state changes as necessary to the arriving token. or after a time delay (TimeNow + DelayTime). This method processes the logic for the step. Some of the steps in Simio have more than one token that departs the step at the same simulated point in time. In most cases the token departing the primary exit point is processed immediately and the token exiting the secondary exit point is scheduled to arrive to its next step at the current time (TimeNow). The event logic will in turn often schedule additional events to occur. These events correspond to token/entity movements through the system (e. Late) that is used to break ties between events. . The algorithm executes each of the events on the current events list until it is empty. The events that are on the current events list are all scheduled to occur at the current time (TimeNow). The scheduled events in Simio are maintained internally using two connected data structures illustrated below: an ordered list and a minimum heap. For example the top most event is scheduled to occur at time 11. associated or parent object. Within an event type the events are ordered by event index. and finally followed by events scheduled as Late. it is not very good at dealing with ties. If it is less than or equal to both it is in its proper location and the bubble operation is complete. events scheduled as Normal to execute next. An example of a Late event is the “end of run” event that occurs at the end of the simulation. Likewise an event that changes its scheduled event time can remain on the heap and simply bubble up or down as necessary. Hence a bubble down requires two comparisons at each step where a bubble up requires only one. Whenever we add a new event to the future event heap we add it to the next position in the bottom row of the heap and bubble it up to its correct location in the tree. and then bubble it down. This sorting is done first by event type to make events scheduled as Early to execute first. i. and then move the far right event from the bottom row to the newly open position in the top row. A bubble down operation compares an event item to its left and right child. Send comments on this topic to Information C opyright 2006-2011. the order in which they were scheduled. An example of an Early event is an “initialization” event for the simulation. Whenever we remove the next event from the calendar we remove the top most event node from the tree. . Simio LLC . and trading with the parent if the event time for the parent is greater. The heap is maintained during the simulation using operations that “bubble” an event up or down the tree. Otherwise it trades places with its child with the smallest event time and this process continues until the event is bubbled down to its correct location in the tree. The vast majority of events are Normal events.e. All Rights Reserved. In Simio the relative position of tied events are ignored when on the heap. Although a minimum heap is very efficient in handling large numbers of events.The process of handling ties (i. Note that if a scheduled event is canceled it can be removed from the tree and replaced with far right event from the bottom row which is then bubbled up or down as necessary. events scheduled to occur at the same time) is very important in simulation engine design.e. A bubble up operation is slightly faster because we are comparing an event to its parent. but then sorted properly once moved to the current events list. Simio makes it easy to setup an experiment for a model that is comprised of one or more scenarios. Hence rerunning a simulation experiment with the same set of controls will always produce exactly the same results for each replication. Although the random numbers that are used across replications are different (because they have a different but defined starting point in the stream). a value such as average waiting time that is recorded at the end of each replication). Hence although the three replications sample from the same streams. and optionally plot individual samples and/or histograms of the individual response samples that are recorded at the end of each replication. but the simulation continues running from its current state. regardless of which scenario is being evaluated. and second it makes it possible to use common random numbers across scenarios. the random values returned from those three streams are different because we start of different positions within those streams. and recording the values for the responses. Each replication typically employs random numbers for generating samples for the time between arrivals. Hence the results across replications are independent samples.Simio D oc umentation Simulation Replications Simio Replications Simulation results are generally based on replicating a simulation model multiple times to generate identically distributed and independent (IID) output samples. etc. If a warm up time is specified for the replication the statistics are initialized again at the end of the warm up time without reinitializing the system state. For example we might replicate a simulation model 25 times. The initialization seeds for each stream are automatically set by Simio.e. 2 streams. By default all random samples are taken from internal stream number 0. As we will discuss below the ability to select a specific stream is important when using a method called common random numbers (C RN) to reduce the variability in our estimators when comparing multiple scenarios. However if we look down across scenarios we see that the random samples by stream and replication number are identical across scenarios. the average time in system).Uniform(3. they are identical for each replication within each stream across scenarios. The different shades of blue and red indicate that a different segment of random numbers within each stream is being used across the three replications. and you can employ as many streams within your model as you desire. Each replication will automatically initialize both the system state and statistics. changing the values for the controls. Since the random numbers in each replication are different. and use the average waiting time recorded in each of the 25 replications as an estimate of the true but unknown value for the expected waiting time. and one or more responses (i. processing times. and running the OnRunInitialized process for each object to allow usercustomization of the initialized state. The built-in SMORE plots will then display the results of a specified “primary” response for each scenario that combines error (confidence interval) and risk (percentiles) measures.1) returns a random sample from a uniform distribution between 3 and 5 using random stream number 1. The model statistics are initialized by zeroing out all statistics values (e. properties that supply inputs to the model). In other words the initial statistics recorded during the warm up period are discarded. Simio will then automatically run replications across each specified scenario. Based on the IID assumption we can then use the 25 samples to generate a confidence interval on the expected waiting time. however you can specify a different stream by appending the optional stream parameter for each distribution. When replicating a simulation model each replication samples from a different but defined starting point within the stream. This is important for two reasons: first it makes our simulation experiments repeatable. . Stream 1 is represented by shades of blue and stream 2 is indicated by shades of red. The random sampling from streams across replications and scenarios is illustrated in the following example with 3 replications. For example the random numbers generated for stream number 3 and replication number 8 will always be the exactly the same sequence of numbers. For example Random. repair times.e. Hence we have the potential to have highly correlated results across the scenarios. and 7 scenarios.5. The random numbers within a model are generated from independent streams. These random numbers are automatically generated by Simio using the built-in Mersenne twister pseudorandom number generator. The model state is initialized by initializing all objects within the model to their default starting state.g. These starting points are set very far apart in the stream so that there is no practical risk of overlap. Each scenario may have one or more controls (i. This state of the art generator has an extremely long period (219937 – 1) that means from a practical sense the sequence will never repeat within a Simio simulation scenario. each replication produces a statistically independent estimate for each of the output responses. . Simio LLC . while keeping independence across the replications. and in doing so create correlation across the scenarios. This will improve the underlying results for many statistical analysis procedures that compare alternatives. and therefore a random sample that was used for a processing time may now be used for an inter-arrival time. will change the sampling pattern from the steam. but typically very easy to do for arrival processes.g. This is very simple and effective way to induce correlation across scenarios and improving our ability to draw conclusions from the results. Ensuring the exact same usage of random numbers is not always convenient to do in all cases throughout the model. etc. and then default everything else to stream 0. Send comments on this topic to Information C opyright 2006-2011. . To make effective use of common random numbers it is important to create as much correlation as possible across the scenarios. number of servers). This is done by ensuring (to the extent possible) that the common random numbers that are generated across scenarios are used in the same way. stream 2 for task times. Note that letting all random variables sample from the default stream (0) will typically not achieve this because the controls on the model (e.This pattern of random sampling supports the concept of common random numbers to reduce the variability of our estimators when comparing across scenarios. process times. For example both the built in Simio subset selection procedure and the Nelson and Kim add in for selecting the best system benefit from the use of common random numbers. All Rights Reserved. By using a separate random number stream for all arrival processes we can guarantee that we get the exact same sequence of arrivals across all scenarios. A good practice is to always use stream 1 for inter-arrival times. etc. In other words we would like to subject all the scenarios to the same random pattern of arrivals. The basic idea of common random numbers is that we would like the differences between scenarios to largely reflect the differences in control settings and not the particular set of random values that were used for a particular scenario. service times. any experiments that referenced and used that model may remain in the project to preserve experiment results. etc. an experiment references and uses a model (is “bound” to a model). Users should be able to distribute experiments between projects. This is typically done (once a model has been validated) to make production runs that compare one or more variations of the system. The control variables are the values assigned to properties of the associated model.g. etc.). They are executed in batch mode. Within the Analysis section of the Experiment properties window. edited and deleted from the Experiments panel. The experiment can then be rename.g. if a model is removed from a project. as well as a confidence level. waiting times. a user can specify a warmup period for the run. failures.g. the throughput. Rather. Adding an Experiment . It can be added from within the Project Home ribbon by selecting the New Experiment icon. Each scenario has a set of control variables (e. Creating a New Experiment An Experiment can be added to a project in two different ways. The drop down menu of the Add Experiment icon in the ribbon gives the user a choice of all the fixed type models that exist in the project. size of each input buffer) and output responses (e. A fixed type model must be active (highlighted in the Navigation window) and the new Experiment is bound to this active model.Simio D oc umentation Experiments Experiments Experiments are used to define a set of scenarios to be executed using the model. Since most models contain random components (e.) replications of the scenario are required to allow the computation of confidence intervals on the results. Before adding an experiment you typically add properties to your main model to serve as the controls that you want to change for each scenario. An Experiment can also be added from within the Experiments panel in the Project window. This means that. An experiment is not owned by a model. The user must select a model for the experiment to be associated with. Make any necessary changes to the inputs and then click anywhere outside of the new row to add this new scenario to the experiment. but only within the umbrella of the parent column header. When the new scenario appears. All other automatic statistics within the Standard Library objects are custom generated and do not use StateStatistics or TallyStatistics elements. C licking in the upper right hand corner of a column will bring up the filtering menu. Batch Means and HalfWidth Calculations The method of batch means attempts to obtain a sequence of independent samples (batch-means) by aggregating h successive observations of a steady state simulation. Filtering the Contents of a Column within an Experiment Experiments cannot be run in Evaluation Mode of Simio unless the model is within the specified modeling limits. Adding a Scenario to an Experiment Sorting and Filtering the Experiment Grid The columns of the Experiment grid are categorized for easier reading. For users that would like to see a batch means calculation on . Multiple sorts can be added with shift-click. Only scenarios that are checked will be enabled. C ontrols) can be dragged around to change the order of the columns. The grid can also be sorted by clicking once or twice on the column header to be sorted. Similarly. Replications. data points are divided into batches and the average value of the data points within each batch are the batch means. For example. This provides a way to do additional replications on selected scenarios. a user can rearrange the second row of column headers. C olumns and categories can be reordered. the columns of the experiment grid can be rearranged. either manually type in all the information into the row or click in the checkbox to fill in the columns with the default information. If you would like to see and run an example experiment.Adding Scenarios to an Experiment To add additional scenarios to an experiment. For a given single replication. see the AirportTerminal example model and go to the Experiment window. This batch means method is automatically enabled for TallyStatistics and StateStatistics for experiments with a single replication. A checkbox appears to the left of each scenario. Simio’s standard library has a TallyStatistic (in Sink). which is a measure of how far the system tends to stray from its average value. For example. This allows the user to select a value to filter by or allows the user to create a custom filtering expression. a user might want to have the C ontrols columns appear first in the grid and therefore they would drag the C ontrols column header to the left of Scenario. The first row of column headers (Scenario. Additionally. These batch means are then used to calculate the stochastic process’ half width. The Experiment Grid can be filtered and sorted. a user can rearrange the order of the individual C ontrols columns by dragging the columns around underneath the larger C ontrols column. click into the first row of the table where it reads "C lick here to add a new scenario". For the experiment. For the interactive simulation run. and therefore. would need to manually add a StateStatistic to mimic our internal custom statistic. However. Send comments on this topic to Information C opyright 2006-2011. no half-width calculations are made.‘utilization’. if there is more than one replication. . Simio LLC . if there is one replication. All Rights Reserved. the confidence level from the element (or from the experiment if the element says ‘Default’) is used to calculate the batch means half-width. Simio does not utilize batch means. Simio does not generate the batch means half-width. for example. Therefore. The property's DisplayName is what will appear as the column name. the experiment will ignore this and use the values specified in the table (1. . if the default value of the ServerC apacity property is set to 3. do not assume that the default property values will be used if the field in the Experiment Design table is left empty. All Rights Reserved. Once a property exists in your model. 2. it will appear as a column in the experiment table in the Experiment Design Window. Using the example below. Experiment with Multiple Scenarios of Different Controls Send comments on this topic to Information C opyright 2006-2011. 1.Simio D oc umentation Controls Control Variables The control variables are the values assigned to properties of the associated model. Simio LLC . Even though there are default values for the properties (controls). The experiment will use the value of 0. the experiment will use the values that are specified in the Experiment Design table. 2). The user can create multiple scenarios. respectively. Before adding an experiment you typically add properties to your main model to serve as the controls that you want to change for each scenario. for each scenario. each with a different value in the control variable. A value can be defined for a Lower Bound and an Upper Bound for this response. If the constraint is used to validate a set of manually defined C ontrols. or making sure that the total cost of implementing a new system is within budget. Expression – The expression to be evaluated at the end of the simulation run. such as average waiting time or throughput. Objective – Indicates if larger or smaller values of this response are preferred. Adding a Response to an Experiment Constraints If your limitation involves C ontrols “interacting” with each other – such as the sum of the lengths of a set of conveyors has to be less than a certain value – then you can represent this using a C onstraint column.Simio D oc umentation Responses and Constraints Often times a system will have user defined limitations – they could be putting a limit on the total number of cashiers at a grocery store. Responses Vs Constraints . All scenarios that violate input constraint bounds are discarded before running in Simio thus will never show up on the screen. Similarly. Simio will color the response red if it fall below the lower bound or falls above the upper bound. Simio allows you to easily incorporate these limitations into your model through experimentation. Responses A Response specifies an expression that typically includes statistics recorded during the run. When using OptQuest. The response is recorded at the end of each replication of each scenario. If your limitation involves C ontrols “interacting” with each other – such as the sum of the lengths of a set of conveyors has to be less than a certain value – then you can represent this using a Constraint. your model can return infeasible results. If you would like to determine if the result of a Scenario is acceptable then you can set an Upper or Lower Bound on a Response. such as the OptQuest Add-In. C onstraints are added by clicking the Add Constraint button in the Experiment section of the Design Ribbon. You can customize a Response column type with the information entered in the following properties: l l l Name – The name of the response. These bounds will be used in the future with Experiment Add-Ins. C onstraints are designed to identify any out of limit controls that have been manually defined as well as to limit automatic creation (by OptQuest) of scenarios with controls that would be out of limits. setting a maximum time a customer is allowed to be waiting on hold at a call center. etc. These limitations are essential for correctly modeling a process and must be represented by your simulation because without them. This is available for use with Add-Ins. a violated C onstraint will be shaded red in the same manner as a violated Response. Objective can either be: ¡ ¡ ¡ None – Just an informative response and not used to make decisions Maximize– OptQuest drives the Experiment to achieve the greatest values for the objective function Minimize– OptQuest drives the Experiment to achieve the lowest value for objective function l l Upper Bound – Any values for this response above this value are considered infeasible Lower Bound – Any values for this response that are below this value are considered infeasible The response can be removed from the experiment by clicking the Remove Response icon in the Design tab of the ribbon menu. The values displayed in a constraint column will be the value of the expression defined in the Expression property. which is reflected in the column header. The resulting Response column can either act as a purely informative display of a certain statistic of interest or an objective function that you are trying to optimize. To add a Response. the response property named Objective will be used in the future for Experiment Add-Ins. It determines how OptQuest is to use the response information when determining the optimal solutions. simply click the Add Response button in the Experiment section of the Experiment Design Ribbon. this column will only show values that are within the constraint bounds – this only works for linear constraints (no multiplication or division). Simio does not do anything else with the bounds except for changing the color in the interface. All Rights Reserved. If any member of your limiting expression needs to run a Scenario in order to be evaluated – use a Response. Send comments on this topic to Information C opyright 2006-2011. Simio LLC . .If all members of your system limitation expression can be represented by a C ontrol – use a Constraint . Confidence Level The C onfidence Level is used to calculate confidence interval half-width statistics for result averages across replications. Therefore. . which will aid in finding an optimal solution for your model. Note: Considering the waiting time of entities during the warm-up period could bias the results of the run and Simio takes the position of excluding that bias. Send comments on this topic to Information C opyright 2006-2011. All Rights Reserved. Percentiles The percentile of data which is the upper bound and lower bound of the boxes in the Experiment Response C hart (SMORE Plot). as well as the Confidence Level for the experiment. such as the OptQuest Add-In. which will aid in selecting the best scenario from a list of candidate scenarios.ExperimentProperties Experiment Properties Window The Experiment Properties window is where a user can specify a Warm-up Period for the run. This is done in the Properties window of the Experiment. Simio LLC . To access the properties window.Simio D oc umentation Analysis . OptQuest for Simio Parameters This section within the experiment properties will appear when the OptQuest for Simio Add-In is selected. Specifying the Warm-up Period and Confidence Level Warm-up Period The Warm-Up Period is the time period after the beginning of a run at which time the statistics are to be cleared. the average waiting time statistic within a replication is not dependent on what happened during the warm-up period. right click on the Experiment within the Navigation window and select Experiment Properties. This is where you define properties for that Add In. See the C onfidenceLevel property of the TallyStatistic and StateStatistic elements for more information. Select Best Scenario using KN Parameters This section within the experiment properties will appear when the Select Best Scenario using KN Add-In is selected This is where you define properties for that Add In. Primary Response The Primary Response property is normally used with Experiment Add Ins. Note: An experiment’s C onfidence Level setting may also be used to calculate runtime confidence interval half-widths on TallyStatistic or StateStatistic element averages in the model. Warm-up periods are useful for removing the effects of atypical initial system conditions from the statistics collection. SMORE Plot On the bottom left-hand corner of the Response C hart Window is a Raw Data Tab. in others it provides an inadequate amount of information required to make a decision taking into account risk. The plot is display results across replications. Once the scenario has at least six replications. and all C onfidence Intervals will be displayed. Upper and Lower Percentiles. Max. All aspects of the plot will not be displayed fully unless we have a sufficient amount of data. Observations. Nelson puts it in his paper discussing the concepts of Measure of Risk & Error (MORE) plots (Nelson 2008). Lower Percentile Value. and Minimum Value (sample illustrated below): Parts of a SMORE Plot In the Properties Window of an Experiment. the Median. which means a large number of repetitions. The Response Results tab can be moved so that the graph can be seen plotting as the Design Window steps through replications and scenarios. C onfidence Interval for the Lower Percentile Value. Upper Percentile Value. C onfidence level used to calculate C onfidence Intervals (95% by default). A SMORE plot consists of a Mean.” A Simio Measure of Risk & Error (SMORE) plot displays both the estimated expected value of a scenario and multiple levels of variability behind the expected value. C onfidence Interval for the Upper Percentile Value. C onfidence Interval for the Mean. instead it is trying to say something about what will happen in the future and whether we can live with it.Simio D oc umentation Experiment Response Chart Graphing an Experiment The Response Results window of an Experiment creates a Simio Measure of Risk & Error (SMORE) plot using the Response value that is selected in the Response pull down menu. Maximum Value. and Lines Between Means. in real time. Median. for each scenario. and Min. “A baseball player’s batting average is a meaningful historical statistic. The Ribbon now has new buttons allowing the user to be able to turn on/off C onfidence Intervals. Upper/Lower Bounds. Simio always displays the Mean. Experiment Properties The accuracy and usability of this plot depends on having a large amount of data. the user is able to set the Upper and Lower percentiles (Upper Percentile will be set to 75 and Lower to 25 by default). While this is exactly what is needed in some situations. This tab allows the user to view the values that . Simio Pivot Tables and Reports provide an estimate of the population mean and confidence interval based on multiple replications. As Dr. a simulation is not trying to create history. However. All Rights Reserved. Copy Plot to Clipboard. Note that this is different than exporting the detailed results from the Experiment Design window. Maximum Value. while Export Details provides users with the exact Response Value for each unique ScenarioResponse-Repetition combination. Upper and Lower Percentile values.are used to construct the SMORE plots for each Response including the Mean. Users can use this data to create their own plots if they wish. and Export Details buttons have been added to the Ribbon. . Minimum Value. Export Summaries. Exporting Summaries allows the user to export what they see in the Raw Data Tab. Simio LLC . Mean C onfidence Interval Half Width. the bounds for Percentile C onfidence Intervals. Send comments on this topic to Information C opyright 2006-2011. compares it to the previous response from the prior scenario. C ommercial customers who have not purchased OptQuest will find that it works in evaluation mode. maximizing profit or minimizing cost). For detailed information on this example. and retrieving results. When the Add-In is launched. After the second scenario runs. etc. OptQuest in included with our non-commercial academic products but in such case is subject to the same limitations of non-commercial use only. Simulation models are usually used within the context of a decision making process. This process of obtaining results and comparing to previous objective values repeats over and over again until OptQuest meets one of its terminating criteria – either after reaching the maximum number of iterations or if OptQuest has determined the objective value has stopped improving. OptQuest adds its own parameters in addition to the ones provided by the standard Experiment. OptQuest Licensing OptQuest is an optional add-on to Simio. contains an experiment that is set up to use the OptQuest Add-in. When the optimization runs. C onfidence Level – The level of accuracy you want Simio to use when calculating confidence intervals for statistics . OptQuest retrieves the response values needed for the objective function and uses its set of algorithms to determine the value of the next set of inputs to create. Once the problem is described by defining the controls. Evaluation mode allows a maximum of two controls and two constraints. it once again analyzes the response given to it by Simio. OptQuest enhances the optimization capabilities of Simio by searching for optimal solutions to your models. objective. l Scenario Status – Reflects the state of the scenario. An OptQuest Example The AirportTerminal model that is part of the Simio example models available with the Simio installation.e. Standard Simio Experiment properties/parameters can be found in the Properties window of the Experiment (select Experiment in the Navigation window and right click to select Experiment properties): l l l Warm-up Period – The amount of time the user specifies to get the model to steady-state or to the level of interest Default Replications – The number of replications to be run by each scenario. C ompleted – All replications complete Replications Required . OptQuest operates and appears very similar to a Standard Simio Experiment. After the first scenario. You describe your simulation problem to OptQuest and it searches for input controls to maximize or minimize your objective (i. OptQuest starts to run replications of the first scenario. and then returns values to be considered in the next scenario. Instead of using the algorithms to optimize a set of mathematical equations. For commercial users. How OptQuest Works OptQuest makes use of intelligent search methods and incorporates its special optimization algorithms alongside Simio’s modeling power. and will produce a maximum of 20 scenarios. OptQuest requires activation to exploits its full capabilities.e. It then uses these inputs to run the next scenario and repeats this process until it reaches a specified stopping condition or you stop the session. and constraints. and once again returns new values to be evaluated by Simio. 001.Reflects the number of Replications that Simio is scheduled to run. It may be purchased when you purchase Simio or it may be added on later. starting replications. This can be done by varying several different input value combinations eventually leading to an optimal solution.Defaults to a standard scenario number (i. evaluating different possibilities for the models controls and how these possibilities affect the system. it uses them to optimize a set of stochastic process interactions. but it is easy to see that it could get quite tedious as the complexity expands. OptQuest starts the simulation by first resetting the run and changing the values of the input properties to those identified by the Add-In. 002. After the scenario runs. What does OptQuest do to my Simio Model? OptQuest takes on the duties of setting property values. When a standard Simio experiment first opens there are four default columns: Scenario Name . OptQuest evaluates the responses of the scenario. OptQuest has enough information to begin running scenarios. Simio has the ability to create experiments allowing users to enter input values and run multiple replications to return estimated value of the system performance.Simio D oc umentation OptQuest Add-In What is 'OptQuest for Simio'? OptQuest is offered for Simio as an add-on optimizer to the standard Simio products. Then. Experiment Properties Also. Status has five possible values: l ¡ ¡ ¡ ¡ ¡ l Idle – Experiment has yet to run Pending – Scenario is scheduled to run Running – Scenario has started but has not completed required number of replications C anceled – Scenario has been canceled during a run. What does an unlicensed version of OptQuest allow me to do? The unlicensed version allows a maximum of 2 controls. see Experiment Example. This defaults to five but you can manually enter the number of replications required before running the experiment. This method works well for simple models. 2 constraints.) but you can rename them any name that you want. OptQuest helps remove some of the complexity by automatically searching for the optimal solution for you. The Experiment Design Window Because OptQuest is provided by Simio as an Add-In. l Replications C ompleted – The number of replications that are complete at the current point in time. and will produce a maximum of 20 scenarios. analyzes. Experiment Parameters Controls The OptQuest Add-In adds additional properties to the input C ontrols. These are all grouped under “C ontrols” and the columns are colored blue. l Primary Response – The Objective Function (discussed further in Objective Function Section) l Simio will automatically import all of the model’s user defined properties and referenced properties (initially populated with their initial values) as C ontrols for the experiment as columns.Upper Percentile . l Lower Percentile . For example. Simio will run more replications to reduce the variability. l C onfidence – The level of accuracy you want OptQuest to use when statistically comparing one response value to another l Error Percent – Percentage of mean in which the half-width of the confidence interval is determined. After running the default number of Replications. OptQuest will determine if this condition has been satisfied. If not. Each C ontrol has a parameter called “Include in Optimization” with values of Yes or No. each Input C ontrol has a minimum value. simply set this parameter to No and every scenario will use the default value for that property. The OptQuest Parameters will now be displayed in the Properties window.1 (or 10%).The percentile of data which is the upper bound of the box in the SMORE plot. Sometimes not all C ontrols are used in an experiment. that means that 75% of the data is lower than the value created by the plot. if it is set to 75%. Without OptQuest. For example. Using the OptQuest Add-In Go to the Add-Ins Section of the Design Ribbon and select “OptQuest for Simio” from the Select Add-In drop down list. With OptQuest. These new OptQuest parameters are: l l l Min Replications – The minimum number of replications you would like Simio to run Max Replications – The maximum number of replications you would like Simio to run Max Scenarios – Determines the maximum number of scenarios you want OptQuest to create. To exclude the control from the experiment. the confidence interval will be 50 ± 5. the user has to manually enter the combinations of C ontrol values that are to be tested. By default this is set to Yes. if the mean is 50 and you set the Error Percent to 0. and an increment size that dictates the step size for which OptQuest will move between the minimum and maximum values to create scenario combinations. Experiment Ribbon (Select OptQuest Add In From DropDown) Right-click on the experiment name and select Experiment Properties.The percentile of data which is the lower bound of the box in the SMORE plot. . It is possible that OptQuest will come to an optimum solution before it creates this amount of scenarios. maximum value. but will have its cell highlighted in red and will not be considered in optimization. which is reflected in the column header Expression – Where you enter the left-hand side of your expression or objective function. In addition. If the value is greater than the upper bound the cell will be shaded with a gradient that has more red on the right side of the cell. C onversely. you can add limits to responses to assist in identifying any scenarios that violate the limits. You can customize a Response column type with the information entered in the following properties: l l l Name – The name of this Response. Objective – Determines how OptQuest is to use the response information when determining the optimal solutions.Control Properties Responses To add a Response. the cell will be shaded towards the left side of the cell. simply click the Add Response button in the Experiment section of the Design Ribbon. Responses are designed to display the output from a model. The resulting Response column can either act as a purely informative display of a certain statistic of interest or an objective function that you are trying to optimize. the value will still be displayed. If a Response is found to be infeasible for a particular Scenario. Objective can either be: ¡ ¡ ¡ None – Just an informative response and not used to make decisions Maximize Objective – OptQuest drives the Experiment to achieve the greatest values for the objective function Minimize Objective – OptQuest drives the Experiment to achieve the lowest value for objective function l l Upper Bound – Any values for this response above this value are considered infeasible Lower Bound – Any values for this response that are below this value are considered infeasible Response Constraints . if the value of the Scenario is less than the lower bound. Constraints If you want to put a limitation on your experiment that involves input C ontrols “interacting” with each other – such as the sum of the lengths of a set of conveyors has to be less than a certain value – then you can represent this using a C onstraint column. 2. A general rule of thumb would be that you want to maximize your benefits and minimize your costs. All scenarios that violate input constraint bounds are discarded before running in Simio thus will never show up on the screen. C onstraints are added by clicking the Add Constraint button in the Experiment section of the Design Ribbon. To create an Objective Function to optimize you must do 3 steps: 1. Set the Objective Goal to Maximize Objective or Minimize Objective. Because this Response is used to summarize system performance. OptQuest will use this information to steer the experiment towards optimal value for this specific Response obeying the constraints given. In Summary: If all members of your system limitation expression can be represented by an input Control – use a Constraint. this column will only show values that are within the constraint bounds – this only works for linear constraints (no multiplication or division). If any member of your limiting expression needs to run a Scenario in order to be evaluated – use a Response . Constraint Objective Function An Objective Function is a Response that defines the key area of interest. . If the constraint is used to validate a set of manually defined C ontrols. C onstraints are designed to identify any out of limit controls that have been manually defined as well as to limit automatic creation (by OptQuest) of scenarios with controls that would be out of limits. For additional information on using Responses and C onstraints in an Experiment. If there are more costs. the expression is a sum of components multiplied by Weights. maximize the entire expression. 3. select the name of the response column containing the objective function to be used in the optimization from the drop down list located in the Experiment Properties window. In order for OptQuest to be able to run you must designate a Primary Response complete with an Objective Goal and a valid Expression. If an expression has more benefits than costs. minimize. Tell OptQuest what Response to optimize via the Primary Response property OptQuest can only optimize based on one objective function at a time. When using OptQuest. or goal of the Experiment. see the Responses and C onstraints page. a violated C onstraint will be shaded red in the same manner as a violated Response. with the Weight representing the amount of benefit or penalty of that C ontrol or Response. C reate an Expression that represents the performance of your system. The values displayed in a constraint column will be the value of the expression defined in the Expression property. Usually. although it is possible to have multiple Responses with Maximize Objective or Minimize Objective selected. To set the Primary Response. This expression can consist of one or multiple components (C ontrols and/or Responses). you must identify what constitutes optimal system performance and then let OptQuest know how to interpret the values for this Response. the variability of the system can act as another level of information as to which Scenario would be the best choice. the SMORE plot allows the user to see the variability behind the values and to make decisions accordingly. All Rights Reserved. Simio LLC . Although the Mean Value is the primary area of concern. in real time. . If two values have similar Means. Send comments on this topic to Information C opyright 2006-2011. The Optimal Solution would simply be the Scenario that is listed at the top of the Primary Response C olumn in the Design Tab or the furthest to the left in the Response C hart. the Objective function can be sorted before running the Experiment so that as OptQuest creates Scenarios it will plot Response values.Using a Primary Response Results and the Optimal Solution The Objective Function will be graphed using Simio Measure of Risk & Error (SMORE) Plots. ranked either ascending or descending. To easily spot the Optimal Solution. an experiment for that model is to create multiple scenarios for that system and pick the best one to implement in the future. to be either Maximize or Minimize. the cells in a Response column will be highlighted brown if they are considered to be “Rejects” leaving the “Possible Best” scenarios with their intended coloring. A scenario can have a cell in one column considered “Possible Best” and at the same time “Rejects” for another response. Nelson from Northwestern University. and often. and conversely the Minimize Objective will group together the smallest response values. Send comments on this topic to Information C opyright 2006-2011. With this visual feedback. a confidence around the mean and allow for sorting based on comparison of the means. A user is inclined to pick the scenario with the highest/lowest mean with little to no information regarding how the scenario compares to other alternatives. Maximize Objective will group the values that are statistically greater than the group of rejects. The Possible Best group will consist of scenarios that cannot be proven statistically different from each other. a user can easily see what scenarios are worth further examining using the 'Select Best Scenario Using KN' Add-In. it is extremely important to accurately choose the best alternative for the system being studied. . To indicate what constitutes “Best” the user will define a Response’s Objective in the Response Properties window. Therefore. All Rights Reserved. but can be proven to be statistically better than all of the scenarios in the Rejects group. He has come up with a series of algorithms that group Response values into the subgroups “Possible Best” and “Rejects” within each Response.Simio D oc umentation Scenario Subset Selection Subset Selection In general. In the Experiment Window’s Design window. A common comparison technique is to display a mean. Simio LLC . the purpose of creating a simulation model and. subsequently. There has been considerable effort to research and develop statistically valid Ranking and Selection procedures over the past several decades – a significant amount of which was done by Barry L. 850 and $24. 3.800 is rejected and you continue to look for cars until you have exhausted your search and are down to one for $24.Simio D oc umentation Select Best Scenario Using KN Add-In Select the Best Scenario using KN What is 'Select the Best Scenario using KN'? This free Add-In implements the procedure developed by Seong-Hee Kim and Barry L. The Add-In will then run a fixed number of additional replications for each scenario and analyze the results to determine if any of the candidate scenarios can be deemed as rejects. This feature will present to you a set of Possible Bests. and is required for the Add-In to operate. All Rights Reserved. As it is executing it will “kick out” scenarios that are not a candidate for the best. This Add-In is designed to take it one step further to attempt to narrow it down to just one best as opposed to a set of possible bests. If a scenario is rejected. C onfidence Level – The statistical confidence in which the algorithm is to compare scenarios Indifference Zone – This is number is the smallest meaningful distance between the best response so far and the other candidate responses. with a few modifications to improve performance and make use of Simio’s multi-processor capability. These scenarios will be removed from the Response C hart. If two response values are separated by less than this number (i. It repeats this process. they are in “The Indifference Zone”) they are considered to be the same and either can be considered to be the best. Then you must select the Select the Best Scenario using KN Add-In in the Add-Ins section of the Design Ribbon. Send comments on this topic to Information C opyright 2006-2011. you would consider them to be the same price. 251-273. the $25. and no more replications will be performed on those scenarios. press the Run button and the Add-In will do all of the work. .900. the Experiment Properties will now show a “Select the Best Scenario using KN – Parameters” section with three new Parameters: 1. 2. If it reaches this limit. Now.e. Once you have all your parameters defined correctly. An interesting scenario is one that after running an initial number of replications still may possibly be the best.800.400. What does this Add-In do? It takes an initial set of scenarios and runs additional replications until it is confident that a particular scenario is the best. Nelson. sometimes this set will be just one scenario while other times it may be several. you are buying a car and have an indifference zone of $300 with an objective to minimize cost. Nelson (Kim and Nelson. or within a specified range of the best (called the indifference zone). running a fixed number of replications for each remaining candidate until one candidate can be selected as the best. L. you must first run an initial number of replications in order to determine a set of interesting scenarios. How does it work? The first thing that the algorithm does is force the scenarios with fewer replications to run until every scenario has the same number of replications completed. You have two cars that are considered to have the same price and now you make your decision based on color instead of price. After the Add-In is engaged. Simio LLC . it gets unchecked and no longer included in the selection process. This is the Response column that you are going to base your decision upon and represents the quality of your system. This Add-in incorporates their ranking and selection procedure as published. It will uncheck all scenarios except for the best. similar to an Objective Function. 2001) for selecting the best scenario. "A Fully Sequential Procedure for Indifference-Zone Selection in Simulation. Kim and B. S. The Add-In can only analyze one response at a time. ¡ For example.600 and the same model costs $25. After. and no definite best can be determined. Their procedure works with or without common random numbers. simply run your entire set of scenarios and make use of Simio’s Subset Selection feature. When to use this Add-In This Add-In is to be used with a set of “interesting” scenarios. If one car costs $25. You would keep looking at other versions of the same model until you found one listed at $25. so you must define a Primary Response in the Analysis window. How to use the Add-In As stated earlier. the add-in is done running there will be only one scenario left checked in the Design Tab and only one scenario in the Response C hart. it will just leave the possible bests left checked while unchecking the rejects. You must also define and Objective (Maximize or Minimize) so that the Add-In can determine what is considered “Best” – lower values or higher values. Replication Limit – The maximum number of replications you are willing to wait for the algorithm to find the definite best. To achieve this." ACM Transactions on Modeling and Computer Simulation 11 (2001). Simio D oc umentation Experiment Example An Example of Creating and Running an Experiment (Using the AirportTerminal Example Model) The Simio example model. This example contains three responses: Revenue. In an experiment that does not use the OptQuest Add In. The Primary Response property tells Simio which Response to use for determining the optimal solution. ID C heck. but not an objective. we want our optimal solution to be based on the Profit Response and the objective that is defined on that Response. In this example. Experiment Properties window (when OptQuest Add-In is used) The Upper Percentile and Lower Percentile properties are used in the SMORE plots. Experiment C ontols A C ontrol is automatically added to your experiment for any user defined properties that are at the model level. only the first two controls are included in the optimization because their Include In Optimization property is set to 'yes'. click on the New Experiment icon in the Project Home ribbon. contains an Experiment that utilizes the OptQuest for Simio Add-In. In this example. and the Objective property indicates that the profit value should be maximized. Note: To get the Experiment Properties window to display at any time. Scanner Stations. there are four model level Properties that have their Visible property set to ‘True’. The other two responses have an expression defined. Notice that in this example.spfx. C lick on the column header for Profit to see the properties of this Response. the minimum and maximum values to set this control to. The properties are: C heckIn Kiosks. But when the OptQuest Add-In is used. titled AirportTerminal. right click on the name of the experiment in the navigation window and select Experiment Properties. The properties indicate that the expression being evaluated is the value of the “Profit” OutputStatistic (look in the Elements panel within the model to see details on this statistic). . which tell OptQuest whether or not to include this in its optimization. You can also create a new experiment by right clicking on the name of the model from within the Navigation window. It is recommended that you familiarize yourself with this example in order to learn about the features and capabilities that available when running experiments in Simio. The following is a step by step approach on how this example experiment was created. To create a new experiment. which indicates that they will appear as a control in an experiment. and how to increment the value. C heckIn C lerks. Profit and C ost. Properties of the "Checkin Kiosks" Control Experiment Responses C lick on Add a Response in the Experiment Design ribbon to add a Response to your experiment. these controls do not have properties. Properties of the Response "Profit" Experiment Properties The Experiment properties for this example are shown below. you need to specify the following properties. it appears to contain only one scenario. until it has found the optimal solution. . In this example. Before the user hits the run button to begin the experiment. OptQuest decides how many replications are required for each scenario. indicates that a maximum of 10 scenarios will be run. Send comments on this topic to Information C opyright 2006-2011. the full 10 scenarios are run. based on your defined C ontrols. However.The OptQuest for Simio-Parameters section of the Experiment properties is where the user defines the information for the OptQuest Add In. Simio LLC . C onstraints and Objective on the Primary Response. All Rights Reserved. In this example. The Experiment property. the OptQuest Add In runs multiple scenarios. Max Scenarios. Simio will run a minimum of 6 replications and a maximum of 10 replications for each scenario. The report will contain information such as: l l l l l l l l l All of the models in the projects and all of the objects contained within each model The Nodes that are associated with each object and the Links that arrive to the object and leave from the object Properties that have been overrided from their default values C ustom Properties C ustom States C ustom Elements C ustom Processes and the Steps contained in each C ustom Tokens Tables and all of the data within the tables The Documentation Report icon in the Project Home Tab Send comments on this topic to Information C opyright 2006-2011. Simio LLC . . an HTML report is produced. All Rights Reserved. that contains the contents of the models located in the current project.Simio D oc umentation Model Summary Report Producing a Report Containing the Contents of your Model By clicking on the Documentation Report icon found in the Project Home tab. all deployed user defined elements will be available via the User Defined button in the Elements tab of the ribbon interface. l C omplete the implementation of the user extension and then build the . Simio LLC . when defining elements. For detailed information on the Simio API.com/express/Windows . a number of predefined Simio project and project item templates for Microsoft Visual Studio 2008 are available. or add an item to an existing project. By default. l Using a Deployed User Extension in Simio: In a model’s Processes Window.Net language such as Visual C # or Visual Basic .Simio D oc umentation Custom Simio Extensions Introduction Simio’s architecture provides several extension points where users can integrate their own custom functionality written in a . this directory is C:\Program Files\Simio\UserExtensions. several User Extension Examples are included with the Simio installation. see the file C:\Program Files\Simio\Simio API Reference Guide. In a model’s Definitions Window.Net. See Also User Extensions: Getting Started Using Simio Visual Studio Templates User Extension Examples Send comments on this topic to Information C opyright 2006-2011.Net project in Visual Studio 2008.chm. Additionally.dll) file. All deployed user defined selection rules will be available for use in a model as dynamic selection rules. l To deploy the extension. copy the . see Simio Visual Studio Templates. All Rights Reserved. . This set of interfaces is referred to as the Simio application programming interface (API). All deployed application add-ins will be available for use in a project via the Select Add-In button in the Project Home tab of the ribbon. The types of user extensions supported include: l l l l User Defined Steps User Defined Elements User Defined Selection Rules Application Add-Ins Simio’s extension points have been exposed as a set of interfaces that describe the methods and calling conventions to be implemented by any user extended components.microsoft. These templates provide reusable and customizable project and item stubs that may be used to accelerate the development process. General Steps to Create and Deploy a User Extension: The general recommended steps to create and deploy a user extension are as follows: C reate a new . using one of the Simio Visual Studio templates. Note that.Net assembly (. in addition to the commercial versions of Visual Studio. all deployed user defined steps will be available from the left hand steps panel under User Defined.dll file into the UserExtensions folder located in the Simio install directory. Simio Visual Studio Templates and Examples: To help get started creating Simio user extensions. For more information. Microsoft also offers “Express” editions which are available as free downloads from www. removing the need to create new projects and items from scratch. these custom Visual Studio templates will be installed at: l l My Documents\Visual Studio 2008\Templates\ProjectTemplates\[Language]\Simio User Extensions My Documents\Visual Studio 2008\Templates\ItemTemplates\[Language]\Simio User Extensions For example. To install the templates. Note that. assuming default Visual Studio options settings. First select the 'Simio User Extensions' category and then select the desired template. . go to the Windows Start menu. the following directory would contain the custom Visual C # project templates: C :\Documents and Settings\UserName\My Documents\Visual Studio 2008\ProjectTemplates\Visual C #\Simio User Extensions Using the Simio Visual Studio Templates: Once the templates have been installed. they will be available for selection in the New Project and Add New Item dialog boxes in Visual Studio. and select the Simio>Advanced>Install Simio Visual Studio 2008 Templates menu item.Simio D oc umentation Simio Visual Studio Templates User Extensions: Getting Started Using Simio Visual Studio Templates To help get started creating Simio user extensions. removing the need to create new projects and items from scratch. Refer to screen shots of those dialogs below. These templates provide reusable and customizable project and item stubs with example code snippets that may be used to accelerate the development process. Installing the Simio Visual Studio Templates: Simio Visual Studio templates are installed separately from the Simio application. a number of predefined project and project item templates for Microsoft Visual Studio 2008 are available to be installed. dll file. All Rights Reserved. Restart Simio and it will automatically find that . move the . Send comments on this topic to Information C opyright 2006-2011.Adding Simio Templates into Visual Studio After creating your custom project in Visual Studio and building the .dll file into the C :\Program Files\Simio\UserExtensions directory. Simio LLC .dll and recognize your custom user extension. . C loseGate. Simio LLC . l User Defined Selection Rule Examples l SimioSelectionRules – This folder contains the implementation of several custom selection rules. A BinaryGate element may be added to a model to specify an ‘Open/C losed’ constraint. By default. The File element may be added to a model to specify an external file name. these examples are installed in the directory C:\Users\Public\Public Documents\Simio\Examples\UserExtensions. Application Add-In Examples l SourceServerSink – This folder contains an example project implementing a custom add-in that places Source.. The PassThruGate step may be used in process logic to only allow an executing token to continue (i. Send comments on this topic to Information C opyright 2006-2011. The Read and Write steps may then be used in process logic to perform runtime read or write to a specified File element. and PassThruGate steps. l BinaryGate – This folder contains an example project implementing a custom BinaryGate element and custom OpenGate. ‘pass thru’) to the next step in the process if the specified BinaryGate element is ‘Open’. and Sink objects from the Simio Standard Library into the current model.Simio D oc umentation Simio User Extension Examples Simio User Extension Examples Several user extension examples are included with the Simio installation. The OpenGate and C loseGate steps may then be used in process logic to open or close a specified BinaryGate element. Server. . User Defined Step and Element Examples TextFileReadWrite – This folder contains an example project implementing a custom File element and custom Read and Write steps.e. including commonly used ‘Largest Value First’ and ‘Smallest Value First’ rules. All Rights Reserved. and connects those objects using Path objects from the Standard Library. Simio D oc umentation Dynamic Selection Rules Dynamic selection rules allow various places in Simio to select from a set of things based on some dynamic criteria. The rule starts with the highest value. All Rights Reserved. These rules are used in Resource allocation selection. . and selects entities with decreasing values. The rule starts with the lowest value. by implementing the interfaces ISelectionRuleDefinition and ISelectionRule. Campaign Up Selects the entity with the same or next highest value for the given Value Expression from the last time the rule was called. Campaign Cycle Selects the entity with the same or next lowest (or highest) value for the given Value Expression from the last time the rule was called. Most of the time you will want to use the keyword C andidate when entering an expression. See Also ISelectionRuleDefinition ISelectionRule Send comments on this topic to Information C opyright 2006-2011. see C ustom Simio Extensions. The rule starts with the lowest value. and Station entry selection. the entity with the highest value is selected. When there are no entities with higher values. Campaign Down Selects the entity with the same or next lowest value for the given Value Expression from the last time the rule was called. Largest Value First Selects the entity which would have the largest value for the given expression. When there are no entities with higher values. For more information about creating your own Dynamic Selection Rules. the sequence is reversed. Built In Rules There are five built in selection rules. The C # sources to these rules are provided at [All User Documents] \Simio\Examples\UserExtensions\SimioSelectionRules\. Smallest Value First Selects the entity which would have the smallest value for the given expression. Several domain specific rules can be used by simply using the right expression in one of the rules. Users can write their own rules in any . and the next lowest value is selected. When there are no entities with lower values. Simio LLC . These rules were built to be as generic as possible. the entity with the lowest value is selected. and selects entities with increasing values.NET language. and selects entities with increasing values. Routing Group route request selection. Simio LLC . select the model that you would like to protect. . Note that protection is at the object/model level. You will be provided the opportunity to enter a password. Protecting a Model (select the Project in the Navigation window) Send comments on this topic to Information C opyright 2006-2011. The object can still be instantiated normally in another model. subclassing. some unprotected and others protected individually.Simio D oc umentation Protection Protection The protection feature allows an object builder to prevent an unauthorized user from viewing. Select the Protect icon from the ribbon. A project might contain multiple objects. This can be useful to protect your intellectual property or simply to prevent an object from being accidentally changed by a novice or unauthorized user. the user will be prevented from viewing or accessing the definition of any protected objects unless they have the password. To unprotect an object. or editing the object definition. To use this feature. select the object from within the Models panel of the Project window and select Unprotect from the ribbon. With the Models panel open. navigate to the Project window from within the Navigation window. All Rights Reserved. When a project containing a protected object is loaded. All Rights Reserved.Simio D oc umentation Appendix Send comments on this topic to Information C opyright 2006-2011. . Simio LLC . or Enterprise with Service Pack 1 or later.Net Framework Version 4. For example. you can display the Trace or Dashboard window on the second screen. If the system falls short in memory or graphics. Send comments on this topic to Information C opyright 2006-2011. . ***Not only can you use a second monitor for displaying help and documentation. Windows Vista® Home Premium. *Additional prerequisite software packages other than this product may require installation.Simio D oc umentation System Requirements Hardware Requirements l l l l l 1 GHz or faster processor 1G of RAM (2 GB or more recommended) Available hard drive space of 500 MB minimum for installation* 1. l Your system must also be capable of installing . 9 If you are using an existing system.g. we recommend getting one with dual or quad core processors because Simio takes full advantage of multiple processors**. All Rights Reserved. Most new systems come with adequate graphics cards. but most Simio windows can be undocked and moved to a second screen. note that most systems with inadequate memory can be easily and inexpensively upgraded. Ultimate. Software Requirements l Microsoft® Windows® XP Professional Edition with Service Pack 2 (Service Pack 3 or later recommended). or Microsoft® Windows® 7. **Multiple scenarios and replications run in the Experiment Window take full advantage of each available processor (e. If you are buying a new system. Or you can simply have the animation span two screens. a quadcore processor will execute 4 replications or scenarios simultaneously). Simio LLC . perhaps 1920x1200 and perhaps even a second monitor – again Simio takes full advantage of higher resolution and multiple monitors***. and these other packages may require additional available hard drive space for installation purposes. Business. then the above guidelines should provide acceptable performance.024x768 display (higher resolution recommended) A 16-bit graphics card with 128 MB compatible with DirectX ver. but we would recommend a higher than standard screen resolution. Additional memory will allow larger models to run. Likewise often graphics cards can also be easily upgraded.0 C lient Profile. Once DXSETUP.NET Framework Version 4. Step 3 If you have not already installed Simio.exe is finished. you can download it from the . Or you can find them in the install folder (by default \Program Files\Simio). Simio only requires . Step 1 .aspx?displaylang=en&FamilyID=0cf368e5-5ce1-4032-a207-c693d210f616) First create a new directory on your desktop called DirectXInstall.exe. If you have difficulties during download or installation. Step 2 . the install will fail. Note: On Vista and Windows 7 machines. When prompted. you may do so by bringing up the Simio Licensing window by clicking on Application Button in the top left side of Simio and clicking on the Licensing button.exe. watch for a confirmation dialog halfway through the installation to provide administrative approval. To change the type of license you'd like to use. while the Web version requires an internet connection during installation. These instructions are only for users of the network client/server activation. you can delete both the new directory on your desktop and directx_mar2009_redist. This should install the proper DirectX components onto your machine.com/downloads/public/SimioNetworkLicenseServer.exe. You can then start installing Simio by opening that directory and starting setup.aspx?FamilyID=5765d7a8-7722-4888-a970-ac39b33fd8ab&displaylang=en – . Now. choose the DirectXInstall directory on your desktop as the location to extract the contents of the archive.0 C lient Profile Web Installer It may also be installed by doing a Windows Update. you will find the latest instructions and support files in a separately available file named SimioNetworkLicenseFiles.Install .zip.net/scripts/texcel/C ustomerWise/C Login. If the requirements below have not been previously installed on your machine. The Simio Release Notes and the Simio Reference Guide are both available using the links on Simio’s Start Page.exe from the downloaded Simio zip file.net/scripts/texcel/C ustomerWise/knowledge/kbuild.devsuite. Universities & Network Activations – see important note below. The Standalone version is a larger download.microsoft. click on the link at the bottom of this window that reads C hange License Type .microsoft. (http://www.microsoft. You can download the C lient Profile via a Standalone Installer or Web Installer..microsoft. and Student versions of Simio. If you are the person responsible for installing and configuring the network license server.com/downloads/en/details.com/downloads/details.NET C lient Profile. you can go to our on-line knowledgebase and search on the keyword install for many useful articles: http://simio.0 C lient Profile Standalone Installer http://www.pdf.simio. If you do not accept this within a short period of time.Simio D oc umentation Installation and Activation Recommended Automatic Installation Unzip the contents of the Simio .exe double click to open it. .0 Client Profile. Do not use this for the node-locked activation provided with Design.aspx) – Full . If the framework is not already installed on your computer and you want to perform a manual install. depending upon your particular system configuration.dll?htmledit?rHjgyljyhjyf Note for Network Version Some Simio versions come with network client/server activation capability available. go into the DirectXInstall directory.aspx?FamilyID=e5ad0459-cbcc-4b4f-97b6-fb17111cf544&displaylang=en – .NET 4. the setup.NET 4 Client Profile Simio requires the . Switching Between Network and Local License If you would like to switch between using a local license and using a license on the network.NET 4 Framework However. You can download a recent version of just the instructions here: http://www. Note for Universities Installing a large number of copies across a network? Look in this knowledgebase item for a helpful tip: http://simio. Express.devsuite. and double click on DXSETUP.com/en-us/netframework/aa569263.NET 4.NET Framework Downloads page: (http://msdn2.exe will install them for you. When you have downloaded directx_mar2009_redist.dll?ProjectID=20 Optional Manual Installation Procedure The above automatic installation procedures work for most people. you can now install the Simio software itself by starting setup. http://www.com/downloads/en/details. but if you have system-specific problems you may manually install the required software by following the instructions below.Install DirectX In order to use the 3D features.zip file into a temporary directory anywhere on your machine. you may also need to install the DirectX End-User Runtimes from March 2009. All Rights Reserved. .Licensing Window Send comments on this topic to Information C opyright 2006-2011. Simio LLC . is if you've created a new object by subclassing one of our standard objects and you do not want your custom logic to be affected.Simio D oc umentation Check For Updates Standard Library Updates Over time. you can bring it up by clicking on the Check for Updates icon in the Project Home ribbon. they are all selected for updating since we suggest this approach by default. When this occurs. . we suggest that you update all of the objects that have been changed. The first way is when the model is first loaded into a new version of Simio that contains updates. we would like to give our users the option of updating the object definitions in their existing models or the option to not use the new changes to the object definition. So if you have decided to not update certain updates when the project was first loaded. Simio might make changes to the objects that are part of the Standard Library. that gives you the opportunity to select which objects you'd like updated. A scenario when you might consider not accepting an update. The Object Updates Available Window The user also has an opportunity to open the Object Updates Available window from within the project. As a general rule. Simio provides two different ways to update your objects. The user is presented with the Object Updates Available window. but then you would like to open the update window again after you've looked more closely at your objects. as shown below. By default. All Rights Reserved. .Clicking on the Check for Updates icon Send comments on this topic to Information C opyright 2006-2011. Simio LLC . INDIREC T. INC IDENTAL. This Software is licensed to You -. . GRANT OF LIC ENSE Provided You comply with all the terms and conditions of this EULA. SIMIO does not warrant preproduction releases. FOR LOSS OF PRIVAC Y. AC C ESS. and all accompanying written materials and retain no copies. IF YOU DO NOT ACCEPT THESE TERMS ("TERMS"). DO NOT USE THIS SOFTWARE. These Sample Project files are intended to be used for example only. The replacement of the Software not meeting the Limited Warranty specified above which is returned with proof of purchase. It will also automatically terminate if You fail to comply with any term or condition of this EULA. USING THIS SOFTWARE INDICATES THAT YOU ACCEPT THESE TERMS. decompilation. or 2. reverse assembly. WHETHER OR NOT INSURED. SIMIO and its third party licensors make no representations or warranties regarding Your use of the Sample Project files and related Documentation. This EULA supersedes any prior license with respect to Your use of the Software. YOU AC C EPT AND AGREE TO BE BOUND BY THE TERMS OF THIS EULA BY INSTALLING. a network server. Such releases are provided on an “as is” basis. INSTALL. INC LUDING (WITHOUT LIMITATION) ANY WARRANTY OF TITLE. which includes computer software and may include associated media (“Software”). and “online” or electronic documentation ("Documentation"). FOR LOST SAVINGS. The Sample Project Files may be contained in the Software. ("SIMIO”) for the software product or products that SIMIO licenses to You. This License does not grant You the right to provide or utilize the Software as an application service provider or the like. ALL OF THESE DISC LAIMERS AND LIMITATIONS OF REMEDIES AND/OR LIABILITY WILL APPLY REGARDLESS OF ANY OTHER C ONTRARY PROVISION OF THIS EULA OR ANY OTHER AGREEMENT BETWEEN YOU AND SIMIO AND REGARDLESS OF THE FORM OF AC TION.Simio D oc umentation Terms of Use (EULA) This is the End User License Agreement. FOR BUSINESS INTERRUPTION. YOU REPRESENT AND WARRANT THAT YOU HAVE FULL AUTHORITY TO BIND THAT PERSON. SAMPLES The Software may contain samples that are provided as an accommodation to You (“Sample Project Files”). An amendment or addendum to this EULA may accompany the Software. TO THE MAXIMUM EXTENT PERMITTED BY LAW THE FOREGOING LIMITED WARRANTY IS IN LIEU OF ALL OTHER WARRANTIES. You agree on termination of this EULA to either return to SIMIO or destroy all copies of the Software and Documentation in Your possession. Unauthorized copying. NONINFRINGEMENT OF THIRD PARTY RIGHTS. You may not transfer the prior version to another user. rental. IF YOU DOWNLOADED THE PROGRAM. PUNITIVE. C OPY. reverse engineering. lease. AND SIMIO DISC LAIMS ANY AND ALL IMPLIED WARRANTIES OR C ONDITIONS. provided: (1) You transfer this EULA. MERC HANTABILITY OR FITNESS FOR A PARTIC ULAR PURPOSE OR ANY WARRANTY UNDER UC ITA. OR OTHERWISE USING THE SOFTWARE. BUT NOT LIMITED TO. AND YOU MAY ALSO HAVE OTHER RIGHTS WHIC H VARY FROM C OUNTRY TO C OUNTRY OR STATE TO STATE. and creating derivative works based on the Software are prohibited. However. You may terminate it at any time by destroying all copies of the Software and Documentation in Your possession. LIMITED WARRANTY The Software is warranted for ninety days after its initial delivery to You that it will substantially conform with its Documentation supplied by SIMIO at the time of initial delivery of the Software. C ONTAC T THE PARTY FROM WHOM YOU AC QUIRED IT. sale. INC LUDING THAT WITH RESPEC T TO DIREC T DAMAGES AND OBLIGATIONS UNDER ANY INDEMNITY.not sold. that the operation of the Software will be uninterrupted or error free. SO THE ABOVE LIMITATION MAY NOT APPLY TO YOU. SIMIO may provide LIC ENSEE with a preproduction release of the Software (often labeled a “beta release”). Your rights to use the Software are only those rights specified in this EULA. OR USE THE SOFTWARE. AC ADEMIC USE If this Software was purchased for academic or research use by an educational institution. DO NOT DOWNLOAD. If this Software is an upgrade or update to a previous version of a SIMIO product. (2) the recipient agrees to the terms of this EULA. Documentation or downloaded from the SIMIO website. SIMIO and its third party licensors grant You a non-exclusive license to install and use the Software on a single computer. teaching and research purposes. C lick here to see the Run Time C apability. OR C ONSEQUENTIAL DAMAGES WHATSOEVER (INC LUDING. EVEN IF SIMIO OR ITS RESELLER HAVE BEEN ADVISED OF THE POSSIBILITY OF SUC H DAMAGES. You may make a copy of the Software provided that any such copy is only for archival purposes to internally back-up the Software. LIMITATION OF LIABILITY TO THE MAXIMUM EXTENT PERMITTED BY APPLIC ABLE LAW. or is created as an essential step in the internal installation of Software within your organization. C OPYING. If SIMIO is unable to deliver replacement Software which meets the Limited Warranty specified above. express or implied. C lick here to see our Academic Use Policy. Any attempted sublicense. the Software. AND FOR ANY OTHER PEC UNIARY OR OTHER LOSS WHATSOEVER) ARISING OUT OF OR IN ANY WAY RELATED TO THE USE OF OR INABILITY TO USE THE SOFTWARE. LIMITATION OF REMEDIES SIMIO’s entire liability and Your exclusive remedy for breach of the Limited Warranty shall be: 1. which is how the software works for someone without a commericial license. THIS WARRANTY GIVES YOU SPEC IFIC LEGAL RIGHTS. and SIMIO or its reseller will refund Your purchase price. AND FURTHER WILL EXTEND TO THE BENEFIT OF SIMIO’S VENDORS. The Documentation is copyrighted. You may transfer rights to use the Software on a permanent basis. This Software is protected under applicable patent and copyright laws. SOME C OUNTRIES AND STATES DO NOT ALLOW THE EXC LUSION OF IMPLIED WARRANTIES. OR LEGAL ENTITY TO THESE TERMS. SIMIO makes no representation or warranty. IF YOU ARE AC C EPTING THESE TERMS ON BEHALF OF ANOTHER PERSON OR A C OMPANY OR OTHER LEGAL ENTITY. You assume complete responsibility for decisions made or actions taken based on information obtained using the Software. These releases are not suitable for production use. TORT OR OTHERWISE. WILL NOT EXC EED THE C OST OF THE SOFTWARE GIVING RISE TO THE C LAIM OR LIABILITY. TERM AND TERMINATION This EULA takes effect upon Your use of the Software and remains effective until terminated for any reason. WHETHER IN C ONTRAC T. SOME C OUNTRIES DO NOT ALLOW THE LIMITATION OR EXC LUSION OF LIABILITY FOR INC IDENTAL OR C ONSEQUENTIAL DAMAGES. APPOINTED DISTRIBUTORS AND OTHER AUTHORIZED RESELLERS AS THIRD-PARTY BENEFIC IARIES. SIMIO'S MAXIMUM C UMULATIVE LIABILITY RELATIVE TO ALL C LAIMS AND LIABILITIES. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ATTENTION: PLEASE READ THESE TERMS CAREFULLY BEFORE USING THIS SOFTWARE. You have the right to make copies of the Software (the media excluding activation) solely for academic. You may terminate this EULA by returning or destroying the Software as provided herein. it may be used for teaching and research purposes only. You may not make any other copies of the Software. END-USER LICENSE AGREEMENT IMPORTANT—READ THIS AGREEMENT C AREFULLY: This End-User License Agreement (“EULA”) is a legal contract between you (either an individual or a single entity) (“You or LIC ENSEE”) and Simio LLC . (3) the recipient agrees to follow the software activation process. or that the functions contained in the Software will meet or satisfy Your intended use or requirements. This warranty shall be void if You attempt to modify the Software in any way. IN NO EVENT SHALL SIMIO OR ITS THIRD PARTY LIC ENSORS BE LIABLE FOR ANY SPEC IAL. and (4) You first notify SIMIO in writing of the date of transfer and the recipient’s full name and address. C OMPANY. Only the instructor/professor registered to the Software is eligible to contact SIMIO for technical support and product updates. C ommercial use of the Software is prohibited if the software was intended for educational use. SIMIO may also license to You printed materials. AND PROMPTLY RETURN THE SOFTWARE WITH ALL AC C OMPANYING ITEMS TO YOUR PLAC E OF PURC HASE FOR A FULL REFUND. or on multiple computers owned or leased by the LIC ENSEE provided the number of installations and users is not greater than the number of valid software activations purchased. or commercial hosting of the Software is prohibited. DAMAGES FOR LOSS OF PROFITS OR C ONFIDENTIAL OR OTHER INFORMATION. SIMIO IS WILLING TO LIC ENSE THE SOFTWARE AND DOC UMENTATION TO YOU ONLY ON THE C ONDITION THAT YOU AC C EPT ALL OF THE TERMS AND C ONDITIONS IN THIS AGREEMENT. SO THE ABOVE EXC LUSION MAY NOT APPLY TO YOU. IF YOU DO NOT AGREE TO THESE TERMS. PREPRODUC TION RELEASES As an accommodation to LIC ENSEE. EXPRESS OR IMPLIED. without regard to any conflict of laws provisions. and your use of the Software will be deemed to be your acceptance thereof. consistent with the policies set forth in 48 C . the English version will prevail. Simio LLC . By accepting this EULA. You agree that You will not directly or indirectly transfer or use the Software except in compliance with applicable U. fitness for a particular purpose. Les parties reconnaissent avoir exigé la rédaction en anglais du C ontrat. whether written or oral. including all implied warranties and conditions of merchantability. or international patent or copyright law or any other law. EXPORT C ONTROLS You acknowledge that the Software is subject to the export control laws and regulations of the United States and any amendments thereof. and the remainder of this EULA shall continue in full force and effect. 12.R.R.F. SIMIO or its licensors own the title.7202-3 (JUN 1995). The Software may contain third party software which requires notices and/or additional terms and conditions. title and non-infringement.R.S. that provision of the EULA shall be enforced to the maximum extent permissible so as to effect the intent of the parties. 12.S. and other intellectual property rights in the Software and Documentation. or (ii) for acquisition by or on behalf of units of the Department of Defense. not sold. and any amendment or addendum to this EULA that accompanies the Software is the complete and exclusive agreement between SIMIO and You. OWNERSHIP The Software and Documentation are protected by patent. to be unenforceable.All such Sample Project Files are provided "as is".212. 227. The Software and Documentation is licensed. . In the event of a conflict between the English and other language versions. All Rights Reserved. If for any reason a court of competent jurisdiction finds any provision of this EULA or portion thereof. GOVERNMENT RESTRIC TED RIGHTS If You are a branch or agency of the United States Government.7202-1 (JUN 1995) and 227. and You further agree to the jurisdiction of the state and federal courts of Pennsylvania for any action that SIMIO brings against You. the following provision applies. The Software and Documentation are comprised of "commercial computer software" and "commercial computer software documentation" as such terms are used in 48 C . Nothing in this EULA constitutes a waiver of our rights under U. relating to the Software provided and the Documentation.F. This EULA may not be changed or modified except by an instrument in writing signed by a duly authorized representative of SIMIO. copyright. if any. MISC ELLANEOUS This EULA shall be governed by the laws of the State of Pennsylvania. This EULA. You agree to bring any action in connection with this EULA or the Software exclusively in the state or federal courts of Pennsylvania. Send comments on this topic to Information C opyright 2006-2011. The parties acknowledge that they have required the EULA to be drafted in English. consistent with the policy set forth in 48 C .F. copyright and other intellectual property laws and treaties. and supersedes all prior agreements. SIMIO disclaims all warranties with regard to this information. You agree to review such terms and conditions set forth therein. The United Nations C onvention on the International Sale of Goods will not apply. Such required third party notices and/or additional terms and conditions are identified in the Software and are made a part of and incorporated by reference into this EULA.212 (SEPT 1995) and are provided to the Government (i) for acquisition by or on behalf of civilian agencies. export laws and regulations. It provides the ability to load a model. . save model changes. and execute custom user-written steps and elements. Only Simio Team Edition is capable of creating models that will run in Interactive Runtime. There is no charge for any such distribution Two runtime modes are available: Interactive Runtime Uses Simio Evaluation Version which is available free to anyone and may be used without activation. run it interactively to view the animation. All Rights Reserved. it provides the ability to load and run models. Model changes cannot be saved nor is the capability provided to run experiments or execute custom user-written steps and elements. And you are free to distribute outside of your organization if you choose. run experiments. Design and Team Editions can create models for use with Full Runtime. Send comments on this topic to Information C opyright 2006-2011.Simio D oc umentation Run Time Capability Description of Run Time Capability Runtime is the ability for people to execute a Simio model without investing in that design-time version of Simio. Simio imposes no limits to the number of models you can distribute or the number of people you distribute to. and even change the model at will. Full Runtime Uses Simio Express Edition. Simio LLC . In addition to the substantial modeling features built into Express. The normal cost of Simio Academic Edition is 20% of the retail price or about $2000 US. We will provide the licenses you need for installation in classrooms and computer labs as well as any other institutional computers. You can find out more about these on our products page. We will supply the institution with a link where students can obtain their own software and activations for a nominal fee. and 3D animation. In this case a commercial version of Simio must be used.Simio D oc umentation Academic Use Policy Our intent is to make top quality simulation software available for educational use at no charge. Get Started Now To obtain software. This software has no model size limits and is functionally equivalent to Simio Design Edition including discrete and continuous modeling. Academic Version Academic institutions are eligible for Simio at no charge. Simio Evaluation/Training Version The Evaluation/Training Version is freely downloadable from our website. We also provide full capability software for undergraduate and graduate student use on their personal (non-university) computers while enrolled in a registered simulation course. They are both full featured including discrete and continuous modeling.simio. it retains full model-building capability. How results are used seems a reasonable way to differentiate commercial applications. phone. . If you exceed those limits. Projects: We understand that student projects often involve commercial systems. web address Primary contact name. object library development. Simulation results consist of the models.com/order-simio-academic-software or contact our sales group (sales@simio. and 3D animation. Definition of Academic Organizations: Many commercial organizations such as service companies and hospitals also have an academic component that offers training or teaching. summarized results. then the project is typically considered to be non-commercial. You may use Simio Design Edition or Team Edition. Most institutions will be able to supply the Academic Version to their students. We feel that companies who realize financial benefit from simulation should pay fair market value for any software and services required. How results are used seems a reasonable way to differentiate commercial applications. reports. July-December) For course materials and suggested resources. address. Both products below are the functional equivalent of Simio Design Edition. Simulation results consist of the models. summarized results. The intent of this program is to make top quality. email. All Rights Reserved. l For borderline or questionable projects contact Simio for a predetermination or a possible exception to this policy. follow this link: http://hs. visit the Simio Academic Resources page on our website. address Names and emails of professors or other staff authorized to contact us for support Names and emails of graduate students authorized to contact us for limited support Total number of University Version activations desired for installation on university computers Estimated number of Student Version activations per 6 month period (Jan-June. The activations supplied to individual students are for 12 months. We recommend using the Team Edition so that you may distribute the project to others for use in runtime mode. While this is useful for personal learning and short classes. To that end. code-free object creation. then we still have a solution for you. reports. and other similar artifacts of a simulation project. and other similar artifacts of a simulation project. object library development. Limitations for Educational Use The Academic and Student Versions may not be used for commercial work. An organization will be considered to be commercial unless formal education is the primary service delivered or prior written authorization from Simio LLC is provided. If all simulation results are publicly available (as in typical academicfocused projects). It works in two modes: As long as you are building small models (up to 18 objects and 16 steps) it has full capability for modeling and analysis. l If any results are shared privately with the commercial organization. If your project is commercial. animations. Student Version Students may use the Academic Version installed in institution labs and classrooms at no charge. however we provide full-capability software at no charge to academic institutions that teach Simio and publicly acknowledge the grant. Simio LLC . People: Only currently enrolled students and currently employed professors/teachers are authorized to use academic software. then the project will generally considered to be of commercial benefit and is an invalid use of academic software. state-of-the-art software available for academic use at little or no cost.com) with the following information: l l l l l l Academic institution name. l If all results pertaining to a project are either not shared or are made publicly available (such as a published thesis or undergraduate student projects published on a publicly accessible web site) then it is typically considered to be a valid use of academic software. the small-model limitation generally makes it inadequate for a classroom environment where larger problems and projects may be involved. Send comments on this topic to Information C opyright 2006-2011. The Student Version does have model size limits. but they are large enough to complete even large projects and may be expanded on request. All academic products are limited to non-commercial use by accredited institutions whose primary business is teaching. We understand that student projects often involve commercial systems and we support that. academic software may not be used to directly benefit a commercial entity. but loses the ability to save the model or run experiments. animations.
Copyright © 2024 DOKUMEN.SITE Inc.