In the previous posts in this series I've made the argument that using linear programming to do planning is much more feasible than previously thought. In this post I will look at how we might deal with changing circumstances and how the plan might be adjusted to account for them.

## Disturbances and stability

As we all know, things tend to never to go entirely according to plan. Whether it's a hobby project or the operation of a firm or the whole of humanity, there are inevitably unforseen events. In planning we can simulate what happens to the system if for example a rail line goes down, if there's a drought in some area or if a harvest is surprisingly bountiful. A well-behaved system should recover from such disturbances in a reasonable amount of time.

At least two sorts of disturbances are of interest: impulses and cyclical disturbances. For an entirely linear system the impulse response is quite easy to compute. The shape of the response is also independent of the scale of the impulse. But as I have pointed out earlier in these posts, real economies are non-linear. This means that while a small disturbance may be no problem, once it gets beyond a certain threshold, problems associated with it will compound. Knowing where these thresholds lie is useful for managing risk.

As for cyclical disturbances, we want that they can't bring the system into oscillation. We want no eigenfrequencies with eigenvalues whose real part is near or above unity. Here power iteration can be used to compute the largest eigenvalue, from which stability can be determined. This again gets trickier when non-linear effects are taken into account, but still it can in principle be computed and planned for.

Capitalism by comparison is notoriously bad at dealing with sudden crises, for example the ongoing COVID-19 situation. It also suffers from cyclical crashes, which suggests an eigenmode with a period of around a decade. The greenhouse gas situation, which gets worse at an exponential rate, is evidence of an eigenvalue whose real part is greater than unity. If we consider capitalism as a control system, it is clearly not doing a good job.

## How often do things change?

Here I will again gesture towards this work by Spyridon Samothrakis.

We have two pieces of information that we keep track of: the state vector *s* which tells us how much capital stocks we have and in which locations these stocks are, and the non-linear matrix of technical coefficients *F(x,t)*.
I have inserted *t* for the time dimension, but it should be noted that the plan itself can't change unless there is a change in information.
The activation vector *x(t)* will change over time, for example due to the seasons, since *x(t)* derives from *s* and *F(x,t)*.

We should adjust the plan whenever *s* or *F(x,t)* changes.
When goods leave a workplace to be transported elsewhere this amounts to a change in *s*,
and similarly when the goods arrive at their destination.
Whenever a new factory is constructed, a plot of land is prepared for cultivation or a building burns down, *F(x,t)* changes.
The sooner the plan can be updated to account for such changes in reality, the more robust the system will be.

To answer the question in the heading, things can change arbitrarily often, especially automated systems. One example of a subsystem that needs accurate and timely information is the electrical grid. Since production of for example aluminium comes out of the planning process, so too does the demand for electricity. As a consequence a properly planned grid has less need for things like current limiting reactors, flywheels, batteries and other load balancing devices.

## Failure is an option

For the planning system to do its job, it must have accurate information about reality. It is important that people are not pressured into lying to the system, or into performing shoddy work to fill production quotas. The system should have a notion of uncertainty when it comes to the data being presented to it. To err is human after all.

When a problem is discovered and the system is notified of this, it can plan around the problem until it is resolved.

## How fast can we recompute the plan?

The speed at which the plan can be recomputed depends on how many things have changed, for example how many constraints that will switch from being inactive to active. It also depends on the granularity of the system, both in space and time. The near future might be discretized into city blocks and hours. The further into the future we get, the coarser the discretization.

If the changes are small, and we have an approximate solution that is some distance away from the closest constraint, then it is likely that updating the constraints still maintains a feasible solution. A few centering steps will likely be necessary, but not nearly as many as for finding the initial solution. We hope that the amount of necessary labour shrinks as a result, which should be the case for any non-disastrous change.

I cannot at the moment say exactly how difficult it is to update the plan, except that it will be much easier than computing the initial solution. What I suspect will happen is that the system runs continuously, refining the plan as new data comes in. As people and subsystems look for things to do, the system always presents the latest feasible solution.

## Practical considerations

Now that we know that adjusting the plan is feasible, we ask ourselves "what does this mean for the worker on the ground"? After all, if everyone is told to change what they're doing every five seconds, that would quickly get annoying. To the planning system this means that there is some amount of "human inertia" that has to be accounted for, and new plans can probably not be issued more often than twice per day, to humans at least. This means that we might have, at most, a "morning plan" and an "after lunch plan". Automated systems on the other hand will be able to adjust to changing plans more rapidly.