Changeset 7999 for trunk/sources/HeuristicLab.Optimization/3.3/Problems
- Timestamp:
- 06/13/12 17:14:53 (13 years ago)
- Location:
- trunk/sources/HeuristicLab.Optimization/3.3/Problems
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Optimization/3.3/Problems/Problem.cs
r7706 r7999 35 35 public abstract class Problem : ParameterizedNamedItem, IProblem { 36 36 private static readonly string OperatorsParameterName = "Operators"; 37 38 public IFixedValueParameter<OperatorCollection> OperatorsParameter { 39 get { return (IFixedValueParameter<OperatorCollection>)Parameters[OperatorsParameterName]; } 37 public IFixedValueParameter<ItemCollection<IItem>> OperatorsParameter { 38 get { return (IFixedValueParameter<ItemCollection<IItem>>)Parameters[OperatorsParameterName]; } 40 39 } 41 40 … … 53 52 protected Problem() 54 53 : base() { 55 Parameters.Add(new FixedValueParameter< OperatorCollection>(OperatorsParameterName, "The operators that the problem provides to the algorithms.", new OperatorCollection(), false));54 Parameters.Add(new FixedValueParameter<ItemCollection<IItem>>(OperatorsParameterName, "The operators and items that the problem provides to the algorithms.", new ItemCollection<IItem>(), false)); 56 55 OperatorsParameter.Hidden = true; 57 56 RegisterEventHandlers(); … … 60 59 [StorableHook(HookType.AfterDeserialization)] 61 60 private void AfterDeserialization() { 61 // BackwardsCompatibility3.3 62 #region Backwards compatible code, remove with 3.4 63 if (Parameters.ContainsKey(OperatorsParameterName) && Parameters[OperatorsParameterName] is FixedValueParameter<OperatorCollection>) { 64 OperatorCollection tmp = ((IFixedValueParameter<OperatorCollection>)Parameters[OperatorsParameterName]).Value; 65 Parameters.Remove(OperatorsParameterName); 66 Parameters.Add(new FixedValueParameter<ItemCollection<IItem>>(OperatorsParameterName, "The operators and items that the problem provides to the algorithms.", new ItemCollection<IItem>(tmp), false)); 67 OperatorsParameter.Hidden = true; 68 } 69 #endregion 70 62 71 RegisterEventHandlers(); 63 72 } 64 73 65 74 private void RegisterEventHandlers() { 66 Operators.ItemsAdded += new CollectionItemsChangedEventHandler<I Operator>(Operators_Changed);67 Operators.ItemsRemoved += new CollectionItemsChangedEventHandler<I Operator>(Operators_Changed);68 Operators.CollectionReset += new CollectionItemsChangedEventHandler<I Operator>(Operators_Changed);75 Operators.ItemsAdded += new CollectionItemsChangedEventHandler<IItem>(Operators_Changed); 76 Operators.ItemsRemoved += new CollectionItemsChangedEventHandler<IItem>(Operators_Changed); 77 Operators.CollectionReset += new CollectionItemsChangedEventHandler<IItem>(Operators_Changed); 69 78 } 70 79 … … 72 81 // BackwardsCompatibility3.3 73 82 #region Backwards compatible code, remove with 3.4 74 [Storable(Name = "Operators" )]83 [Storable(Name = "Operators", AllowOneWay = true)] 75 84 private IEnumerable<IOperator> StorableOperators { 76 get { return null; }77 85 set { 78 86 if (!Parameters.ContainsKey(OperatorsParameterName)) { 79 Parameters.Add(new FixedValueParameter< OperatorCollection>(OperatorsParameterName, "The operators that the problem provides to the algorithms.", new OperatorCollection(value), false));87 Parameters.Add(new FixedValueParameter<ItemCollection<IItem>>(OperatorsParameterName, "The operators and items that the problem provides to the algorithms.", new ItemCollection<IItem>(value), false)); 80 88 OperatorsParameter.Hidden = true; 81 89 } … … 83 91 } 84 92 #endregion 85 protected OperatorCollectionOperators {93 protected ItemCollection<IItem> Operators { 86 94 get { 87 95 // BackwardsCompatibility3.3 88 96 #region Backwards compatible code, remove with 3.4 89 97 if (!Parameters.ContainsKey(OperatorsParameterName)) { 90 Parameters.Add(new FixedValueParameter< OperatorCollection>(OperatorsParameterName, "The operators that the problem provides to the algorithms.", new OperatorCollection(), false));98 Parameters.Add(new FixedValueParameter<ItemCollection<IItem>>(OperatorsParameterName, "The operators and items that the problem provides to the algorithms.", new ItemCollection<IItem>(), false)); 91 99 OperatorsParameter.Hidden = true; 92 100 } … … 95 103 } 96 104 } 97 IEnumerable<I Operator> IProblem.Operators { get { return Operators; } }105 IEnumerable<IItem> IProblem.Operators { get { return Operators; } } 98 106 #endregion 99 107 -
trunk/sources/HeuristicLab.Optimization/3.3/Problems/UserDefinedProblem.cs
r7351 r7999 81 81 get { return (OptionalValueParameter<IScope>)Parameters["BestKnownSolution"]; } 82 82 } 83 public ValueParameter<ItemList<I Operator>> OperatorsParameter {84 get { return (ValueParameter<ItemList<I Operator>>)Parameters["Operators"]; }83 public ValueParameter<ItemList<IItem>> OperatorsParameter { 84 get { return (ValueParameter<ItemList<IItem>>)Parameters["Operators"]; } 85 85 } 86 86 #endregion … … 112 112 set { BestKnownQualityParameter.Value = value; } 113 113 } 114 public IEnumerable<I Operator> Operators {114 public IEnumerable<IItem> Operators { 115 115 get { return OperatorsParameter.Value; } 116 116 } … … 121 121 [StorableHook(HookType.AfterDeserialization)] 122 122 private void AfterDeserialization() { 123 // BackwardsCompatibility3.3 124 #region Backwards compatible code, remove with 3.4 125 if (Parameters.ContainsKey("Operators") && Parameters["Operators"] is ValueParameter<ItemList<IOperator>>) { 126 ItemList<IOperator> tmp = ((ValueParameter<ItemList<IOperator>>)Parameters["Operators"]).Value; 127 Parameters.Remove("Operators"); 128 Parameters.Add(new ValueParameter<ItemList<IItem>>("Operators", "The operators and items that the problem provides to the algorithms.", new ItemList<IItem>(tmp), false)); 129 } 130 #endregion 131 123 132 RegisterEventHandlers(); 124 133 } … … 130 139 Parameters.Add(new OptionalValueParameter<DoubleValue>("BestKnownQuality", "The quality of the best known solution of this problem.")); 131 140 Parameters.Add(new OptionalValueParameter<IScope>("BestKnownSolution", "The best known solution for this external evaluation problem.")); 132 Parameters.Add(new ValueParameter<ItemList<I Operator>>("Operators", "The operators that are passed to the algorithm.", new ItemList<IOperator>()));141 Parameters.Add(new ValueParameter<ItemList<IItem>>("Operators", "The operators and items that the problem provides to the algorithms.", new ItemList<IItem>())); 133 142 134 143 RegisterEventHandlers(); … … 200 209 Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged); 201 210 OperatorsParameter.ValueChanged += new EventHandler(OperatorsParameter_ValueChanged); 202 OperatorsParameter.Value.ItemsAdded += new CollectionItemsChangedEventHandler<IndexedItem<I Operator>>(OperatorsParameter_Value_ItemsAdded);203 OperatorsParameter.Value.ItemsRemoved += new CollectionItemsChangedEventHandler<IndexedItem<I Operator>>(OperatorsParameter_Value_ItemsRemoved);204 OperatorsParameter.Value.CollectionReset += new CollectionItemsChangedEventHandler<IndexedItem<I Operator>>(OperatorsParameter_Value_CollectionReset);211 OperatorsParameter.Value.ItemsAdded += new CollectionItemsChangedEventHandler<IndexedItem<IItem>>(OperatorsParameter_Value_ItemsAdded); 212 OperatorsParameter.Value.ItemsRemoved += new CollectionItemsChangedEventHandler<IndexedItem<IItem>>(OperatorsParameter_Value_ItemsRemoved); 213 OperatorsParameter.Value.CollectionReset += new CollectionItemsChangedEventHandler<IndexedItem<IItem>>(OperatorsParameter_Value_CollectionReset); 205 214 } 206 215 … … 209 218 if (Evaluator != null) { 210 219 string qualityName = Evaluator.QualityParameter.ActualName; 211 foreach (IOperator op in OperatorsParameter.Value ) {220 foreach (IOperator op in OperatorsParameter.Value.OfType<IOperator>()) { 212 221 foreach (ILookupParameter<DoubleValue> param in op.Parameters.OfType<ILookupParameter<DoubleValue>>()) { 213 222 if (param.Name.Equals("Quality")) param.ActualName = qualityName;
Note: See TracChangeset
for help on using the changeset viewer.