Changeset 12366 for branches/TerminationCriteria/HeuristicLab.Termination/3.3/ComparisonTerminationCriterion.cs
- Timestamp:
- 04/29/15 17:04:43 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/TerminationCriteria/HeuristicLab.Termination/3.3/ComparisonTerminationCriterion.cs
r12364 r12366 30 30 [Item("ComparisonTerminationCriterion", "An termination criterion which compares to values.")] 31 31 [StorableClass] 32 public class ComparisonTerminationCriterion<T> : T erminationCriterionwhere 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"]; } 35 35 } 36 public IValueLookupParameter<T> RightSideParameter { 37 get { return (IValueLookupParameter<T>)Parameters["RightSide"]; } 38 } 36 39 37 private ValueParameter<Comparison> ComparisonParameter { 40 38 get { return (ValueParameter<Comparison>)Parameters["Comparison"]; } … … 48 46 [StorableConstructor] 49 47 protected ComparisonTerminationCriterion(bool deserializing) : base(deserializing) { } 50 [StorableHook(HookType.AfterDeserialization)]51 private void AfterDeserialization() {52 Initialize();53 }54 48 protected ComparisonTerminationCriterion(ComparisonTerminationCriterion<T> original, Cloner cloner) 55 : base(original, cloner) { 56 Initialize(); 57 } 49 : base(original, cloner) { } 58 50 public override IDeepCloneable Clone(Cloner cloner) { 59 51 return new ComparisonTerminationCriterion<T>(this, cloner); … … 61 53 public ComparisonTerminationCriterion() 62 54 : 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.")); 65 56 Parameters.Add(new ValueParameter<Comparison>("Comparison", "The type of comparison.", new Comparison(ComparisonType.GreaterOrEqual)) { Hidden = true }); 66 67 Initialize();68 57 } 69 58 public ComparisonTerminationCriterion(string leftSideActualName, string rightSideActualName, ComparisonType comparison = ComparisonType.GreaterOrEqual) 70 59 : this() { 71 LeftSideParameter.ActualName = leftSideActualName;72 RightSideParameter.ActualName = rightSideActualName;60 ValueParameter.ActualName = leftSideActualName; 61 ThresholdParameter.ActualName = rightSideActualName; 73 62 Comparison.Value = comparison; 74 63 } 75 64 public ComparisonTerminationCriterion(string leftSideActualName, T rightSideValue, ComparisonType comparison = ComparisonType.GreaterOrEqual) 76 65 : this() { 77 LeftSideParameter.ActualName = leftSideActualName;78 RightSideParameter.Value = rightSideValue;66 ValueParameter.ActualName = leftSideActualName; 67 ThresholdParameter.Value = rightSideValue; 79 68 Comparison.Value = comparison; 80 69 } 81 70 82 private void Initialize() {83 RightSideParameter.ToStringChanged += (s, a) => OnToStringChanged();84 }85 86 71 protected override bool CheckTermination() { 87 IComparable lhs = LeftSideParameter.ActualValue;88 IComparable rhs = RightSideParameter.ActualValue;72 IComparable lhs = ValueParameter.ActualValue; 73 IComparable rhs = ThresholdParameter.ActualValue; 89 74 90 75 int i = lhs.CompareTo(rhs); … … 107 92 } 108 93 109 public override string ToString() { 110 if (RightSideParameter.Value == null) return Name; 111 else return Name + ": " + RightSideParameter.Value; 112 } 94 113 95 } 114 96 }
Note: See TracChangeset
for help on using the changeset viewer.