Changeset 14952 for branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/RandExpressions.cs
- Timestamp:
- 05/10/17 11:23:05 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/RandExpressions.cs
r14897 r14952 1 1 namespace HeuristicLab.Problems.ProgramSynthesis.Push.Expressions { 2 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 2 3 using HeuristicLab.Problems.ProgramSynthesis.Push.Attributes; 3 4 using HeuristicLab.Problems.ProgramSynthesis.Push.Generators.CodeGenerator; … … 9 10 /// </summary> 10 11 [PushExpression(StackTypes.Name, "NAME.RAND")] 12 [StorableClass] 11 13 public class NameRandExpression : StatelessExpression { 12 public override bool Eval(IInternalPushInterpreter interpreter) {13 if (!interpreter.Configuration.ErcOptions.NameErcOptions.IsEnabled)14 return false;14 public NameRandExpression() { } 15 [StorableConstructor] 16 protected NameRandExpression(bool deserializing) : base(deserializing) { } 15 17 18 public override bool IsNoop(IInternalPushInterpreter interpreter) { 19 return !interpreter.Configuration.ErcOptions.NameErcOptions.IsEnabled; 20 } 21 22 public override void Eval(IInternalPushInterpreter interpreter) { 16 23 var name = interpreter.Configuration.ErcOptions.NameErcOptions.GetErcValue(interpreter.Random); 17 24 interpreter.NameStack.Push(name); 18 return true;19 25 } 20 26 } … … 24 30 /// </summary> 25 31 [PushExpression(StackTypes.Integer, "INTEGER.RAND")] 32 [StorableClass] 26 33 public class IntegerRandExpression : StatelessExpression { 27 public override bool Eval(IInternalPushInterpreter interpreter) {28 if (!interpreter.Configuration.ErcOptions.IntegerErcOptions.IsEnabled)29 return false;34 public IntegerRandExpression() { } 35 [StorableConstructor] 36 protected IntegerRandExpression(bool deserializing) : base(deserializing) { } 30 37 38 public override bool IsNoop(IInternalPushInterpreter interpreter) { 39 return !interpreter.Configuration.ErcOptions.IntegerErcOptions.IsEnabled; 40 } 41 42 public override void Eval(IInternalPushInterpreter interpreter) { 31 43 var value = interpreter.Configuration.ErcOptions.IntegerErcOptions.GetErcValue(interpreter.Random); 32 44 interpreter.IntegerStack.Push(value); 33 return true;34 45 } 35 46 } … … 39 50 /// </summary> 40 51 [PushExpression(StackTypes.Float, "FLOAT.RAND")] 52 [StorableClass] 41 53 public class FloatRandExpression : StatelessExpression { 42 public override bool Eval(IInternalPushInterpreter interpreter) {43 if (!interpreter.Configuration.ErcOptions.FloatErcOptions.IsEnabled)44 return false;54 public FloatRandExpression() { } 55 [StorableConstructor] 56 protected FloatRandExpression(bool deserializing) : base(deserializing) { } 45 57 58 public override bool IsNoop(IInternalPushInterpreter interpreter) { 59 return !interpreter.Configuration.ErcOptions.FloatErcOptions.IsEnabled; 60 } 61 62 public override void Eval(IInternalPushInterpreter interpreter) { 46 63 var value = interpreter.Configuration.ErcOptions.FloatErcOptions.GetErcValue(interpreter.Random); 47 64 interpreter.FloatStack.Push(value); 48 return true;49 65 } 50 66 } … … 54 70 /// </summary> 55 71 [PushExpression(StackTypes.Boolean, "BOOLEAN.RAND")] 72 [StorableClass] 56 73 public class BooleanRandExpression : StatelessExpression { 57 public override bool Eval(IInternalPushInterpreter interpreter) {58 if (!interpreter.Configuration.ErcOptions.BooleanErcOptions.IsEnabled)59 return false;74 public BooleanRandExpression() { } 75 [StorableConstructor] 76 protected BooleanRandExpression(bool deserializing) : base(deserializing) { } 60 77 78 public override bool IsNoop(IInternalPushInterpreter interpreter) { 79 return !interpreter.Configuration.ErcOptions.BooleanErcOptions.IsEnabled; 80 } 81 82 public override void Eval(IInternalPushInterpreter interpreter) { 61 83 var value = interpreter.Configuration.ErcOptions.BooleanErcOptions.GetErcValue(interpreter.Random); 62 84 interpreter.BooleanStack.Push(value); 63 return true;64 85 } 65 86 } … … 69 90 /// </summary> 70 91 [PushExpression(StackTypes.Code, "CODE.RAND")] 92 [StorableClass] 71 93 public class CodeRandExpression : StatelessExpression { 72 public override bool Eval(IInternalPushInterpreter interpreter) {73 if (interpreter.IntegerStack.Count == 0 ||74 interpreter.IntegerStack.Top < 1) return false;94 public CodeRandExpression() { } 95 [StorableConstructor] 96 protected CodeRandExpression(bool deserializing) : base(deserializing) { } 75 97 98 public override bool IsNoop(IInternalPushInterpreter interpreter) { 99 return interpreter.IntegerStack.Count == 0 || interpreter.IntegerStack.Top < 1; 100 } 101 102 public override void Eval(IInternalPushInterpreter interpreter) { 76 103 var size = (int)(interpreter.IntegerStack.Pop() % interpreter.Configuration.MaxPointsInRandomExpression); 77 104 var program = LinearCodeGenerator.RandomProgram( … … 84 111 85 112 interpreter.CodeStack.Push(program); 86 return true;87 113 } 88 114 }
Note: See TracChangeset
for help on using the changeset viewer.