Вы находитесь на странице: 1из 94

Training Workbook

ProModel 6.0
INTRODUCTORY COURSE

NOTES AND MODELING EXERCISE


As mentioned before, the course will cover a variety of manufacturing
applications. ProModel features that are used to model these
applications will be taught. Data interpretation and the simulation
theory that concern each of the applications will be discussed after
each model build
Within ProModel, we fit everything into the paradigms of Locations,
Entities, Processing, and Arrivals. Every conceivable manufacturing
system can be modeled using these four elements.
Locations : Locations represent fixed places in the system where entities are
routed for processing, storage, or some other activity or decision making.

Entities : Anything that a model processes is called an ‘entity’. Some examples


include parts, products, people, or even paperwork.

Processing : 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.

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.

See the above example.


READ THE ENTIRE MODEL DESCRIPTION BEFORE STARTING TO BUILD
THE MODEL.
In model 1B, we have raw stock arrive at the input pallet where it is
routed to a splitter. From the splitter, five pieces leave and go to the
lathe. From there, pieces go to the mill. The pieces then go to heat treat
where ten of them are combined (COMBINE statement) and otput as a
batch. The batch then goes on the output pallet where five of them are
combined into (COMBINE statement) the finished product. From there,
the finished product routes to exit.
In your model, make the following changes :
Locations Capacity
heat_treat 10
output_pallet 5
In the model, delete the gauge from the heat treat location and place a
new one on (since we changed the capacity of the location, we need to
update the information on the gauge). You will now need to include the
necessary COMBINE statements at heat_treat and ouput_pallet. The
output quantity at the splitter will also need to be changed. Note that
the capacity of the locations where entities are combined must be
increased.
Processing
Entity Location Operation Output Destination Move Logic
raw_stock input_pallet 0 raw_stock splitter 0.1
raw_stock splitter WAIT 4 piece lathe 0.1
piece lathe WAIT 3 piece mill 0.1
piece mill WAIT 2 piece heat_treat 0.1
piece heat_treat WAIT 10, COMBINE 10 batch output_pallet 0.1
batch output_pallet COMBINE 5 finished_product EXIT 0

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 ID is the name by which the variable is identified in the model.


The type of variables can be integer (whole numbers) or real.
To place a variable in your model as an on-screen display, simply
highlight the variable record in the Variables edit table, and then click in
the layout where you would like it to appear.
Double clicking in the layout on the variable icon allows you to edit the
font size, type, and color, as well as the box characteristics.
In order for variables to be useful, we need to manipulate their values.
This is done with the INC and DEC statements.
INC causes the variable value to be incremented by the specified value,
or by one if no value is given.
DEC causes the variable value to be decremented by the specified
value, or by one if no value is given.

The numeric operators that are valid to operate on variables are given
in the front of the Reference Manual.

Variables are valid in any logic field.


If we want to place text or other graphics in the model, we accomplish
that through Build/Background Graphics. Get into this module and play
around a little bit. The toolbar at the left allows you to create and
modify shapes, and the Icon Bar at the top lets you place existing icons
in the model as mere graphics. Note the Text tool at the top of the
toolbar. It appears as an A.
There are several ways of adding workstations, and the Simulation
Technique/Theory section at the end of this model discusses some of
the benefits and shortcomings of each approach. In this example, we
are going to increase the number of units of a location. This is done by
simply changing the value in the units field of the Location Record. This
action creates child units that are identical to the parent location. The
individual units are selected for routing based on the rules defined in
the parent location when you click on the Rules button bar.

DO NOT ROUTE TO OR FROM A SPECIFIC UNIT OF A MULTI-UNIT


LOCATION (e.g. heat_treat.2)
When routing a part to a downstream location, sometimes it is
necessary to provide multiple routes for the entity to follow. This is
accomplished by creating multiple lines or multiple blocks of routing.
If a routing record has multiple lines within one block, only one of the
lines will be executed, or in other words, the entity will only route to
one location. The routing line that the entity chooses is based on the
routing rules that are established in the rules dialog box.
If there are multiple blocks of routing, then each line will be executed
and the specified entity will route to each of the downstream locations
indicated (thus creating entities). This is done by clicking on the Rules
button and clicking on the Start New Block box.
In some instances, there is a probability that a part will route to one
area instead of another. This effect can be modeled in ProModel by
creating multiple lines in the same routing block and selecting the
Probability button in the Rules dialog box. From there, we assign each
potential route a probability of occurrence. The probabilities in all the
lines must add to 1.0.
In our example, there is a 75% chance that a piece will go to heat_treat,
with 25% chance that a reject will go to EXIT.

Remember that these lines must be in the same block !


One of the most powerful animation tools in ProModel is the ability to
change the graphics of an Entity. This is done by going to Build/Entities
and selecting the appropriate entity in the record table.
From there we click off the NEW button (remember this from locations
!) and additional spaces for graphics appear. By clicking on a blank
space and then choosing an alternate graphic from the icons, we can
design different graphics for the entity. We can also use the Edit button
and Slide Bar to change the color, rotation, and size of the entity in the
animation.
To use one of the alternate graphics during a model run, the entity
must execute a GRAPHIC statement. By specifying GRAPHIC
<expression>, the entity will change to the appropriate graphic.
Example : GRAPHIC 2 (changes to the second graphic)
Model 2 has the same process as Model 1. We should have determined
that heat_treat was one of the major offenders in terms of bottlenecks.
In order to correct this, we are going to add another heat_treat unit.
We are also going to inspect the parts from which we will determine
that 25% are rejects. To give us more on-screen information, we will set
up variables and keep track of the following : WIP, rejected parts, and
completed parts.
We therefore need to add the following to the model
Locations Capacity Units
inspect 1 1 Entities
heat_treat 10 2 reject
From mill, the piece should go to inspect where you will set up one
routing block with 2 lines, each conditional upon a probability.
Processing
Entity Location Operation Output Destination Rule Move Logic
piece mill WAIT 2 piece inspect 0.1
piece inspect WAIT 1 piece heat_treat 0.75 0.1
reject EXIT 0.25 0

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.

Run the model for ten hours.


The join process is used to assemble two entities together. After the
process, the entities will be permanently joined. The first part of the
join is the JOIN statement, which essentially says “I am an entity, join a
part to me”. The corresponding rule acts like a delay, holding the
joining part up until the other entity executes the JOIN statement.
For every JOIN statement, there must be a corresponding If Join
Request rule.
The LOAD statement works much like the JOIN statement, except the
loaded parts can later be unloaded, or disassembled.
The LOAD statement has two corresponding parts, the statement and If
Load Request.
The UNLOAD statement will unload the specified number of entities at
the location. You must then create a processing record for all entities
that have been unloaded. See the example above.
The graphic editor allows you to create and add new graphics to the
current .glb file, change existing graphics, and to create new .glb files.
There are a number of tools, both on the toolbar on the left as well as
under the graphics menu. The icon tools allow you to edit an existing
icon, save the workspace information as an icon, or delete the selected
icon. The clear button clears the workspace.
If you want to add an icon to a graphic library, you must first create the
icon in the workspace. You must then save the graphic from the
workspace to the library by clicking the save button. To save the library,
select save from the file menu.
In this model, we are modifying the system of queues and conveyors to
perform assembly operations and loading parts onto another part.
Modify Model 3A in the following areas :
Entities
monitor
empty_box
full_box
pallet
loaded_pallet
Processing and arrivals for this location are as follows :
Processing
Entity Location Operation Output Destination Rule Move Logic
monitor monitor_queue monitor workbench JOIN 1
empty_box box_queue empty_box workbench FIRST 1
empty_box workbench JOIN 1, WAIT 4 full_box shipping_queue FIRST 1
full_box shipping_queue full_box loading_zone LOAD 1
pallet pallet_conveyor pallet loading_zone FIRST 1
pallet loading_zone LOAD 1, WAIT 1 loaded_pallet shipping_conveyor FIRST 1
loaded_pallet shipping_conveyor loaded_pallet shipping FIRST 1
loaded_pallet shipping UNLOAD 1 pallet pallet_conveyor FIRST 1 WAIT 0.3
full_box shipping full_box EXIT

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.

Run the model for 10 hours and examine the outputs.


What type of inventory are we accrueing ?
Parts are waiting for work, and this is time that is not value-added.
How do we examine these aspects ?

Location State graphs and Location State by percentage.

What changes might be made in the system to reduce inventory and


wait times ?
What are the major differences between the JOIN and the LOAD
statement ? When would you use one over the other ? Name the
Advantages and the Disadvantages for each statement !

Why use a conveyor instead of a queue ?


These are the topics that are covered in Model 4.
A resource is a person, piece of equipment, or some other device that is
used for any one or more of the following functions : transporting
entities, assisting in performing operations on entities at locations,
performing maintenance on locations, or performing maintenance on
other resources.

We need to define two elements for the resource :


The resource itself, and a path network that defines the motion of the
resource.
Go to Build/Resources and click on the desired graphic in the resource
toolbox. This action will automatically create a record in the Resource
Edit Table. From there you can change the resource name, the number
of units, and the specs.

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.

MOVE WITH is used to capture a resource for transportation between


locations (where no activity is performed at the actual location). The
resource will stay with the entity until a THEN FREE statement or a FREE
statement is encountered in the downstream logic.
The GET statement used in conjunction with AND and OR allows you to
capture multiple resources for a task or an alternate selection.
In Model 4 we will add resources to the previous model.
Retrieve Model 3 and make the following changes :
Create two path networks Net1 and Net2.
Net1 allows for an operator to go from the workbench to the loading zone.
Net2 allows an operator to go from shipping to the loading zone, and up to the
top of the pallet conveyor.
Create interfaces from Net1 to the workbench and the loading zone, and from
Net2 to shipping, the loading zone, and the pallet conveyor.

Create two operators, Operator1 and Operator2.


In the specs, put Operator1 on Net1 and Operator2 on Net2.

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.

Model only the necessary elements !


These are the topics covered in Model 5.
Attributes are place holders similar to variables, but are attached to
specific entities and usually contain information about that entity.
To define an attribute, go to Build/Attributes and create an ID. Then
choose the type and classification. There can be attributes for locations,
but we will only examine entity attributes at this time.
Attributes are changed and assigned when an entity executes the line
of logic that contains an operator, much like the way variables work.
IF - THEN statements allow the user to execute specific lines of logic
based on certain conditions.
BEGIN and END statements are required if more than one line of logic is
to be executed based on the condition of the IF – THEN. If there are no
BEGIN and END statements, the model will execute only the first line
after the IF – THEN based on the IF – THEN condition.
The ELSE statement allows you to continue listing specific conditions.
You can also continue with ELSE IF – THEN statements.
See the on-line help for more details.
Remember from previous material that the creation of two routing
blocks will route entities to both destinations. The ROUTE statement
allows you to create several routing blocks and then control which
routing line gets executed.

The ROUTE statement followed by a number executes the specific route


that is referenced.

See the above examples.


Model Merge is a powerful tool that allows you to bring models
together. You can create run-offs to compare systems, bring in different
sections of an operation, etc.
This is done by going to File/Merge and choosing model or submodel.
The differences are explained above.
After Model or Submodel is chosen, ProModel will prompt you for a
model to merge, and then a cross-hair will appear that represents the
upper left-hand corner of the merging model.
In Model 5A we have parts that arrive and are given attributes, and
then are sorted based on part type. From there, they move on to one of
two machines and then proceed to a queue where every fifth part is
inspected. From there, we have a rework rate of 30%.
Create the following :
Locations Capacity
input_queue inf
lathe 1
mill 1
inspect_queue inf
inspect 1
Entities
pre_exit 1 Gear
Processing
Entity Location Operation Output Destination Rule Move Logic
gear input_queue gear lathe FIRST 1 WAIT 0.1
gear mill FIRST 1 WAIT 0.1
gear lathe WAIT 3 gear inspect_queue FIRST 1 WAIT 0.1
gear mill WAIT 4 gear inspect_queue FIRST 1 WAIT 0.1
gear inspect_queue gear pre_exit FIRST 1 WAIT 0.1
gear inspect FIRST 1 WAIT 0.1
gear inspect WAIT 1 gear input_queue 0.3 WAIT 0.3
gear pre_exit 0.7 WAIT 0.1
gear pre_exit gear EXIT FIRST 1

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)

Path Networks Resources


Net1 Operator1

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.

See the above examples.


Multiple replications are run when there is randomness in the model
and one data point does not necessarily give an accurate
representation of the actual system.
Running more than one replication is simply a matter of changing the
number in the replications field.
The method of batch means, or interval batching, is a way to collect
independent samples when simulating steady state systems as an
alternative to running multiple replications. The advantage over
running multiple replications is that the warmup period is only run
once. When you select Batch Mean output reporting, the output
statistics are collected for each time interval indicated in the Interval
Length field. The number of intervals is determined by dividing the run
length by the interval length.
Periodic statistics are useful primarily in terminating or non-steady
state simulations where you are interested in the system behavior
during different periods (e.g. peak or lull periods) of activity.
Retrieve Model 6 and make the following changes :

Create four macros to substitute for these items :


• Mill processing time
• Lathe processing time
• Mill maintenance time
• Lathe maintenance time

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 ?

When is it acceptable to only have one data point ? When does it


become unacceptable ?

Вам также может понравиться