1 | package com.framsticks.parsers; |
---|
2 | |
---|
3 | import com.framsticks.model.Genotype; |
---|
4 | import com.framsticks.params.*; |
---|
5 | import com.framsticks.params.types.*; |
---|
6 | |
---|
7 | import org.apache.log4j.Logger; |
---|
8 | |
---|
9 | public class GenotypeLoader extends MultiParamLoader { |
---|
10 | private Genotype genotypeReturnObject = new Genotype(); |
---|
11 | private static Logger logger = Logger.getLogger(GenotypeLoader.class); |
---|
12 | |
---|
13 | public GenotypeLoader() throws Exception { |
---|
14 | |
---|
15 | FramsClass entries = new FramsClass("Genotype", "org", "A Genotype with the associated performance information. All but one Genotype objects are placed in Genotype Groups. There is also a single static Genotype object not associated with a group, which is used as a temporary storage by genetic operators and some functions from GenePools."); |
---|
16 | entries |
---|
17 | .appendGroup(new Group("Body")) |
---|
18 | .appendGroup(new Group("Performance")) |
---|
19 | .appendGroup(new Group("Fitness")) |
---|
20 | .appendGroup(new Group("Conversions")); |
---|
21 | |
---|
22 | //getId, group-number, getFlags, getName, getType(getType min max), getHelp |
---|
23 | entries |
---|
24 | .append(new ParamBuilder().setId("name").setGroup(0).setName("Name").setType(new StringParam()).setMin(0).setMax(40).build()) |
---|
25 | .append(new ParamBuilder().setId("genotype").setGroup(0).setName("Genotype").setType(new StringParam()).setMin(1).build()) |
---|
26 | .append(new ParamBuilder().setId("info").setGroup(0).setName("Info").setType(new StringParam()).setMin(1).setHelp("Additional information or comments").build()) |
---|
27 | .append(new ParamBuilder().setId("simi").setGroup(1).setFlags(Flags.READONLY | Flags.DONTSAVE).setName("Similarity").setType(new FloatParam()).build()) |
---|
28 | .append(new ParamBuilder().setId("energ0").setGroup(1).setFlags(Flags.READONLY | Flags.DONTSAVE).setName("Starting energy").setType(new FloatParam()).build()) |
---|
29 | .append(new ParamBuilder().setId("strsiz").setGroup(1).setFlags(Flags.READONLY | Flags.DONTSAVE | Flags.USERHIDDEN).setName("Body parts (deprecated; use numparts)").setType(new FloatParam()).build()) |
---|
30 | .append(new ParamBuilder().setId("strjoints").setGroup(1).setFlags(Flags.READONLY | Flags.DONTSAVE | Flags.USERHIDDEN).setName("Body joints (deprecated; use numjoints)").setType(new FloatParam()).build()) |
---|
31 | .append(new ParamBuilder().setId("nnsiz").setGroup(1).setFlags(Flags.READONLY | Flags.DONTSAVE | Flags.USERHIDDEN).setName("Brain size (deprecated; use numneurons)").setType(new FloatParam()).build()) |
---|
32 | .append(new ParamBuilder().setId("nncon").setGroup(1).setFlags(Flags.READONLY | Flags.DONTSAVE | Flags.USERHIDDEN).setName("Brain connections (deprecated; use numconnections)").setType(new FloatParam()).build()) |
---|
33 | .append(new ParamBuilder().setId("numparts").setGroup(1).setFlags(Flags.READONLY | Flags.DONTSAVE).setName("Body parts").setType(new FloatParam()).build()) |
---|
34 | .append(new ParamBuilder().setId("numjoints").setGroup(1).setFlags(Flags.READONLY | Flags.DONTSAVE).setName("Body joints").setType(new FloatParam()).build()) |
---|
35 | .append(new ParamBuilder().setId("numneurons").setGroup(1).setFlags(Flags.READONLY | Flags.DONTSAVE).setName("Brain size").setType(new FloatParam()).build()) |
---|
36 | .append(new ParamBuilder().setId("numconnections").setGroup(1).setFlags(Flags.READONLY | Flags.DONTSAVE).setName("Brain connections").setType(new FloatParam()).build()) |
---|
37 | .append(new ParamBuilder().setId("num").setGroup(2).setName("Ordinal number").setType(new DecimalParam()).build()) |
---|
38 | .append(new ParamBuilder().setId("gnum").setGroup(2).setName("Generation").setType(new DecimalParam()).build()) |
---|
39 | .append(new ParamBuilder().setId("popsiz").setGroup(2).setFlags(Flags.USERHIDDEN).setName("Deprecated; use entities").setType(new DecimalParam()).build()) |
---|
40 | .append(new ParamBuilder().setId("entities").setGroup(2).setFlags(Flags.DONTSAVE).setName("Instances").setType(new DecimalParam()).setHelp("Copies of this genotype").build()) |
---|
41 | .append(new ParamBuilder().setId("lifespan").setGroup(2).setName("Life span").setType(new FloatParam()).setHelp("Average life span").build()) |
---|
42 | .append(new ParamBuilder().setId("velocity").setGroup(2).setName("Velocity").setType(new FloatParam()).setHelp("Average velocity").build()) |
---|
43 | .append(new ParamBuilder().setId("distance").setGroup(2).setName("Distance").setType(new FloatParam()).build()) |
---|
44 | .append(new ParamBuilder().setId("vertvel").setGroup(2).setName("Vertical velocity").setType(new FloatParam()).build()) |
---|
45 | .append(new ParamBuilder().setId("vertpos").setGroup(2).setName("Vertical position").setType(new FloatParam()).build()) |
---|
46 | .append(new ParamBuilder().setId("fit").setGroup(3).setFlags(Flags.READONLY | Flags.DONTSAVE).setName("Fitness").setType(new FloatParam()).build()) |
---|
47 | .append(new ParamBuilder().setId("fit2").setGroup(3).setFlags(Flags.READONLY | Flags.DONTSAVE).setName("Final fitness").setType(new FloatParam()).setHelp("Fitness shifted by (avg-n*stddev)").build()) |
---|
48 | .append(new ParamBuilder().setId("f0genotype").setGroup(4).setFlags(Flags.READONLY | Flags.DONTSAVE).setName("f0 genotype").setType(new StringParam()).setMin(1).setHelp("converted to f0 genotype").build()) |
---|
49 | .append(new ParamBuilder().setId("user1").setGroup(2).setName("User field 1").setType(new UniversalParam()).build()) |
---|
50 | .append(new ParamBuilder().setId("user2").setGroup(2).setName("User field 2").setType(new UniversalParam()).build()) |
---|
51 | .append(new ParamBuilder().setId("user3").setGroup(2).setName("User field 3").setType(new UniversalParam()).build()) |
---|
52 | .append(new ParamBuilder().setId("isValid").setGroup(0).setFlags(Flags.READONLY | Flags.DONTSAVE | Flags.USERHIDDEN).setName("Valid").setType(new DecimalParam()).setMin(0).setMax(1).build()) |
---|
53 | .append(new ParamBuilder().setId("uid").setGroup(0).setFlags(Flags.READONLY | Flags.USERHIDDEN).setName("#").setType("s").setHelp("Unique identifier").build()); |
---|
54 | |
---|
55 | ReflectionAccess reflectionParam = new ReflectionAccess(Genotype.class, entries); |
---|
56 | addAccessInterface(reflectionParam); |
---|
57 | addBreakCondition(Status.AfterObject); |
---|
58 | } |
---|
59 | |
---|
60 | public Genotype loadNextGenotype() throws Exception { |
---|
61 | logger.info("Loading next genotype"); |
---|
62 | Status result = go(); |
---|
63 | |
---|
64 | if (result == Status.AfterObject) { |
---|
65 | return genotypeReturnObject; |
---|
66 | } |
---|
67 | |
---|
68 | return null; |
---|
69 | } |
---|
70 | } |
---|