You can either start with the model from Chapter 5 (prod3.mdl) and add subscripts as described here, or open the finished model prod4.mdl and skip to later in this section. See Chapter 17 of the Vensim User's Guide for instructions on the mechanics of adding subscripts to a model. Only a brief outline of what to do is presented below.
We start by adding a subscript range producer to the model. Open the Subscript Control (using the rightmost Icon on the Toolbar) and click on the New button. You will be queried for a name. Enter producer and click on OK. The Equation Editor will open. Type in US, THEM and click on OK.
producer : US, THEM
The Equation Editor will close. (You need to close the equation editor after creating the producer subscript range so that it can be reset to handle subscripts the next time it is open. If, instead of closing it, you click on Choose or Next the subscript functionality will not be available.)
Now go to the second View in the model and select everything except total orders, replacement orders and new orders. You can do this by using Edit>All But Shadow followed by a Shift-Click on total orders.
Now use the menu command Edit>Set Subscripts. You should get a dialog box labeled Modify Subscripts for - 20 variables. Select producer in the Subscript 1 dropdown and Click on OK. The producer Subscript is added to the equations for these 20 variables as well as those in which the variables are used. Because of the way this model has been set up, this almost works. There are only two problems. One is production and the other is orders received.
Because orders received is the output of the consumption sector, and because there are no Subscripts for the consumption sector, this variable cannot simply be Subscripted. This equation for it needs to specify how the orders are divided between the two producers. This simplest assumption is that both producers receive half of the orders:
orders received[producer] = total orders/2
Note that the old equation for orders received would not cause any error messages to occur and it would pass units checking. The only problem is that it allocates more sales than there are. You do need to exercise care when adding subscript to a model so that you do not make such an error.
On the other side, total shipments used to be equal to production. However, the equation
total shipments = production[producer]
is not valid and Vensim will report an error. Since more than one firm is now producing we need to make
total shipments = SUM(production[producer!])
This equation indicates that total shipments is the sum of production for each producer. The exclamation mark ! is used to indicate which Subscript in the equation to sum over.
Simulating this model gives results, on the production side, of:
This is the same as the results we previously saw, but on a different scale. What happens, not surprisingly, is that we have two production sectors that are 50% reproductions of the old production sector. If the behavior of your two production sectors is not identical, you should review your model for errors.
Now suppose that we let one of these production sectors (US) be more conservative in adjusting capacity. To do this we set time to adjust capacity[US] to 2. When we did this with only one production sector, we found a smoother transition with lower capacity overshoot. Now we get the following results:
The market growth process is delayed, but there is almost no difference in the final capacity level reached. You can look at the behavior of THEM using this same graph by clicking the Subscripts control button, then clicking on the producer tab, then clicking on US to toggle it off, and finally THEM to toggle it on. Now when you activate the custom graph again and you will get:
In this case the timing is about the same as it was in the first run, but there is less excess capacity in the end. This is an interesting example of how a policy effect in an aggregate model can be split among different sectors. This result should not be given to much emphasis, however, because there is something apparently wrong with the behavior of this model.