Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/10/17 11:23:05 (7 years ago)
Author:
pkimmesw
Message:

#2665 Added IsNoop to Expression, Made Expressions storable, Fixed Debugger, Fixed and improved problem data and result visualisation, Added custom ErcOption view, Added problem difficulty to problem data name

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/VectorReplaceFirstExpressions.cs

    r14875 r14952  
    22
    33namespace HeuristicLab.Problems.ProgramSynthesis.Push.Expressions {
     4  using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    45  using HeuristicLab.Problems.ProgramSynthesis.Push.Attributes;
    56  using HeuristicLab.Problems.ProgramSynthesis.Push.Interpreter;
     
    1011  /// </summary>
    1112  /// <typeparam name="T"></typeparam>
     13  [StorableClass]
    1214  public abstract class VectorReplaceFirstExpression<T> : StatelessExpression {
    13     protected bool Eval(IPushStack<List<T>> vectorStack, IPushStack<T> literalStack) {
    14       if (vectorStack.IsEmpty ||
    15           literalStack.Count < 2)
    16         return false;
     15    protected VectorReplaceFirstExpression() { }
     16    [StorableConstructor]
     17    protected VectorReplaceFirstExpression(bool deserializing) : base(deserializing) { }
    1718
     19    protected bool IsNoop(IPushStack<List<T>> vectorStack, IPushStack<T> literalStack) {
     20      return vectorStack.IsEmpty || literalStack.Count < 2;
     21    }
     22
     23    protected void Eval(IPushStack<List<T>> vectorStack, IPushStack<T> literalStack) {
    1824      var vector = vectorStack.Top;
    1925      var first = literalStack.Top;
     
    2430      if (index >= 0)
    2531        vector[index] = first;
    26 
    27       return true;
    2832    }
    2933  }
    3034
     35  [StorableClass]
    3136  [PushExpression(StackTypes.IntegerVector, "INTEGER[].REPLACEFIRST", StackTypes.Integer)]
    3237  public class IntegerVectorReplaceFirstExpression : VectorReplaceFirstExpression<long> {
    33     public override bool Eval(IInternalPushInterpreter interpreter) {
    34       return Eval(interpreter.IntegerVectorStack, interpreter.IntegerStack);
     38    public IntegerVectorReplaceFirstExpression() { }
     39    [StorableConstructor]
     40    protected IntegerVectorReplaceFirstExpression(bool deserializing) : base(deserializing) { }
     41
     42    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     43      return IsNoop(interpreter.IntegerVectorStack, interpreter.IntegerStack);
     44    }
     45
     46    public override void Eval(IInternalPushInterpreter interpreter) {
     47      Eval(interpreter.IntegerVectorStack, interpreter.IntegerStack);
    3548    }
    3649  }
    3750
     51  [StorableClass]
    3852  [PushExpression(StackTypes.FloatVector, "FLOAT[].REPLACEFIRST", StackTypes.Float)]
    3953  public class FloatVectorReplaceFirstExpression : VectorReplaceFirstExpression<double> {
    40     public override bool Eval(IInternalPushInterpreter interpreter) {
    41       return Eval(interpreter.FloatVectorStack, interpreter.FloatStack);
     54    public FloatVectorReplaceFirstExpression() { }
     55    [StorableConstructor]
     56    protected FloatVectorReplaceFirstExpression(bool deserializing) : base(deserializing) { }
     57
     58    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     59      return IsNoop(interpreter.FloatVectorStack, interpreter.FloatStack);
     60    }
     61
     62    public override void Eval(IInternalPushInterpreter interpreter) {
     63      Eval(interpreter.FloatVectorStack, interpreter.FloatStack);
    4264    }
    4365  }
    4466
     67  [StorableClass]
    4568  [PushExpression(StackTypes.BooleanVector, "BOOLEAN[].REPLACEFIRST", StackTypes.Boolean)]
    4669  public class BooleanVectorReplaceFirstExpression : VectorReplaceFirstExpression<bool> {
    47     public override bool Eval(IInternalPushInterpreter interpreter) {
    48       return Eval(interpreter.BooleanVectorStack, interpreter.BooleanStack);
     70    public BooleanVectorReplaceFirstExpression() { }
     71    [StorableConstructor]
     72    protected BooleanVectorReplaceFirstExpression(bool deserializing) : base(deserializing) { }
     73
     74    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     75      return IsNoop(interpreter.BooleanVectorStack, interpreter.BooleanStack);
     76    }
     77
     78    public override void Eval(IInternalPushInterpreter interpreter) {
     79      Eval(interpreter.BooleanVectorStack, interpreter.BooleanStack);
    4980    }
    5081  }
    5182
     83  [StorableClass]
    5284  [PushExpression(StackTypes.StringVector, "STRING[].REPLACEFIRST", StackTypes.String)]
    5385  public class StringVectorReplaceFirstExpression : VectorReplaceFirstExpression<string> {
    54     public override bool Eval(IInternalPushInterpreter interpreter) {
    55       return Eval(interpreter.StringVectorStack, interpreter.StringStack);
     86    public StringVectorReplaceFirstExpression() { }
     87    [StorableConstructor]
     88    protected StringVectorReplaceFirstExpression(bool deserializing) : base(deserializing) { }
     89
     90    public override bool IsNoop(IInternalPushInterpreter interpreter) {
     91      return IsNoop(interpreter.StringVectorStack, interpreter.StringStack);
     92    }
     93
     94    public override void Eval(IInternalPushInterpreter interpreter) {
     95      Eval(interpreter.StringVectorStack, interpreter.StringStack);
    5696    }
    5797  }
Note: See TracChangeset for help on using the changeset viewer.