[From Rick Marken (980911.1220)]
For those of you with Vensim, here is another version of
Bruce Abbott's "Control of Behavior" model. The model
shows a CONTROLLER controlling a CONTROLLEE's output by
disturbing a variable (called "diagonal") that is controlled
by the CONTROLLEE. What is interesting (to me) about the
model is that the CONTROLLER is exerting control by disturbing
a dimension of the controlled variable that is not being
affected by the output (called "output height" in the model)
that is being controlled.
The controlled variable is the diagonal length of a right
triangle, as shown below:
height *
= * *
output * * < --- diagonal = qi
height (qo of * *
CONTROLLEE) + * *
disturbance * *
height (d) * *
* *
···
************************
width = qo of CONTROLLER
The CONTROLLER's output ("o2" in the model) affects only the width
of the triangle; the CONTROLLEE's output ("output height") affects
only the height of the triangle. Moreover, the height of the
triangle is also affected by a random disturbance. Nevertheless,
the CONTROLLER is able to disturb the width of the triangle as the
means of keeping the CONTROLLEE's effect on the height of the
disturbance ("output height", which is the CONTROLLER's CV) under
control.
As you can see in the graphs of the CONTROLLER's and CONTROLLEE's
behavior, control is not perfect in this case; the trace of the
controlled variable for both CONTROLLER and CONTROLLEE is offset
somewhat from the trace of the reference specification. This
relatively poor control results from the fact that I had to reduce
the gain for both CONTROLLER and CONTROLLEE in order to stabilize
the behavior of the interacting control systems. I have still
been unable to remove an initial transient oscillation from the
behavior of both systems; I don't know if it's possible to remove
it using just a simple control model (it might take a couple
levels of simple control systems); those who are interested
can experiment with different combinations of gain and slowing
for each control system.
The main things to understand about this model, however, are
1) the CONTROLLEE is controlling a variable (diagonal = qi) that
is a function of _two_ independent environmental variables and
2) the CONTROLLER is able to control a one-dimensional variable
(the CONTROLLEE's output -- "output height") by disturbing an
aspect of the variable the CONTROLLEE is controlling -- even
though it is not and aspect of the controlled variable that is
directly affected by the CONTROLLER's disturbance.
The CONTROLLER (at least in this simple model) has no idea
what variable the CONTROLLLEE is controlling; that is, the
CONTROLLER doesn't know that the CONTROLLEE is controlling
the length of the diagonal of the right triangle. All the
CONTROLLER "knows" is that by varying his output (which
happens to influence the height of the triangle) he can
control the behavior ("output height") of the CONTROLLEE.
The CONTROLLER doesn't need to know the CONTROLLEE's CV
in order to control the CONTROLLEE's behavior.
Best
Rick
--
Richard S. Marken Phone or Fax: 310 474-0313
Life Learning Associates e-mail: rmarken@earthlink.net
http://home.earthlink.net/~rmarken
disturbance height=
SMOOTH3i(random uniform(-100,100 , 0),4,-50)+110
~
~ |
diagonal=
(SQRT((output height+disturbance height) * (output height+disturbance height\
) + width*width ))/1.5
~
~ |
width=
-o2
~
~ |
i2=
output height
~
~ |
e2=
reference for output height-p2
~
~ |
p2=
i2
~
~ ~ :SUPPLEMENTARY
>
reference for output height=
20
~
~ |
o2= INTEG (
((20*e2 )-o2)*0.5,
0)
~
~ |
error signal=
reference for diagonal-perceptual signal
~
~ |
output height= INTEG (
(20*error signal - output height)*0.5,
0)
~
~ |
perceptual signal=
diagonal
~
~ |
reference for diagonal=
SMOOTH3i(random uniform(-100,100 , 10),3,0)+100
~
~ |
********************************************************
.Control
********************************************************~
Simulation \
Control Paramaters
>
FINAL TIME = 50
~ Second
~ The final time for the simulation.
>
INITIAL TIME = 0
~ Second
~ The initial time for the simulation.
>
SAVEPER = 0.1
~ Second
~ The frequency with which output is stored.
>
TIME STEP = 0.01
~ Second
~ The time step for the simulation.
>
\\\—/// Sketch information - do not modify anything except names
V300 Do not put anything below this section - it will be ignored
*View 1
$0,0,Arial|12||0-0-0|0-0-0|0-0-0|-1–1--1|-1–1--1
10,1,reference for diagonal,177,389,62,8,0,3,0,0,0,0,0,0
10,2,perceptual signal,285,309,50,8,0,3,0,0,0,0,0,0
10,3,error signal,177,329,34,8,0,3,0,0,0,0,0,0
10,4,output height,116,242,38,8,0,3,0,0,0,0,0,0
10,5,diagonal,287,243,26,8,0,3,0,0,0,0,0,0
10,6,width,287,177,17,8,0,3,0,0,0,0,0,0
1,7,2,3,1,0,0,0,0,64,0,-1–1--1,1|(260,335)|
1,8,1,3,0,0,0,0,0,64,0,-1–1--1,1|(177,366)|
1,9,3,4,1,0,0,0,0,64,0,-1–1--1,1|(133,294)|
1,10,4,5,1,0,0,0,0,64,0,-1–1--1,1|(200,242)|
1,11,5,2,1,0,0,0,0,64,0,-1–1--1,1|(285,269)|
1,12,6,5,0,0,0,0,0,64,0,-1–1--1,1|(287,203)|
10,13,reference for output height,100,120,74,8,0,3,0,0,0,0,0,0
10,14,p2,35,176,9,8,0,3,0,0,0,0,0,0
10,15,e2,99,176,9,8,0,3,0,0,0,0,0,0
10,16,o2,208,177,9,8,0,3,0,0,0,0,0,0
10,17,i2,31,245,7,8,0,3,0,0,0,0,0,0
1,18,13,15,0,0,0,0,0,64,0,-1–1--1,1|(99,141)|
1,19,14,15,0,0,0,0,0,64,0,-1–1--1,1|(60,176)|
1,20,15,16,0,0,0,0,0,64,0,-1–1--1,1|(146,176)|
1,21,17,14,1,0,0,0,0,64,0,-1–1--1,1|(31,211)|
12,22,0,76,322,43,8,0,4,0,0,-1,0,0,0
CONTROLLEE
1,23,16,6,0,0,0,0,0,64,0,-1–1--1,1|(236,177)|
1,24,4,17,0,0,0,0,0,64,0,-1–1--1,1|(64,243)|
12,25,0,181,342,161,64,3,0,0,2,-1,0,0,0,0-0-0,0-0-0,|12||255-0-0
12,26,0,242,36,127,9,0,4,0,10,-1,0,0,0,0-0-0,0-0-0,|14||255-0-0
CONTROL OF BEHAVIOR SIMULATION
10,27,disturbance height,428,242,53,8,0,3,0,0,0,0,0,0
1,28,27,5,1,0,0,0,0,64,0,-1–1--1,1|(354,241)|
12,29,0,152,490,0,0,0,0,0,0,-1,0,0,0
12,30,0,179,157,164,54,3,4,0,0,0,0,0,0
CONTROLLER
///—\\\
:GRAPH CONTROLLER_BEHAVIOR
:TITLE Controller Behavior
:SCALE
:VAR reference for output height
:Y-MIN 0
:Y-MAX 50
:SCALE
:VAR output height
:Y-MIN 0
:Y-MAX 50
:GRAPH CONTROLLEE_BEHAVIOR
:TITLE Controllee's Behavior
:X-AXIS Time
:SCALE
:VAR reference for diagonal
:Y-MIN 80
:Y-MAX 120
:SCALE
:VAR diagonal
:Y-MIN 80
:Y-MAX 120
:L <%^E!@
1:Current.vdf
9:Current
15:0,0,0,0
19:100,0
5:output height