Please enable JavaScript to view this site.

Vensim Help

 

To create a simulation model, it is necessary to add a little bit more structure.  You may, if you prefer, also change to a stock and flow notation.  Using stock and flow notation is not strictly necessary, and we will not do that here.  We will, however, mark the Level variable (in fact there is only one) with boxes.

Build the following diagram, or open the model UserGuide\chap20\complete\repair02.mdl.  

This model has a somewhat complicated construct that is a variation of the coflow.  We measure the average time since machines have been maintained by using the variable total time since service.  This is the total number of machine hours elapsed since service for all the different machines.  With each unit of time this increases by total machines, but it is decreased when a machine is repaired or routinely serviced.  The amount that it decreases depends on how long the repaired or serviced machine had gone without service.  Our simplifying assumption for this is that this is just the average machine age.  A more complete treatment could differentiate the repair and maintenance age distributions, but would make the model quite a bit more complicated.

The equation for total time since service is thus:

total time since service= INTEG (total machines – 
(repair completions + routine maintenance work done) * 
       average time since service,
total machines * machine wear time)

The initialization in this is used to put the model near an equilibrium at the beginning of the simulation.  To get the average age of machines we just divide total time since service by the total machines (the number of machines).  This average time is then used to drive reliability.  

You will notice in this model that we changed from average machine reliability to average machine failure rate.  The main reason for this is that is seems to be easier to formulate the equation for it.  Reliability is basically 1-unreliability so it could have been done as in the original causal loop diagram but probably would not have been harder to undrestand.

The full equations for this model are:

average machine failure rate=
maintained machine failure rate * 
       effect machine wear reliability

Units: 1/Month

average time since service=
total time since service/total machines

Units: Month

effect machine wear reliability= WITH LOOKUP (
average time since service/machine wear time,
((0,0.9),(1,1),(1.5,1.1),(2,1.5),(3,3),(4,6) ))

Units: Dmnl

machine wear time=2

Units: Month

maintained machine failure rate=0.1

Units: 1/Month

maintenance productivity=120

Units: Machine/Person/Month

number of repairs required=
average machine failure rate * total machines

Units: Machine/Month

repair completions=
workers performing repairs * repair productivity

Units: Machine/Month

repair productivity=30

Units: Machine/Person/Month

routine maintenance work done=
MIN(total machines/machine wear time,
       workers available for routine maintenance *
       maintenance productivity)

Units: Machine/Month

total machines=1000

Units: Machine

total maintenance workforce

Units: Person

total time since service= INTEG (total machines – 
(repair completions + routine maintenance work done) * 
       average time since service,
total machines * machine wear time)

Units: Machine*Month

workers available for routine maintenance=
total maintenance workforce – 
       workers performing repairs

Units: Person

workers performing repairs=
MIN(
       number of repairs required/repair productivity,
       total maintenance workforce)

Units: Person

Note that the equation for total maintenance workforce is blank.  Blank equations are used to indicate data variables.  If you followed the instructions earlier in this chapter you would not have needed to add that equation directly as it would have been put in place by Vensim.  The units, however, will still need to be added.

If you simulate this model and then display behavior (the B key will toggle the display of behavior on and off) you should see:

We are partially replicating the two reference modes that were entered.  While the behavior is not exactly the same, it is similar.  Given scaling and other issues with reference modes it is common for there to be some differences with simulated behavior

We have developed a model from conceptualization through simulation using reference modes to help in the process.  The reference modes add a concrete representation of behavior early in the model development process and also make it easy to profile exogenous inputs.