Modelling ARMAC

[From Rupert Young (980906.2112 BST)]

Bill, as a precursor to reproducing your armac algorithm I've gone back to
bascis to investigate standard control systems. Being Vensim-less I've done
this on my own system and have recorded these simulations in a ps and html
document at

http://www.ee.surrey.ac.uk/cgi-bin/R.Young/pct/pct.html
(though the html version doesn't seem to working properly yet)

I wanted to see what happens when a transport lag is introduced and have a
section on that. I'd be particularly interested in any comments you have on
this section and my conclusion that control is possible only if the response
is slow enough, that the longer the lag the slower must be the response. I'm
sure there are points I am missing.

Of course, you (and anyone else) are welcome to comment on any section of the
report, which would be much appreciated.

Regards,
Rupert

From Bill Powers (980906.1734 MDT)]

Rupert Young (980906.2112 BST)--

Bill, as a precursor to reproducing your armac algorithm I've gone back to
bascis to investigate standard control systems. Being Vensim-less I've done
this on my own system and have recorded these simulations in a ps and html
document at

http://www.ee.surrey.ac.uk/cgi-bin/R.Young/pct/pct.html
(though the html version doesn't seem to working properly yet)

I looked at the html version and it worked fine.

This looks very good. I presume that you were using the usual control
system with the output function being a leaky integrator:

qo := qo + (gain*error - qo)/slow.

An important thing to develop in your analysis is the relationship between
gain and loop delay. For any delay, you can have any gain you like (such as
1000), if you pick the right slowing factor. For each gain and delay, there
will be one slowing factor that will give the quickest possible control
without overshoot.

Using higher gains will make the resistance to disturbances almost perfect,
although because of the lag there is a limit to how rapidly a changing
disturbance can be counteracted. A good test-disturbance is a step
function, which is zero for the first quarter or so of the plot and some
constant value afterward. By varying the slowing factor you can find the
value at which the overshoot just disappears while the rise time of the
opposing output is as fast as possible. Can you work out the general
relationship among gain, lag, and slowing factor for the fastest response
without overshoot? Martin Taylor showed that my derivation in the Psych Rev
article was a special case for a one-iteration lag. Can you find,
empirically, the general case, or derive it analytically? This is not a
test question to which I know the answer -- I'm really curious about what
you would find.

I wanted to see what happens when a transport lag is introduced and have a
section on that. I'd be particularly interested in any comments you have on
this section and my conclusion that control is possible only if the response
is slow enough, that the longer the lag the slower must be the response.

You're perfectly correct. There is a neat way, using Laplace transforms, to
show that the perfect compensator for a transport lag is a pure integrator.
I don't remember it at the moment, but perhaps you could look it up.

Best,

Bill P.

[From Rupert Young (980909.1530 BST)]

Bill Powers (980906.1734 MDT)

This looks very good. I presume that you were using the usual control
system with the output function being a leaky integrator:

qo := qo + (gain*error - qo)/slow.

Yes.

Can you work out the general relationship among gain, lag, and slowing factor > for the fastest response without overshoot?
Martin Taylor showed that my derivation in the Psych Rev
article was a special case for a one-iteration lag. Can you find,
empirically, the general case, or derive it analytically? This is not a
test question to which I know the answer -- I'm really curious about what
you would find.

Ok, here's an initial try. I experimentally found the approximate slowing
factor for a gain value and different lags. (As above I assumed the basic case
is a 1 iteration lag)

With gain = 500 I got,

s = 1221.02 * l - 651.25

and with gain = 100 I got

s = 227.58 * l - 118.60

where s is slowing factor and l is lag in _number_ of iterations. These two
are roughly different by a factor of 5, which seems to make sense but the
values don't seem to work out exactly when I try to compute slowing factors
for new lags. I'd be interested to see how the relationship can be worked out
mathematically. Any offers, anyone ?

Regards,
Rupert