Skip to content

Simulating Socialism (2): Optimising Production Plans

by Jan Philipp Dapprich

This is the second part of my series “Simulating Socialism” (Part 1), in which I describe the computer simulation of a socialist economy that I created as part of my doctoral research. The simulation assumes simple reproduction. This means that, for reasons of simplicity, economic growth is not yet considered. There is no surplus that might be used to expand the production base. Instead, everything is used up to continue production at a similar rate or by end-consumers. In the future, I intend to adapt the model to allow for an overall expansion of production to study the conditions under which economic growth is possible without excessive environmental degradation.

Quantifying economic Inputs and Outputs

Inputs Farming Coal Mining Iron Mining Baking
Corn
2
0
0
5
Coal
1.05
1.1
3
1
Iron
1.09
2
1.2
0
Bread
0
0
0
0
Labour
2
3
1.3
2.1

Table 1: Input table based on a small sample economy devised by W.P. Cockshott.

The simulation considers several successive time periods for a sample economy with a distinct production plan calculated for each period. The production possibilities for this sample economy are specified by tables similar to Leontief-style Input-Output matrices.

Each row in the first table (see table 1) represents a potential production input, that is: a raw material that can be used to produce different goods. The columns represent different methods of production. Each entry thus tells us how much input of a certain type is required by the respective production method when used at base intensity. Of course, such a production method can be scaled up, i.e., two machines mining for coal instead of just one. If it is therefore used at an intensity of two, it requires twice as much input of resources and labour — in our example six units of labor to mine for coal instead of just three. A second table (see table 2) then specifies the outputs of the production methods at intensity one. In this case all methods are assumed to have a single output, for example coal for coal mining, bread for baking, and so forth.

Outputs Farming Coal Mining Iron Mining Baking
Corn
11
0
0
0
Coal
0
13
0
0
Iron
0
0
17
0
Bread
0
0
0
23

Table 2: Output table complementing table 1.

The simulation mostly assumes simultaneous production of inputs. This means, for example, that coal is mined in the same plan period in which it is used for fuel. It is not assumed that it must already have been mined in a previous plan period, and stored at some storage facility. Of course there can be some inputs that are not produced at all, or at least not within the same plan period. This could include resources like land, labour or capital stock and also deliberate environmental constraints, such as a cap on greenhouse gas emissions. Emission rights are simply assumed to be a further input requirement and there is a limit to how much of that input can be used. Limits to emission rights, available labour and so forth are specified in a “resource vector”, a list of the maximum usable amount for each factor.

Corn Coal Iron Bread
Target
6
7
0
10

Table 3: Target vector complementing tables 1 and 2.

For each plan period there is a “plan target”, which specifies the proportions at which consumer products are to be produced (see table 3). This does not consider the part of the product that will be used as a production input. Thus, the target value for something like iron is 0, because it is only used in industry and not by consumers. Put in other words: Iron is an intermediary good, which needs to be produced, but only to be used again by another production process (in our simplified economy it is used in both farming and mining). The values for corn, coal and bread in this sample economy are 6, 7 and 10 respectively. This means that for every 6 units of corn, 7 units of coal and 10 units of bread will have to be produced for consumers plus anything that is used in industry. The initial plan target in the simulation is specified manually. Later plan targets will be adapted from this initial plan target, based on consumer choices in the previous plan period. For instance, if the consumers bought more bread than anticipated, one needs to account for this fact in the following period. How exactly this is done will be considered in a future part of this series.

Linear Programming Application

Based on these parameters, the linear programming package lp_solve is used to determine an optimal production plan. This means, lp_solve is able to calculate the intensities at which the various production methods need to run (i.e. three machines mining for coal), such that the maximum number of consumer products at the specified proportions can be made available to consumers. Of course there are external limitations, such as the overall number of people able to work and produce goods. The plan cannot violate any of these economic conditions. So, for example, it can use no more labour than is available and all the coal that is used in production has to be actually produced as part of the plan. It also cannot involve more carbon dioxide emissions than is allowed for by the cap on greenhouse gases. In order to ensure this, the information specified in the tables and the resource vector is converted into linear inequalities which are used as constraints for the linear programming problem then solved using lp_solve. The linear constraints also ensure that production is at the proportions specified in the plan target. The overall output of any individual consumer product can then be used as the “objective function” which is to be maximised. Linear programming starts by finding a feasible solution (in our case a production plan) and then successively adjusts the solution until it is optimised.

While the simulation only considers linear relationships, some non-linearities can easily be represented as such. Examples of non-linearities are economies of scale or the diminishing harvest as less fertile land has to be used with the expansion of agriculture. In these cases inputs and outputs of production methods are not directly proportional to the intensity of use, as is assumed by our input and output tables. Economies of scale can, however, be represented by including separate linear methods of production which might be more efficient, but which can only be used at large scales. The decreasing marginal yield of agriculture due to varying soil quality can be represented by specifying distinct agricultural production methods depending on soil type. Land of a certain fertility will be an input requirement with limited availability for the according production methods, as there is a limited amount of that type of land that can be used. Other non-linearities can be represented or at least approximated in a similar fashion.

Further Reading

Simulating Socialism (3): Mathematically Derived Valuations

Simulating Socialism (3): Mathematically Derived Valuations by Jan Philipp Dapprich This is the third part of my series “Simulating Socialism” (Part 1, Part 2) in which I give an outline

Simulating Socialism (1): Creating a Computer Simulation of a Socialist Economy

We can use computer simulations to illustrate how a socialist economy would work. In the first part of this series, we will take a look at the basics.

Simulating Socialism (4): Consumption

This time, Philipp Dapprich deals with the question how consumption might work under socialism. How can needs be balanced against costs?

Simulating Socialism (4): Consumption

This time, Philipp Dapprich deals with the question how consumption might work under socialism. How can needs be balanced against costs?

Simulating Socialism (3): Mathematically Derived Valuations

Simulating Socialism (3): Mathematically Derived Valuations by Jan Philipp Dapprich This is the third part of my series “Simulating Socialism” (Part 1, Part 2) in which I give an outline

Simulating Socialism (1): Creating a Computer Simulation of a Socialist Economy

We can use computer simulations to illustrate how a socialist economy would work. In the first part of this series, we will take a look at the basics.