GMUEClab / ecj

ECJ Evolutionary Computation Toolkit
http://cs.gmu.edu/~eclab/projects/ecj/
123 stars 42 forks source link

Inconsistent use of "size" parameter for arrays #43

Closed SigmaX closed 3 years ago

SigmaX commented 6 years ago

As the Manual points out (section 2.1.2), the parameters that specify the size of array-list constructs are wildly inconsistent. We must have a standard array representation, however, in order to make a JSON-to-params conversion utility that uses JSON arrays to implicitly define array size.

Example 1:

a.size = 2
a.b.0 = ...
a.b.1 = ...

Example 2:

a.b.size = 2
a.b.0 = ...
a.b.1 = ...

Example 3:

a.num-islands = 2
a.b.0 = ...
a.b.1 = ...

Examples 1 and 2 both occur during the specification of GP function sets, for instance.

SigmaX commented 6 years ago

Ohter examples: see occurrences of genome-size and num-genes.

SigmaX commented 6 years ago

A more complete list of ways this issue shows up, compiled by Sean:

gp.fs.size = 1
gp.fs.0.size = 6
pop.subpops =                           1
pop.subpop.0.species.genome-size =      100
pop.subpop.0.size =                     1000
stat.num-children =                     0
eval.stat.num-children = 0
eval.problem.num-params = 7
gp.tc.size = 3
gp.nc.size = 7
push.in.size = 8
exch.num-islands = 2
eval.problem.num-params = 7
pop.subpop.0.species.ind.numtrees = 1
pop.subpop.0.species.pipe.num-sources = 2
pop.subpop.0.species.constraints-size =      10
pop.subpop.0.species.ind.numtrees = 3

PROBLEMATIC STUFF

  1. Multiple items share the same numerosity: genome-size. For example:

    pop.subpop.0.species.min-gene.2 = 0
    pop.subpop.0.species.max-gene.2 = 2
    pop.subpop.0.species.mutation-type.2 = integer-reset
    pop.subpop.0.species.random-walk-probability.3 = 0.5
  2. I believe that the following uses pop.subpop.0.species.gp-species.ind.numtrees as its numerosity:

    ge.species.file.0 = regression.grammar
  3. The number of seeds is the max of evalthreads and breedthreads.

    evalthreads =                           1
    breedthreads =                          1                               4357
    seed.0 =                                time
  4. The following is based on pop.subpops I believe.

    exch.subpop.0.select = ec.select.TournamentSelection
  5. The following are fixed in length, so they're always 0 or 1 I believe.

    gp.breed.internal-xover.ns.0 = ec.gp.koza.KozaNodeSelector
    gp.breed.internal-xover.ns.1 = same
    gp.breed.mutate-all-nodes.ns.0 = ec.gp.koza.KozaNodeSelector
    gp.breed.mutate-one-node.ns.0 = ec.gp.koza.KozaNodeSelector
    gp.breed.mutate-erc.ns.0 = ec.gp.koza.KozaNodeSelector
  6. The following is based on pop.subpops I believe.

    steady.deselector.0 =                   ec.select.TournamentSelection
SigmaX commented 3 years ago

Still an issue, but low priority.