Using Containers to Organize Your Model

Perhaps the most important requirement of a well-documented and easily understood model is that it be well-organized.

Containers provide the mechanism in GoldSim by which you can create well-organized models. In most cases, you do this by placing model elements in a “top-down” containment hierarchy in which the level of detail increases as you "push down" into the hierarchy.

In a well organized model, you can imagine that each Container has a specific "message" and a corresponding audience at which it is targeted.

For example, a model's highest level Container might have the following message: "This is the problem I am trying to solve, and here is the overall structure of the model I have built to solve it". Such a Container would be intended for all audiences.

Another Container's message in the model might be "Here are the detailed assumptions regarding process X". This Container's audience would be the analysts or technical personnel interested in that particular aspect of the model.

You "hide" these details in a Container, because they are of no interest to higher level audiences (e.g., managers). Those who are interested, however, can be shown the contents of the Container.

Note, however, that there is no one “right” way to organize a model.  To illustrate this, consider the model below:

This is a simple water management model.  The primary components are four ponds (Pond1, Pond2, Pond3 and Evaporation_Pond) and a Pipeline though which water flows and is stored. Conceptually, the model is actually quite simple (as we will see below).  What makes the model so complex-looking at first glance is that all of the inputs for each of the five primary components are all in the same Container with those components.  It makes the graphics pane very difficult to understand.

There are two different (but equally effective) ways we could use Containers to organize this model in a much more effective manner.

In the first, we create a separate Container for each of the primary components.  The main Container would then look something like this:

The inside of one of the component Containers (e.g., for Pond_2) would look like this:

Clearly, this model is much easier to understand than the first one!

Although this approach can work quite well for some models, for others, it may not.  In particular, if there are multiple logical connections between the various primary components (e.g., Reservoirs) via intermediate auxiliary calculations, the actual movement of material (e.g., the influences representing the flow of water) can be masked by a “spider web” of influences between the Containers.

Fortunately, there is also a very different way to organize such a model. Instead of creating a separate Container for each of the primary components (and its auxiliary calculations and inputs), we could instead just create two Containers.  The primary components would be in one Container and all of the auxiliary calculations and inputs would be in another.  The Container for the primary components would then look something like this:

The Container with all of the auxiliary calculations and inputs would look something like this:

Clearly, this model is also much easier to understand than the original one.  It also has the advantage of highlighting the “flows” of material or information (in this example, the flow of water) between the primary components.

The point here is that Containers can be used to organize your models in different ways and you should think carefully about how you organize your models.  Different parts of the model may be organized in different ways, and there is never one “best” way to organize a model.  Your goal, however, should be to create a model structure that makes your model easy to explain and present to multiple audiences.

   Note: You can always add Containers and move elements between them after your model has been built. In fact, it is quite common to reorganize a model multiple times as it is being built.

Related Topics…

Learn more about: