Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/20/10 00:13:43 (14 years ago)
Author:
abeham
Message:

Added evaluated solutions result to OSGA (this slows down execution extremely if the update is not decoupled in some way)
Made comparison factor modifier an optional parameter #976

File:
1 edited

Legend:

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

    r3413 r3426  
    8989      get { return (ValueLookupParameter<DoubleValue>)Parameters["ComparisonFactorUpperBound"]; }
    9090    }
    91     private ConstrainedValueParameter<IDiscreteDoubleValueModifier> ComparisonFactorModifierParameter {
    92       get { return (ConstrainedValueParameter<IDiscreteDoubleValueModifier>)Parameters["ComparisonFactorModifier"]; }
     91    private OptionalConstrainedValueParameter<IDiscreteDoubleValueModifier> ComparisonFactorModifierParameter {
     92      get { return (OptionalConstrainedValueParameter<IDiscreteDoubleValueModifier>)Parameters["ComparisonFactorModifier"]; }
    9393    }
    9494    private ValueLookupParameter<DoubleValue> MaximumSelectionPressureParameter {
     
    193193      Parameters.Add(new ValueLookupParameter<DoubleValue>("ComparisonFactorLowerBound", "The lower bound of the comparison factor (start).", new DoubleValue(0)));
    194194      Parameters.Add(new ValueLookupParameter<DoubleValue>("ComparisonFactorUpperBound", "The upper bound of the comparison factor (end).", new DoubleValue(1)));
    195       Parameters.Add(new ConstrainedValueParameter<IDiscreteDoubleValueModifier>("ComparisonFactorModifier", "The operator used to modify the comparison factor."));
     195      Parameters.Add(new OptionalConstrainedValueParameter<IDiscreteDoubleValueModifier>("ComparisonFactorModifier", "The operator used to modify the comparison factor.", new ItemSet<IDiscreteDoubleValueModifier>(new IDiscreteDoubleValueModifier[] { new LinearDiscreteDoubleValueModifier() }), new LinearDiscreteDoubleValueModifier()));
    196196      Parameters.Add(new ValueLookupParameter<DoubleValue>("MaximumSelectionPressure", "The maximum selection pressure that terminates the algorithm.", new DoubleValue(100)));
    197197      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.", new BoolValue(false)));
     
    386386    private void UpdateComparisonFactorModifiers() {
    387387      IDiscreteDoubleValueModifier oldModifier = ComparisonFactorModifier;
    388       if (oldModifier == null) oldModifier = new LinearDiscreteDoubleValueModifier();
    389388
    390389      ComparisonFactorModifierParameter.ValidValues.Clear();
    391390      foreach (IDiscreteDoubleValueModifier modifier in comparisonFactorModifiers)
    392391        ComparisonFactorModifierParameter.ValidValues.Add(modifier);
    393      
    394       IDiscreteDoubleValueModifier mod = ComparisonFactorModifierParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldModifier.GetType());
    395       if (mod != null) ComparisonFactorModifierParameter.Value = mod;
     392
     393      if (oldModifier != null) {
     394        IDiscreteDoubleValueModifier mod = ComparisonFactorModifierParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldModifier.GetType());
     395        if (mod != null) ComparisonFactorModifierParameter.Value = mod;
     396      }
    396397    }
    397398    private void UpdateCrossovers() {
Note: See TracChangeset for help on using the changeset viewer.