Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
08/25/15 10:38:20 (9 years ago)
Author:
gkronber
Message:

#2421 new version of artificial ant problem that uses SymbolicExpressionTreeEncoding

Location:
trunk/sources/HeuristicLab.Problems.ArtificialAnt/3.5
Files:
1 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.ArtificialAnt/3.5/AntTrail.cs

    r12012 r12895  
    3939    }
    4040    [Storable]
    41     private SymbolicExpressionTree expression;
    42     public SymbolicExpressionTree SymbolicExpressionTree {
    43       get { return expression; }
    44       set {
    45         if (expression != value) {
    46           //if (expression != null) DeregisterSymbolicExpressionTreeEvents();
    47           expression = value;
    48           //if (expression != null) RegisterSymbolicExpressionTreeEvents();
    49           OnSymbolicExpressionTreeChanged();
    50         }
    51       }
    52     }
     41    public ISymbolicExpressionTree SymbolicExpressionTree { get; private set; }
     42    [Storable]
     43    public BoolMatrix World { get; private set; }
     44    [Storable]
     45    public int MaxTimeSteps { get; private set; }
     46    [Storable]
     47    public double Quality { get; private set; }
    5348
    54     [Storable]
    55     private BoolMatrix world;
    56     public BoolMatrix World {
    57       get { return world; }
    58       set {
    59         if (world != value) {
    60           if (world != null) DeregisterWorldEvents();
    61           world = value;
    62           if (world != null) RegisterWorldEvents();
    63           OnWorldChanged();
    64         }
    65       }
    66     }
    67     [Storable]
    68     private IntValue maxTimeSteps;
    69     public IntValue MaxTimeSteps {
    70       get { return maxTimeSteps; }
    71       set {
    72         if (maxTimeSteps != value) {
    73           if (maxTimeSteps != value) {
    74             if (maxTimeSteps != null) DeregisterMaxTimeStepsEvents();
    75             maxTimeSteps = value;
    76             if (maxTimeSteps != null) RegisterMaxTimeStepsEvents();
    77             OnWorldChanged();
    78           }
    79         }
    80       }
    81     }
    82 
    83     public AntTrail() : base() { }
    84     public AntTrail(BoolMatrix world, SymbolicExpressionTree expression, IntValue maxTimeSteps)
    85       : this() {
    86       this.world = world;
    87       this.expression = expression;
    88       this.maxTimeSteps = maxTimeSteps;
    89       Initialize();
     49    public AntTrail(BoolMatrix world, ISymbolicExpressionTree expression, int maxTimeSteps, double quality) {
     50      this.World = world;
     51      this.SymbolicExpressionTree = expression;
     52      this.MaxTimeSteps = maxTimeSteps;
     53      this.Quality = quality;
    9054    }
    9155
     
    9357    private AntTrail(bool deserializing) : base(deserializing) { }
    9458    [StorableHook(HookType.AfterDeserialization)]
    95     private void AfterDeserialization() {
    96       Initialize();
    97     }
     59    private void AfterDeserialization() { }
     60
    9861    private AntTrail(AntTrail original, Cloner cloner)
    9962      : base(original, cloner) {
    100       expression = cloner.Clone(original.expression);
    101       world = cloner.Clone(original.world);
    102       maxTimeSteps = cloner.Clone(original.maxTimeSteps);
    103       Initialize();
     63      SymbolicExpressionTree = cloner.Clone(original.SymbolicExpressionTree);
     64      World = cloner.Clone(original.World);
     65      MaxTimeSteps = original.MaxTimeSteps;
     66      Quality = original.Quality;
    10467    }
     68
    10569    public override IDeepCloneable Clone(Cloner cloner) {
    10670      return new AntTrail(this, cloner);
    10771    }
    108 
    109     private void Initialize() {
    110       //if (expression != null) RegisterSymbolicExpressionTreeEvents();
    111       if (world != null) RegisterWorldEvents();
    112       if (maxTimeSteps != null) RegisterMaxTimeStepsEvents();
    113     }
    114 
    115     #region Events
    116     public event EventHandler SymbolicExpressionTreeChanged;
    117     private void OnSymbolicExpressionTreeChanged() {
    118       var changed = SymbolicExpressionTreeChanged;
    119       if (changed != null) changed(this, EventArgs.Empty);
    120     }
    121     public event EventHandler WorldChanged;
    122     private void OnWorldChanged() {
    123       var changed = WorldChanged;
    124       if (changed != null) changed(this, EventArgs.Empty);
    125     }
    126     public event EventHandler MaxTimeStepsChanged;
    127     private void OnMaxTimeStepsChanged() {
    128       var changed = MaxTimeStepsChanged;
    129       if (changed != null) changed(this, EventArgs.Empty);
    130     }
    131 
    132     //private void RegisterSymbolicExpressionTreeEvents() {
    133     //  SymbolicExpressionTree.ItemChanged += new EventHandler<EventArgs<int>>(SymbolicExpressionTree_ItemChanged);
    134     //  SymbolicExpressionTree.Reset += new EventHandler(SymbolicExpressionTree_Reset);
    135     //}
    136     //private void DeregisterSymbolicExpressionTreeEvents() {
    137     //  SymbolicExpressionTree.ItemChanged -= new EventHandler<EventArgs<int>>(SymbolicExpressionTree_ItemChanged);
    138     //  SymbolicExpressionTree.Reset -= new EventHandler(SymbolicExpressionTree_Reset);
    139     //}
    140 
    141     private void RegisterWorldEvents() {
    142       World.ItemChanged += new EventHandler<EventArgs<int, int>>(World_ItemChanged);
    143       World.Reset += new EventHandler(World_Reset);
    144     }
    145     private void DeregisterWorldEvents() {
    146       World.ItemChanged -= new EventHandler<EventArgs<int, int>>(World_ItemChanged);
    147       World.Reset -= new EventHandler(World_Reset);
    148     }
    149     private void RegisterMaxTimeStepsEvents() {
    150       MaxTimeSteps.ValueChanged += new EventHandler(MaxTimeSteps_ValueChanged);
    151     }
    152     private void DeregisterMaxTimeStepsEvents() {
    153       MaxTimeSteps.ValueChanged -= new EventHandler(MaxTimeSteps_ValueChanged);
    154     }
    155 
    156     void MaxTimeSteps_ValueChanged(object sender, EventArgs e) {
    157       OnMaxTimeStepsChanged();
    158     }
    159     private void World_ItemChanged(object sender, EventArgs<int, int> e) {
    160       OnWorldChanged();
    161     }
    162     private void World_Reset(object sender, EventArgs e) {
    163       OnWorldChanged();
    164     }
    165     #endregion
    16672  }
    16773}
Note: See TracChangeset for help on using the changeset viewer.