Simulation Using Promodel System Definition • What is a system? ----System is a collection of elements that functions together to achieve a desired goal • A system consists of multiple elements • Elements are interrelated & work in cooperation • A system exists for achieving specific objectives SYSTEM to ProModel MODEL entity arrivals L E L L entity exits L EXIT ProModel Modeling Elements entity arrivals The main elements are: • LOCATIONS (object) • ENTITIES (object) L E L • ARRIVALS (interaction) • PROCESSING (interaction) L • RESOURCES entity exits L EXIT ProModel™ - Sequence • It is usually easier if you draw a picture / flow chart / etc. • It is also usually easier to work backwards ProModel™ - Sequence Once a clear picture of what is required is defined, then declare and define the following modules within ProModel: • • • • • • Locations Entities Arrivals Processing Variables … ProModel™ - Locations • Locations represent fixed places in the system where entities are routed for processing,delay, storage, decision making, or some other activity. • some type of receiving locations to hold incoming entities. • processing locations where entities have value added to them. ProModel™ - Locations Things to define in the Location module found under the “Build” tab: • Name • Capacity – How many entities at a time • Units – How many of this location type • DTs – Downtime logic (covered later) • Rules – Decision rules (FIFO, random, etc.) • Color, size, and layout placement can be done. ProModel™ - Entities • Anything that a model can process is called an entity. Some examples are parts or widgets in a factory, patients in a hospital, customers in a bank or a grocery store,and travelers calling in for airline reservations. • The entities are often also limited in number, depending upon the program type, so creativity may again be required. • Entities are discrete units that can be bundled. This aspect is covered later. ProModel™ - Entities Things to define in the “Entities” module under the “Build” tab: • Name • Speed of Travel (default is 150 fpm) • Color, size, etc. • Attributes are set by a separate module under “Build” and cover locations and entities. This is a future topic as well. ProModel™ - Arrivals • The mechanism for defining how entities enter the system is called arrivals. Entities can arrive singly or in batches. • Can be a single occurrence, infinite, or anything in between, as defined in the logic. • Each entity entering the system will have its own arrival protocol. ProModel™ - Arrivals Things to define for “Arrivals” under the “Build” tab: • Entity Name • Location of arrival • Quantity at each arrival • First time of arrival (default is when the system FEL causes the arrival) ProModel™ - Arrivals Things to define for “Arrivals” under the “Build” tab, continued: • Batch size: the number of entities arriving at a time (Qty each). • Frequency: the time between the arrivals of successive entities • Occurrences :the total number of batches of arrivals The batch size, time between successive arrivals, and total number of batches can be either constants or random (statistical distributions). • First Time:the first time that the arrival pattern is to begin is termed • Logic – Special conditions, etc. ProModel™ - Processing This is where the meat of the program is defined. • Processing describes the operations that take place at a location • such as the amount of time an entity spends there, the resources it needs to complete processing,and anything else that happens at the location, including selecting an entity’s next destination. ProModel™ - Processing Things to define for “Processing” under the “Build” tab: • Incoming Entity (one entry allowed) • Location – where the entity is NOW • Operation – What logical steps are to be applied to the entity at the location above. Can be waits, updates on tracking variables, costing, etc. • Output – Declare the SAME entity unless you are really intending to change entities in this step. ProModel™ - Processing Things to define for “Processing” under the “Build” tab, continued: • Destination – The target location. Can be more than one, but each location is defined separately, using the return key. If more than one location is used as a target, you need rules for selection. • Rule – This section defines the logic for how and which location gets the entity, whether as a preloaded subroutine or a user-defined subroutine. • Move Logic – Used for Resources, primarily. ProModel™ - Variables • Variables are used for tracking system, location and entity performance. • Can be used for verification purposes. • Essentially there is no limit on the number of variables that can be issued. VARIABLE (continued) • INC/DEC statements – INC variable ID, increment value DEC variable ID, decrement value – default increment/decrement value is one. • +, -, / , *, = • Valid in any logic field (operation, move logic) ProModel™ - Variables Things to define for “Variables” under the “Build” tab: • ID – Declares the variable name • Type – Integer or real, default is integer • Initial Value • Notes – Useful for large programs to track what this variable is supposed to do. • Icon – This tells you when a counter appears on the layout. ProModel™ - other elements • More items available, and to be discussed later: • Resources – Forklifts and the like. • Path Networks – used to constrain movements within a shop model, for example. • Arrays, Macros, User Distributions, etc. help convert the process into a definable model. • Background Graphics can be used for labeling and identifying components in a layout. ProModel™ - Distributions Distributions are declared in ProModel shorthand, thusly: • N(12,3) means a normal distribution with mean 12 and standard deviation of 3. • U(10,1) means a uniform distribution with a center of 10 and a half-width of 1 (ranges from 9 to 11). • T(1,2,3) means a triangular distribution with a minimum of 1, a mode of 2, and a maximum of 3. • E(5) means an exponential distribution with a mean time between events of 5. ProModel™ - Distributions • All distribution types have theoretical expected values and variances • The expected values are to be used for model verification in comparison to the modelgenerated confidence intervals. Limits of ProModel Student version • • • • • 20 Locations 8 Entity Types 8 Resource Types 5 Attributes 15 RTI parameters Buiding your First Model Customers visit the neighborhood barbershop Fantastic Dan for a haircut. • The customer interarrival time is exponentially distributed with an average of 10 minutes. • Dan (the barber) takes anywhere from 8 to 10 minutes, uniformly distributed (mean and half-width of 9 and 1 minute respectively) for each haircut.This time also includes the initial greetings and the transaction of money at the end of the haircut. • Run the simulation model for one day (480 minutes). Find these answers: Fantastic Dan Model a. About how many customers does Dan process per day? b. What is the average number of customers waiting to get a haircut? What is the maximum? c. What is the average time spent by a customer in the salon? d. What is the utilization of Barber Dan? ProModel™ - Attributes • Two types: Entity and Location. Entity is more common. • Attributes can be examined and acted upon by the logic in any part of the program from arrivals to departures. • Some examples of attributes are part type, customer number, and time of arrival of an entity, as well as length, weight, volume, or some other characteristic of an entity. • Attributes of an entity are copied over whenever an entity is cloned. This happens when entities are split, for example. ProModel™ - Attributes • Within ProModel, select the Attribute field from the drop-down Build menu. • The required elements are “name”, “type” (integer/real), and classification. • Values are assigned in the logic. • Attributes are especially useful when assigning a user condition for routing. Using Attributes to Track Customer Types Problem Statement: Customers visit the neighborhood barbershop Fantastic Dan for a haircut.Among the customers there are 20 percent children, 50 percent women, and 30 percent men. The customer interarrival time is triangularly distributed with a minimum,mode, and maximum of seven, eight, and nine minutes respectively. The haircut time (in minutes) depends on the type of customer and is given in following Table.This time also includes the initial greetings and the transaction of money at the end of the haircut. Run the simulation model for one day The Haircut Time for All Customers Continued a. About how many customers of each type does Dan process per day? b. What is the average number of customers of each type waiting to get a haircut? What is the maximum? c. What is the average time spent by a customer of each type in the salon? What is the maximum? Cycle Time • The Clock and Log are functions built into ProModel to allow us to keep track of system events such as cycle time, lead time, or flow time within the system. • The Clock function returns the current simulation clock time in hours, minutes, or seconds. • The value returned is real. • The Log function is used to subtract an expression from the current simulation. • clock time and stores the result with a text string header. Time_In = Clock() Log "Cycle Time =", Time_In Decision Statements • In ProModel you can make use of several general control statements for decision making. ProModel meets the modern standards of structured program design. sequences, decisions, and loops: • Sequences: Program statements are executed one after another. • Decisions: One of two blocks of program code is executed based on a test for some condition. • Loops: One or more statements are executed repeatedly as long as a specified condition is true. IF-THEN-ELSE Statement • An IF block allows a program to decide on a course of action based on whether a certain condition is true or false. • A program block of the form: IF condition THEN action1 ELSE action2 continued • WHILE-DO Loop The WHILE-DO block repeats a group of statements continuously while a condition remains true. If the condition is false, the loop is bypassed. • DO-WHILE Loop The DO-WHILE block repeats a group of statements continuously while a condition remains true. This loop will be executed at least once; use it for processes that will be executed at least once and possibly more. • GOTO Statement The GOTO block jumps to the statement identified by the designated label. A label should follow the normal rules for names. A colon follows a label. ProModel™ - Arrival Cycles • Used to meter arrivals, such as when lot sizing is used • Used to create a variable arrival cycle. This can model the customer flow to more accurately reflect peak vs. slow periods. ProModel™ - Arrival Cycles Build -> More Elements -> Arrival Cycles Fields: • ID – The user-defined name • Qty /% - Defines the basis for the total number of arrivals per cycle occurrence • Cumulative – Selects whether the cumulative format is used for the data table. • Table – Forwards the user to the edit field. ProModel™ - Arrival Cycles Table Editing • Two fields: Time and Qty / %. The time field is always cumulative in terms of hours. • The arrivals are randomly spaced within the arrival band. • Once the table is defined, the next task is to summon it from the Arrivals menu. ProModel™ - Arrival Cycles Arrivals Editing • The fields affected are the Qty each, Number of Occurrences and Frequency • Qty Each – Use the expression for the numerical quantity for the whole cycle, and select the cycle by name from the drop-down menu. • Number of Occurrences – Defines the number of cycles expected per simulation run • Frequency – Sets the time between the start of on cycle until the start of the next cycle. This must be longer than the cycle time or you will get a runtime error. Customer Arrival Pattern at Fantastic Dan Multicapacity locations. • Locations are modeled as a single unit with multicapacity. • All elements of the location perform identical operations. • When one element of the location is unavailable due to downtime, all elements are unavailable. Only clock-based downtimes are allowed. Multiunit Locations. • Locations are modeled as single capacity but multiple units. • These are locations consisting of two or more parallel and interchangeable processing units. • Each unit shares the same sources of input and the same destinations for output, but each may have independent operating characteristics. • This method provides more flexibility in the assignment of downtimes and in selecting an individual unit to process a particular entity. Multiple, single-capacity locations • Locations are modeled as individual and single capacity. • Usually noninterchangeable locations are modeled as such. • By modeling as individual locations, we gain the flexibility of modeling separate downtimes for each element. • In addition, we now have complete flexibility to determine which element will process a particular entity. Multi-Unit / Multi-Capacity / Multiple Locations L Single Unit Single Capacity L L L L Multi-Unit Single-Capacity LL Single Unit Multi-Capacity LL LL LL L L Multi-Unit Multi-Capacity Move Logic Four choices of constructs are available in the Move Logic field: • MOVE—to move the entity to the end of a queue or conveyor. • MOVE FOR—to move the entity to the next location in a specific time. • MOVE ON—to move the entity to the next location using a specific path network. • MOVE WITH—to move the entity to the next location using a specific resource (forklift, crane). Poly Furniture Factory • Wooden logs are received at the receiving dock of the Poly Furniture Factory at the rate of one every 10 minutes. • Logs go to the splitter, where four pieces are made from each log. The splitting time is Normal (4,1) minutes. • The individual pieces go to the lathe, where they are turned for another Triangular (3,6,9) minutes and made into rounds. • The rounds go on to a paint booth, where they are converted into painted logs. Painting takes Exponential (5) minutes. Painted logs go to the store. • Consider a material handling time of one minute between each process. Make a simulation model and run the simulation for 10 hours. Poly Furniture Factory ProModel™ - Resources A Resource is person, equipment item, or device that performs the following functions: • Entity transport • Assisting in operations (such as an inspection) • Location maintenance • Resource maintenance L E L L L EXIT ProModel™ - Resources • Resources can consist of one or more units with common characteristics, such as a group of forklifts. • Resources can be dynamic (requiring a path network) or static. Downtimes are also included as part of the model. • Resources have names and name-index numbers. Path networks also have names and nodes. ProModel™ - Resources Static Resources • Will appear in only one location during the operation of the model, however, it can be used logically to move entities between locations. • There is no status light, but the resource will be green when in use and red when down (if no other graphics are used). ProModel™ - Resources Dynamic Resources • Requires definition of the Path Network before creation, since it will be referenced in the Specifications dialog box. • The Specifications dialog box defines the rules by which the resource will operate. • Each Resource is defined using the Build -> Resources task sequence ProModel™ - Resources Fields for Building Resources • Name – The user-defined name of the resource • Units – The program will give it a suffix similar to the location • DTs – As for Locations, Clock and Usage only. Individual units can be selected. • Stats – As for Locations ProModel™ - Resources Fields for Building Resources, continued • Specs – Provides exact details for Resource implementation. set the speed, and define pickup / delivery times. • Search – Separate from the one in Specifications, this refers to the work search (where the jobs are) or the park search (where idle time is allowed) • Logic – Logic defined for when networks are accessed or left • Pts – Used for graphical location of icons ProModel™ - Resources Details on New Things • Specs – Subunits include the defined path network (not assigned if static), the node specifications, the search logic for resources and entities, and motion rules. • Node specifications – the “home” node is where the resource begins the simulation. Check the “Return Home” if the resource is to return to the home node if idle. Otherwise, it waits where it is. ProModel™ - Resources Specs, continued • Resource and Entity Search – These define the rules for selecting the next resource and entity to be used. • Motion – These define the speeds and handling times for entities processed by the resource. ProModel™ - Resources Dynamic Resources Resource Searches: • Work Search – A list of locations where entities are waiting for pickup. Can be exclusive (can only service its list), or nonexclusive (will default to the Resource Search rule if no work is available in its list) • Park Search – A list of nodes where the resource will park if no work is available ProModel™ - Path Networks • Select from Build -> Path Networks • Name – The network name • Type - Passing or non-passing, where the network segment has to be clear to run a resource along it • T/S – Selects the basis for measuring movement along the node, either as Time or Speed and Distance ProModel™ - Path Networks • Paths – The number of path segments in the network. Clicking on the heading button opens the edit table • Interfaces - The number of location-node interfaces in the network (entity dropoff / pickup points) • Mapping – Used to specify nodes for restricting movements • Nodes – The number of nodes in the network, controlled using the Node Edit table ProModel™ - Path Networks Path Segment Editing • From and To - The beginning and ending segment nodes. • BI – Used to specify whether uni- or bidirectional travel is allowed on the segment. • Distance (or Time) – The specified distance between the nodes. Default is based on the network graphic layout ProModel™ - Path Networks Interface Editing • Node - The node number • Location – Used to specify what location is attached to a node number. Locations can be only interfaced with one node, but a node can be interfaced with multiple locations • Mapping Editing – Multiple-branch networks will select paths with the minimum path length. Mapping forces a specified path for a given node destination. ProModel™ - Path Networks Node Editing • Node - The node number • Limit – The maximum number of resources that can occupy a given node. Blank means unlimited. • Path networks are assigned to resources using the resource dialog box described earlier ProModel™ - Path Networks Neat ways to avoid trouble • Start by defining the nodes in the “Node” menu. Make all locations singles, and left click to get the node spot. One node for each location. • Then, assign the nodes logically with the Interface editor by double-left-click on the spots just created ProModel™ - Path Networks • Neat ways to avoid trouble, continued • Next, build the network from the Paths editor using the left click, right click to set pairings. • Pay attention to which direction you are setting the segments, since that will be the direction assigned if the segment is a unidirectional one. ProModel™ - Path Networks • Today’s exercise: • Using the prologue model we have developed over the course of the lab, create a resource (forklift) and the associated path network. ProModel™ - Shifts & Breaks • Applies to Locations and Resources • Used to model a more typical workweek than the 40-hour continuous model. • Build -> Shifts -> Define • The editor window gives the user a menu, and a one-week block of time in graphical layout. ProModel™ - Shifts & Breaks • Creating a block of time can be done by dragging the cursor (similar to path networks). However, there are rules to be followed in this phase: • Shift blocks cannot overlap other shift blocks. • Break blocks must be drawn on top of a shift block. Break blocks also cannot overlap other break blocks. ProModel™ - Shifts & Breaks • Once created, time blocks can be edited by selecting the block and adjusting the parameter of interest. If changing, don’t forget to update the data. • Assigning shifts are done for locations and resources. Keep in mind that these are going to be specific resources / locations assigned to a specific shift regime. Sub-units can be independently assigned as well. ProModel™ - Shifts & Breaks The shift files must be defined, as well as the priorities for the following events: • Ending shift – An entity of higher priority can cause delaying of the end-of-shift event, otherwise the shift ends and work stops. • Off shift – Will stay unavailable unless forced by a higher-priority item. • Starting Break – Will go on break unless interrupted by a higher priority item. • Break – Will stay on break unless interrupted. ProModel™ - Shifts & Breaks Shift-specific logic: • Skip – Causes the skipping of a scheduled off-shift or break time • Priority – Changes the priority value of the shift block if desired. • DTLEFT() – Returns the remaining off-shift time • ForLocation(), ForResource() – Boolean flag for type of shift block encountered. Returns TRUE if the type matches the function call. • Resource() – Returns the name-index number of the resource currently processing the off-shift logic. Temporary Batching— GROUP/UNGROUP • For such temporary batching, use the GROUP statement. • For unbatching, use the UNGROUP statement. • Note :the capacity of the location where Grouping occurs must be at least as large as the group size. Permanent Batching—COMBINE • In some situations, multiple entities of the same type or different types are batched together permanently. • After batching, a single batch entity is formed, alternatively with a different name. • In such permanent batching, the characteristics of the individual entities are lost; that is, the individual entities cannot be ungrouped later. • When defining the location, the capacity of the location where you use the COMBINE statement should be at least as large as the combined quantity. Permanent Attachment—JOIN • Sometimes one or more entities are attached permanently to another entity, as in an assembly operation. • The assembly process is a permanent bonding: the assembled entities lose their separate identities and properties. The individual entities that are attached cannot be separated again. ProModel™ - Downtimes • These are elements used to model situations where a part of the simulation is not available for operations. • The setup field is available for Locations and Resources, primarily. • Types of downtimes include intentional (e.g. maintenance or breaks) and casualty. ProModel™ - Downtimes • For locations, select the Build -> Locations sequence. • For a given location, go to the DTs field and select the task button. • There are four types of downtime: clock, entry, usage, and setup. ProModel™ - Downtimes Types of Downtimes: • Clock – models downtimes on a time basis, regardless of entity usage. Downtime begins if no entity is being processed. • Entry – models downtimes on an entry usage basis, after the triggering entity has left the location. ProModel™ - Downtimes Types of Downtimes: • Usage – models downtimes on a time basis, regardless of entity usage. Blocked time is not included which differs from clock. Also, usage is only available for single-capacity locations. • Setup – models downtimes on an entry change basis, when the triggering entity has arrived at the location. Available only for single-cap locations, it models the setup time to swap tooling. ProModel™ - Downtimes Clock Fields • Frequency: Time between successive downtimes, can be scalar or expression. • First time: Determined by frequency logic if left blank. • Priority: Code assigned if downtime is preemptive, default is “99” if not assigned. ProModel™ - Downtimes Clock Fields • Scheduled: Determines whether the downtime is scheduled. If yes, the hours spent in downtime are not considered when determining utilization, percent down, etc. • Logic: Where the delay is defined, either as a “wait” statement or something more complex that utilizes an attribute, etc. ProModel™ - Downtimes Entry Fields • Frequency: Number of entities between successive downtimes, can be scalar or expression. • First time: Determined by frequency logic if left blank. • Logic: Delay action defined as for clock. ProModel™ - Downtimes Usage Fields • Frequency: Usage time (not blocked) between successive downtimes, can be scalar or expression. • First time: Determined by frequency logic if left blank. • Priority: As defined for clock. • Logic: Delay action defined as for clock. ProModel™ - Downtimes Setup Fields • Entity: The incoming entity. The reserved word “ALL” can be used for identical setups, but logic will be needed to model the delay properly. • Prior Entity: The previous entity. “ALL” can be used here as well. • Logic: Delay action defined as for clock. ProModel™ - Downtimes Today’s exercise for the prologue is to do the following: • Create a downtime field for the machining and inspection activities. When they go down, the waiting time for recovery is defined as follows: • Inspection: U(15,2) with frequency of 150 min, unscheduled • Machining: T(12,15,20) with frequency of 10 hours, scheduled, and N(20,3) with frequency of E(100) parts ProModel™ - Downtimes Today’s exercise for the prologue, continued: • Compare the input queue length, utilization, and throughput (e.g. the total good parts) for the one machine and two inspector case. As always, remember to use 95% C.I.s. ProModel™ - Reporting • Within the output viewer, “Sheet Properties” must be selected from the task bar, and the confidence intervals, etc., are in the additional reports section. • Each report section has to be set up individually. ProModel™ - Reporting Key items that are useful for reports are: • Locations: Maximum Contents (for queues), Current Contents (for queues), Average Time Per Entry (Locations with no blockages, backs up the operation variable), Pct Utilization (for operations) • Entity Activity – All times and the exits (for throughput) ProModel™ - Reporting • Variables: Total Changes (functions as a de facto counter), • Average Time Per Change, • Min/Max Times (for operation tracking variables) • Current value (for counter variables, and for some operational items) • average value (for operation variables) ProModel™ - Reporting • With respect to the variable reports, it is important to remember that the Total Changes count is done after the warmup period, while the Max, Min, Current, and Average all function and track during the entire simulation run. So, for throughput in a given steady state period, use the Total Changes field. ProModel™ - Reporting • On ProModel the reporting broken up into discrete elements. • It is also a little more complicated to get the confidence intervals printed automatically. The sheet modification tool is on the taskbar, and has to be assigned for each report page, each time it is used. ProModel™ - Reporting • Reporting the experiment is a vital part of the process. There is a reason that the experiment was run in the first place. The key elements for this course is as follows: • Executive Summary / Introduction – This is a oneor two-paragraph statement of what the problem is, including background information, limitations, etc. This sets the scene for the reader. ProModel™ - Reporting • Solution Process – This section addresses the process involved in solving the problem stated in the summary. Pseudocode, flow charts, and a description of the program highlights (such as why a particular construction was used) are appropriate here. Detailed logic statements are not. • Results – This section is used to report the results of the simulation, and the significant highlights for results. Tables are usually useful here with appropriate commentary and 95 % C. I. s. THE ROAD TO SELF SUFFICIENCY • • • • • On-Line Help Documentation (User’s Guide, Reference Manual) Reference Models Statement Builder www.promodel.com/BBS