Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/19/17 12:55:58 (7 years ago)
Author:
pkimmesw
Message:

#2665 Started Plush Encoding, Added Zero Error Individual Count Analyzer

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Configuration/PushConfigurationBase.cs

    r15189 r15273  
    1212
    1313  [StorableClass]
    14   public abstract class PushConfigurationBase : NamedItem, IEnabledExpressionsConfiguration {
     14  public abstract class PushConfigurationBase : NamedItem, IExpressionsConfiguration {
    1515
    1616    protected PushConfigurationBase() {
     
    2828      enabledExpressions = origin.EnabledExpressions.ToList();
    2929      expressionsPerStackCount = origin.expressionsPerStackCount.ToDictionary(x => x.Key, x => x.Value);
    30     }
     30      InExpressionCount = origin.InExpressionCount;
     31      Seed = origin.Seed;
     32    }
     33
     34    [Storable]
     35    public int Seed { get; set; }
     36
     37    [Storable]
     38    public int InExpressionCount { get; private set; }
    3139
    3240    [Storable]
    3341    private readonly Dictionary<StackTypes, int> expressionsPerStackCount;
     42
     43    public IReadOnlyDictionary<StackTypes, int> ExpressionsPerStackCount { get { return expressionsPerStackCount; } }
    3444
    3545    public event EventHandler<EnabledExpressionsChangedEventArgs> EnabledExpressionsChanged;
     
    112122
    113123    private void EnableExpressions(IEnumerable<string> expressionNames) {
    114       foreach (var expressionName in expressionNames.Except(EnabledExpressions))
     124      var addedExpressions = expressionNames as IList<string> ?? expressionNames.ToList();
     125
     126      foreach (var expressionName in addedExpressions.Except(EnabledExpressions))
    115127        EnableExpression(expressionName, false);
    116128
    117129      if (EnabledExpressionsChanged != null) {
    118         EnabledExpressionsChanged(this, new EnabledExpressionsChangedEventArgs(expressionNames, new string[0]));
     130        EnabledExpressionsChanged(this, new EnabledExpressionsChangedEventArgs(addedExpressions, new string[0]));
    119131      }
    120132    }
     
    133145
    134146    private void DisableExpressions(IEnumerable<string> expressionNames) {
    135       foreach (var expressionName in expressionNames.Intersect(EnabledExpressions))
     147      var removedExpressions = expressionNames as IList<string> ?? expressionNames.ToList();
     148
     149      foreach (var expressionName in removedExpressions.Intersect(EnabledExpressions))
    136150        DisableExpression(expressionName, false);
    137151
    138152      if (EnabledExpressionsChanged != null) {
    139         EnabledExpressionsChanged(this, new EnabledExpressionsChangedEventArgs(new string[0], expressionNames));
     153        EnabledExpressionsChanged(this, new EnabledExpressionsChangedEventArgs(new string[0], removedExpressions));
    140154      }
    141155    }
     
    229243      else DisableStack(type, setDependencies);
    230244    }
     245
     246    public void InitInExpressions(int totalInputArgumentCount) {
     247      InExpressionCount = totalInputArgumentCount;
     248
     249      for (var i = 0; i < ExpressionTable.InExpressionTable.Count; i++) {
     250        var expression = ExpressionTable.InExpressionTable[i];
     251        var expressionName = ExpressionTable.TypeToNameTable[expression.GetType()];
     252
     253        DisableExpression(expressionName);
     254      }
     255
     256      if (totalInputArgumentCount > ExpressionTable.InExpressionTable.Count)
     257        throw new InvalidOperationException("More input arguments defined as InExpression types");
     258
     259      for (var i = 0; i < totalInputArgumentCount; i++) {
     260        var expression = ExpressionTable.InExpressionTable[i];
     261        var expressionName = ExpressionTable.TypeToNameTable[expression.GetType()];
     262
     263        EnableExpression(expressionName);
     264      }
     265    }
    231266  }
    232267}
Note: See TracChangeset for help on using the changeset viewer.