Welcome to the GoldSim Quick Tour
If you want to get a better idea of what GoldSim can do and how it can be used to create, document and present both simple and highly complex simulation models, the best way to learn more is to take this Quick Tour. It provides a brief description of the basic GoldSim modeling concepts, along with an overview of the key features and capabilities of the software. You step forward and backward through the Quick Tour manually, and it takes about 15 minutes to walk through it.
This Quick Tour assumes that you are somewhat familiar with basic modeling and simulation concepts. If you are new to simulation, prior to viewing the Quick Tour, it is recommended that you first read a short overview of basic simulation concepts.
The GoldSim Simulation Environment
The GoldSim simulation environment is highly graphical and completely object-oriented. You create models by manipulating graphical objects such as those shown below:
The objects represent the features, processes and events controlling the system that you are simulating. In a sense, GoldSim is like a "visual spreadsheet" allowing you to visually create and manipulate data and equations. As can be seen in the example shown above, based on how the various objects in your model are related, GoldSim automatically indicates their influences and interdependencies by visually connecting them in an appropriate manner.
The GoldSim Elements
The various objects with which a GoldSim model is constructed are referred to as elements. Each element represents a building block of the model, and has a particular symbol or graphical image (which you can customize) by which it is represented on the screen. Typically, each element has a unique name by which it is referenced (e.g., X, Revenue, Rainfall, Discount_Rate), accepts input data, and in turn produces output data.
GoldSim provides a wide variety of built-in elements. Some of these elements, called Input Elements, provide a mechanism for the user to enter inputs into the model. There are five types of Input Elements, but the most commonly used Input elements are Data, Time Series and Stochastics.
Data elements allow you to specify a single scalar value (e.g., the discount rate) or an array of related values (e.g., the salaries of each individual in a group). Time Series elements allow you to specify a time series of a value (e.g., monthly rainfall rates, quarterly cashflows). Stochastic elements allow you to specify that a particular input is uncertain by defining it as a probability distribution.
As will be discussed later, you can link these objects to spreadsheets and databases in order to import data.
Other elements in GoldSim represent functions. Function elements compute outputs based on defined inputs. That is, they require one or more inputs, carry out a specified calculation on those inputs, and produce one or more outputs. GoldSim provides a wide variety of function elements. The simplest and most general function element is an Expression.
Expressions produce a single output by calculating user-specified formulas, such as 2 + 3, A*B, or sqrt(55). Similar to a cell in a spreadsheet, when defining an Expression, you can use a wide variety of mathematical operators and functions. You can even use conditional operators (e.g., >,<, =) and "if, then logic to define Expressions.
Other function elements have predefined functionality. For example, a Selector provides an easy way to create nested if,then logic.
Stock and Delay Elements
Stock and Delay Elements are specialized function elements with the unique property that their outputs are influenced by what has happened in the past. That is, unlike standard function elements, whose outputs at any given time are computed based solely on the current (instantaneous) values of their inputs, the outputs of dynamic elements are determined by the previous values of their inputs. Such elements accumulate past events and provide systems with inertia and memory, and hence are responsible for internally generating the dynamic behavior of a system.
An example of a stock element is the Reservoir. A Reservoir accumulates materials, and is useful for representing things like bank accounts and quantities of materials or items (e.g., water, soil, salmon). In its simplest form, a Reservoir requires as inputs an Initial Value, a Rate of Addition and a Rate of Withdrawal, and outputs a Current Value using the following equation:
An example of a Delay element is the Material Delay. Delays allow you to represent processes in which the output lags the input. The Material Delay accepts as input a flow of material (e.g., gal/day, $/yr, widgets/hr), moves it through a "conveyor" or "pipeline" (while optionally dispersing it), and then outputs the flow. Such an element can be used to represent such processes as the movement of water through soils or the movement of parts on a conveyor.
Building a Model in GoldSim
GoldSim models are built by connecting the outputs of one (or more) elements to the inputs of other elements. These connections are referred to as links and the arrows that represent the links are called influences.
A complex GoldSim model can have many hundreds, and in some cases, thousands, of elements and links.
A Simple GoldSim Model
The easiest way to understand GoldSim is to examine a very simple example. In this animated video, we illustrate how GoldSim could be used to carry out a simple dynamic simulation that computes the volume of water in a pond as a function of time.
The demonstration walks through the sequence of steps required to create the various elements, link them together, and view the results. These steps are presented as a short animated sequence, which takes about 10 minutes to view.
Dimensions and Units
As you may have noticed in the animated example, when the elements were created and data were entered, the dimensions and units were specified. In fact, one of the more powerful features of GoldSim is that the program is dimensionally aware.
GoldSim has an extensive internal database of units and conversion factors. You can enter data and display results in any units. You can even define your own units.
When elements are linked, GoldSim ensures dimensional consistency and carries out the unit conversions internally. As a result, it is never necessary for you to carry out (error-prone) unit conversions or worry about dimensional consistency. GoldSim checks for consistency and carries out the conversions for you automatically.
Top-Down Hierarchical Modeling
Complex GoldSim models may have hundreds (or even thousands) of elements. In order to manage, organize and view such a model, it is very useful (in fact, essential) to group the elements into subsystems. A subsystem is simply a collection of elements.
Subsystems are created in GoldSim by placing elements into Containers. A Container is simply an element into which other elements have been placed. In a sense, it is like a "folder" or a "box".
Containers can be placed inside other Containers, and any number of layers of containment can be created. This ability to organize model elements into a hierarchy creates a powerful tool for creating "top-down models", in which the level of detail increases as you "drill down" into the model. You can even "lock" a Container (with a password), which allows other people to view and use its contents, but prevents them from modifying the contents in any way.
The ability to create subsystems using Containers (and protect their contents) provides a powerful capability: the reuse of subsystems. A user can create a complex subsystem, and then document and save it, such that a subsequent user could simply drop the subsystem into a new model. This facilitates the creation of a library of documented and verified subsystems. Such a library can be used within an organization to quickly and efficiently build complex models.
Building a Hierarchical System Using Containers
In order to better understand the use of Containers, consider the simple model below. At the highest level, this model contains three subsystems: "Revenues", "Expenses", and “Income". As can be seen, GoldSim provides a browser view of the system you are modeling, so that the system hierarchy can be viewed as a tree:
You can "drill down" to another level of detail by looking inside a Container. This is done by clicking on the Container's "+" symbol. In this example, the inside of the "Revenues" Container looks like this:
Manipulating Vectors and Matrices
In many systems, you may want to create and manipulate elements that represent collections of data, rather than individual items. For example, you may want to create an element that represents your company's revenue for each of the last five years, or an element that represents the salmon population in each of 20 streams.
To address these kinds of problems, GoldSim allows you to create and manipulate vectors and matrices (collectively referred to as arrays). The example to the right is an array that represents the salmon population in each of 20 streams over a 5 year period.
In addition to adding data in the form of vectors and matrices, you can manipulate these arrays in equations. For example, you could create an Expression element, and define it as:
2 * Salmon_Population
The output of the Expression would be an array, identical to the Salmon_Population array, except each item of the array would be two times greater. If required, you can access a particular item of the array in an equation. For example,
references a single value representing the salmon population in Bear Creek in 1996. GoldSim also provides a wide variety of special operators that allow you to manipulate arrays. For example, the expression
would result in a vector representing the sum of all items in each column of the array. That is, for this example, this would convert the matrix (a 2-D array) to a vector (a 1-D array) representing the total salmon population (summed over all streams) for each year.
Linking to Spreadsheets and Databases
GoldSim allows you to dynamically link a spreadsheet directly into your model. In the simplest use of a such a spreadsheet link, you can use the spreadsheet as a data source. In addition to importing data from a spreadsheet, you can use a spreadsheet as a custom element (with specific functionality). That is, you can dynamically send data from GoldSim to a spreadsheet, force the spreadsheet to recalculate, and then retrieve (updated) data from the spreadsheet back into GoldSim during a simulation (e.g., every timestep).
GoldSim also provides powerful capabilities to easily import lookup tables and time series data from spreadsheets to GoldSim. You can also readily export GoldSim results to a spreadsheet.
GoldSim also allows input elements to be linked directly to an ODBC-compliant database. After defining the linkage, you can then instruct GoldSim to download the data at any time. When it does this, GoldSim internally records the time and date at which the download occurred, and this information is stored with the model results. This mechanism provides very strong and defensible quality control over your model input data.
Linking to External Models
If GoldSim's built-in elements or a dynamically-linked spreadsheet are not sufficient for representing a particular aspect of your model, you can dynamically link an external computer program (add a DLL) directly to GoldSim. You must specify the parameters (outputs of existing GoldSim elements) that you wish to send to the external program, and the parameters that the external program will return to, and make available within, GoldSim.
In most cases, you need to only make minor modifications to the external program code to which you want to link in order for it to communicate with (i.e., be dynamically called by) GoldSim.
Note that this ability greatly increases the power and flexibility of GoldSim, allowing nearly any program to be dynamically linked into the dynamic, probabilistic and highly graphical GoldSim framework.
Modeling Discrete Events
GoldSim provides powerful capabilities for superimposing the occurrence and effects of discontinuities and discrete events onto continuously varying systems. This allows for the realistic simulation of discrete events such as financial transactions, accidents, system failures, storms, labor strikes, and lawsuits. Events such as these can have important effects on the performance of many systems, and it is therefore important to represent them in a realistic manner.
GoldSim provides a variety of specialized elements for simulating the occurrence and consequences of discrete events. Events can be generated regularly ("occur exactly once a year on January 1"), randomly ("occur, on average, once a year"), or based on a certain set of conditions ("when A is greater than B and the value of C has changed"). An event can trigger one or more consequences, such as changing the status of something in the model ("this task is now complete"), achieving a specified milestone, or making a discrete change to some quantity in your model ("add $1000 to the account").
Building and Maintaining Large, Complex Models
In addition to the ability to build hierarchical models using Containers, GoldSim also provides a number of other features to facilitate the construction, maintenance, and presentation of very large, realistic (and hence, often complex) models.
- The ability to localize subsystems in your model so that variable names can be repeated without causing conflicts. This is particularly useful when your model contains numerous parallel systems (e.g., different divisions of a company), in which many of the equations and variable names would be identical. It also allows multiple people to work on different subsystems in a model without worrying about conflicting variable names.
- The ability to record versions (revisions) of a particular model file, so that you can identify the differences between the various versions of the file as the model is iteratively modified. (Which elements have changed? Which elements were deleted? Which elements have been added?)
- The ability to make subsystems of your model (i.e., Containers) conditional. Conditionality allows you to make a Container and all of its contents inactive unless specific events occur and/or conditions are met. Conditionality is a very powerful feature, and can be used to 1) temporarily "turn off" certain parts of your model (e.g., during a testing phase); or 2) simulate processes or features which themselves only exist or are active during certain parts of your simulation.
- The ability to set the equivalent of "break points" in your model using the Interrupt element. This element allows you to set a triggering condition (e.g., "X < 0 or Y < 0") that causes the model to pause and display a user-defined message. After pausing a model, you can subsequently browse it and view result to date. This capability allows you to easily test and debug large, complex models.
GoldSim provides a powerful capability that allows you to create, run and compare different scenarios for your model. Scenarios are differentiated by having different sets of input data. In particular, different scenarios have different values for one or more Data elements (referred to as Scenario Data). GoldSim's scenario modeling capability allows you to directly compare results generated by different sets of input parameters. In effect, when you use this capability, your model can store (and subsequently compare) multiple sets of outputs:
This can be very useful for carrying out sensitivity analyses, testing and comparing alternative designs, and asking "what if" questions.
Using Scripts for Complex Calculations
In some situations, you may wish to define a complex function which cannot be readily implemented using the expression editing features supplied by GoldSim. For example, calculation of an output may require very complex logic which would be cumbersome to represent using standard GoldSim elements, or it may require a numerical solution technique (e.g., iteration); or perhaps you need to construct an array using complex logic.
Although, for some complex calculations, an External (DLL) element may be required, for many applications a Script element can be used. The key advantages of a Script over an External (DLL) is that 1) it does not require use of a separate programming language and interface; and 2) it is much more transparent (all of the "code" can be seen directly in GoldSim):
Scripts are created by inserting and editing statements or statement blocks, which may be variable definition statements, variable assignment statements, statements controlling the sequence of execution in the script (e.g., loops and if statements), or statements used for writing messages to a log file. Script elements even have their own built-in debugging features (e.g., breakpoints).
The Script element does not expect the user to learn or be familiar with a particular language. As a result, scripts are not created using a text editor. Rather, statements are inserted and edited within a "controlled environment" within the element's property dialog in which the user selects from a number of available statement types. The syntax is already defined for each type of statement – the user simply specifies the attributes and properties for each statement via a dialog box when the statement is inserted. Statements can subsequently be moved, deleted, and edited.
Controlling the Timestep
GoldSim provides a powerful timestepping algorithm that allows you represent the dynamics of your system very accurately. This includes the following:
- You can increase or decrease the timestep length according to a specified schedule during a simulation (e.g., start with a small timestep, and then telescope out to a larger timestep). This can be useful, for example, if you know that early in a simulation, parameters are changing rapidly, and hence you need a smaller timestep.
- You can dynamically adjust (adapt) the timestep during a simulation based on the values of specified parameters in your model. For example, you could instruct GoldSim to use a timestep of 1 day if X was greater than Y, and 10 days if X was less than or equal to Y. Similarly, you could instruct GoldSim to use a short timestep for a period of 10 days after a particular event occurs, and then return to the default timestep.
- You can apply dynamic adaptive timestepping to specific Containers. This allows you, for example, to specify different timesteps for different parts (i.e., Containers) in your model. For example, if one part of your model represented dynamics that changed very rapidly (requiring a 1 day timestep), while the rest of the model represented dynamics that changed much more slowly (requiring a 10 day timestep), you could assign a 10 day timestep to the model globally, and a 1 day timestep to the Container representing the subsystem that changed rapidly.
- For some special types of systems, GoldSim provides additional dynamic timestepping algorithms (different from the timestep algorithms described above) to more accurately solve these equations. In particular, the Contaminant Transport Module utilizes dynamic timestep adjustment to accurately solve the coupled differential equations associated with mass and heat transport.
Optimizing Your Models
GoldSim provides the ability to carry out a special type of run to facilitate optimization of your model. For this type of run, you specify an objective function (a specific result that you would like to minimize or maximize), an optional constraint (a condition that must be met), and one or more optimization variables (variables in your model that you have control over).
GoldSim then runs the model multiple times, systematically selecting combinations of values for each of the optimization variables. By doing so, GoldSim can determine the values of the optimization variables that optimize (minimize or maximize) the objective function while meeting the specified constraint.
Typical uses of optimization include:
- Finding the best input data values for a model, in order to match observed historical data (i.e., calibration).
- Selecting the "best" option from among alternatives. "Best" could mean safest, cheapest, most reliable, or another appropriate measure.
- Optimizing the timing of actions or policy changes during the course of a simulation.
Carrying Out Sensitivity Analyses
GoldSim provides the ability to carry out a special type of run to facilitate sensitivity analyses. For this type of run, you specify the result you are interested in, and one or more variables that you want to analyze (which must be Stochastic or Data elements).
GoldSim then runs the model multiple times, systematically sampling each variable over a specified range, while holding all of the other variables constant. This then allows GoldSim to produce sensitivity plots (i.e., a tornado chart and X-Y function charts) to assist you in graphically identifying the variables in your model to which the result is most sensitive.
GoldSim also provides a second type of sensitivity analysis in which statistical sensitivity measures are computed by analyzing the results of multiple realizations of the model where all of the Stochastic variables are simultaneously sampled each realization.
Result Display and Analysis
GoldSim has powerful charting and display functions that allow you to plot and view your data in a variety of ways. You can plot time histories of your results, view probability distributions, create scatter plots, view correlation matrices, and view tables. GoldSim also allows you to export your simulation results (to a spreadsheet or text file, from where it can be readily loaded into a statistical post-processor or advanced graphical package.
A model that cannot be easily explained is a model that will not be believed or used. As a result, GoldSim was specifically designed to allow you to effectively document, explain and present your model.
GoldSim allows you to add text, images and other graphic objects directly to your model. You can also replace any of the default images for the elements with your own images. In addition, you can add hyperlinks from GoldSim to other documents (e.g., a web site or a report). Clicking on the hyperlink then opens that document.
In addition to adding graphics, text and hyperlinks, you can also attach a note to each element in your model. The notes (which are stored as part of the model file) can include hyperlinks to other documents.
By using these presentation capabilities and organizing your model in a logical, hierarchical manner, it can readily be presented and explained at an appropriate level of detail to multiple target audiences.
Creating Dashboards and Player Files
GoldSim provides a specialized module that allows a GoldSim modeler to design and construct a "dashboard" interface for models. The interfaces can be designed to look like "dashboards" or "control panels", with buttons, gauges, sliders and display panels, and the author can imbed instructions, tool-tips and graphics to provide instructions on the use of the model. Such an interface allows a model to be easily used by someone without requiring them to be familiar with either the GoldSim modeling environment or the details of the specific model:
In effect, the Dashboard Authoring Module enables you to use GoldSim as a high-level programming language to create custom simulation applications for distribution to end users who may not necessarily be modelers. Users do not need to have a licensed version of GoldSim to view and run a "dashboarded" model. They simply need to download the free GoldSim Player.
Specialized GoldSim Modules
Although the standard features incorporated into GoldSim can be used to build powerful and complex models, in some situations, specialized capabilities may be required in order to model some kinds of systems.
As a result, GoldSim is specifically designed to facilitate the incorporation of additional modules (program extensions) to enable the program to address specialized problems. These modules either add new elements with specialized functionality, or new features which augment the way models can be run or viewed.
The existing GoldSim modules are listed below:
- The Contaminant Transport Module allows you to simulate the transport of contaminants in the environment.
- The Reliability Module facilitates risk and reliability analysis for complex engineered systems.
- The Financial Module makes it easy to represent the financial aspects and components of your models and carry out risk analyses for business and financial systems.
- The Dashboard Authoring Module allows you to design and construct a "dashboard" interface for your models.
- The Distributed Processing Module allow you to work more efficiently by running GoldSim models on multiple computers across a network.
Thanks for taking the GoldSim Quick Tour.
- View a list of Frequently Asked Questions about GoldSim's features
- Read a Comparison to other simulation approaches
- Read an Excerpt from the GoldSim User's Guide
- See how others are using GoldSim.
- Request an Evaluation Version of GoldSim.
- Request a live web demo of GoldSim.
If you are new to simulation, check out an overview of basic simulation concepts.