Академический Документы
Профессиональный Документы
Культура Документы
The iThink and STELLA window is organized into the following areas:
Tabs on the left side of the window give you access to the different layers of the
model: Interface, Map, Model, and Equation. Each layer provides a different way of
designing and presenting a model. Click a tab to navigate to the layer you want to
work with.
Panels on the right side of the window allow you to specify and edit properties for
the selected model building block, including equations, documentation, and other
properties. Click a tab at the bottom of the panels to navigate to the panel you want
to use. Panels are available when you are viewing the Map and Model layers only.
The menu bar and toolbar along the top of the window give you access to many of
the commands you'll need when building and modifying a model.
The Run controller at the bottom-left of the window gives you quick access to many
of the commands on the Run menu. In addition, it gives you a visual indication of the
progress of a simulation.
The
and
buttons (at the bottom of the window, just above the Run controller)
allow you to easily adjust the magnification of the view by zooming in or out of the
model.
The following picture shows the Model layer, with the panels open, and the Equation
panel revealed.
Clicking Use clicking to select an item in any layer of a model. To select most
items in a model, click the item once. When the item is selected, it becomes
highlighted. To select a button, click its border. When a button is selected, selection
handles appear around the button.
You also use clicking to indicate where to add a new element on the Interface, Map,
or Model layers; to select commands from the menus; to select a toolbar button; and
to move from one layer to another by clicking a navigation tab on the left side of the
window.
Dragging Use dragging to select one or more items by holding down the mouse
button and then dragging to draw a rectangle around the items you want to select.
When you release the mouse button, the items within the rectangle are selected.
You can also use dragging to move selected items to a new location on the layer and
to change the size of an item by dragging a corner of the item to stretch it to a new
size.
Closing models
Use the following procedure to close the currently open model.
To close a model
1
From the File menu, choose Close, or press CTRL+W (Windows) or Command+W
(Mac).
A message appears that asks you if you want to save changes to the currently open
model.
Select whether or not you want to save changes to the currently open model.
The model closes.
From the File menu, choose New, or press CTRL+N (Windows) or Command+N
(Mac).
If you already have a model open in the iThink/STELLA window, a message appears
that asks you if you want to save changes to the currently open model.
Select whether or not you want to save changes to the currently open window.
A new, blank diagram opens in the iThink/STELLA window.
Opening models
Use the following procedure to open an existing model.
Note: Opening an iThink or STELLA model that was created in a previous version will
automatically translate the model so that it is compatible with version 10. In some cases,
the translation requires additional manual updates to the model. For more information,
see www.iseesystems.com/translation.
To open a model
1
From the File menu, choose Open, or press CTRL+O (Windows) or Command+O
(Mac).
Note: If you are opening a model created with a version of iThink or STELLA prior to
Version 10, a message appears that tells you the model will be converted to Version
10 format (.ITMX or .STMX). Click OK to convert the model.
If you already have a model open in the iThink/STELLA window, a message appears
that asks you if you want to save changes to the currently open model.
Select whether or not you want to save changes to the currently open model.
The Open dialog box opens.
Navigate to and select the model file that you want to open.
Click Open.
The model you selected opens in the iThink/STELLA window.
Saving models
When you save a model, the model's information is saved in two separate files: a model file
(.ITMX or .STMX) and a database file (.ISDB).
The model file (.ITMX or .STMX) contains the information that defines the model,
such as its entities, equations, interface objects, documentation, and page layout
information.
The database file (.ISDB) contains the simulation run data for the model, if any.
Note: If you share your model by sending the model file to someone else and you want to
include the model's simulation run data, you also need to send the database (.ISDB) file.
For more information about the files you need to include when you share your models,
see Distributing models to users.
To save a model
1
Click Save.
The model file is saved with the name and to the location you specified.
If there are saved runs for the model, a database file is also saved to the location
you specified, with the same name as the model file.
Note: If you are saving a model created with a version of iThink or STELLA that is
older than Version 10, the model will be saved with the new .ITMX or
.STMX extension. You cannot save a model as an earlier version.
Specify the location and name for the new model file.
Click Save.
The new model file is saved with the name and to the location you specified.
If there are saved runs for the model, a database file is also saved to the location
you specified, with the same name as the model file.
Note: If you are saving a model created with a version of iThink or STELLA that is
older than Version 10, the model will be saved with the new .ITMX or .STMX
extension. You cannot save a model as an earlier version.
Clicking Use clicking to select an item in any layer of a model. To select most
items in a model, click the item once. When the item is selected, it becomes
highlighted. To select a button, click its border. When a button is selected, selection
handles appear around the button.
You also use clicking to indicate where to add a new element on the Interface, Map,
or Model layers; to select commands from the menus; to select a toolbar button; and
to move from one layer to another by clicking a navigation tab on the left side of the
window.
Dragging Use dragging to select one or more items by holding down the mouse
button and then dragging to draw a rectangle around the items you want to select.
When you release the mouse button, the items within the rectangle are selected.
You can also use dragging to move selected items to a new location on the layer and
to change the size of an item by dragging a corner of the item to stretch it to a new
size.
click the button and then choose Open. The Button dialog box appears
You can close the panels at any time to see the full diagram. If you prefer, you can undock
the panels. When you undock the panels, they become a floating window that you
can resize and place anywhere on your screen.
The following procedures describe how to work with the panels by
selecting them
Click the button on the panel bar (on the right side of
the iThink/STELLA window).
or
Select the building block's icon, and then choose Open Selection from the Model
menu.
or
Right-click the building block's icon, and then choose Open from the menu that
appears.
or
Double-click the building block's icon.
Note The orientation of the button indicates if the panel is pinned or unpinned.
is pinned and
means it
means it is unpinned.
Equation panel
Array panel
Messages panel
Documentation panel
Click the entity on the Map or Model layer to select it (or use drag-select to select it).
The panels are enabled and the last viewed panel is displayed if the panel is valid for
the selected entity; otherwise, the appropriate default panel for the entity is
displayed:
o
If the selected entity has been defined as a graphical function, the default
panel is the Graphical Function panel.
Click the tab for the panel that contains the properties you want to view. For
information about the options on a specific panel, see the documentation for that
panel.
On the model diagram, select the building block whose properties you want to edit.
Select the panel for the properties you want to view or edit. For information about
the options on a specific panel, see the documentation for that panel.
Tip: to automatically select the default field on the currently displayed panel, doubleclick the building block.
1
Use the options on the panels to make the edit you want.
For more information about building blocks, see Working with building blocks.
Click
The software applies any changes that are not yet applied and checks for errors.
To revert all changes made to the entity's properties since the last time you applied
changes, click
To undo only the last change you made, select Undo from the Edit menu (or use
CTRL+Z [Windows] or Command-Z [Mac]).
Define the purpose of your model, the problem you are trying to solve, or
the story you are trying to tell.
Write your purpose statement down on paper and check back during the model
building process to make sure that your model addresses your initial purpose.
1
Create an interface.
If you will be sharing your model with others, add objects on the Interface layer to
help explain your model and make it easy to interact with. You can add text to
describe the model's goals or to provide user instructions, and you can add
interactive objects such as buttons or other ways that users can change the model's
input values. You can also add graphs and tables that make it easier to read and
understand the results of the model's run.
Once you've spelled out the goals and boundary of your model and have developed an initial
map of the model (as described in The model building process), you need to add the
information that will transform the model in your head into a working simulation. This
process is called building the model, and it requires you to place the key entities in your
model on the diagram, and then assign equations and numerical values to those entities.
The following procedure is a high-level guide to the steps involved in building a model. Use
the links in each step for more information about the step.
Place the stocks and flows for the "main chains" in your model on the Map
layer.
When you were first planning your model, you identified the stocks and flows that
were central to the system or process you're trying to convey. Now, you want to lay
those out on the diagram and connect them to each other to see how they connect
and may interact.
Note: Be aware of unit consistency (each flow into or out of a stock must use the
same units of measure as the stock itself, except for "per time"; all stocks in a main
chain must use the same units of measure) and conservation laws.
Add connectors.
Connectors function as conjunctions. Use them to join stocks and flows together, and
flows together with other flows, to transmit information and actions from one entity
to another.
Add converters.
Converters have two main roles: they function as adverbs by modifying flows (for
example, indicating how quickly or slowly a flow is moving); converters also convert
units of measure from one entity so that they are compatible with another,
connected entity.
If you haven't already done so, specify the equations and/or initial values for the
stocks, flows, and converters in the model. When defining constants, use simple
numbers for testing before you introduce more realistic numbers.
1
When you have finished building a first draft of your model, test it by running the model and
looking for errors, implausible results, and other problems.
A positive polarity (+/s) means that, when the cause increases, the effect
increases; the relationship between the entities goes in the same (or "s") direction.
A negative polarity (-/o) means that, when the cause increases, the effect
decreases; the relationship between entities goes in the opposite (or "o") direction.
For example, in the following model, when being born increases, its effect is to also increase
Population (note the "+" polarity sign at the right end of the being born flow). This is a
positive polarity. Conversely, as dying increases, the effect is to decrease Population, a
negative ("-") polarity.
An odd number of -/o links around a loop signifies a Balancing loop. An even number of -/o
links signifies a Reinforcing loop.
For connectors, you can choose the polarity you want to assign (positive or negative), based
on the interaction between the two entities.
For flows, the polarity is determined by the flow's association to the attached stocks: an
inflow always has a positive (+/s) influence on a stock and an outflow always has a negative
(-/o) influence on a stock. Although you can't select their polarity, you can choose whether
or not to display their polarity in the model.
Note: The default polarity symbols that are displayed on the diagram are - and +. If you
prefer to use the letter symbols (o and s) instead, select the Use Lettered Polarity check
box in theModel Preferences dialog box.
Right-click the connector's handle, choose Polarity from the menu that appears, and
then choose +/s, -/o, or None.
Right-click the circle portion of the flow icon, choose Polarity from the menu that
appears, and then choose +/s, -/o, or None.
From the File menu, choose New, or press CTRL+N (Windows) or Command+N
(Mac).
If you already have a model open in the iThink/STELLA window, a message appears
that asks you if you want to save changes to the currently open model.
Select whether or not you want to save changes to the currently open window.
A new, blank diagram opens in the iThink/STELLA window.
You can now start building the model and can save the new model
In the model, select the entity for which you want to define global scales and ranges.
Use the options on the Scales and Ranges panel to define global scale and range
values for the selected entity.
Click
For example, you may have a time series of data (sales per month, or average temperature
per month). In these examples, the value of the graphical function is dependent on time. In
other cases, you might have a graphical function where the value is dependent on other
entities. For example, the death rate for an animal population is dependent on the
availability of food, the productivity of a worker is dependent on the number of hours
worked, etc.
You can define a graphical function for a flow or a converter.
In the model, select the flow or converter for which you want to define a graphical
function.
On the Equation panel, define the graphical function's input by entering an equation
in the Equation box. To use the default equation (TIME), leave the Equation box
blank.
On the Graph tab, use the two boxes beneath the graphical function grid to specify
the minimum and maximum values for the X-axis.
Use the two boxes to the left of the graphical function grid to specify the minimum
and maximum values for the Y-axis.
Use one (or a combination) of the following procedures to define the values for the
data points:
o
On the Graph tab, click and drag to draw a curve that represents the function.
As you draw the curve, the software determines the values associated with
each data point in the curve.
On the Points tab, use the table to specify the value for each data point in the
function.
Notes: To specify values for the X-axis values (in the first column), first
click
above the column to unlock the column, then type the values.
You can paste values that you've copied from another source into either
column. For more information, see Importing and exporting data with copy
and paste.
At the bottom of the Graphical Function panel, click the appropriate picture to select
the type of graphical function you want to use: Continuous, Continuous
extrapolation, or Step. For more information about these options, see Graphical
Function panel.
in the bottom-right
Select the arrayed flow or converter for which you want to define separate graphical
functions.
Clear the Apply To All check box on the Graphical Function panel.
A table appears at the bottom of the Graphical Function panel so that you can define
the graphical functions for up to two dimensions at a time.
The row of boxes above the table indicates the combination of elements and
dimensions you are currently editing in the table.
In the following example, the table allows you to define the graphical functions for
the "Department" and "Employee Type" elements for the "Boston" dimension.
To define a graphical function for any cell in the table, click the cell, then use the
options at the top of the Graphical Function panel to define the graphical function for
the cell (see steps 4-8, in the previous procedure).
When you have finished defining the graphical functions for the currently displayed
combination of elements and dimensions, click the
combination of elements and dimensions.
button.
Repeat steps 3-4 until you have defined graphical functions for each
element/dimension combination.
Tip: You can define a graphical function for a specific element/dimension combination
by selecting the elements you want in the boxes above the table. The table adjusts
to display the appropriate cells in which to define the graphical function for the
selected elements.
In the model, select the converter or flow for which you want to delete the
associated graph.
Note: During the simulation run, any entities that have messages defined for them will post
their messages when their threshold criteria have been met. All visible messages (text,
pictures, and movies) appear in a message window, which floats above the model's surface.
If you assign a sound only to the message, the model will pause and play the sound, but no
visible message box appears.
To define a message, you first need to create one or more message stakes for an entity. A
message stake defines the criteria for when the message should appear: the value threshold
that triggers the message, and whether the entity's value must be greater or less than the
value threshold.
For example, you might create a message stake for an entity that says that a message
should appear when the entity's value drops below a value threshold of 50. You could also
create a second message stake for the entity that appears when the entity's value rises
above a value threshold of 100. Further, you can define multiple messages for each
message stake, so that one message appears the first time the entity's value crosses a
threshold, a second message appears when the entity's value crosses the same threshold,
and so on.
After you create and define the criteria that triggers a message, you specify the type and
content of the message that should appear (for example, the exact text, picture, sound, etc.
to be displayed).
Tip: You can suppress all message posting for a model by selecting the Disable
Posters check box in the Model Preferences dialog box.
On the model layer, select the building block (stock, flow, or converter) for which you
want to define a message.
At the top of the panel, click in the message stake box to add a message threshold
stake.
Use the options beneath the message stake box to define a minimum and maximum
value range and the criteria for when the message should be posted (for example,
"Post the message when the entity's value becomes > 1000."). For detailed
descriptions of these options, see Messages panel.
With the message stake still selected, use the options under "Message Properties"
select the type message you want to appear: Text Message or Media Message.
Note: If you selected > or < in step 4, the message stake has a double-sided arrow
head (
). Each side can have a different set of messages. Click a side to highlight
it, then define its message type and content.
Use the rest of the options under "Message Properties" to define the content of the
message (text, image, movie, sound, and/or navigation). For detailed descriptions of
these options, seeMessages panel.
To define additional messages for the same message stake (for example, to have a
different message appear the second time the message threshold is met), click the
"Message 1" box and then select Add New. Use the options in the "Message
Properties" section to define the second message. Repeat this step to define more
messages for the message stake, as needed.
Use the options under "Frequency" to specify how often per simulation run the
message should appear.
To create a new message stake for the selected entity, repeat steps 3-9.
To define messages for a different entity, select the entity in the model diagram, then
repeat steps 2-10.
in the bottom-right
To edit a message
You can edit the definition of any message you have already defined.
1
On the model layer, select the building block (stock, flow, or converter) whose
message you want to edit.
In the message stake box, select the message stake for the message that you want
to edit. If the message stake has a double-sided arrow head (
for which you want to edit messages.
Use the options on the rest of the panel to edit the message. For detailed
descriptions of these options, see Messages panel.
To delete a message
You can delete a message stake (and all its associated messages), one or more messages
defined for a single message stake, or all messages defined for an entity.
To delete a message stake and all its associated messages, select the stake in the
message stake box, then click the Delete button below the message stake box.
To delete one or more messages defined for a message stake, select the message
stake in the message stake box, select the message that you want to delete in the
box at the bottom of the "Message Properties" section, and then click
To delete all messages for the selected entity, click the Delete All Messages button
at the bottom of the Messages panel.
Overview: Arrays
In many modeling efforts, you may find that you need to replicate a model structure
multiple times. For example, a demographic model might treat the aging of a population and
be replicated for multiple ethnic groups in multiple areas. Conceptually, the model is very
straightforward; visually, however, the structure takes up a lot of diagram space and can
look confusing. Similarly, you might model a supply chain in which a supplier ships out of a
single inventory to multiple customers. Conceptually, this structure is very straightforward.
Diagrammatically, it can be appear quite complex. In a marketing model, you might
repeatedly use a simple structure to keep track of customer affinity for several different
product lines. In an ecological model, you might repeatedly use a simple structure to
represent the different serial stages associated with plant succession.
In each of these cases, copy and paste is the most straightforward way to represent the
multiple parallel model structures involved. Unfortunately, the associated visual complexity
of the resulting model diagram can become hard to manage, both for the model builder and
the model user.
Arrays provide a simple yet powerful mechanism for managing this visual complexity. By
"encapsulating" parallel model structures, arrays can help you to present the essence of a
situation in a simple diagram. Beneath the scenes, of course, arrays retain the richness of
the disaggregated structure.
The following example shows how arrays can help you simplify a model diagram:
Using arrays in a model is straightforward. The process consists of the following three steps:
1
For each arrayed entity, you need to define the initial value/equation for each
element within the array. You can choose to apply a single value/equation to all
elements in an array, or you can provide unique values/equations for each element.
For more information, see Creating arrayed entities.
Place the stocks and flows for the "main chains" in your model on the Map
layer.
When you were first planning your model, you identified the stocks and flows that
were central to the system or process you're trying to convey. Now, you want to lay
those out on the diagram and connect them to each other to see how they connect
and may interact.
Note: Be aware of unit consistency (each flow into or out of a stock must use the
same units of measure as the stock itself, except for "per time"; all stocks in a main
chain must use the same units of measure) and conservation laws.
Add connectors.
Connectors function as conjunctions. Use them to join stocks and flows together, and
flows together with other flows, to transmit information and actions from one entity
to another.
Add converters.
Converters have two main roles: they function as adverbs by modifying flows (for
example, indicating how quickly or slowly a flow is moving); converters also convert
units of measure from one entity so that they are compatible with another,
connected entity.
Graphical functions are graphs that show the relationships between entities in a
model. When one model entity changes, the other will change depending on the
assumptions or perception of what happens in reality.
1
When you have finished building a first draft of your model, test it by running the model and
looking for errors, implausible results, and other problems.
Overview: Modules
Modules are self-contained models that you can connect to other models. Modules allow you
to break a single model into well-defined "chunks". Each module within a model is a
cohesive model on its own, which you can run separately or within the larger model.
By using modules, you can:
Work with teams to build a complex model by having each team member build
separate modules that are later linked together.
Create very large models (models that may have previously exceeded size limits).
You can create as many modules as you need, and you can incorporate as many modules as
you want into a single model. This allows you to create very large or complex models that
are broken down into cohesive, self-contained pieces.
Note: When you import or export data from a model that contains modules, all module data
in the model are also imported or exported. For more information, see Importing and
exporting module entities.
Module input A module input is an entity (for example, a stock or a converter) that
contains information that the module needs in order to run. When you build a module, you
decide what information in the module needs to come from outside the module and you
create an entity to hold this information. These are the module inputs. When you are ready
to use the module, you select the entity outside the module that will provide the value for
the module input by assigning the module input to an entity.
If you think of a module as a mathematical function, unassigned module inputs (and
outputs) correspond to the formal parameters of a function. When you assign the input to
an entity outside the module, you are assigning the actual parameter.
You can assign a module input to any entity that is connected to the module that contains
the module input. For the module to run, an entity defined as a module input must be
assigned to an entity outside the module that will provide the input value.
Module output A module output is an entity in the module that contains information
generated by the module. A module's outputs can be assigned to other entities when that
module is connected to an entity or another module (thus, the module output value is
assigned to a module input). This allows you to have the results of one module become the
input value to another entity or module. You can manually define an entity as a module
output, or you can assign it as a module input and it will be automatically defined as a
module output.
Levels Modules within a hierarchy exist in levels. The hierarchy begins with a top level,
which is a model. The top-level model contains connections down into one or more modules.
Although several modules can exist on the same level, you can view only one module at a
time. You can navigate up and down levels to view modules, but you cannot navigate
sideways.
A Module Example
Imagine you are building a business model for an airline. The causal loop diagram for the
model (the dynamic hypothesis) might look like this:
This is the top level of the model, which comprises five modules (Customers, Fleet,
Reputation, Quality, and Service). The connectors between modules indicate how values
flow from one module to another. For example, you can see that entity values flow in both
directions between the Customers and Fleet modules; however, entity values flow only in
one direction from the Quality to Reputation modules, and from the Reputation to
Customers modules. Similarly, the connectors show you that there is no direct connection
between the Service and Customers modules.
You develop each underlying module as a separate model. For example, this is what the
Customers (customer acquisition) module might look like:
Note that this module depends on several inputs from elsewhere in the model and will not
be able to run until those inputs are assigned. The unassigned module inputs are indicated
visually by a double-thick border for their entity icons and a bold font for their labels:
Reputation
drop price sw
When these module inputs are assigned to entities elsewhere in the model, the module is
fully defined and able to simulate as it stands in isolation.
Notice that the previously unassigned module inputs are now named this way:
Reputation.Reputation
Quality.drop price sw
The part of the name before the period indicates the module where the entity is defined (for
example, Fleet, Reputation, and Quality). The part of the name after the period
indicates the entitys actual name, as defined in the module where the entity is defined (for
example, plane overcrowding factor and Average Service Quality). Notice that the
assigned module inputs are now indicated visually by an italic font for the entitys label, and
a double-thick gray border for the entitys icon.
This module also contains an entity that is defined as a module output (remember that the
Customers module had connectors indicating that it had inputs and outputs to both the Fleet
and Quality modules). In the Customers module, the Customers entity is defined as an
output. Outputs are indicated visually by a double-line border (which looks like an O in
converters and flows). The name for outputs appears in a regular font.
Now, lets look at the Quality module, which tracks service quality. This is the way the
module looks after the module inputs have been assigned:
In this module, there are two module inputs (Customers.Customers and Service.Service
Capacity) and four module outputs ("drop price sw", Average Service Quality, "Service
Quality", and normal service quality).
A module input can be assigned to
Entities that are directly connected to this module with an incoming connector.
Entities that are defined as module outputs in any module that is connected to this
module via an incoming connector.
Entities defined as module outputs in any submodule that has a connector into the
module input.
If you look back at the top-level of the module, you'll see that the Customers and Service
modules are both connected to the Quality module via incoming connectors, so module
outputs from both of those modules are available to be assigned as inputs to the Quality
module.
See Also
Another way is to use modules is to use (or re-use) an already-built structure in your model,
or to hide the details of a complex process. With this method, you are using the module to
perform a function in your model. You may not have built the module yourself, and you may
not even be able to see the details of the module if it is locked, but you have access to the
module by providing input values to the module and retrieving output values generated
from the module.
Click
on the Map or Model toolbar and then click the diagram surface to place
module icons.
Create and test the contents of each module. You can do this by building the
module directly within the model that contains it, or by creating a separate model.
In each module (or separate model to be used as a module), define the module
outputs.
In the following example, the "plane overcrowding factor" in the Fleet module is
defined as an output.
If you created a separate model to be used as module, import it into the module.
See Also
The following procedure describes the overall process for using an already-built structure in
your model to provide input values to the model. For more information about each step,
click the link provided in each step.
1
Create and test a model for the process that you want to be able to re-use in other
models.
The Smooth3 model is an example of a process that you might want to build once to
use as a part of other models.
When you are finished creating the process model, save it.
Create or open the model that will use the process model.
Use the
Import the process model as a module by selecting module icon on the Model layer
and then clicking the Import button on the Module Properties panel.
Use connectors to create connections between the model entities and the module.
In the Smooth3 example, the module is defined as having two inputs and one
output, so we could draw the connections this way, with "demand" and "perception
delay" providing the input value to Smooth3, and "perceived demand" accepting the
returned output value from Smooth3:
Assign the parameters and return values in the model to the defined module inputs
and module outputs in the module.
In the Smooth3 example, the two module inputs ("input" and "averaging time") are
the entities available to assign to the "demand" and "perception delay" entities in the
model.
Similarly, the module output "Smooth3" is the only entity available to be assigned to
"perceived demand".
This is what the model looks like with all entities assigned:
To prepare a module for use in a hierarchy, you need to decide which entities in the module
get their values from other modules, and which entities in the module (if any) output the
module's results. In most cases, you explicitly indicate which entities are module inputs and
which are module outputs by defining module inputs and module outputs.
When you are ready to use the module in a hierarchy, you need to assign each module input
to an actual entity. To make entities available for assigning to a module input, you first need
to make explicit connections (with connectors) between the module and other modules, or
between the module and an entity in the model. Once those connections are established,
you can assign module inputs.
You can also use the Ghost tool to connect entities. Using the Ghost tool allows you to
automatically assign module inputs and outputs as well as make connections between
modules and other modules or entities.
On the Map or Model layer, draw a connector from the module or entity that will
provide entities as outputs to the module that will accept those entities as input. In
the following example, entities in Module 1 are available as inputs for entities in
Module 2":
In the next example case, the "Customers" entity is available as an input for entities
in "Module 1".
You can change the relationships at any time by adding or removing connectors. If
you make changes to the connectors after you assign input entities in each module,
you may need to reassign inputs to their proper outputs to be able to run the model.
See Also
Note: You can also define an entity to be neither a module input nor a module output by
selecting the Neither option.
Navigate into the module for which you want to define an entity as a module input or
output.
Right-click the entity that you want to define, choose Module, and then
choose Accept Input, Provide Output, or Neither.
Entities that are directly connected to this module with an incoming connector.
Entities that are defined as module outputs in any module that is connected to this
module via an incoming connector.
Entities defined as module outputs in any submodule that has a connector into the
module input.
From within a module, by selecting an available entity that is outside the module.
From outside of a module, by selecting an entity that has a connector into or out of a
module and assigning it to an entity that is inside the module.
Assigning module inputs from inside the module is possible only when you have access to
the module. If the module is locked, you can only assign module inputs from outside the
module.
Navigate into a module to which you want to assign inputs by double-clicking the
module entity on the Map or Model layer.
In the module, right-click the entity to which you want to assign an input and then
choose Assign Input to. A list of entities that can be assigned to this entity
appears.
If the module input has already been assigned, a check mark appears next to
the entity assigned to it (Quality.normal_service_quality, in the above
example).
If an entity is a flow and has already been assigned to a flow in the model, it
appears grayed out for all other flows in the model.
Note: Although module outputs that are flows can only be assigned to one
other flow in the model, they can still be assigned to as many converters as
you wish.
All other listed outputs have not yet been assigned and can be assigned to
inputs.
Select an available entity to assign to the module input. When an input is already
assigned, choosing a different output reassigns the input to the new entity. When
you assign a module input, the entity's name is automatically changed to that of the
output.
To assign an entity as an input value to a module input in a connected module, rightclick the entity and then choose Assign to. A list of module inputs to which you can
assign the entity appears:
If the entity has already been assigned to a module input, a check mark
appears next to the entity assigned to it.
All other listed module inputs have not yet been assigned and can be assigned
to the entity.
Select an available module input to assign to the entity. When an entity is already
assigned to a module input, choosing a different module input reassigns the entity to
the new entity.
Select an available module output to assign to the entity. When an entity is already
assigned to a module output, choosing a different module output reassigns the entity
to the new entity. When you assign an entity to a module output, the entity's name
is automatically changed to that of the module output.
See Also
Note: You can also use the ghost tool to connect entities across modules and to
automatically assign module inputs and outputs.
A ghost of an entity has no independent identity; it is simply an image of the building block
from which it was ghosted. The ghosted replica has no equation of its own. When you
double-click a ghosted replica, the dialog box that opens belongs to the original entity which
the replica was made. No matter how many ghosted replicas of a given building block you
create, only one dialog box exists, because only one building block exists.
A ghost adds no real structure to a model. Ghosted stocks have no inflows or outflows;
ghosted flows and ghosted converters (when you "ghost" a flow, its ghost appears as a
converter) have no input connectors. Ghosts are thus read-only information holders. You
can draw connectors from them. Nothing can go into them.
The ghost is available on the Map and Model layers only.
To create an alias
1
On the Map or Model layer, navigate to the stock, flow, or converter for which you
want to create an alias.
Click once on the stock, flow, or converter that you want to ghost.
The mouse pointer changes from the ghost pointer
building block you are ghosting.
Use the ghosted entity by adding connections between it and other model entities, as
needed.
See Also
Entities that are directly connected to this module with an incoming connector.
Entities that are defined as module outputs in any module that is connected to this
module via an incoming connector.
Entities defined as module outputs in any submodule that has a connector into the
module input.
From within a module, by selecting an available entity that is outside the module.
From outside of a module, by selecting an entity that has a connector into or out of a
module and assigning it to an entity that is inside the module.
Assigning module inputs from inside the module is possible only when you have access to
the module. If the module is locked, you can only assign module inputs from outside the
module.
Navigate into a module to which you want to assign inputs by double-clicking the
module entity on the Map or Model layer.
In the module, right-click the entity to which you want to assign an input and then
choose Assign Input to. A list of entities that can be assigned to this entity
appears.
If the module input has already been assigned, a check mark appears next to
the entity assigned to it (Quality.normal_service_quality, in the above
example).
If an entity is a flow and has already been assigned to a flow in the model, it
appears grayed out for all other flows in the model.
Note: Although module outputs that are flows can only be assigned to one
other flow in the model, they can still be assigned to as many converters as
you wish.
All other listed outputs have not yet been assigned and can be assigned to
inputs.
Select an available entity to assign to the module input. When an input is already
assigned, choosing a different output reassigns the input to the new entity. When
you assign a module input, the entity's name is automatically changed to that of the
output.
To assign an entity as an input value to a module input in a connected module, rightclick the entity and then choose Assign to. A list of module inputs to which you can
assign the entity appears:
If the entity has already been assigned to a module input, a check mark
appears next to the entity assigned to it.
All other listed module inputs have not yet been assigned and can be assigned
to the entity.
Select an available module input to assign to the entity. When an entity is already
assigned to a module input, choosing a different module input reassigns the entity to
the new entity.
Select an available module output to assign to the entity. When an entity is already
assigned to a module output, choosing a different module output reassigns the entity
to the new entity. When you assign an entity to a module output, the entity's name
is automatically changed to that of the module output.
See Also
Creating modules
You can create a module either by creating a model, saving it, and then importing it into a
module; or by creating and building a module directly within a model. Both procedures are
described below.
Define the model as you would any other model, but also define its module inputs
and outputs.
tool.
Click the diagram surface to place the module entity on the layer.
Save your changes as you work by choosing Save from the File menu. This saves all
changes you made to the top-level model and any modules in the model.
Note: By default, modules are saved in the model file. To save a module in a
separate file, select the Save in separate file check box on the Module Properties
panel. For more information, see Setting module properties.
Repeat this procedure to add as many modules as you need to the model.
You can add modules to the top-level model, or to any other modules within the
model by navigating to the module into which you want to add another module.
Tip: To navigate from the module to another level in the hierarchy, click
navigate up one level, or click
to
When you having finished creating a module, define the module inputs and outputs for the
module, and then assign the module inputs. The model, as a whole, cannot run until all
module inputs have been assigned (each module, though, can run in isolation). For more
information, see Running modules.
Note: After you've created a module, you can also add a picture to appear on a module's
icon, select to password-protect the module, and select whether you want to save the
module in a separate file from the model. For more information, see Setting module
properties.
See Also
Overview: Units
A great way to clarify conceptualization, disambiguate terminology and guard against
common formulation errors is to specify units of measure for each model variable and check
the model for dimensional consistency. Stella makes this very easy to do, and allows you to
quickly find and correct any inconsistencies that might arise.
To specify the units of measure for a variable you enter them in the Units editor at the
bottom of the Equation panel.
You can type into the Units editor and you will be prompted with the names of units already
used in the model as well as defined unit names. Alternatively you can select the units from
the popup menu that opens when you click on the popup indicator at the right. Stella has a
number of built in units and the popup menu organizes these into categories as well as
providing access to any units of measure that you have defined or have already been used
in the model. There are also options to check whether the units for the current variable are
consistent and to suggest units for the variable based on the equation as discussed
in Assigning units.
The units of measure you specify can be a name, or an equation. Unit equations are simpler
than variable equations. They can contain names, multiplication operators (* or -), division
operators (/), power (^) and parentheses to control precedence. The names of units must
start with a letter or Unicode character beyond the Latin character range and contain letters,
numbers, spaces or $. You can also use both $ and % as a unit of measure and 1 is treated
as the identity unit of measure. Because of their simple format you can use a space or
underbar interchangeably when specifying units.
The following are valid units of measure:
$/Hours
US$/Months
Months Per Year
1/Seconds
Meters/Second^2
Meters/Second/Second
Meters/(Second-Second)
The last three of these are equivalent.
The following are not valid units of measure:
$US/Day - $ can't be followed by anything
Feet/(Second/Second - mismatched parentheses
Tonnes^Apples - can only follow ^ with a number
Checking Units
The software checks units by passing through the equations for a variable substituting the
units of measure for the variables used for the variable values. For example if we have the
equation
production = workers * productivity
and we have specified that workers are measured in Person, and productivity is measured in
Widget/Month/Person, the substituting these values would give Widget/Month. If the units
of measure for production are Widget/Month then the units will match.
If, on the other hand, workers was measured in People then what would happen? Reducing
the equation would give People/Person*Widget/Month. People and Person should reasonably
cancel in this equation, and Stella does this by having person as an alias for People. This
alias, and a number of others are built in by Stella. Similarly, if the units assigned to
productivity were Widgets_per_Month_per_Person, you could create an equation settings
Widgets_per_Month_per_Person to be equal to Widget/Month/Person.
You can define a Unit of measure by specifying an equation and zero or aliases using
the Unit Editor dialog box. The equation is not required if there are one or more aliases.
Stella has a variety of defined Units of measure built in, including Widgets with alias
widgets, Seconds with aliases s and second, Per Second with equation 1/Seconds and so on.
Having the equations and aliases in place allow you to attach easy-to-read units to all your
model variables, but still have them resolve to a well defined meaning for units checking.
If there are any problems with Units in your model they are displayed in the error list at the
end of the Run toolbar.
Open the Unit Editor dialog box by using one of these methods:
o
From the Interface, Model, or Equation menu, choose Unit Editor from the
Model menu.
, and then
In the Unit Name box, type a unique name for the new unit of measure. This name
will appear in the shortcut menu used to assign units and autocomplete will also
prompt you with it.
In the Unit Equation box, type the equation for the new unit of measure. If you leave
the box blank, the software assumes that the unit of measure's name and equation
are the same. If you want to create an additional alias for an existing unit definition
type in that unit for the equation. For more information about creating equations,
see Creating equations for units.
In the Unit Alias box, optionally type in a comma separated list of equivalent names
for the unit you are defining. For example the unit Cans might have aliases Can, Tin
Can, Tin Cans.
When you are finished specifying the new unit definition, click Add To My Units or
click Add To Model Specific UnitsThe new unit of measure definition is added to
the corresponding list in alphabetical order. Assigning the named unit, any of its
aliases, or its equation to a variable will have the meaning.
Open the Unit Editor dialog box by using one of these methods:
o
After typing a new unit of measure in the Units box on the Equation panel,
click
Right-click an entity in the diagram, choose Units, and then choose Unit
Editor.
In the "Available Units" list, select the existing unit of measure from which you want
to derive the new unit of measure.
Edit the name, equation, and short name for the new unit of measure.
When you are finished specifying the new unit of measure, click Add To List.
You can check units for a specific entity or for the entire model. Both procedures are
described below.
In the model diagram, select the entity whose units you want to check.
Note: You must have an equation defined for the entity in order to check its units.
If no problems are found, a message appears that tells you that all units in the
model are consistent. Click OK to close the message.
If it finds any problems, a message appears that tells you that some units are
inconsistent. Click OK to close the message.
The entities that have inconsistent units are highlighted in the model diagram.
If the Enforce Unit Consistency check box is selected in the Model Preferences
dialog box, an "?" appears in any entity that fails the unit consistency check. You
cannot run a simulation until all inconsistencies are resolved.
To troubleshoot the inconsistencies, select each highlighted entity, and then check
the entity's units on the Equation panel to verify that the correct unit of measure is
assigned to the entity.
See Also
For an entity that has been loaded into a table or a graph, hovering displays a small graph
with the entity's value.
Tip: To display a graph on hover for all model entities if the model has run, select
the Analyze Mode check box in the Run Specs dialog box. If the model has not yet run,
hovering over an entity will display the entity's initial value.
See Also
Stocks Stocks are accumulations. They collect whatever flows into them, net of
whatever flows out of them.
Flows The job of flows is to fill and drain accumulations. The unfilled arrow head on
the flow pipe indicates the direction of positive flow
Converters Converters hold values for constants, define external inputs to the
model, calculate algebraic relationships, and serve as the repository for graphical
functions. In general, they convert inputs into outputs.
Modules Modules are self-contained models that you can connect to other models.
Modules allow you to break a single model into well-defined "chunks".
Note: In addition to these building blocks, you can use sector frames to group together
functionally related chunks of model structure. For more information about working with
sector frames, seeSector frames.
moving them
renaming them
deleting them
On the appropriate layer toolbar, click the tool for the building block you want to
place.
Tip: To place multiple building blocks of the same type on the diagram, double-click
the tool to keep it selected.
If more than one type of the building block is available (for example, stocks), click
and hold the building block's tool in the toolbar to view a list of the available types,
then select the type you want to use.
If you double-clicked to place more than one building block of this type on the
diagram, continue clicking to place the building blocks.
When you are finished placing the building block, press ESC to deselect the building
block type.
Tip: For detailed notes on placing each type of building block, refer to the discussion of the
specific building block you are using.
Click within the building block icon's border. The building block is highlighted.
For a flow, click within the circle portion of the flow icon.
Click inside the building block icon's border and hold the mouse button down.
Click and drag a building block's move handle to the new location.
For a flow attached to a stock, click and drag the flow's move handle to drag it up or
down the side of the stock.
To detach a flow from a stock, click and drag the flow's move handle away from the
stock.
To re-attach a flow to a stock, click and drag the cloud end of the flow onto the
stock.
For a connector, click and drag the connector's handle to the new position on the
entity to which it's attached.
Click the building block's name plate. The name plate and building block become
highlighted.
To replace the existing name, type a new name. The new name replaces the
existing name.
To edit the existing name, hover the mouse pointer over the name. The
pointer changes to an I-beam. With the I-beam, click within the name where
you want to begin editing, then type your changes.
To create a multi-line name, press RETURN at the end of a line to move to the
next one.
When you are finished editing the name, click a blank space on the diagram.
Tip: To constrain the position of the name plate to North, South, East, or West, hold the
CTRL key (Windows) or the Command key (Macintosh) while dragging the name plate.
On the model diagram, select the building block whose properties you want to edit.
On the right side of the window, select the panel for the properties you want to view
or edit.
Tip: Double-click the building block to automatically select the building block's
default field on the currently displayed panel.
Use the options on the panels to make the edits you want.
For more information about using panels, including making, applying, and undoing changes
to properties, see Working with panels.
or
Right-click the object and then choose Delete from the menu that appears.
or
Press the DELETE key.
See Also
Input devices allow you and your model's users to provide or adjust input values
for model entities. Input devices include objects like knobs, sliders, and list input
devices.
Output devices allow you to display model output in ways that make it easier for
model users to understand the results of the model run. Output devices include
objects like graph pads,table pads, and numeric displays.
Buttons allow you to initiate actions, such as navigating to another page of the
model, executing a menu command, or unfurling the story of your model.
The objects you can use depend on the layer on which you are working. The following table
indicates which objects are available for each diagram layer.
Interface layer Map and Model layer
Annotations
Input devices
Text box
Graphics frame
Loop pad
Knob
Switch
Buttons
Table pad
Numeric display
Status indicator
Information
Navigation
Menu
Hyperlink
Play Movie
Storytelling
Tracing
Many of the tasks associated with objects (placing them on the diagram, selecting them,
moving them, etc.) are the same, regardless of the type of object you're working with. For
details about using a specific object, refer to the documentation for the object you want to
use.
The following sections describe how to work with objects by
moving them
resizing them
deleting them
On the appropriate layer toolbar, click the tool for the object you want to place.
Tip: To place multiple objects of the same type on the diagram, double-click the tool
to keep it selected. This feature is not available for buttons, loop pads, graph pads,
and table pads.
If more than one type of the object is available, click and hold the object's tool in the
toolbar to view a list of the available types, then select the type you want to use.
If you double-clicked to place more than one object of this type on the diagram,
continue clicking to place the objects.
When you are finished placing the objects, press ESC to deselect the object type.
Tip: For detailed notes on placing each type of object, refer to the discussion of the specific
object you are using.
To select an object
Note: To select a button, text box, or graphics frame, hover the mouse pointer over the
icon's border or edge. When the mouse pointer changes to cross-hairs, click to select the
object.
To move an object
1
Note: Moving an object is not the same as moving its associated pad (for instance, a loop
pad, graph pad, or table pad). The object's icon can appear in one location on the diagram
while the associated pad opens in another. For more information, see Working with pads.
To resize an object
Use this procedure to resize buttons, list input devices, text boxes, graphics frames,
and pads.
1
Click and drag one of the resize handles until the object is the size you want.
Tip: To constrain the position of the name plate to North, South, East, or West, hold the
CTRL key (Windows) or the CMD key (Macintosh) while dragging the name plate.
Select the object whose properties you want to edit, and then choose Open
Selection from the Interface, Map, or Model menu.
or
Right-click the object's icon, and then choose Open from the menu that appears.
or
Double-click the object's icon:
o
For buttons, text boxes, or graphics frames, select the icon first, then doubleclick the icon.
For list input devices, double-click the empty space to the left or right of the
list's name or in an empty row in the list.
To delete an object
1
See Also
The following procedure is a high-level guide to the steps involved in creating a model
interface. Use the links in each step for more information about the step.
Create a story.
Tell a story with your model by using the storytelling feature. Storytelling allows you
to customize the sequential unfurling of the entities in your model. You choose which
entities are revealed and in what order. Storytelling also allows you to intersperse
text, graphics, sounds, or movies between each entity that is being revealed. Finally,
you can simulate the structure that is showing on the diagram, in mid story.
See Also
Stocks Stocks are accumulations. They collect whatever flows into them, net of
whatever flows out of them.
Flows The job of flows is to fill and drain accumulations. The unfilled arrow head on
the flow pipe indicates the direction of positive flow
Converters Converters hold values for constants, define external inputs to the
model, calculate algebraic relationships, and serve as the repository for graphical
functions. In general, they convert inputs into outputs.
Modules Modules are self-contained models that you can connect to other models.
Modules allow you to break a single model into well-defined "chunks".
Note: In addition to these building blocks, you can use sector frames to group together
functionally related chunks of model structure. For more information about working with
sector frames, seeSector frames.
The following sections describe how to work with building blocks by
moving them
renaming them
deleting them
On the appropriate layer toolbar, click the tool for the building block you want to
place.
Tip: To place multiple building blocks of the same type on the diagram, double-click
the tool to keep it selected.
If more than one type of the building block is available (for example, stocks), click
and hold the building block's tool in the toolbar to view a list of the available types,
then select the type you want to use.
If you double-clicked to place more than one building block of this type on the
diagram, continue clicking to place the building blocks.
When you are finished placing the building block, press ESC to deselect the building
block type.
Tip: For detailed notes on placing each type of building block, refer to the discussion of the
specific building block you are using.
Click within the building block icon's border. The building block is highlighted.
For a flow, click within the circle portion of the flow icon.
Click inside the building block icon's border and hold the mouse button down.
Click and drag a building block's move handle to the new location.
For a flow attached to a stock, click and drag the flow's move handle to drag it up or
down the side of the stock.
To detach a flow from a stock, click and drag the flow's move handle away from the
stock.
To re-attach a flow to a stock, click and drag the cloud end of the flow onto the
stock.
For a connector, click and drag the connector's handle to the new position on the
entity to which it's attached.
Click the building block's name plate. The name plate and building block become
highlighted.
To replace the existing name, type a new name. The new name replaces the
existing name.
To edit the existing name, hover the mouse pointer over the name. The
pointer changes to an I-beam. With the I-beam, click within the name where
you want to begin editing, then type your changes.
To create a multi-line name, press RETURN at the end of a line to move to the
next one.
When you are finished editing the name, click a blank space on the diagram.
Tip: To constrain the position of the name plate to North, South, East, or West, hold the
CTRL key (Windows) or the Command key (Macintosh) while dragging the name plate.
On the model diagram, select the building block whose properties you want to edit.
On the right side of the window, select the panel for the properties you want to view
or edit.
Tip: Double-click the building block to automatically select the building block's
default field on the currently displayed panel.
Use the options on the panels to make the edits you want.
For more information about using panels, including making, applying, and undoing changes
to properties, see Working with panels.
See Also
Running model next