[From Bill Powers (951111.0630 MST)]
Shannon Williams (951110) --
How does a system of loops work except as a network of fuzzy-logic?
Each loop maintains its own reference level- or subset of reality.
When its reference level is disturbed, the loop responds. This
sounds very fuzzy-logic-ish to me.
...
Or maybe we need a third choice? We need something as controlled
as digital logic, but as instantaneous/volatile(?) as analog
control.
The problem with fuzzy logic is that (as I understand it) it tries to
approximate continuous relationships through using probability
distributions. There has to be a random variable in order to sample the
distribution on any given iteration. The result of this is to substitute
for a smooth continuous function a noise envelope that follows the same
basic relationship but with a large amount of superimposed random
variation. This superimposed noise is one of the factors that limits the
possible accuracy and stability of fuzzy-logic control systems.
The other factor is that each relationship involved in the control
system has to be represented by different rules over various regions of
the range of variation of a variable, both as to its magnitude and its
rate of change. Thus in a (simulated) fuzzy-logic controller I saw for
balancing an inverted pendulum, you had conditions like small-amount-
left-of-center, large-amount-left-of-center, left-of-center-and-moving
left, left-of-center-and-moving-right, and so on and so on -- I believe
there were more than 20 rules altogether, all with probability
distributions. All this to accomplish a control task that could be done
with half a dozen lines of code representing continuous relationships,
and done a hell of a lot better. The performance of this model was very
poor: slow, wobbly, and greatly upset by disturbances.
An analog control system designed to do the same thing, which beginning
control system engineers are often given as an exercise, will bring the
inverted pendulum to its vertical position in one snappy move and hold
it there. A more advanced exercise is to simulate (or build) a small
cart with wheels run by electric motors, which can balance the pendulum
by moving its lower end the same way a person balances a broomstick.
What's more, this system can bring the position of the pendulum to any
designated reference position above the track by automatically moving
the cart to cause the pendulum to lean, then just before the required
position, moving the cart ahead to decelerate the pendulum to a stop.
This requires a little more code, but not 1% of the amount that would be
needed for all the fuzzy-logic rules to do the same thing but much
worse.
Fuzzy-logic controllers are an attempt to combine control of logical
variables with control of analog variables. The result is that neither
is done very well. A far better approach is to use a two-level control
system: analog control for analog variables, and logical control for
logical variables. An example would be a cart balancing an inverted
pendulum at any position along a scale, with a logical control system
selecting _which_ position to use as a reference position. A logical
perception might be "(pendulum at third mark AND red light on) XOR
(pendulum at 12th mark AND green light on) OR pendulum at zero mark."
The reference condition for this perception is TRUE. The error would be
corrected by selecting a reference position for the pendulum, and the
analog systems would then bring the actual pendulum position swiftly and
accurately to the reference position without any logical calculations.
If the red light is on, the pendulum is given a reference signal of 3;
if the green light is on, a reference signal of 12; if neither light is
on, a reference signal of 0. If both are on, the designer has to go back
to the drawing board because there is an undefined condition. If you set
the reference condition to FALSE, the pendulum will be brought to some
indefinite position (I haven't really worked all this out, but you get
the idea).
I have a hunch that you're not used to working with systems in which the
variables are continuous (real-number domain) and the functions that
relate them are also continuous (continuous physical relationships). Is
that so?
You are going to build the hundreds of little control loops
required for the analog control of your Little Man? These control
loops are what occur in nature, but it does not mean that we need
to recreate them.
Bill Leach gave the answer to this. For the arm control system, we
assume that the control systems for one muscle can be lumped into groups
that perform the same function in parallel, redundantly, and represent
them as a single equivalent control system controlling equivalent
composite variables. For a whole-body model, that would still leave us
with about 600 to 800 first-level control systems. That's no big
problem; each control system is so simple that we could probably do the
calculations for all 800, on a single iteration, in less than ten
milliseconds on a 486-33 -- in floating point.
Here is the code for a typical control system in the Little Man Version
2 program:
o = o + (g*(r - p) - o)/s, where
o = output signal
r = reference signal
p = perceptual signal
g = gain
s = slowing factor
You can see how we can compute a lot of these in a short time and still
maintain an iteration time of 1/60 second.
The control loops need to be able to act on and react to each other
in real time. The only reason you would need analogue control is
so that actions and reactions can be immediate. Why can't a
dedicated digital controller react quickly enough to simulate a
number of small loops? You have to admit, it is much easier to
make a digital loop than an analogue one.
No, the reason we need analog control (or a digital approximation of it,
which is what we use) is that analog control systems work differently
from truly digital ones. Digital control systems work with variables
that have only two values. Variables in analog systems are continuously
variable.
When you find a way to cause control loops to spawn more control
loops, you will have a process for learning. Once you have a
process for learning, you will have AI. (I think).
If you had a way to spawn a _different_ process from the original, and
if you could find a background method that would make sure the new
process was different in just the way needed to improve control, maybe
so. But I think perhaps this proposition needs to be thought about a
little more.
···
-----------------------------
I work at a PC. And most of my work experience is digital hardware
design. I have only been programming for the last couple of years.
Ah, that makes you less threatening. Can you work in Turbo Pascal? Can
you get, or do you have, version 7.0? Actually, we haven't been using
objects and any version from 3.0 up should work with the programs we've
been writing.
Can you browse the Web? If so, you can download a lot of programs that
will run on your PC. Or give me the word (and your snail-mail address
again) and I'll send a couple of disks to you.
Honeymoon's over.
??? I must have blinked. I missed it.
Jeez, luvvie, how much foreplay do you expect from an old geezer?
-----------------------------------------------------------------------
Best to all,
Bill P.