Free cookie consent management tool by TermsFeed Policy Generator

Changeset 10643


Ignore:
Timestamp:
03/21/14 14:20:03 (10 years ago)
Author:
abeham
Message:

#2172:

  • Added hierarchy of parameters to enable this as a hidden parameter in OSGA, SASEGASA, Island-OSGA
    • New default value for Island-OSGA and SASEGASA is true (it will be set to false if loaded from an older file)
  • Changed visibility of some properties to public
Location:
trunk/sources
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/IslandOffspringSelectionGeneticAlgorithm.cs

    r9592 r10643  
    133133      get { return (ValueParameter<IntValue>)Parameters["MaximumEvaluatedSolutions"]; }
    134134    }
     135    private IFixedValueParameter<BoolValue> FillPopulationWithParentsParameter {
     136      get { return (IFixedValueParameter<BoolValue>)Parameters["FillPopulationWithParents"]; }
     137    }
    135138    #endregion
    136139
     
    200203      set { ReevaluateElitesParameter.Value.Value = value; }
    201204    }
    202     private DoubleValue SuccessRatio {
     205    public DoubleValue SuccessRatio {
    203206      get { return SuccessRatioParameter.Value; }
    204207      set { SuccessRatioParameter.Value = value; }
    205208    }
    206     private DoubleValue ComparisonFactorLowerBound {
     209    public DoubleValue ComparisonFactorLowerBound {
    207210      get { return ComparisonFactorLowerBoundParameter.Value; }
    208211      set { ComparisonFactorLowerBoundParameter.Value = value; }
    209212    }
    210     private DoubleValue ComparisonFactorUpperBound {
     213    public DoubleValue ComparisonFactorUpperBound {
    211214      get { return ComparisonFactorUpperBoundParameter.Value; }
    212215      set { ComparisonFactorUpperBoundParameter.Value = value; }
     
    216219      set { ComparisonFactorModifierParameter.Value = value; }
    217220    }
    218     private DoubleValue MaximumSelectionPressure {
     221    public DoubleValue MaximumSelectionPressure {
    219222      get { return MaximumSelectionPressureParameter.Value; }
    220223      set { MaximumSelectionPressureParameter.Value = value; }
    221224    }
    222     private BoolValue OffspringSelectionBeforeMutation {
     225    public BoolValue OffspringSelectionBeforeMutation {
    223226      get { return OffspringSelectionBeforeMutationParameter.Value; }
    224227      set { OffspringSelectionBeforeMutationParameter.Value = value; }
     
    235238      get { return MaximumEvaluatedSolutionsParameter.Value; }
    236239      set { MaximumEvaluatedSolutionsParameter.Value = value; }
     240    }
     241    public bool FillPopulationWithParents {
     242      get { return FillPopulationWithParentsParameter.Value.Value; }
     243      set { FillPopulationWithParentsParameter.Value.Value = value; }
    237244    }
    238245    private RandomCreator RandomCreator {
     
    271278        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 });
    272279      }
     280      if (!Parameters.ContainsKey("FillPopulationWithParents"))
     281        Parameters.Add(new FixedValueParameter<BoolValue>("FillPopulationWithParents", "True if the population should be filled with parent individual or false if worse children should be used when the maximum selection pressure is exceeded.", new BoolValue(false)) { Hidden = true });
    273282      #endregion
    274283
     
    315324      Parameters.Add(new ValueParameter<MultiAnalyzer>("IslandAnalyzer", "The operator used to analyze each island.", new MultiAnalyzer()));
    316325      Parameters.Add(new ValueParameter<IntValue>("MaximumEvaluatedSolutions", "The maximum number of evaluated solutions (approximately).", new IntValue(int.MaxValue)));
     326      Parameters.Add(new FixedValueParameter<BoolValue>("FillPopulationWithParents", "True if the population should be filled with parent individual or false if worse children should be used when the maximum selection pressure is exceeded.", new BoolValue(true)) { Hidden = true });
    317327
    318328      RandomCreator randomCreator = new RandomCreator();
     
    379389      mainLoop.OffspringSelectionBeforeMutationParameter.ActualName = OffspringSelectionBeforeMutationParameter.Name;
    380390      mainLoop.EvaluatedSolutionsParameter.ActualName = "EvaluatedSolutions";
     391      mainLoop.FillPopulationWithParentsParameter.ActualName = FillPopulationWithParentsParameter.Name;
    381392      mainLoop.Successor = null;
    382393
  • trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/IslandOffspringSelectionGeneticAlgorithmMainLoop.cs

    r10639 r10643  
    2020#endregion
    2121
    22 using System.Linq;
    2322using HeuristicLab.Common;
    2423using HeuristicLab.Core;
     
    2928using HeuristicLab.Parameters;
    3029using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    31 using HeuristicLab.Selection;
    3230
    3331namespace HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm {
     
    131129    public LookupParameter<IntValue> EvaluatedSolutionsParameter {
    132130      get { return (LookupParameter<IntValue>)Parameters["EvaluatedSolutions"]; }
     131    }
     132    public IValueLookupParameter<BoolValue> FillPopulationWithParentsParameter {
     133      get { return (IValueLookupParameter<BoolValue>)Parameters["FillPopulationWithParents"]; }
    133134    }
    134135    #endregion
     
    176177      Parameters.Add(new ValueLookupParameter<IOperator>("IslandAnalyzer", "The operator used to analyze each island."));
    177178      Parameters.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "The number of times solutions have been evaluated."));
     179      Parameters.Add(new ValueLookupParameter<BoolValue>("FillPopulationWithParents", "True if the population should be filled with parent individual or false if worse children should be used when the maximum selection pressure is exceeded."));
    178180      #endregion
    179181
     
    267269      mainOperator.SelectorParameter.ActualName = SelectorParameter.Name;
    268270      mainOperator.SuccessRatioParameter.ActualName = SuccessRatioParameter.Name;
    269       foreach (var offspringSelector in mainOperator.OperatorGraph.Operators.OfType<OffspringSelector>())
    270         offspringSelector.FillPopulationWithParents = true;
     271      mainOperator.FillPopulationWithParentsParameter.ActualName = FillPopulationWithParentsParameter.Name;
    271272
    272273      islandAnalyzer2.Name = "Island Analyzer (placeholder)";
     
    430431        Parameters.Add(new ValueLookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)"));
    431432      }
     433      if (!Parameters.ContainsKey("FillPopulationWithParents"))
     434        Parameters.Add(new ValueLookupParameter<BoolValue>("FillPopulationWithParents", "True if the population should be filled with parent individual or false if worse children should be used when the maximum selection pressure is exceeded."));
    432435      #endregion
    433436    }
  • trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithm.cs

    r9592 r10643  
    112112      get { return (ValueParameter<IntValue>)Parameters["MaximumEvaluatedSolutions"]; }
    113113    }
     114    private IFixedValueParameter<BoolValue> FillPopulationWithParentsParameter {
     115      get { return (IFixedValueParameter<BoolValue>)Parameters["FillPopulationWithParents"]; }
     116    }
    114117    #endregion
    115118
     
    190193      get { return MaximumEvaluatedSolutionsParameter.Value; }
    191194      set { MaximumEvaluatedSolutionsParameter.Value = value; }
     195    }
     196    public bool FillPopulationWithParents {
     197      get { return FillPopulationWithParentsParameter.Value.Value; }
     198      set { FillPopulationWithParentsParameter.Value.Value = value; }
    192199    }
    193200    private RandomCreator RandomCreator {
     
    219226        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 });
    220227      }
     228      if (!Parameters.ContainsKey("FillPopulationWithParents"))
     229        Parameters.Add(new FixedValueParameter<BoolValue>("FillPopulationWithParents", "True if the population should be filled with parent individual or false if worse children should be used when the maximum selection pressure is exceeded.", new BoolValue(false)) { Hidden = true });
    221230      #endregion
    222231
     
    254263      Parameters.Add(new ValueParameter<MultiAnalyzer>("Analyzer", "The operator used to analyze each generation.", new MultiAnalyzer()));
    255264      Parameters.Add(new ValueParameter<IntValue>("MaximumEvaluatedSolutions", "The maximum number of evaluated solutions (approximately).", new IntValue(int.MaxValue)));
     265      Parameters.Add(new FixedValueParameter<BoolValue>("FillPopulationWithParents", "True if the population should be filled with parent individual or false if worse children should be used when the maximum selection pressure is exceeded.", new BoolValue(false)) { Hidden = true });
    256266
    257267      RandomCreator randomCreator = new RandomCreator();
     
    297307      mainLoop.SelectorParameter.ActualName = SelectorParameter.Name;
    298308      mainLoop.SuccessRatioParameter.ActualName = SuccessRatioParameter.Name;
     309      mainLoop.FillPopulationWithParentsParameter.ActualName = FillPopulationWithParentsParameter.Name;
    299310
    300311      foreach (ISelector selector in ApplicationManager.Manager.GetInstances<ISelector>().Where(x => !(x is IMultiObjectiveSelector)).OrderBy(x => x.Name))
  • trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithmMainLoop.cs

    r9592 r10643  
    9696      get { return (LookupParameter<IntValue>)Parameters["EvaluatedSolutions"]; }
    9797    }
     98    public IValueLookupParameter<BoolValue> FillPopulationWithParentsParameter {
     99      get { return (IValueLookupParameter<BoolValue>)Parameters["FillPopulationWithParents"]; }
     100    }
    98101    #endregion
    99102
     
    118121        Parameters.Add(new ValueLookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)"));
    119122      }
     123      if (!Parameters.ContainsKey("FillPopulationWithParents"))
     124        Parameters.Add(new ValueLookupParameter<BoolValue>("FillPopulationWithParents", "True if the population should be filled with parent individual or false if worse children should be used when the maximum selection pressure is exceeded."));
    120125      #endregion
    121126    }
     
    144149      Parameters.Add(new ValueLookupParameter<BoolValue>("OffspringSelectionBeforeMutation", "True if the offspring selection step should be applied before mutation, false if it should be applied after mutation."));
    145150      Parameters.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "The number of times solutions have been evaluated."));
     151      Parameters.Add(new ValueLookupParameter<BoolValue>("FillPopulationWithParents", "True if the population should be filled with parent individual or false if worse children should be used when the maximum selection pressure is exceeded."));
    146152      #endregion
    147153
     
    197203      mainOperator.SelectorParameter.ActualName = SelectorParameter.Name;
    198204      mainOperator.SuccessRatioParameter.ActualName = SuccessRatioParameter.Name;
     205      mainOperator.FillPopulationWithParentsParameter.ActualName = FillPopulationWithParentsParameter.Name;
    199206
    200207      generationsCounter.Increment = new IntValue(1);
  • trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithmMainOperator.cs

    r9592 r10643  
    8888      get { return (ValueLookupParameter<BoolValue>)Parameters["OffspringSelectionBeforeMutation"]; }
    8989    }
     90    public IValueLookupParameter<BoolValue> FillPopulationWithParentsParameter {
     91      get { return (IValueLookupParameter<BoolValue>)Parameters["FillPopulationWithParents"]; }
     92    }
    9093    #endregion
    9194
     
    110113        Parameters.Add(new ValueLookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)"));
    111114      }
     115      if (!Parameters.ContainsKey("FillPopulationWithParents"))
     116        Parameters.Add(new ValueLookupParameter<BoolValue>("FillPopulationWithParents", "True if the population should be filled with parent individual or false if worse children should be used when the maximum selection pressure is exceeded."));
    112117      #endregion
    113118    }
     
    132137      Parameters.Add(new ValueLookupParameter<DoubleValue>("MaximumSelectionPressure", "The maximum selection pressure that terminates the algorithm."));
    133138      Parameters.Add(new ValueLookupParameter<BoolValue>("OffspringSelectionBeforeMutation", "True if the offspring selection step should be applied before mutation, false if it should be applied after mutation."));
     139      Parameters.Add(new ValueLookupParameter<BoolValue>("FillPopulationWithParents", "True if the population should be filled with parent individual or false if worse children should be used when the maximum selection pressure is exceeded."));
    134140      #endregion
    135141
     
    261267      offspringSelector.OffspringPopulationWinnersParameter.ActualName = "OffspringPopulationWinners";
    262268      offspringSelector.SuccessfulOffspringParameter.ActualName = "SuccessfulOffspring";
     269      offspringSelector.FillPopulationWithParentsParameter.ActualName = FillPopulationWithParentsParameter.Name;
    263270
    264271      bestSelector.CopySelected = new BoolValue(false);
  • trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/SASEGASA.cs

    r9592 r10643  
    121121      get { return (ValueParameter<IntValue>)Parameters["MaximumEvaluatedSolutions"]; }
    122122    }
     123    private IFixedValueParameter<BoolValue> FillPopulationWithParentsParameter {
     124      get { return (IFixedValueParameter<BoolValue>)Parameters["FillPopulationWithParents"]; }
     125    }
    123126    #endregion
    124127
     
    211214      get { return MaximumEvaluatedSolutionsParameter.Value; }
    212215      set { MaximumEvaluatedSolutionsParameter.Value = value; }
     216    }
     217    public bool FillPopulationWithParents {
     218      get { return FillPopulationWithParentsParameter.Value.Value; }
     219      set { FillPopulationWithParentsParameter.Value.Value = value; }
    213220    }
    214221    private RandomCreator RandomCreator {
     
    247254        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 });
    248255      }
     256      if (!Parameters.ContainsKey("FillPopulationWithParents"))
     257        Parameters.Add(new FixedValueParameter<BoolValue>("FillPopulationWithParents", "True if the population should be filled with parent individual or false if worse children should be used when the maximum selection pressure is exceeded.", new BoolValue(false)) { Hidden = true });
    249258      #endregion
    250259
     
    287296      Parameters.Add(new ValueParameter<MultiAnalyzer>("VillageAnalyzer", "The operator used to analyze each village.", new MultiAnalyzer()));
    288297      Parameters.Add(new ValueParameter<IntValue>("MaximumEvaluatedSolutions", "The maximum number of evaluated solutions (approximately).", new IntValue(int.MaxValue)));
     298      Parameters.Add(new FixedValueParameter<BoolValue>("FillPopulationWithParents", "True if the population should be filled with parent individual or false if worse children should be used when the maximum selection pressure is exceeded.", new BoolValue(true)) { Hidden = true });
    289299
    290300      RandomCreator randomCreator = new RandomCreator();
     
    346356      mainLoop.OffspringSelectionBeforeMutationParameter.ActualName = OffspringSelectionBeforeMutationParameter.Name;
    347357      mainLoop.EvaluatedSolutionsParameter.ActualName = "EvaluatedSolutions";
     358      mainLoop.FillPopulationWithParentsParameter.ActualName = FillPopulationWithParentsParameter.Name;
    348359      mainLoop.Successor = null;
    349360
  • trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/SASEGASAMainLoop.cs

    r9592 r10643  
    111111    public LookupParameter<IntValue> EvaluatedSolutionsParameter {
    112112      get { return (LookupParameter<IntValue>)Parameters["EvaluatedSolutions"]; }
     113    }
     114    public IValueLookupParameter<BoolValue> FillPopulationWithParentsParameter {
     115      get { return (IValueLookupParameter<BoolValue>)Parameters["FillPopulationWithParents"]; }
    113116    }
    114117    #endregion
     
    150153      Parameters.Add(new ValueLookupParameter<BoolValue>("OffspringSelectionBeforeMutation", "True if the offspring selection step should be applied before mutation, false if it should be applied after mutation."));
    151154      Parameters.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "The number of times solutions have been evaluated."));
     155      Parameters.Add(new ValueLookupParameter<BoolValue>("FillPopulationWithParents", "True if the population should be filled with parent individual or false if worse children should be used when the maximum selection pressure is exceeded."));
    152156      #endregion
    153157
     
    253257      mainOperator.SelectorParameter.ActualName = SelectorParameter.Name;
    254258      mainOperator.SuccessRatioParameter.ActualName = SuccessRatioParameter.Name;
     259      mainOperator.FillPopulationWithParentsParameter.ActualName = FillPopulationWithParentsParameter.Name;
    255260
    256261      villageAnalyzer2.Name = "Village Analyzer (placeholder)";
     
    436441        Parameters.Add(new ValueLookupParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)"));
    437442      }
     443      if (!Parameters.ContainsKey("FillPopulationWithParents"))
     444        Parameters.Add(new ValueLookupParameter<BoolValue>("FillPopulationWithParents", "True if the population should be filled with parent individual or false if worse children should be used when the maximum selection pressure is exceeded."));
    438445      #endregion
    439446    }
  • trunk/sources/HeuristicLab.Selection/3.3/OffspringSelector.cs

    r10639 r10643  
    5757    }
    5858
    59     public FixedValueParameter<BoolValue> FillPopulationWithParentsParameter {
    60       get { return (FixedValueParameter<BoolValue>)Parameters["FillPopulationWithParents"]; }
     59    public IValueLookupParameter<BoolValue> FillPopulationWithParentsParameter {
     60      get { return (IValueLookupParameter<BoolValue>)Parameters["FillPopulationWithParents"]; }
    6161    }
    6262
     
    6464      get { return OffspringCreatorParameter.Value; }
    6565      set { OffspringCreatorParameter.Value = value; }
    66     }
    67 
    68     public bool FillPopulationWithParents {
    69       get { return FillPopulationWithParentsParameter.Value.Value; }
    70       set { FillPopulationWithParentsParameter.Value.Value = value; }
    7166    }
    7267
     
    7772      // BackwardsCompatibility3.3
    7873      #region Backwards compatible code, remove with 3.4
     74      if (Parameters.ContainsKey("FillPopulationWithParents") && Parameters["FillPopulationWithParents"] is FixedValueParameter<BoolValue>)
     75        Parameters.Remove("FillPopulationWithParents");
    7976      if (!Parameters.ContainsKey("FillPopulationWithParents"))
    80         Parameters.Add(new FixedValueParameter<BoolValue>("FillPopulationWithParents", "True if the population should be filled with parent individuals instead of lucky losers.", new BoolValue(false)));
     77        Parameters.Add(new ValueLookupParameter<BoolValue>("FillPopulationWithParents", "True if the population should be filled with parent individuals instead of lucky losers."));
    8178      #endregion
    8279    }
     
    9693      Parameters.Add(new ScopeTreeLookupParameter<BoolValue>("SuccessfulOffspring", "True if the offspring was more successful than its parents.", 2));
    9794      Parameters.Add(new OperatorParameter("OffspringCreator", "The operator used to create new offspring."));
    98       Parameters.Add(new FixedValueParameter<BoolValue>("FillPopulationWithParents", "True if the population should be filled with parent individuals instead of lucky losers.", new BoolValue(false)));
     95      Parameters.Add(new ValueLookupParameter<BoolValue>("FillPopulationWithParents", "True if the population should be filled with parent individual or false if worse children should be used when the maximum selection pressure is exceeded."));
    9996    }
    10097
     
    10299      double maxSelPress = MaximumSelectionPressureParameter.ActualValue.Value;
    103100      double successRatio = SuccessRatioParameter.ActualValue.Value;
     101      bool fillPopulationWithParents = FillPopulationWithParentsParameter.ActualValue.Value;
    104102      IScope scope = ExecutionContext.Scope;
    105103      IScope parents = scope.SubScopes[0];
     
    153151        } else if (worseOffspringNeeded > 0 || tmpSelPress >= maxSelPress) {
    154152          IScope currentOffspring;
    155           if (!FillPopulationWithParents || worseOffspringNeeded > 0) {
     153          if (!fillPopulationWithParents || worseOffspringNeeded > 0) {
    156154            currentOffspring = offspring.SubScopes[i];
    157155            offspring.SubScopes.Remove(currentOffspring);
Note: See TracChangeset for help on using the changeset viewer.