Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/01/15 16:47:32 (9 years ago)
Author:
pfleck
Message:

#2027

  • Removed MaximumIterationsTerminator and MaximumEvaluatedSolutionsTermimator because they practically do the same.
  • Add the possibility for ThresholdTerminators to use a foreign parameter (e.g. MaximumSelectionPressure). This way the terminator can use parameters which are still relevant for the algorithm and still provide consistent management of the terminators.
  • Renamed IThresholdTerminator to ISingleValueTerminator.
Location:
branches/TerminationCriteria/HeuristicLab.Termination/3.3
Files:
1 deleted
4 edited
3 moved

Legend:

Unmodified
Added
Removed
  • branches/TerminationCriteria/HeuristicLab.Termination/3.3/ComparisonTerminator.cs

    r12408 r12411  
    7171      Comparison = comparison;
    7272    }
     73    public ComparisonTerminator(string comparisonValueActualName, ComparisonType comparison, IFixedValueParameter<T> thresholdParameter)
     74      : this() {
     75      ComparisonValueParameter.ActualName = comparisonValueActualName;
     76      Comparison = comparison;
     77      ThresholdParameter = thresholdParameter;
     78    }
    7379
    7480    private void Initialize() {
  • branches/TerminationCriteria/HeuristicLab.Termination/3.3/HeuristicLab.Termination-3.3.csproj

    r12410 r12411  
    145145  </ItemGroup>
    146146  <ItemGroup>
    147     <Compile Include="IThresholdTerminator.cs" />
    148     <Compile Include="MaximumIterationsTerminator.cs" />
     147    <Compile Include="ISingleValueTerminator.cs" />
    149148    <Compile Include="SingleObjectiveQualityTerminator.cs" />
    150149    <Compile Include="ThresholdTerminator.cs" />
    151     <Compile Include="Views\ThresholdTerminatorView.cs">
     150    <Compile Include="Views\SingleValueTerminatorView.cs">
    152151      <SubType>UserControl</SubType>
    153152    </Compile>
    154     <Compile Include="Views\ThresholdTerminatorView.Designer.cs">
    155       <DependentUpon>ThresholdTerminatorView.cs</DependentUpon>
     153    <Compile Include="Views\SingleValueTerminatorView.Designer.cs">
     154      <DependentUpon>SingleValueTerminatorView.cs</DependentUpon>
    156155    </Compile>
    157156    <Compile Include="ITerminator.cs" />
  • branches/TerminationCriteria/HeuristicLab.Termination/3.3/ISingleValueTerminator.cs

    r12410 r12411  
    2323
    2424namespace HeuristicLab.Termination {
    25   public interface IThresholdTerminator : ITerminator {
     25  public interface ISingleValueTerminator : ITerminator {
    2626    IParameter ThresholdParameter { get; }
    2727  }
  • branches/TerminationCriteria/HeuristicLab.Termination/3.3/SingleObjectiveQualityTerminator.cs

    r12410 r12411  
    2727  [Item("SingleObjectiveQualityTerminator", "")]
    2828  public class SingleObjectiveQualityTerminator : ComparisonTerminator<DoubleValue> {
    29     public SingleObjectiveQualityTerminator() {
    30       Name = "Quality";
    31     }
     29    public SingleObjectiveQualityTerminator() { }
    3230
    3331    public void Parameterize(IParameter qualityParameter, ISingleObjectiveHeuristicOptimizationProblem problem) {
  • branches/TerminationCriteria/HeuristicLab.Termination/3.3/ThresholdTerminator.cs

    r12410 r12411  
    2727using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2828
    29 
    3029namespace HeuristicLab.Termination {
    3130  [Item("ThresholdTerminator", "Base class for all termination criteria which specifies some threshold.")]
    3231  [StorableClass]
    33   public abstract class ThresholdTerminator<T> : Terminator, IThresholdTerminator where T : class, IItem, IStringConvertibleValue, new() {
     32  public abstract class ThresholdTerminator<T> : Terminator, ISingleValueTerminator where T : class, IItem, IStringConvertibleValue, new() {
     33    [Storable]
     34    private IFixedValueParameter<T> thresholdParameter;
    3435    public IFixedValueParameter<T> ThresholdParameter {
    35       get { return (IFixedValueParameter<T>)Parameters["Threshold"]; }
     36      get { return thresholdParameter; }
     37      set {
     38        if (value == null) throw new ArgumentNullException("Threshold parameter must not be null.");
     39        if (value.Value == null) throw new ArgumentNullException("Threshold parameter value must not be null.");
     40        if (thresholdParameter == value) return;
     41
     42        if (thresholdParameter != null) Parameters.Remove(thresholdParameter);
     43        thresholdParameter = value;
     44        Parameters.Add(thresholdParameter);
     45        OnThresholdParameterChanged();
     46      }
    3647    }
    37     IParameter IThresholdTerminator.ThresholdParameter {
     48    IParameter ISingleValueTerminator.ThresholdParameter {
    3849      get { return ThresholdParameter; }
    3950    }
     
    5162    protected ThresholdTerminator(ThresholdTerminator<T> original, Cloner cloner)
    5263      : base(original, cloner) {
     64      thresholdParameter = cloner.Clone(original.thresholdParameter);
    5365      Initialize();
    5466    }
     
    5870      : base() {
    5971      if (threshold == null) throw new ArgumentNullException("threshold");
    60       Parameters.Add(new FixedValueParameter<T>("Threshold", "The limit of the termiation criterion.", threshold));
     72      thresholdParameter = new FixedValueParameter<T>("Threshold", "The limit of the termiation criterion.", threshold);
     73      Parameters.Add(thresholdParameter);
    6174      Initialize();
    6275    }
    6376
    6477    private void Initialize() {
    65       Threshold.ValueChanged += new EventHandler(Threshold_ValueChanged);
     78      RegisterThresholdParameterEvents();
    6679    }
    6780
     
    7386    }
    7487
     88    private void OnThresholdParameterChanged() {
     89      RegisterThresholdParameterEvents();
     90    }
     91
     92    private void RegisterThresholdParameterEvents() {
     93      Threshold.ValueChanged += new EventHandler(Threshold_ValueChanged);
     94    }
     95
    7596    public override string ToString() {
    7697      if (ThresholdParameter.Value == null) return Name;
  • branches/TerminationCriteria/HeuristicLab.Termination/3.3/Views/SingleValueTerminatorView.Designer.cs

    r12410 r12411  
    2525
    2626namespace HeuristicLab.Termination.Views {
    27   partial class ThresholdTerminatorView {
     27  partial class SingleValueTerminatorView {
    2828    /// <summary>
    2929    /// Required designer variable.
  • branches/TerminationCriteria/HeuristicLab.Termination/3.3/Views/SingleValueTerminatorView.cs

    r12410 r12411  
    2626
    2727  [View("ThresholdTerminator View")]
    28   [Content(typeof(IThresholdTerminator), true)]
    29   public partial class ThresholdTerminatorView : ItemView {
     28  [Content(typeof(ISingleValueTerminator), true)]
     29  public partial class SingleValueTerminatorView : ItemView {
    3030
    31     public new IThresholdTerminator Content {
    32       get { return (IThresholdTerminator)base.Content; }
     31    public new ISingleValueTerminator Content {
     32      get { return (ISingleValueTerminator)base.Content; }
    3333      set { base.Content = value; }
    3434    }
    3535
    36     public ThresholdTerminatorView() {
     36    public SingleValueTerminatorView() {
    3737      InitializeComponent();
    3838    }
Note: See TracChangeset for help on using the changeset viewer.