Re: virus: Level 3 Is Nonsense
Sun, 3 Nov 1996 17:10:36 -0600 (CST)

On Thu, 3 Oct 1996, David Leeper wrote:


> Given the following fitness landscape, where higher points on the
> vertical axis represents higher levels of fitness:
> B
> A /\
> /\ / \---------
> / \-----/
> --------/
> --------------------------------
> 0 N
> A replicator (or algorithim, or whatever) is "stuck" if it
> gets fooled into thinking that some point other than B is
> maximum fitness. A replicator (or algorithm, or whatever)
> is _not_ "stuck" when it reaches B, even if it stays at B
> forever. At B, no further improvements are possible.

[No interest in STUCK algorithm]

> Here's the basic idea behind evolution's "algorithm":
> Begin at a random location.
> Select a random location and move there.
> Repeat EVOLVE
> Notice that even if the replicator reaches B, evolution will move
> it off B and back again.

Let me try this C++ pseudocode fragment [trying to understand this]:

Species::Evolve(Environment& CurrEnv)
// Begin at a random location with nonzero survival function; this should
// be handled by the constructor

ApplyMutationRules() // defines legal types of mutations, and applies
// them 'randomly' when generating next time-slice's
// population from this time-slice's population;
// also subsumes any replicative activity

ApplySurvivalFunction(CurrEnv) // requires every population member in the
// next time-slice to pass a survival
// check or be eliminated

UpdateTime() // makes the latest time-slice generated current

"Species" is an abstract class here. All three functions referred to
above would have to be implemented for any concrete use of "Species";
ideally, we aren't allowed to construct objects of type Species.
[Compiler error!]

> EVOLVE is a simplified version of evolution. Evolution doesn't
> move beings around the fitness landscape, rather it moves their
> descendents around. Also, it kills off critters that land in
> an area too low on the vertical axis.

> Kenneth Boyd presented the problem where the fitness landscape was
> such that a jump from A to any other point with acceptable fitness
> was too big to make with a single mutation. My point was that
> evolution can make a big jump by what's equivlent to combining
> several jumps at once.

I.e., several mutations may define a 'plateau' at A [this is actually
fairly common in practice], and B may be accessible from one 'corner' of
plateau A, which may take some time to fill.


/ Towards the conversion of data into information....
/ Kenneth Boyd