Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/29/15 17:04:43 (9 years ago)
Author:
pfleck
Message:

#2027 Added a base class ThresholdTerminationCriterion for generalization of the view, which shows only a single value threshold now, and of the ToString mechanic.

File:
1 edited

Legend:

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

    r12364 r12366  
    3030  [Item("ComparisonTerminationCriterion", "An termination criterion which compares to values.")]
    3131  [StorableClass]
    32   public class ComparisonTerminationCriterion<T> : TerminationCriterion where T : class, IItem, IComparable {
    33     public ILookupParameter<T> LeftSideParameter {
    34       get { return (ILookupParameter<T>)Parameters["LeftSide"]; }
     32  public class ComparisonTerminationCriterion<T> : ThresholdTerminationCriterion<T> where T : class, IItem, IComparable {
     33    public ILookupParameter<T> ValueParameter {
     34      get { return (ILookupParameter<T>)Parameters["Value"]; }
    3535    }
    36     public IValueLookupParameter<T> RightSideParameter {
    37       get { return (IValueLookupParameter<T>)Parameters["RightSide"]; }
    38     }
     36
    3937    private ValueParameter<Comparison> ComparisonParameter {
    4038      get { return (ValueParameter<Comparison>)Parameters["Comparison"]; }
     
    4846    [StorableConstructor]
    4947    protected ComparisonTerminationCriterion(bool deserializing) : base(deserializing) { }
    50     [StorableHook(HookType.AfterDeserialization)]
    51     private void AfterDeserialization() {
    52       Initialize();
    53     }
    5448    protected ComparisonTerminationCriterion(ComparisonTerminationCriterion<T> original, Cloner cloner)
    55       : base(original, cloner) {
    56       Initialize();
    57     }
     49      : base(original, cloner) { }
    5850    public override IDeepCloneable Clone(Cloner cloner) {
    5951      return new ComparisonTerminationCriterion<T>(this, cloner);
     
    6153    public ComparisonTerminationCriterion()
    6254      : base() {
    63       Parameters.Add(new LookupParameter<T>("LeftSide", "The left side of the comparison."));
    64       Parameters.Add(new ValueLookupParameter<T>("RightSide", "The right side of the comparison."));
     55      Parameters.Add(new LookupParameter<T>("Value", "The left side value of the comparison."));
    6556      Parameters.Add(new ValueParameter<Comparison>("Comparison", "The type of comparison.", new Comparison(ComparisonType.GreaterOrEqual)) { Hidden = true });
    66 
    67       Initialize();
    6857    }
    6958    public ComparisonTerminationCriterion(string leftSideActualName, string rightSideActualName, ComparisonType comparison = ComparisonType.GreaterOrEqual)
    7059      : this() {
    71       LeftSideParameter.ActualName = leftSideActualName;
    72       RightSideParameter.ActualName = rightSideActualName;
     60      ValueParameter.ActualName = leftSideActualName;
     61      ThresholdParameter.ActualName = rightSideActualName;
    7362      Comparison.Value = comparison;
    7463    }
    7564    public ComparisonTerminationCriterion(string leftSideActualName, T rightSideValue, ComparisonType comparison = ComparisonType.GreaterOrEqual)
    7665      : this() {
    77       LeftSideParameter.ActualName = leftSideActualName;
    78       RightSideParameter.Value = rightSideValue;
     66      ValueParameter.ActualName = leftSideActualName;
     67      ThresholdParameter.Value = rightSideValue;
    7968      Comparison.Value = comparison;
    8069    }
    8170
    82     private void Initialize() {
    83       RightSideParameter.ToStringChanged += (s, a) => OnToStringChanged();
    84     }
    85 
    8671    protected override bool CheckTermination() {
    87       IComparable lhs = LeftSideParameter.ActualValue;
    88       IComparable rhs = RightSideParameter.ActualValue;
     72      IComparable lhs = ValueParameter.ActualValue;
     73      IComparable rhs = ThresholdParameter.ActualValue;
    8974
    9075      int i = lhs.CompareTo(rhs);
     
    10792    }
    10893
    109     public override string ToString() {
    110       if (RightSideParameter.Value == null) return Name;
    111       else return Name + ": " + RightSideParameter.Value;
    112     }
     94
    11395  }
    11496}
Note: See TracChangeset for help on using the changeset viewer.