Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/29/15 16:00:38 (9 years ago)
Author:
ascheibe
Message:

#2267 added another offspring selector

File:
1 copied

Legend:

Unmodified
Added
Removed
  • branches/VOSGA/HeuristicLab.Algorithms.VOffspringSelectionGeneticAlgorithm/Comparators/EliteWeightedParentsQualityComparator.cs

    r12354 r12363  
    3131
    3232namespace HeuristicLab.Algorithms.VOffspringSelectionGeneticAlgorithm {
    33   [Item("WeightedParentsQualityComparator", "Compares the quality against that of its parents (assumes the parents are subscopes to the child scope). This operator works with any number of subscopes > 0.")]
     33  [Item("EliteWeightedParentsQualityComparator", "M2")]
    3434  [StorableClass]
    35   public class WeightedParentsQualityComparator : SingleSuccessorOperator, ISubScopesQualityComparatorOperator {
     35  public class EliteWeightedParentsQualityComparator : SingleSuccessorOperator, ISubScopesQualityComparatorOperator {
    3636    public IValueLookupParameter<BoolValue> MaximizationParameter {
    3737      get { return (IValueLookupParameter<BoolValue>)Parameters["Maximization"]; }
     
    4646      get { return (ILookupParameter<BoolValue>)Parameters["Result"]; }
    4747    }
     48    public ILookupParameter<BoolValue> ResultImprovementParameter {
     49      get { return (ILookupParameter<BoolValue>)Parameters["ResultImprovement"]; }
     50    }
    4851    public ValueLookupParameter<DoubleValue> ComparisonFactorParameter {
    4952      get { return (ValueLookupParameter<DoubleValue>)Parameters["ComparisonFactor"]; }
     
    5154
    5255    [StorableConstructor]
    53     protected WeightedParentsQualityComparator(bool deserializing) : base(deserializing) { }
    54     protected WeightedParentsQualityComparator(WeightedParentsQualityComparator original, Cloner cloner) : base(original, cloner) { }
    55     public WeightedParentsQualityComparator()
     56    protected EliteWeightedParentsQualityComparator(bool deserializing) : base(deserializing) { }
     57    protected EliteWeightedParentsQualityComparator(EliteWeightedParentsQualityComparator original, Cloner cloner) : base(original, cloner) { }
     58    public EliteWeightedParentsQualityComparator()
    5659      : base() {
    5760      Parameters.Add(new ValueLookupParameter<BoolValue>("Maximization", "True if the problem is a maximization problem, false otherwise"));
     
    5962      Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("RightSide", "The qualities of the parents."));
    6063      Parameters.Add(new LookupParameter<BoolValue>("Result", "The result of the comparison: True means Quality is better, False means it is worse than parents."));
     64      Parameters.Add(new LookupParameter<BoolValue>("ResultImprovement", "A solution has improved if it is better than the worse parent."));
    6165      Parameters.Add(new ValueLookupParameter<DoubleValue>("ComparisonFactor", "Determines if the quality should be compared to the better parent (1.0), to the worse (0.0) or to any linearly interpolated value between them."));
    6266    }
    6367
    6468    public override IDeepCloneable Clone(Cloner cloner) {
    65       return new WeightedParentsQualityComparator(this, cloner);
     69      return new EliteWeightedParentsQualityComparator(this, cloner);
    6670    }
    6771
     
    122126      }
    123127
     128      bool resultImprovement = maximization && leftQuality > rightQualities.Min(x => x.Value) ||
     129                              !maximization && leftQuality < rightQualities.Max(x => x.Value);
     130      BoolValue resultImprovementValue = ResultImprovementParameter.ActualValue;
     131      if (resultImprovementValue == null) {
     132        ResultImprovementParameter.ActualValue = new BoolValue(resultImprovement);
     133      } else {
     134        resultImprovementValue.Value = resultImprovement;
     135      }
     136
    124137      return base.Apply();
    125138    }
Note: See TracChangeset for help on using the changeset viewer.