Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/28/13 16:56:21 (11 years ago)
Author:
mkommend
Message:

#2038: Merged r9553:9555, r9569, r9591:r9592, r9618 into the stable branch.

Location:
stable
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • stable

  • stable/HeuristicLab.Algorithms.RAPGA/3.3/RAPGA.cs

    r9456 r9673  
    9494      get { return (ValueParameter<IntValue>)Parameters["Elites"]; }
    9595    }
     96    private IFixedValueParameter<BoolValue> ReevaluateElitesParameter {
     97      get { return (IFixedValueParameter<BoolValue>)Parameters["ReevaluateElites"]; }
     98    }
    9699    private ValueParameter<MultiAnalyzer> AnalyzerParameter {
    97100      get { return (ValueParameter<MultiAnalyzer>)Parameters["Analyzer"]; }
     
    157160      get { return ElitesParameter.Value; }
    158161      set { ElitesParameter.Value = value; }
     162    }
     163    public bool ReevaluteElites {
     164      get { return ReevaluateElitesParameter.Value.Value; }
     165      set { ReevaluateElitesParameter.Value.Value = value; }
    159166    }
    160167    public MultiAnalyzer Analyzer {
     
    192199    private RAPGA(bool deserializing) : base(deserializing) { }
    193200    [StorableHook(HookType.AfterDeserialization)]
    194     private void AfterDeserialization() { Initialize(); }
     201    private void AfterDeserialization() {
     202      // BackwardsCompatibility3.3
     203      #region Backwards compatible code, remove with 3.4
     204      if (!Parameters.ContainsKey("ReevaluateElites")) {
     205        Parameters.Add(new FixedValueParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)", (BoolValue)new BoolValue(false).AsReadOnly()) { Hidden = true });
     206      }
     207      #endregion
     208      Initialize();
     209    }
    195210    private RAPGA(RAPGA original, Cloner cloner)
    196211      : base(original, cloner) {
     
    216231      Parameters.Add(new OptionalConstrainedValueParameter<IManipulator>("Mutator", "The operator used to mutate solutions."));
    217232      Parameters.Add(new ValueParameter<IntValue>("Elites", "The numer of elite solutions which are kept in each generation.", new IntValue(1)));
     233      Parameters.Add(new FixedValueParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)", new BoolValue(false)) { Hidden = true });
    218234      Parameters.Add(new ValueParameter<MultiAnalyzer>("Analyzer", "The operator used to analyze each generation.", new MultiAnalyzer()));
    219235      Parameters.Add(new ValueParameter<IntValue>("MaximumGenerations", "The maximum number of generations which should be processed.", new IntValue(1000)));
     
    248264      mainLoop.CrossoverParameter.ActualName = CrossoverParameter.Name;
    249265      mainLoop.ElitesParameter.ActualName = ElitesParameter.Name;
     266      mainLoop.ReevaluateElitesParameter.ActualName = ReevaluateElitesParameter.Name;
    250267      mainLoop.MaximumGenerationsParameter.ActualName = MaximumGenerationsParameter.Name;
    251268      mainLoop.MutatorParameter.ActualName = MutatorParameter.Name;
  • stable/HeuristicLab.Algorithms.RAPGA/3.3/RAPGAMainLoop.cs

    r9456 r9673  
    6565      get { return (ValueLookupParameter<IntValue>)Parameters["Elites"]; }
    6666    }
     67    public IValueLookupParameter<BoolValue> ReevaluateElitesParameter {
     68      get { return (IValueLookupParameter<BoolValue>)Parameters["ReevaluateElites"]; }
     69    }
    6770    public ValueLookupParameter<IntValue> MaximumGenerationsParameter {
    6871      get { return (ValueLookupParameter<IntValue>)Parameters["MaximumGenerations"]; }
     
    116119    public override IDeepCloneable Clone(Cloner cloner) {
    117120      return new RAPGAMainLoop(this, cloner);
     121    }
     122
     123    [StorableHook(HookType.AfterDeserialization)]
     124    private void AfterDeserialization() {
     125      // BackwardsCompatibility3.3
     126      #region Backwards compatible code, remove with 3.4
     127      if (!Parameters.ContainsKey("ReevaluateElites")) {
     128        Parameters.Add(new ValueLookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)"));
     129      }
     130      #endregion
    118131    }
    119132
     
    129142      Parameters.Add(new ValueLookupParameter<IOperator>("Evaluator", "The operator used to evaluate solutions. This operator is executed in parallel, if an engine is used which supports parallelization."));
    130143      Parameters.Add(new ValueLookupParameter<IntValue>("Elites", "The numer of elite solutions which are kept in each generation."));
     144      Parameters.Add(new ValueLookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)"));
    131145      Parameters.Add(new ValueLookupParameter<IntValue>("MaximumGenerations", "The maximum number of generations which should be processed."));
    132146      Parameters.Add(new ValueLookupParameter<VariableCollection>("Results", "The variable collection where results should be stored."));
     
    190204      Assigner assigner4 = new Assigner();
    191205      Assigner assigner5 = new Assigner();
     206      ConditionalBranch reevaluateElitesBranch = new ConditionalBranch();
     207      UniformSubScopesProcessor uniformSubScopesProcessor2 = new UniformSubScopesProcessor();
     208      Placeholder evaluator2 = new Placeholder();
     209      SubScopesCounter subScopesCounter4 = new SubScopesCounter();
    192210
    193211      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Generations", new IntValue(0))); // Class RAPGA expects this to be called Generations
     
    338356      assigner5.LeftSideParameter.ActualName = "OffspringList";
    339357      assigner5.RightSideParameter.Value = new ScopeList();
     358
     359      reevaluateElitesBranch.ConditionParameter.ActualName = "ReevaluateElites";
     360      reevaluateElitesBranch.Name = "Reevaluate elites ?";
     361
     362      uniformSubScopesProcessor2.Parallel.Value = true;
     363
     364      evaluator2.Name = "Evaluator (placeholder)";
     365      evaluator2.OperatorParameter.ActualName = EvaluatorParameter.Name;
     366
     367      subScopesCounter4.Name = "Increment EvaluatedSolutions";
     368      subScopesCounter4.ValueParameter.ActualName = EvaluatedSolutionsParameter.Name;
    340369      #endregion
    341370
     
    378407      subScopesProcessor2.Successor = mergingReducer;
    379408      bestSelector.Successor = rightReducer2;
    380       rightReducer2.Successor = null;
     409      rightReducer2.Successor = reevaluateElitesBranch;
     410      reevaluateElitesBranch.TrueBranch = uniformSubScopesProcessor2;
     411      uniformSubScopesProcessor2.Operator = evaluator2;
     412      uniformSubScopesProcessor2.Successor = subScopesCounter4;
     413      evaluator2.Successor = null;
     414      subScopesCounter4.Successor = null;
     415      reevaluateElitesBranch.FalseBranch = null;
     416      reevaluateElitesBranch.Successor = null;
    381417      scopeCleaner.Successor = scopeRestorer;
    382418      mergingReducer.Successor = intCounter3;
Note: See TracChangeset for help on using the changeset viewer.