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 = FramsClass.build() |
---|
16 | .name("Genotype") |
---|
17 | .id("org") |
---|
18 | .description("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.") |
---|
19 | .group("Body") |
---|
20 | .group("Performance") |
---|
21 | .group("Fitness") |
---|
22 | .group("Conversions") |
---|
23 | .param(Param.build().id("name").group(0).name("Name").type(StringParam.class).min(0).max(40)) |
---|
24 | .param(Param.build().id("genotype").group(0).name("Genotype").type(StringParam.class).min(1)) |
---|
25 | .param(Param.build().id("info").group(0).name("Info").type(StringParam.class).min(1).help("Additional information or comments")) |
---|
26 | .param(Param.build().id("simi").group(1).flags(Flags.READONLY | Flags.DONTSAVE).name("Similarity").type(FloatParam.class)) |
---|
27 | .param(Param.build().id("energ0").group(1).flags(Flags.READONLY | Flags.DONTSAVE).name("Starting energy").type(FloatParam.class)) |
---|
28 | .param(Param.build().id("strsiz").group(1).flags(Flags.READONLY | Flags.DONTSAVE | Flags.USERHIDDEN).name("Body parts (deprecated; use numparts)").type(FloatParam.class)) |
---|
29 | .param(Param.build().id("strjoints").group(1).flags(Flags.READONLY | Flags.DONTSAVE | Flags.USERHIDDEN).name("Body joints (deprecated; use numjoints)").type(FloatParam.class)) |
---|
30 | .param(Param.build().id("nnsiz").group(1).flags(Flags.READONLY | Flags.DONTSAVE | Flags.USERHIDDEN).name("Brain size (deprecated; use numneurons)").type(FloatParam.class)) |
---|
31 | .param(Param.build().id("nncon").group(1).flags(Flags.READONLY | Flags.DONTSAVE | Flags.USERHIDDEN).name("Brain connections (deprecated; use numconnections)").type(FloatParam.class)) |
---|
32 | .param(Param.build().id("numparts").group(1).flags(Flags.READONLY | Flags.DONTSAVE).name("Body parts").type(FloatParam.class)) |
---|
33 | .param(Param.build().id("numjoints").group(1).flags(Flags.READONLY | Flags.DONTSAVE).name("Body joints").type(FloatParam.class)) |
---|
34 | .param(Param.build().id("numneurons").group(1).flags(Flags.READONLY | Flags.DONTSAVE).name("Brain size").type(FloatParam.class)) |
---|
35 | .param(Param.build().id("numconnections").group(1).flags(Flags.READONLY | Flags.DONTSAVE).name("Brain connections").type(FloatParam.class)) |
---|
36 | .param(Param.build().id("num").group(2).name("Ordinal number").type(DecimalParam.class)) |
---|
37 | .param(Param.build().id("gnum").group(2).name("Generation").type(DecimalParam.class)) |
---|
38 | .param(Param.build().id("popsiz").group(2).flags(Flags.USERHIDDEN).name("Deprecated; use entities").type(DecimalParam.class)) |
---|
39 | .param(Param.build().id("entities").group(2).flags(Flags.DONTSAVE).name("Instances").type(DecimalParam.class).help("Copies of this genotype")) |
---|
40 | .param(Param.build().id("lifespan").group(2).name("Life span").type(FloatParam.class).help("Average life span")) |
---|
41 | .param(Param.build().id("velocity").group(2).name("Velocity").type(FloatParam.class).help("Average velocity")) |
---|
42 | .param(Param.build().id("distance").group(2).name("Distance").type(FloatParam.class)) |
---|
43 | .param(Param.build().id("vertvel").group(2).name("Vertical velocity").type(FloatParam.class)) |
---|
44 | .param(Param.build().id("vertpos").group(2).name("Vertical position").type(FloatParam.class)) |
---|
45 | .param(Param.build().id("fit").group(3).flags(Flags.READONLY | Flags.DONTSAVE).name("Fitness").type(FloatParam.class)) |
---|
46 | .param(Param.build().id("fit2").group(3).flags(Flags.READONLY | Flags.DONTSAVE).name("Final fitness").type(FloatParam.class).help("Fitness shifted by (avg-n*stddev)")) |
---|
47 | .param(Param.build().id("f0genotype").group(4).flags(Flags.READONLY | Flags.DONTSAVE).name("f0 genotype").type(StringParam.class).min(1).help("converted to f0 genotype")) |
---|
48 | .param(Param.build().id("user1").group(2).name("User field 1").type(UniversalParam.class)) |
---|
49 | .param(Param.build().id("user2").group(2).name("User field 2").type(UniversalParam.class)) |
---|
50 | .param(Param.build().id("user3").group(2).name("User field 3").type(UniversalParam.class)) |
---|
51 | .param(Param.build().id("isValid").group(0).flags(Flags.READONLY | Flags.DONTSAVE | Flags.USERHIDDEN).name("Valid").type(DecimalParam.class).min(0).max(1)) |
---|
52 | .param(Param.build().id("uid").group(0).flags(Flags.READONLY | Flags.USERHIDDEN).name("#").type("s").help("Unique identifier")) |
---|
53 | .finish(); |
---|
54 | |
---|
55 | AccessInterface reflectionParam = new PropertiesAccess(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 | } |
---|