Академический Документы
Профессиональный Документы
Культура Документы
ProModel 6.0
INTRODUCTORY COURSE
Arrivals : Any time new entities are introduced into the system, it is called an
arrival.
Let’s create a very simple model using the four modeling elements we
just discussed. We will start with locations.
To build Locations :
• Left click on the desired location icon in the graphics toolbox, then
left clik in the layout window where you want the location to
appear.
• A record is automatically created for the location in the Locations
edit table.
• The name, units, capacity, etc., can now be changed by clicking in
the appropriate box and typing in the desired changes.
To build Entities :
• Left click on the desired entity graphic in the Entity Graphics
toolbox.
• A record will automatically be created in the Entity edit table.
• The name can then be changed and the size of the entity can be
adjusted by moving the slide bar in the toolbox.
To create Processing :
• Left click on the entity name in the toolbar and then left click on
the desired beginning location.
• Left click on the destination location.
• A processing record will automatically be created.
• To add more routing lines to the same record, left click on the Add
Routings button in the toolbox.
• To route the part to exit, simply left click on the Route to EXIT
button in the toolbox.
To create Arrivals :
• Left click on the entity name in the toolbox, and left click on the
location where you would like entities to arrive.
• Entity : the arriving entity.
• Location : the location at which the entity will arrive.
• Qty Each : the number of entities (in a group) that will arrive at
the specified time.
• First Time : the first time (in simulation clock time) that the arrival
pattern will start.
• Occurences : the number of times entity groups will arrive.
• Frequency : the time between occurences.
OK, we are ready to run the simulation. F12 will save the model for us
(we can give it an eight character name) and F10 will run the model.
From the Simulation menu we can also choose Run or Save and Run.
Under the Simulation menu in Options, the above dialog box appears.
The number of run hours can be specified in the Run Hours field, as can
the clock precision. We will look at some of the other options later on
in the class.
When the model run is complete, ProModel will prompt you to see the
output statistics. Choosing yes will bring you into the Output Editor.
There are two important parts in the Output Editor window, the Report
tab and the Toolbar across the top. The Report tab has dozens of
statistics about the performance of the system, from General Report to
Variables report, while the toolbar allows you to manipulate the
information in the form of graphs, plots, histograms, etc. More about
the data interpretation will be included with each sample model.
Now, let’s look at the menus that ProModel offers.
The File menu is used for file management, model merging, printing,
and model packaging.
File menu –
New
Open/Import
Merge
Save/Save as
View/Print Text
Print Layout/Printer Options
Create/Install Model Package
Under the Build menu, we go to work defining the model. This menu
contains all the building blocks. Our basic blocks are Locations, Entities,
Processing, and Arrivals.
Build Menu –
Locations
Entities
Path Networks
Resources
Processing
Arrivals
Shifts
Attributes
Variables, etc.
The Simulation menu allows us to control the nature of the subsequent
model run.
Simulation Menu –
Run
Save & Run
Options
Model Parameters
Scenarios
SimRunner
The Output menu allows examination of post-model run statistics and
trace files. The Tools menu takes us into the graphic tools and search
and replace functions.
Output –
View Statistics/Tree
Tools –
Graphic Editor
Expression Search
StatFit
Options/Customize
The View menu contains the selections that allow you to control the
environment under which you build models.
View Menu –
Shorcut Panel
Snap to Grid/Show Grid
Show Layout Coordinates/Hidden Networks
Show Routing Paths
Zoom
Layout Settings
Edit Tables
Refresh Layout/Windows Positions
We want you to be able to complete meaningful, valuable projects at
the end of the course. Certainly, we will not be able to teach you
everything there is to know about simulation and ProModel in the short
time we have. Part of what we teach will be tools for self-sufficiency, so
that you will be able to find the information you need in the future.
Some of these tools include the following :
On-Line help
Documentation
Reference Models
Statement Builder
BBS
Phone Support
Consulting
These are the topics that will be covered in Model 1A and Model 1B.
We will cover the basic elements in Model 1A and then include more
details in Model 1B.
There are a number of selections available to spiff up the graphics and
increase the on-screen information associated with the location in your
model. Clicking off the NEW button will allow you to add these
elements to the highlighted location. Be careful to highlight the
location to which you want to add these elements and to click off the
New button.
Counter – Displays the numeric contents of the location
Gauge – Displays graphically the location contents
Text – Associates text with the location
Status Light – Changes color based on status of location
Entity Spot – Spot where entities appear graphically at a location
Region – Area (invisible during simulation) useful in defining locations
on top of graphics
To create processing times in your model, use the WAIT statement in
the Operation Logic. This makes the entity wait (and occupy capacity in
the location) for the specified amount of time.
To specify the amount of time that an entity takes to travel between
locations, use the MOVE FOR statement in the Move Logic. This will
cause the entity to move for the given amount of time.
READ THE ENTIRE MODEL DESCRIPTION BEFORE STARTING TO BUILD
THE MODEL.
In Model 1A, raw_stock enters the system at input_pallet and goes to
the splitter. From there, pieces travel to the lathe, the mill, and then to
heat_treat. From heat_treat, a batch goes to the output_pallet and a
finished product leaves the output_pallet to EXIT. See the flowchart on
the next page.
For this model you will need to create the following records :
Locations Capacity Entities
input_pallet 1
splitter 1 raw_stock
lathe 1 piece
mill 1
finished_product
heat_treat 1
output_pallet 1 batch
Processing
Entity Location Operation Output Destination Move Logic
raw_stock input_pallet 0 raw_stock splitter 0.1
raw_stock splitter 4 piece lathe 0.1
piece lathe 3 piece mill 0.1
piece mill 2 piece heat_treat 0.1
piece heat_treat 10 batch output_pallet 0.1
batch output_pallet 0 finished_product EXIT 0
Arrivals
Entity Location Qty each First time Occur Freq
raw_stock input_pallet 1 0 Inf 10
In the model, place a gauge on the heat_treat location and double click
on the graphic in the layout window to edit it to your liking. Also, add a
counter to the output_pallet. Double clicking on this will also allow you
to edit it. The processing and move times have been indicated above,
but you will need to include the necessary WAIT and MOVE FOR
statements.
Go to Simulation/Options and set the model to run for ten hours.
This is essentially any type of operation where one part is separated
into two or more parts. This can be cutting, depalletizing, etc. The
simplest way of accomplishing this in ProModel is by changing the
output quantity in the routing rules dialog box. The next page continues
with this concept.
Under Build/Processing in the Routing edit table there is a quantity.
This can be accessed by clicking on the Rules button bar. Changing this
quantity changes the number that route to the downstream location. In
other words, for every one entity that comes in, five go out.
Previously we talked about breaking parts up, now we need to address
the issue of putting them back together. For this there are several
statements available in ProModel, but one of the most common is the
COMBINE statement. This combines and consolidates the specified
number of entities.
The COMBINE statement waits until there are the specified number of
parts in the location and then they are combined into one entity and
routed downstream as the output entity. It is possible to change the
name of the entity that routes from the location where the combine
took place.
Go to Simulation/Options and set the model to run for ten hours. The
next page covers the data interpretation issues that we are concerned
with.
Clicking on the Location States Single/Tank tab in the output report will
display the information of machine state. The statistics of % Operation
and % Blocked are key to locating bottlenecks. This information is also
available within the text of the output report.
Entity Activity indicates the number of exits in the system.
Go back to your model statistics and determine which of the locations
could be bottlenecks. What changes would you propose to improve the
system ? What is the effect of these changes ?
Two issues :
Simplicity of system.
What data do we need ?
Number of processing events.
Each processor event uses CPU time
These are the topics to be covered in Model 2
Variables in ProModel are placed holders defined by the user to
represent changing numeric values.
The next few pages will show how to apply variables in your models.
To establish a variable that will be used in the model, go to the Build
menu and choose Variables.
The numeric operators that are valid to operate on variables are given
in the front of the Reference Manual.
Variables
ID TYPE
WIP integer
rejected_parts integer
completed_parts integer
You should increment the WIP variable when pieces are created after
the splitter, and decrement it when completed parts leave (also
rejects). Increment the rejected_parts variable when rejects go to EXIT,
and the completed_parts variable when good parts exit. Place these
variables on the screen and go into Background Graphics and give them
labels.
Finally, we will change the graphic of the entities when they exit the
lathe and then again when they exit the mill. This will require you to go
to Build/Entities and choose the Piece entity and create 2 additional
graphics for this entity. Then in the processing logic of the respective
locations, use the GRAPHIC statement to change the graphic of the
entity when it is through with the wait time.
In the output editor, you can examine the final conditions of the
variables in the Variables tab.
What effect did adding an additional unit of heat_treat have ?
What are the major differences of the four Routing techniques
mentioned above ? Name the Advanteges and Disadvantages of each
technique !
These are the topics we will cover in Model 3A and 3B.
Model 3A will look at conveyors and queues while Model 3B will
examine assembly operations.
Conveyors are used to model actual material handling systems or any
other method of transporting entities that is similar to the behavior of
an actual conveyor. Parts can only be loaded onto a conveyor one at a
time. The number of parts that are allowed on a conveyor is limited by
capacity as well as entity size and conveyor length.
The entity moves on the conveyor based on speed and length of the
conveyor.
Accumulating conveyors act like rollers, while non-accumulating ones
act like belts.
See the next slide for the use of the MOVE statement in use with
conveyors.
Queues are used for storage, and inventory holders, and to create
buffers in front of locations.
Graphically, the queue will only display as many entities as can be
shown based on queue size vs. entity size (graphics only).
It will still hold up to its capacity (default is infinite) but may not show
them.
The MOVE statement allows you to control when the queue/conveyor
logic is executed. Logic before the MOVE statement gets executed at
the front of the queue/conveyor; logic after the MOVE statement will
execute as the entity arrives at the end.
The MOVE FOR statement allows you to control the length of time that
it takes for an entity to travel the length of the queue. If no MOVE FOR
is given, the time will be the length of queue/entity speed.
In Model 3A, we will create a network of queues and conveyors on
which a box will travel. In the next model we will modify this one to
create more complex operations.
Create the following :
Locations Capacity Specs
monitor_queue 5 queue length 20
box_queue 5 queue length 20
workbench 1
shipping_queue 5 queue length 20
pallet_conveyor inf conveyor length 20, speed 20 / accumulating
loading_zone 1
shipping_conveyor inf conveyor length 60, speed 20 / accumulating
shipping 1
Entities
box
Processing
Entity Location Operation Output Destination Rule Move Logic
box monitor_queue box workbench
box box_queue box workbench
box workbench WAIT 1 box shipping_queue
box shipping_queue box loading_zone
box pallet_conveyor box loading_zone
box loading_zone WAIT 0.5 box shipping_conveyor
box shipping_conveyor box shipping
box shipping WAIT 2 box EXIT
Arrivals
Entity Location Qty each First time Occur Freq
box monitor_queue 1 0 Inf 3
box box_queue 1 1 Inf 3
box pallet_conveyor 1 5 Inf 5
You will need to create the above processing and insert the appropriate
WAIT statements. Remember that double-clicking on a queue/conveyor
location allows you to edit that location.
Arrivals
Entity Location Qty each First time Occur Freq
monitor monitor_queue 5 0 Inf 20
empty_box box_queue 5 0 Inf 20
pallet pallet_conveyor 1 0 3 2
In the model, monitors and empty boxes are joined at the workbench
and full boxes go on to the loading zone via the shipping queue. From
there, they are loaded on a pallet and travel via the shipping conveyor
to shipping. The full boxes are unloaded from the conveyor and exit the
system. The pallets are then returned to the pallet conveyor where
they are recycled through the system.
The specs allow you to define the network on which the resource
travels (more on this later), the nodes at which it parks (also later), and
the motion of the resource.
Path Networks are the method by which resources travel.
Path Networks consist of nodes, which are connected by path
segments. Path segments are defined by a beginning node and an
ending node and may be unidirectional or bidirectional. Multiple path
segments, which may be straight or jointed, are connected at path
nodes.
Creation of a path in the network starts by selecting the Paths button
and then left clicking in the layout where you want the path to start.
Subsequent left clicks put joints in the path, and a right click will end
the path.
Interfaces tell ProModel where the resources interacts with the
location when it is on the Path Network.
To create an interface between a node and a location, left click and
release on the node (you will get a dashed line streamer) and then left
click and release on the location.
You can create multiple interfaces from a single node to locations, but
you can only create one interface from the same path network to a
particular location.
The statements GET, FREE and USE are used to capture a resource for
activity at a location.
GET will capture the resource and it will remain with the entity until a
FREE is specified.
USE will capture the resource for the specified amount of time and then
automatically free it.
Put GET, FREE, USE, and MOVE WITH/THEN FREE statements in the appropriate
locations so that the following activities are accomplished :
Operator1 performs the JOIN and the WAIT at the workbench
Operator1 and Operator2 perform the LOAD and the WAIT at the loading zone
Operator2 gets the pallets from shipping and takes them back to the pallet
conveyor
How effective are the resources ?
Look at Resources in the General Report, and look at the State graphs
for Resource Utilization and Overall State.
What level of detail will be necessary in the model ?
Ask the above decisions, and then plan the model accordingly.
Arrivals
Entity Location Qty each First time Occur Freq
gear input_queue 1 0 inf 3
Attributes Variables
ID TYPE ID TYPE
part_type integer inspect_counter integer
entry_time real reworked_parts integer
You will need to merge a model into your own called arrivals.mod
Also add the following line to the arrival logic : part_type =
arrivals_distribuion()
Sort the parts at input_queue so that parts with part_type attribute = 1
route to the lathe, and those that are = 2 route to the mill. (use the IF –
THEN construct with the ROUTE statement for this).
At the inspect_queue, create logic that will route every fifth part to
inspect; the others go straight to pre_exit (Also with IF – THEN
construct and variables).
At inspect, 70% of the parts route to pre_exit and 30% route back to
input_queue.
Choosing the correct distribution is a difficult task, not to mention
choosing the correct parameters for the distribution. This is generally
done with the use of curve-fitting software, which we will discuss later.
Distributions in our cases are associated with processing times, altough
they can be used in a number of places within ProModel.
Not all events are discrete within the real world. They happen with
some degree of randomness. Distributions are one of ProModel’s
methods of dealing with this effect within the model.
The CLOCK and LOG functions allow you to keep track of time events
(like cycle time, lead time) within your model. The CLOCK function
returns a real number, so attributes and variables that are assigned to
the CLOCK must be of type Real.
A cycle time example as follow :
We have defined an attribute called entry_time (type real).
At a location where the entities arrive, we write this logic :
entry_time = CLOCK ()
This assigns the current clock time to each entity that passes through the logic
At the end of the processing where entities exit the system, we include this logic :
LOG “cycle time is” , entry_time
This subtracts the value stored in the attribute entry_time and records it with the
header “cycle time is”.
In Model 5B, we will add distributions to the model for process times,
and track the parts through the system to calculate the appropriate
cycle times.
Change the processing times at the following locations :
Entity Location Operation
gear lathe N(3,.1)
gear mill N(4,.1)
gear inspect N(1,.1)
Create a time stamp when the part enters the input_queue using an
attribute with the CLOCK() statement.
Log the exit time at pre_exit using the same attribute and the LOG
statement.
We can look at the total statistics for the cycle time by going to the Log
report tab at the Output Editor.
Individual times can be plotted using the Time Plot for Simple Values
graphs.
What were the minimum and maximum cycle times ? To what do you
attribute these times ? What about the shape of the graph ?
The CPU can handle one event at a time and the simulation engine
determines which events are scheduled to be executed.
There are many different methods to control a tie-breaker within
ProModel, some of which we will look at in the future.
These are the topics that will be covered in Model 6.
Preventive maintenance on a machine can be scheduled at regular
intervals based on the clock time that has expired, the number of
entries that have occurred at a location, or the usage of the machine in
time. This is done with Location Downtimes.
Go to Build/Locations, and click on the DT’s button.
Logic is executed at the time of the downtime, and this can include the
capture of resources, WAIT times, and the assignment of variables just
to mention a few times.
See the examples above.
Shifts in ProModel have been newly modified, and are now a very
powerful method of adding realism to your model. You can create
schedules for your locations and resources that mimic actual work
schedules.
The following pages detail the process of creating and supplying shifts.
When you choose define, the Shift Editor will come up and you will be
able to create a file (.sft) that defines your shift.
Click and drag the appropriate bar (shift or break) to set up a shift. You
can choose Edit/Duplicate and duplicate a day. Holding down the shift
key and clicking on the desired days will make multiple duplications.
White space is considered off-shift time, while red space is considered
break time.
Assigning resources and locations to the shift is done through
Build/Shifts/Apply.
Clicking on the Locations or Resources Button will bring up the dialog
box that allows you to select the desired locations/resources that will
be on the shift.
Logic can also be executed previous to the shift/break as well as during
the shift/break.
To run the model using these shifts, go to the Simulation/Options
dialog box and click on the “define run length by Calendar Date” option.
This will bring up calendar type information that can be adjusted to run
for the appropriate dates.
The DISPLAY statement is valid in any logic. Part of the model exercise
will be to find out how to use this statement by looking in the on-line
help.
Model 6 is a continuation of Model 5, and it places a resource in the
model who will be on a shift. You should use the operator for
processing at each location (lathe and mill) and also for moving to the
inspect queue after processing. The model will also show preventive
maintenance of the lathe and the mill. Set up the following :
Usage Downtime for Locations
Location Freq First time Priority Logic
lathe 120 120 99 N(10,.2)
mill 100 100 99 N(10,.2)
Interfaces
lathe
mill
inspect_queue
You will need to set up a shift for the operator as well. Create the shifts
and copy them for every day using the Duplicate feature.
Shift 8.00 - 17.00
Break 10.00 - 10.15 12.00 - 13.00 15.00 - 15.15
You will also need to run the model using the shifts. Do this in the
Simulation/Options dialog box. Run the model for only one day from 8
am to 5 pm.
In the logic for the Location Downtime, use GET and FREE statements to
use the resource for the maintenance. Also, use the DISPLAY statement
to notify the user when the machines go down.
It is possible to set up a break area for the resource by extending the
path network to a desired area and indicating the node as the break
node in Resource specs.
Run the model using the shift and run the model without the shift.
What differences do you note in the above statistics ?
How can we improve the system ?
The TRACE statement gives a listing of the simulation events that are
being executed. There are a number of methods of controlling the
nature of the trace.
The Debugger steps through the model code that is being executed.
This can happen in a number of methods as well.
These are the topics covered in Model 7.
In ProModel, a macro can be used for the text substitution. This is
useful when there are several blocks of code that are the same, and
you want to refer to them with just one line.
Macros are also the way you create Run Time Interface parameters.
When the RTI button is clicked, you can now define how the model
parameter will appear in the list, and what the prompt will be.
This feature is especially useful when creating flexible models for other
end users.
Once the model parameter list is created, it is possible to run several
scenarios where the parameters are changed.
Create prompts for each of these items, and run the model making
changes in the Model Parameter list.
Run the model for 5 replications and look at the output.
Notice the effect of running multiple replications.
Look at the multiple replication results in the output editor.
What do you notice when running multiple replications ?