Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
09/24/09 11:37:28 (15 years ago)
Author:
gkronber
Message:

Implemented #762 (ValidationQuality improvment progress as additional stopping criterion for default StructId Engines)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/OffspringSelectionGPRegression.cs

    r2375 r2385  
    3333using HeuristicLab.DataAnalysis;
    3434using HeuristicLab.Operators.Programmable;
     35using HeuristicLab.GP.Algorithms;
    3536
    3637namespace HeuristicLab.GP.StructureIdentification {
     
    100101      get { return GetVariableInjector().GetVariable("PunishmentFactor").GetValue<DoubleData>().Data; }
    101102      set { GetVariableInjector().GetVariable("PunishmentFactor").GetValue<DoubleData>().Data = value; }
     103    }
     104
     105    public virtual int MaxBestValidationSolutionAge {
     106      get { return GetVariableInjector().GetVariable("MaxBestValidationSolutionAge").GetValue<IntData>().Data; }
     107      set { GetVariableInjector().GetVariable("MaxBestValidationSolutionAge").GetValue<IntData>().Data = value; }
    102108    }
    103109
     
    116122      : base() {
    117123      PunishmentFactor = 10.0;
     124      MaxBestValidationSolutionAge = 10;
    118125    }
    119126
     
    160167      selectionPressureStorer.GetVariableInfo("Output").ActualName = "SelectionPressure";
    161168
     169      ProgrammableOperator resetBestSolutionAge = new ProgrammableOperator();
     170      resetBestSolutionAge.RemoveVariable("Result");
     171      resetBestSolutionAge.AddVariableInfo(
     172        new VariableInfo("BestValidationSolutionAge", "Age of best validation solution", typeof(IntData), VariableKind.In | VariableKind.Out));
     173      resetBestSolutionAge.Code = "BestValidationSolutionAge.Data = 0;";
     174
    162175      seq.AddSubOperator(evaluatedSolutionsStorer);
    163176      seq.AddSubOperator(selectionPressureStorer);
     177      seq.AddSubOperator(resetBestSolutionAge);
    164178
    165179      op.OperatorGraph.AddOperator(seq);
     
    171185      VariableInjector injector = base.CreateGlobalInjector();
    172186      injector.AddVariable(new HeuristicLab.Core.Variable("PunishmentFactor", new DoubleData()));
     187      injector.AddVariable(new HeuristicLab.Core.Variable("BestValidationSolutionAge", new IntData()));
     188      injector.AddVariable(new HeuristicLab.Core.Variable("MaxBestValidationSolutionAge", new IntData()));
    173189      return injector;
    174190    }
     
    203219    }
    204220
     221    protected override IOperator CreateTerminationCondition() {
     222      CombinedOperator terminationCritertion = new CombinedOperator();
     223      terminationCritertion.Name = "TerminationCondition";
     224      GreaterThanComparator bestSolutionAge = new GreaterThanComparator();
     225      bestSolutionAge.GetVariableInfo("LeftSide").ActualName = "BestValidationSolutionAge";
     226      bestSolutionAge.GetVariableInfo("RightSide").ActualName = "MaxBestValidationSolutionAge";
     227      bestSolutionAge.GetVariableInfo("Result").ActualName = "TerminationCriterion";
     228
     229      IOperator combinedTerminationCriterion = AlgorithmBase.CombineTerminationCriterions(base.CreateTerminationCondition(), bestSolutionAge);
     230
     231      terminationCritertion.OperatorGraph.AddOperator(combinedTerminationCriterion);
     232      terminationCritertion.OperatorGraph.InitialOperator = combinedTerminationCriterion;
     233      return terminationCritertion;
     234    }
     235
    205236    protected override IOperator CreatePostProcessingOperator() {
    206237      CombinedOperator op = new CombinedOperator();
Note: See TracChangeset for help on using the changeset viewer.