ArrayAlign | ArrayAlignHierarchy | ArrayAlign_ConstantRange | ArrayAlign_Equal | ArrayAlign_Multiply | ArrayAlign_PermutationCycle | ArrayAlign_Power | AudivolvNetwork | AudivolvSummary | Brainwaves | CodeSimian | CodeTree | Func | FuncPurpose_MeasureOtherFunc | FuncPurpose_SoundColorMouse | FuncPurpose_Unknown | HardCoded_CodeTree_BreedFunction | HeapQueue | HighStandards | Hypercube | Javassist | LongTermGoalsOfAudivolvDesign | MindReadingHelmet | MovementScore | NeatVsScruffy | NoSpying | Node | NormedCodeTree | PermutationCompilerAndInterpreter | Plugin | ShortTermGoalsOfAudivolvDesign | SoundCardPart | Template | TuringTests_per_second | flo | int | ob

Audivolv - HardCoded_CodeTree_BreedFunction

HardCoded_CodeTree_BreedFunction will be replaced by evolved CodeTrees that operate on CodeTree.
My strategy in Audivolv is to hard-code things first then make them evolvable later.

In the end, only the window, file access, low-level internet connections, and similar things will be hard-coded.
All the AI will be evolved.

After breeding, part of the hard-coded things is the MovementScore.
Breed 2 JavaCodes X and Y

X and Y are a linear sequence of child JavaCodes. Start with X's childs.

Audivolv version 0.1.6 has a hard-coded CodeTree breed function that does approximately this:

20% chance{
    Pick 2 equal-size random ranges of childs, in X and Y.
    Overwrite X's childs with Y's childs.
5% chance{
    Cut X between 2 childs, and swap the 2 ranges. Ignore Y.
5% chance{
    Randomly reorder X's childs. Ignore Y.
70% chance{
    Pick random childs to remove.
    Quantity to remove is random^2 fraction of the childs.
    Keeps code size down because new childs are only added if vars are missing.

Fix the mutated code:

This increases evolved code size. Score higher for shorter code.

Each var must be Lvalue and Rvalue at least once.

Pick a random child in Y. Lvalue var names are child.floVars(".*L.*")

Pick an Lvalue (or Rvalue) thats missing in the mutated code.

If child does not have that var as Lvalue, rename some var in child.

Add the new child in a random place.