As If; Challenge

[From Bill Powers (950918.1130 MDT)]

Hans Blom (950918) --

There is a tendency among control engineers -- and not them only --
to reify control, as in sayings like "control is a fact". No,
control isn't a THING. It is a way of looking at things. A
perspective, very useful sometimes, confusing maybe at other times.
The AS IF aspect of control should always be kept in mind, I think.

You're confusing control as an observable process with a model intended
to explain the observations. Control is a phenomenon. As defined in PCT
it is the stabilization of some variable by the actions of a system
against arbitrary independent disturbances. That can be observed without
proposing any model of the behaving system. All that's involved here is
showing that the observed behavior fits the definition of control.

The control-system MODEL is a proposal about how the observed phenomenon
might be brought about by the internal organization of the behaving
system. If we believe that such an internal organization really exists,
we are reifying the model (accepting it as physically real). We then
interpret behavior AS IF this model really existed as a physical
organization inside the organism.

···

-----------------------------------------------------------------------
Hans Blom (950918b) --

It may be as easy as a simple error in your code. Change the line

> u := r[i] - dpre;

into

u := r[i+1] - dpre;

Note that at this point in the program you compute the control
u[i+1], not u[i], and that this u is applied in the NEXT iteration,
at time i+1, not in the current one. The reference required at this
time is r[i+1] rather than r[i].

I made that change and tried the program again. The primary effect was
to reduce the error considerably when k = 1.0, from about 5 to about 2.
I set up my model so that b = 1/k, the optimum value, and ran it, too. I
disabled the "randomize" step so that the same disturbance and reference
tables would be generated each time. The results were

r - x (RMS)

k Hans' model Bill's model

0.6 198.3 5.58
0.8 99.1 5.58
1.0 1.9 5.58
1.2 99.2 5.58
1.4 199.4 5.58

I guess your model still needs some kind of change to handle the cases
where k is not 1.
-----------------------------------------------------------------------
Best,

Bill P.