codesimian
Class EvolveNumbers

java.lang.Object
  extended by codesimian.CS<CSGeneric>
      extended by codesimian.DefaultCS
          extended by codesimian.EvolveNumbers
All Implemented Interfaces:
CodeSimian

public class EvolveNumbers
extends DefaultCS

evolveNumbers(judge listOfInputs mutator automaticlyGeneratedList1 autoList2 autoList3...)

Given a CS to maximize the value of (1 output), and given a list of CSs to set the values of (inputs), and given a mutator CS that combines 2 or more lists of numbers to create 1 new list of mostly unique numbers...

When executed, returns the value that the judge returns for the newest list of numbers.

...generate many lists of numbers to set the value of those CSs to, to maximize the value of the output. Assumes the output's value is constant or similar, given the same values of the inputs, but this is often false if the output depends on count() objects etc.

P(0) is the output. P(1) is a list of inputs. P(2) is the mutator. P(3 and higher) are filled with lists of numbers and sorted by what P(0) returned when the numbers are copied to P(1).

The mutator creates a new list of numbers in its mutator.P(0). Inputs to the mutator are in mutator.P(1), mutator.P(2), and optionally higher indexs. It mutates 2 or more lists of numbers to create 1 new list of numbers outputted to mutator.P(0). Mutator.maxP() must be at least 3, and it must create a list the same size as each of the input lists.

Each execution, creates 1 more list of numbers, tries it as input, executes P(0), and positions the list depending on what P(0) returned.

For efficiency, sometimes the lists at the end of this EvolveNumbers should be deleted, because they scored the lowest. For simplicity, a setMaxP(int) function could be added to CS.java, or it could arbitrarily be limited to 100 sets of numbers.

CS.setD(double) is used to store the value returned by the output in the lists of numbers that caused that output. ListAndNumber class is used for that.


Nested Class Summary
static class EvolveNumbers.BellCurveNumberListMutator
          this class takes 1 or more lists of numbers in P(1 and higher) and creates a partially-random hybrid in P(0).
static class EvolveNumbers.ListAndNumber
          this class should instead extend PrimitiveArray.DoubleArray when that class is created.
 
Field Summary
static java.util.Random rand
           
 
Fields inherited from class codesimian.CS
DESCRIPTION, END, EXECPROXY, HEAP, JAVACODE, MYFUEL, NAME, NEWINSTANCE, NULL, PARENT, PARSEPRIORITY, PREV, TESTER, THIS
 
Constructor Summary
EvolveNumbers()
           
 
Method Summary
 java.lang.String description()
          a short description of this CS, shorter than the javadoc, but long enough to tell what the params are for.
 double DForProxy()
          Execute this CS and cast to double.
 int insertWhere(double value)
          the values between P(3) and P(last index) should be sorted with higher value at lowest index.
 java.lang.String keyword()
          For the CodeSimian language as a String.
CodeSimian language keyword, like "+" "*" "max" ">" etc.

Override this function if you want to specify a keyword other than how I derive them from the class name, like + for Add.

Some CSs might never be intended to be used in the language by their keyword.
The best example (4/05) is Num, because it is used in the language like "3.4" instead of "num()".
 int maxP()
          Maximum quantity of Params
 int minP()
          For DForProxy().
Minimum number of parameters in param[] needed to call DForProxy().
Defines which indexs of param[] DForProxy() can use.
Functions with a different number of parameters must override this.
OVERRIDE THIS FUNCTION IF EXEC USES A DIFFERENT NUMBER OF PARAMETERS.
Default is 1.
 int[] selectIndexsToMutate(int quantity)
          returns unique random indexs (more likely to be lower indexs) between 3 and countP()-1
 int selectRandomIndex(double exponent)
          higher exponent gets lower index.
 
Methods inherited from class codesimian.DefaultCS
B, C, countP, decrementMyFuel, deleteP, F, fuel, getExec, getObject, heap, I, indexP, indexPName, insertB, insertC, insertD, insertF, insertI, insertJ, insertL, insertL, insertL1, insertP, insertS, insertZ, J, javaCode, LForProxy, LForProxy, myFuel, name, newInstance, objectToCS, objectToCSArray, objectToCSArray, P, prevD, prevL, PType, S, setB, setC, setCountP, setD, setD, setExec, setF, setFuel, setI, setJ, setL, setL, setL, setL1, setMyFuel, setName, setObject, setP, setPrevExec, setPType, setS, setZ, start, toString, V, Z
 
Methods inherited from class codesimian.CS
addB, addC, addD, addF, addI, addJ, addL, addP, addP, addP, addP, addP, addS, addZ, BForProxy, CForProxy, clone, cost, D, deleteP, FForProxy, GETB, GETC, GETD, GETF, GETI, GETJ, GETL, GETS, GETZ, IForProxy, isIllusion, JForProxy, L, L, L, L, L, maxD, minD, overwrites, parent, parsePriority, PB, PC, PD, PF, PI, PJ, PL, prevB, prevC, prevF, prevI, prevJ, prevS, prevZ, proxyOf, PS, PZ, reflect, reflect, reflect6, setB, SETB, setC, SETC, setCost, SETD, setDescription, setF, SETF, setHeap, setI, SETI, setJ, SETJ, SETL, setL, setL, setParent, setParsePriority, setProxyOf, setS, SETS, setTester, setZ, SETZ, SForProxy, tester, toJavaCode, VForProxy, voidReflect, ZForProxy
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

rand

public static java.util.Random rand
Constructor Detail

EvolveNumbers

public EvolveNumbers()
Method Detail

DForProxy

public double DForProxy()
Description copied from class: CS
Execute this CS and cast to double.

D() and DForProxy() are the 2 most important functions in CS. They execute this CS. All other execute functions, by default, return DForProxy cast to their own type.

For example, J() calls the proxy which calls JForProxy() which calls DForProxy(). D() calls the proxy which calls DForProxy().

By default, all other primitive EXECUTE functions defer to D.
Functions that EXECUTE this CS: L(Class) L(int,Class,int) Z() B() C() S() I() J() F() D() V()

Specified by:
DForProxy in class DefaultCS

keyword

public java.lang.String keyword()
Description copied from class: DefaultCS
For the CodeSimian language as a String.
CodeSimian language keyword, like "+" "*" "max" ">" etc.

Override this function if you want to specify a keyword other than how I derive them from the class name, like + for Add.

Some CSs might never be intended to be used in the language by their keyword.
The best example (4/05) is Num, because it is used in the language like "3.4" instead of "num()".
Default: Returns class name, minus package name (and its dots), and change the first letter to lowercase.

For example, CS.MaxParams does not override keyword(), which returns "maxP".

Overrides:
keyword in class DefaultCS
See Also:
CS.parent(), CS.newInstance(), CS.name()

insertWhere

public int insertWhere(double value)
the values between P(3) and P(last index) should be sorted with higher value at lowest index. Where to insert a new double value?

Returns a number between 3 and countP(). If countP(), watch if it exceeds maxP().


selectIndexsToMutate

public int[] selectIndexsToMutate(int quantity)
returns unique random indexs (more likely to be lower indexs) between 3 and countP()-1


selectRandomIndex

public int selectRandomIndex(double exponent)
higher exponent gets lower index. exponent=1 is linear distribution. all indexs between 3 and countP()-1


minP

public int minP()
Description copied from class: DefaultCS
For DForProxy().
Minimum number of parameters in param[] needed to call DForProxy().
Defines which indexs of param[] DForProxy() can use.
Functions with a different number of parameters must override this.
OVERRIDE THIS FUNCTION IF EXEC USES A DIFFERENT NUMBER OF PARAMETERS.
Default is 1.

Overrides:
minP in class DefaultCS

maxP

public int maxP()
Description copied from class: CS
Maximum quantity of Params

Overrides:
maxP in class CS

description

public java.lang.String description()
Description copied from class: CS
a short description of this CS, shorter than the javadoc, but long enough to tell what the params are for. Example use: in automatically generated webpages for CodeSimian. Example: "returns sum of all params" for Add.

Overrides:
description in class DefaultCS