Free cookie consent management tool by TermsFeed Policy Generator

Changeset 3744


Ignore:
Timestamp:
05/10/10 16:19:43 (14 years ago)
Author:
abeham
Message:

#893

  • Changed initialization of comparison factor
  • fixed some bugs in OffspringSelector
Location:
trunk/sources
Files:
7 edited

Legend:

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

    r3735 r3744  
    312312      mainLoop.SuccessRatioParameter.ActualName = SuccessRatioParameter.Name;
    313313      mainLoop.ComparisonFactorParameter.ActualName = "ComparisonFactor";
     314      mainLoop.ComparisonFactorStartParameter.ActualName = ComparisonFactorLowerBoundParameter.Name;
    314315      mainLoop.ComparisonFactorModifierParameter.ActualName = ComparisonFactorModifierParameter.Name;
    315316      mainLoop.MaximumSelectionPressureParameter.ActualName = MaximumSelectionPressureParameter.Name;
  • trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/IslandOffspringSelectionGeneticAlgorithmMainLoop.cs

    r3715 r3744  
    111111    public LookupParameter<DoubleValue> ComparisonFactorParameter {
    112112      get { return (LookupParameter<DoubleValue>)Parameters["ComparisonFactor"]; }
     113    }
     114    public ValueLookupParameter<DoubleValue> ComparisonFactorStartParameter {
     115      get { return (ValueLookupParameter<DoubleValue>)Parameters["ComparisonFactorStart"]; }
    113116    }
    114117    public ValueLookupParameter<IOperator> ComparisonFactorModifierParameter {
     
    157160      Parameters.Add(new ValueLookupParameter<DoubleValue>("SuccessRatio", "The ratio of successful to total children that should be achieved."));
    158161      Parameters.Add(new LookupParameter<DoubleValue>("ComparisonFactor", "The comparison factor is used to determine whether the offspring should be compared to the better parent, the worse parent or a quality value linearly interpolated between them. It is in the range [0;1]."));
     162      Parameters.Add(new ValueLookupParameter<DoubleValue>("ComparisonFactorStart", "The initial value for the comparison factor."));
    159163      Parameters.Add(new ValueLookupParameter<IOperator>("ComparisonFactorModifier", "The operator used to modify the comparison factor."));
    160164      Parameters.Add(new ValueLookupParameter<DoubleValue>("MaximumSelectionPressure", "The maximum selection pressure that terminates the algorithm."));
     
    170174      Placeholder islandAnalyzer1 = new Placeholder();
    171175      ResultsCollector islandResultsCollector1 = new ResultsCollector();
    172       Placeholder comparisonFactorModifier1 = new Placeholder();
     176      Assigner comparisonFactorInitializer = new Assigner();
    173177      Placeholder analyzer1 = new Placeholder();
    174178      ResultsCollector resultsCollector1 = new ResultsCollector();
     
    199203      Comparator generationsComparator = new Comparator();
    200204      Comparator terminatedIslandsComparator = new Comparator();
    201       Placeholder comparisonFactorModifier2 = new Placeholder();
     205      Placeholder comparisonFactorModifier = new Placeholder();
    202206      Placeholder analyzer2 = new Placeholder();
    203207      ResultsCollector resultsCollector3 = new ResultsCollector();
     
    211215      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("EvaluatedSolutions", new IntValue(0)));
    212216
    213       islandVariableCreator.CollectedValues.Add(new ValueParameter<ResultCollection>("Results", new ResultCollection()));
     217      islandVariableCreator.CollectedValues.Add(new ValueParameter<ResultCollection>(ResultsParameter.Name, new ResultCollection()));
    214218      islandVariableCreator.CollectedValues.Add(new ValueParameter<IntValue>("IslandEvaluatedSolutions", new IntValue(0)));
    215219      islandVariableCreator.CollectedValues.Add(new ValueParameter<BoolValue>("TerminateSelectionPressure", new BoolValue(false)));
     
    221225      islandResultsCollector1.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Selection Pressure", null, "SelectionPressure"));
    222226      islandResultsCollector1.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Success Ratio", null, "CurrentSuccessRatio"));
    223       islandResultsCollector1.ResultsParameter.ActualName = "Results";
    224 
    225       comparisonFactorModifier1.Name = "Initialize Comparison Factor (Placeholder)";
    226       comparisonFactorModifier1.OperatorParameter.ActualName = ComparisonFactorModifierParameter.Name;
     227      islandResultsCollector1.ResultsParameter.ActualName = ResultsParameter.Name;
     228
     229      comparisonFactorInitializer.Name = "Initialize Comparison Factor";
     230      comparisonFactorInitializer.LeftSideParameter.ActualName = ComparisonFactorParameter.Name;
     231      comparisonFactorInitializer.RightSideParameter.ActualName = ComparisonFactorStartParameter.Name;
    227232
    228233      analyzer1.Name = "Analyzer (placeholder)";
     
    232237      resultsCollector1.CollectedValues.Add(new LookupParameter<IntValue>("Migrations"));
    233238      resultsCollector1.CollectedValues.Add(new LookupParameter<IntValue>("Generations"));
    234       resultsCollector1.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Comparison Factor", null, "ComparisonFactor"));
    235       resultsCollector1.CollectedValues.Add(new ScopeTreeLookupParameter<ResultCollection>("IslandResults", "Result set for each island", "Results"));
     239      resultsCollector1.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Comparison Factor", null, ComparisonFactorParameter.Name));
     240      resultsCollector1.CollectedValues.Add(new ScopeTreeLookupParameter<ResultCollection>("IslandResults", "Result set for each island", ResultsParameter.Name));
    236241      resultsCollector1.ResultsParameter.ActualName = ResultsParameter.Name;
    237242
     
    343348      terminatedIslandsComparator.ResultParameter.ActualName = "TerminateTerminatedIslands";
    344349
    345       comparisonFactorModifier2.Name = "Update Comparison Factor (Placeholder)";
    346       comparisonFactorModifier2.OperatorParameter.ActualName = ComparisonFactorModifierParameter.Name;
     350      comparisonFactorModifier.Name = "Update Comparison Factor (Placeholder)";
     351      comparisonFactorModifier.OperatorParameter.ActualName = ComparisonFactorModifierParameter.Name;
    347352
    348353      analyzer2.Name = "Analyzer (placeholder)";
     
    364369      variableCreator.Successor = uniformSubScopesProcessor0;
    365370      uniformSubScopesProcessor0.Operator = islandVariableCreator;
    366       uniformSubScopesProcessor0.Successor = comparisonFactorModifier1;
     371      uniformSubScopesProcessor0.Successor = comparisonFactorInitializer;
    367372      islandVariableCreator.Successor = islandAnalyzer1;
    368373      islandAnalyzer1.Successor = islandResultsCollector1;
    369374      islandResultsCollector1.Successor = null;
    370       comparisonFactorModifier1.Successor = analyzer1;
     375      comparisonFactorInitializer.Successor = analyzer1;
    371376      analyzer1.Successor = resultsCollector1;
    372377      resultsCollector1.Successor = resultsCollector2;
     
    404409      immigrationReplacer.Successor = null;
    405410      generationsComparator.Successor = terminatedIslandsComparator;
    406       terminatedIslandsComparator.Successor = comparisonFactorModifier2;
    407       comparisonFactorModifier2.Successor = analyzer2;
     411      terminatedIslandsComparator.Successor = comparisonFactorModifier;
     412      comparisonFactorModifier.Successor = analyzer2;
    408413      analyzer2.Successor = resultsCollector3;
    409414      resultsCollector3.Successor = generationsTerminationCondition;
  • trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithm.cs

    r3735 r3744  
    227227      solutionsCreator.Successor = mainLoop;
    228228
    229       mainLoop.SelectorParameter.ActualName = SelectorParameter.Name;
     229      mainLoop.AnalyzerParameter.ActualName = AnalyzerParameter.Name;
     230      mainLoop.ComparisonFactorModifierParameter.ActualName = ComparisonFactorModifierParameter.Name;
     231      mainLoop.ComparisonFactorParameter.ActualName = "ComparisonFactor";
     232      mainLoop.ComparisonFactorStartParameter.ActualName = ComparisonFactorLowerBoundParameter.Name;
    230233      mainLoop.CrossoverParameter.ActualName = CrossoverParameter.Name;
    231234      mainLoop.ElitesParameter.ActualName = ElitesParameter.Name;
    232235      mainLoop.MaximumGenerationsParameter.ActualName = MaximumGenerationsParameter.Name;
     236      mainLoop.MaximumSelectionPressureParameter.ActualName = MaximumSelectionPressureParameter.Name;
     237      mainLoop.MutationProbabilityParameter.ActualName = MutationProbabilityParameter.Name;
    233238      mainLoop.MutatorParameter.ActualName = MutatorParameter.Name;
    234       mainLoop.MutationProbabilityParameter.ActualName = MutationProbabilityParameter.Name;
     239      mainLoop.OffspringSelectionBeforeMutationParameter.ActualName = OffspringSelectionBeforeMutationParameter.Name;
    235240      mainLoop.RandomParameter.ActualName = RandomCreator.RandomParameter.ActualName;
    236241      mainLoop.ResultsParameter.ActualName = "Results";
     242      mainLoop.SelectorParameter.ActualName = SelectorParameter.Name;
     243      mainLoop.SuccessRatioParameter.ActualName = SuccessRatioParameter.Name;
    237244
    238245      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

    r3698 r3744  
    7575    public ValueLookupParameter<DoubleValue> SuccessRatioParameter {
    7676      get { return (ValueLookupParameter<DoubleValue>)Parameters["SuccessRatio"]; }
     77    }
     78    public LookupParameter<DoubleValue> ComparisonFactorParameter {
     79      get { return (LookupParameter<DoubleValue>)Parameters["ComparisonFactor"]; }
     80    }
     81    public ValueLookupParameter<DoubleValue> ComparisonFactorStartParameter {
     82      get { return (ValueLookupParameter<DoubleValue>)Parameters["ComparisonFactorStart"]; }
    7783    }
    7884    public ValueLookupParameter<IOperator> ComparisonFactorModifierParameter {
     
    110116      Parameters.Add(new ValueLookupParameter<IOperator>("Analyzer", "The operator used to analyze each generation."));
    111117      Parameters.Add(new ValueLookupParameter<DoubleValue>("SuccessRatio", "The ratio of successful to total children that should be achieved."));
     118      Parameters.Add(new LookupParameter<DoubleValue>("ComparisonFactor", "The comparison factor is used to determine whether the offspring should be compared to the better parent, the worse parent or a quality value linearly interpolated between them. It is in the range [0;1]."));
     119      Parameters.Add(new ValueLookupParameter<DoubleValue>("ComparisonFactorStart", "The initial value for the comparison factor."));
    112120      Parameters.Add(new ValueLookupParameter<IOperator>("ComparisonFactorModifier", "The operator used to modify the comparison factor."));
    113121      Parameters.Add(new ValueLookupParameter<DoubleValue>("MaximumSelectionPressure", "The maximum selection pressure that terminates the algorithm."));
     
    117125      #region Create operators
    118126      VariableCreator variableCreator = new VariableCreator();
    119       Placeholder comparisonFactorModifier1 = new Placeholder();
     127      Assigner comparisonFactorInitializer = new Assigner();
    120128      Placeholder analyzer1 = new Placeholder();
    121129      ResultsCollector resultsCollector1 = new ResultsCollector();
     
    125133      Comparator maxGenerationsComparator = new Comparator();
    126134      Comparator maxSelectionPressureComparator = new Comparator();
    127       Placeholder comparisonFactorModifier2 = new Placeholder();
     135      Placeholder comparisonFactorModifier = new Placeholder();
    128136      Placeholder analyzer2 = new Placeholder();
    129137      ResultsCollector resultsCollector3 = new ResultsCollector();
     
    135143      variableCreator.CollectedValues.Add(new ValueParameter<DoubleValue>("SelectionPressure", new DoubleValue(0)));
    136144      variableCreator.CollectedValues.Add(new ValueParameter<DoubleValue>("CurrentSuccessRatio", new DoubleValue(0)));
    137       variableCreator.CollectedValues.Add(new ValueParameter<DoubleValue>("ComparisonFactor", new DoubleValue(0)));
    138 
    139       comparisonFactorModifier1.Name = "Initialize ComparisonFactor (placeholder)";
    140       comparisonFactorModifier1.OperatorParameter.ActualName = ComparisonFactorModifierParameter.Name;
     145
     146      comparisonFactorInitializer.Name = "Initialize ComparisonFactor (placeholder)";
     147      comparisonFactorInitializer.LeftSideParameter.ActualName = ComparisonFactorParameter.Name;
     148      comparisonFactorInitializer.RightSideParameter.ActualName = ComparisonFactorStartParameter.Name;
    141149
    142150      analyzer1.Name = "Analyzer (placeholder)";
     
    145153      resultsCollector1.CopyValue = new BoolValue(false);
    146154      resultsCollector1.CollectedValues.Add(new LookupParameter<IntValue>("Generations"));
    147       resultsCollector1.CollectedValues.Add(new LookupParameter<DoubleValue>("Curent Comparison Factor", null, "ComparisonFactor"));
     155      resultsCollector1.CollectedValues.Add(new LookupParameter<DoubleValue>("Curent Comparison Factor", null, ComparisonFactorParameter.Name));
    148156      resultsCollector1.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Selection Pressure", null, "SelectionPressure"));
    149157      resultsCollector1.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Success Ratio", null, "CurrentSuccessRatio"));
     
    154162      resultsCollector2.ResultsParameter.ActualName = ResultsParameter.Name;
    155163
    156       mainOperator.ComparisonFactorParameter.ActualName = "ComparisonFactor";
     164      mainOperator.ComparisonFactorParameter.ActualName = ComparisonFactorParameter.Name;
    157165      mainOperator.CrossoverParameter.ActualName = CrossoverParameter.Name;
    158166      mainOperator.CurrentSuccessRatioParameter.ActualName = "CurrentSuccessRatio";
     
    184192      maxSelectionPressureComparator.RightSideParameter.ActualName = MaximumSelectionPressureParameter.Name;
    185193
    186       comparisonFactorModifier2.Name = "Update ComparisonFactor (placeholder)";
    187       comparisonFactorModifier2.OperatorParameter.ActualName = ComparisonFactorModifierParameter.Name;
     194      comparisonFactorModifier.Name = "Update ComparisonFactor (placeholder)";
     195      comparisonFactorModifier.OperatorParameter.ActualName = ComparisonFactorModifierParameter.Name;
    188196
    189197      analyzer2.Name = "Analyzer (placeholder)";
     
    203211      #region Create operator graph
    204212      OperatorGraph.InitialOperator = variableCreator;
    205       variableCreator.Successor = comparisonFactorModifier1;
    206       comparisonFactorModifier1.Successor = analyzer1;
     213      variableCreator.Successor = comparisonFactorInitializer;
     214      comparisonFactorInitializer.Successor = analyzer1;
    207215      analyzer1.Successor = resultsCollector1;
    208216      resultsCollector1.Successor = resultsCollector2;
     
    211219      generationsCounter.Successor = maxGenerationsComparator;
    212220      maxGenerationsComparator.Successor = maxSelectionPressureComparator;
    213       maxSelectionPressureComparator.Successor = comparisonFactorModifier2;
    214       comparisonFactorModifier2.Successor = analyzer2;
     221      maxSelectionPressureComparator.Successor = comparisonFactorModifier;
     222      comparisonFactorModifier.Successor = analyzer2;
    215223      analyzer2.Successor = resultsCollector3;
    216224      resultsCollector3.Successor = conditionalBranch1;
  • trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/SASEGASA.cs

    r3735 r3744  
    278278      mainLoop.ResultsParameter.ActualName = "Results";
    279279      mainLoop.SuccessRatioParameter.ActualName = SuccessRatioParameter.Name;
    280       mainLoop.ComparisonFactorLowerBoundParameter.ActualName = ComparisonFactorLowerBoundParameter.Name;
     280      mainLoop.ComparisonFactorStartParameter.ActualName = ComparisonFactorLowerBoundParameter.Name;
    281281      mainLoop.ComparisonFactorModifierParameter.ActualName = ComparisonFactorModifierParameter.Name;
    282       mainLoop.ComparisonFactorUpperBoundParameter.ActualName = ComparisonFactorUpperBoundParameter.Name;
    283282      mainLoop.MaximumSelectionPressureParameter.ActualName = MaximumSelectionPressureParameter.Name;
    284283      mainLoop.FinalMaximumSelectionPressureParameter.ActualName = FinalMaximumSelectionPressureParameter.Name;
  • trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/SASEGASAMainLoop.cs

    r3715 r3744  
    9494      get { return (LookupParameter<DoubleValue>)Parameters["ComparisonFactor"]; }
    9595    }
    96     public ValueLookupParameter<DoubleValue> ComparisonFactorLowerBoundParameter {
    97       get { return (ValueLookupParameter<DoubleValue>)Parameters["ComparisonFactorLowerBound"]; }
    98     }
    99     public ValueLookupParameter<DoubleValue> ComparisonFactorUpperBoundParameter {
    100       get { return (ValueLookupParameter<DoubleValue>)Parameters["ComparisonFactorUpperBound"]; }
     96    public ValueLookupParameter<DoubleValue> ComparisonFactorStartParameter {
     97      get { return (ValueLookupParameter<DoubleValue>)Parameters["ComparisonFactorStart"]; }
    10198    }
    10299    public ValueLookupParameter<IOperator> ComparisonFactorModifierParameter {
     
    139136      Parameters.Add(new ValueLookupParameter<DoubleValue>("SuccessRatio", "The ratio of successful to total children that should be achieved."));
    140137      Parameters.Add(new LookupParameter<DoubleValue>("ComparisonFactor", "The comparison factor is used to determine whether the offspring should be compared to the better parent, the worse parent or a quality value linearly interpolated between them. It is in the range [0;1]."));
    141       Parameters.Add(new ValueLookupParameter<DoubleValue>("ComparisonFactorLowerBound", "The lower bound of the comparison factor (start)."));
    142       Parameters.Add(new ValueLookupParameter<DoubleValue>("ComparisonFactorUpperBound", "The upper bound of the comparison factor (end)."));
     138      Parameters.Add(new ValueLookupParameter<DoubleValue>("ComparisonFactorStart", "The lower bound of the comparison factor (start)."));
    143139      Parameters.Add(new ValueLookupParameter<IOperator>("ComparisonFactorModifier", "The operator used to modify the comparison factor."));
    144140      Parameters.Add(new ValueLookupParameter<DoubleValue>("MaximumSelectionPressure", "The maximum selection pressure that terminates the algorithm."));
     
    206202      maxSelPressAssigner.RightSideParameter.ActualName = MaximumSelectionPressureParameter.Name;
    207203
    208       comparisonFactorInitializer.LeftSideParameter.ActualName = "ComparisonFactor";
    209       comparisonFactorInitializer.RightSideParameter.ActualName = ComparisonFactorLowerBoundParameter.Name;
     204      comparisonFactorInitializer.LeftSideParameter.ActualName = ComparisonFactorParameter.Name;
     205      comparisonFactorInitializer.RightSideParameter.ActualName = ComparisonFactorStartParameter.Name;
    210206
    211207      villageVariableCreator.CollectedValues.Add(new ValueParameter<ResultCollection>("Results", new ResultCollection()));
     
    227223      resultsCollector1.CopyValue = new BoolValue(false);
    228224      resultsCollector1.CollectedValues.Add(new LookupParameter<IntValue>("Generations"));
    229       resultsCollector1.CollectedValues.Add(new LookupParameter<DoubleValue>("ComparisonFactor", null, "ComparisonFactor"));
     225      resultsCollector1.CollectedValues.Add(new LookupParameter<DoubleValue>("ComparisonFactor", null, ComparisonFactorParameter.Name));
    230226      resultsCollector1.CollectedValues.Add(new LookupParameter<IntValue>("Terminated Villages", null, "TerminatedVillages"));
    231227      resultsCollector1.CollectedValues.Add(new LookupParameter<IntValue>("Total Active Villages", null, "VillageCount"));
     
    335331      reunificationCounter.IncrementParameter.Value = new IntValue(1);
    336332
     333      comparisonFactorModifier.Name = "Update comparison factor (placeholder)";
    337334      comparisonFactorModifier.OperatorParameter.ActualName = ComparisonFactorModifierParameter.Name;
    338335
  • trunk/sources/HeuristicLab.Selection/3.3/OffspringSelector.cs

    r3740 r3744  
    114114      // implement the ActualValue fetch here - otherwise the parent scope would also be included, given that there may be 1000 or more parents, this is quite unnecessary
    115115      string tname = SuccessfulOffspringParameter.TranslatedName;
    116       double tmpSelPress = selectionPressure.Value, tmpSelPressInc = 1.0 / populationSize;
     116      double tmpSelPress = selectionPressure.Value, tmpSelPressInc = 1.0 / offspringSize;
    117117      for (int i = 0; i < offspringSize; i++) {
    118118        // fetch value
     
    136136
    137137      // calculate actual selection pressure and success ratio
    138       selectionPressure.Value += offspringSize / (double)populationSize;
     138      selectionPressure.Value = tmpSelPress;
    139139      currentSuccessRatio.Value = successfulOffspring.Value / ((double)populationSize);
    140140
     
    156156        offspring.SubScopes.AddRange(population);
    157157
    158         scope.Variables.Remove(OffspringPopulationParameter.ActualName);
    159         scope.Variables.Remove(OffspringPopulationWinnersParameter.ActualName);
     158        scope.Variables.Remove(OffspringPopulationParameter.TranslatedName);
     159        scope.Variables.Remove(OffspringPopulationWinnersParameter.TranslatedName);
    160160        return base.Apply();
    161161      }
Note: See TracChangeset for help on using the changeset viewer.