[From Bill Powers (950926.0500 MDT)]
Dick Robertson] (950924.2020CDT
Thanks, Dick. A voice of sanity.
···
-----------------------------------------------------------------------
Bruce Abbott (950925.1250 EST) --
If the perception of strong muscular output were all that was necessary
to produce anxiety, people would feel anxious every time they exerted
themselves.
They do -- they just don't call the feeling "anxiety." My own take on anxiety
stems from my general understanding of emotion as a physiological state in
combination with a high-level goal. The basic idea is that error signals in
the learned hierarchy have two destinations: the motor systems that produce
overt behavior and the biochemical systems that provide the support for
physical action. The changes in biochemical state are perceived and made part
of the general perception of what one is doing. We experience emotions as
bodily feelings in the context of goals: anger = desire to attack, fear =
desire to escape, and so on.
I think anxiety arises from conflicts that prevent overt action. The error
signals, being large, result in relatively extreme changes in bodily state,
but do not result in the usual actions that "use up" the adrenaline, the
extra oxygen, the increased circulation, and the redistribution of energy
supplies. Chronic conflict thus leads to a chronic physiological state that
we experience as anxiety. Exactly the same bodily states experienced together
with the actions they normally support, and the quick decrease in error that
follows from effective action, are not experienced as negative emotions.
It seems commonplace that when people resolve conflicts, they experience an
immediate decline in anxiety, or whatever emotions went with the conflict.
-----------------------------------------------------------------------
Bruce Abbott (950922.1955 EST) --
RE: self-control.
Rick Marken has pretty much dealt with this, but I have a few redundant
comments.
All the terms that involve the word "self" like self-awareness, self-control,
and self-understanding beg the question of what is meant by "self." Exercises
like the method of levels give us some new (-seeming) ideas on that subject.
My own experiences have led me to doubt that there are actually any self-
reflexive processes of awareness, like von Foerster's idea of self-awareness
as a recursive function. Whatever it is about yourself that you are
observing, the Observer is not the same as that which is observed, and the
processes going on in the Observer are not the processes that are being
observed. "Your" body is not the observer of that body; "your" thoughts are
not the observer of those thoughts. Whatever it is that you are being aware
of, it is not that which is being aware.
Self-control, as Rick pointed out, is basically a conflict. You want to do or
not do something, and at the same time you want to not do or do it. To put
this more accurately, in terms of the above paragraph, there is a goal of
doing and of not doing the same thing at the same time; you may be aware of
one goal but not so acutely aware of the other. The problem in resolving the
conflict is finding the point of view from which both sides are visible at
once. When that point of view is found, the conflict generally dissolves and
there is no further need for self control.
All this follows as well just from considering how a control system works. If
there is a goal, and if the related perception is different from it, and if
nothing is interfering with the action that can affect the perception, what
is to prevent the error from being corrected immediately? Obviously, if the
error persists there is something preventing the normal process of error
correction from working. There could be many different problems; for example,
you may never have learned an action that can affect the perception. But a
very common type of interference is from a conflicting goal.
As Rick pointed out, the self-control or "will power" solution to a conflict
is to bring a third control process into play on one side or the other of the
conflict. This overrides one of the conflicting goals, but does nothing to
remove it: the same goal is still wanted for the same reasons as before. As a
result, the system as a whole can't ever reach a state of low overall error.
If my concept of emotion is right, the uncorrected error signals will
continuously produce reference signals for the biochemical systems that keep
them in an elevated state, as if preparing for some kind of action. Self-
control and will power are, we could guess, the route to psychosomatic
illnesses.
-----------------------------------------------------------------------
Hans Blom (950925 etc) --
I've gone ahead and implemented challng3.pas with k varying randomly between
1 and 5. Rather than work out an adaptive scheme, I've just set b in my
control-system equation to a constant value of 0.25, a little over the
minimum for a k of 5. I get RMS errors of a little less than 1% of the peak
value of the reference signal and disturbance. The disturbance table d1 is
used to disturb x; d2 is used to vary k.
In the code below, the number of points has been reduced to 6000, to leave
room in the data section for three random tables. The plots show every point,
with the x axis compressed by a factor of 10. The reference signal and x are
plotted, along with k (in light blue).
-----------------------------------------------------------------------
Best to all,
Bill P.
Program chalng3;
Uses dos, crt, graph, grUtils;
const maxtable = 5999;
var d1,d2,r: array[0..maxtable] of integer;
x1,x2,x3,sum,u,x,eold,e,b,k,slow: real;
i,j,vcenter: integer;
ch: char;
outfile: text;
numstr: string[50];
function dist: real;
begin
x1 := 10000.0*(random - 0.5);
x2 := x2 + slow * (x1 - x2);
x3 := x3 + slow * (x2 - x3);
dist := x3;
end;
procedure maketables;
var maxr,maxd1,maxd2: real;
begin
{MAKE DISTURBANCE TABLE 1 AND ADJUST TO ZERO AVERAGE}
x1 := 0.0; x2 := 0.0; x3 := 0.0;
for i := 0 to maxtable do
d1[i] := round(dist);
sum := 0.0;
for i := 0 to maxtable do
sum := sum + d1[i];
sum := sum/(maxtable + 1);
for i := 0 to maxtable do
d1[i] := d1[i] - round(sum);
{MAKE DISTURBANCE TABLE 2 AND ADJUST TO ZERO AVERAGE}
x1 := 0.0; x2 := 0.0; x3 := 0.0;
for i := 0 to maxtable do
d2[i] := round(dist);
sum := 0.0;
for i := 0 to maxtable do
sum := sum + d2[i];
sum := sum/(maxtable + 1);
for i := 0 to maxtable do
d2[i] := d2[i] - round(sum);
{MAKE REFERENCE TABLE AND ADJUST TO ZERO AVERAGE}
x1 := 0.0; x2 := 0.0; x3 := 0.0;
for i := 0 to maxtable do
r[i] := round(dist);
for i := 0 to maxtable do
sum := sum + r[i];
sum := sum/(maxtable + 1);
for i := 0 to maxtable do
r[i] := r[i] - round(sum);
{NORMALIZE D AND R TABLES TO PEAK VALUE OF 1000}
maxd1 := 0.0;
maxd2 := 0.0;
maxr := 0.0;
for i := 0 to maxtable do
begin
if abs(d1[i]) > maxd1 then maxd1 := abs(d1[i]);
if abs(d2[i]) > maxd2 then maxd2 := abs(d2[i]);
if abs(r[i]) > maxr then maxr := abs(r[i]);
end;
for i := 0 to maxtable do
begin
d1[i] := round(1000.0*d1[i]/maxd1);
d2[i] := round(1000.0*d2[i]/maxd2);
r[i] := round(1000.0*r[i]/maxr);
end;
end;
begin
clrscr;
{ randomize;}
assign(outfile,'challnge');
rewrite(outfile);
{TURN ON GRAPHICS}
initgraphics;
vcenter := (getmaxy + 1) div 2;
for j := 1 to 1 do
begin
slow := 0.01*j;
str(slow:5:2,numstr);
maketables;
sum := 0.0;
u := 0.0;
clearviewport;
b := 0.25;
{RUN THE MODEL MAXTABLE TIMES}
{==============================================================}
for i := 0 to maxtable - 1 do
begin
k := 3.0 + 2.0*d2[i]/1000.0;
x := k * u + d1[i]; { ENVIRONMENT MODEL }
u := u + b * (r[i] - x); { CONTROL SYSTEM MODEL}
sum := sum + sqr(r[i] - x); { ACCUMULATE FOR RMS CALCULATION}
putpixel(i div 10, vcenter - round(r[i]/4.0),white);
putpixel(i div 10, vcenter - round(x/4.0),lightgreen);
putpixel(i div 10, vcenter - round(k*50),lightblue);
putpixel(i div 10, vcenter,white);
end;
{==============================================================}
numstr := 'slowing factor = ' + numstr;
outtextxy(450,380,numstr);
setcolor(lightgreen); outtextxy(600,420,'X');
setcolor(lightblue); outtextxy(600,440,'K');
setcolor(white); outtextxy(600,400,'REF');
outtextxy(300,450,'PRESS KEY TO CONTINUE');
sum := sqrt(sum / (maxtable + 1));
str(sum:6:4,numstr);
numstr := 'RMS ERR = ' + numstr;
outtextxy(435,360,numstr);
ch := readkey;
writeln(outfile,'Slowing = ',slow:5:2,' RMS ERROR = ',sum:4:1);
end; { of loop for changing slowing factor}
clearviewport;
close(outfile);
restorecrtmode;
closegraph;
end.