Changeset 7786 for branches/ScatterSearch/HeuristicLab.Algorithms.ScatterSearch/3.3/Knapsack/KnapsackImprovementOperator.cs
- Timestamp:
- 05/09/12 12:22:33 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ScatterSearch/HeuristicLab.Algorithms.ScatterSearch/3.3/Knapsack/KnapsackImprovementOperator.cs
r7775 r7786 20 20 #endregion 21 21 22 using System;23 22 using System.Linq; 24 23 using HeuristicLab.Common; … … 27 26 using HeuristicLab.Encodings.BinaryVectorEncoding; 28 27 using HeuristicLab.Operators; 29 using HeuristicLab.Optimization;30 28 using HeuristicLab.Parameters; 31 29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; … … 38 36 [Item("KnapsackImprovementOperator", "An operator that improves knapsack solutions.")] 39 37 [StorableClass] 40 public sealed class KnapsackImprovementOperator : SingleSuccessorOperator, ILocalImprovementOperator, IScatterSearchTargetProcessor { 41 #region Problem properties 42 public Type ProblemType { 43 get { return typeof(KnapsackProblem); } 44 } 45 [Storable] 46 private KnapsackProblem problem; 47 public IProblem Problem { 48 get { return problem; } 49 set { problem = (KnapsackProblem)value; } 50 } 51 #endregion 52 38 public sealed class KnapsackImprovementOperator : SingleSuccessorOperator, IImprovementOperator { 53 39 #region Parameter properties 54 40 public ScopeParameter CurrentScopeParameter { 55 41 get { return (ScopeParameter)Parameters["CurrentScope"]; } 56 42 } 57 public I ValueLookupParameter<IntArray> ValuesParameter {58 get { return (I ValueLookupParameter<IntArray>)Parameters["Values"]; }43 public ILookupParameter<IntValue> KnapsackCapacityParameter { 44 get { return (ILookupParameter<IntValue>)Parameters["KnapsackCapacity"]; } 59 45 } 60 public IValueLookupParameter<IntArray> WeightsParameter { 61 get { return (IValueLookupParameter<IntArray>)Parameters["Weights"]; } 62 } 63 public IValueLookupParameter<IntValue> KnapsackCapacityParameter { 64 get { return (IValueLookupParameter<IntValue>)Parameters["KnapsackCapacity"]; } 46 public ILookupParameter<DoubleValue> PenaltyParameter { 47 get { return (ILookupParameter<DoubleValue>)Parameters["Penalty"]; } 65 48 } 66 49 public IValueLookupParameter<IItem> TargetParameter { 67 50 get { return (IValueLookupParameter<IItem>)Parameters["Target"]; } 68 51 } 69 public I ValueLookupParameter<DoubleValue> PenaltyParameter {70 get { return (I ValueLookupParameter<DoubleValue>)Parameters["Penalty"]; }52 public ILookupParameter<IntArray> ValuesParameter { 53 get { return (ILookupParameter<IntArray>)Parameters["Values"]; } 71 54 } 72 #region ILocalImprovementOperator Parameters 73 public IValueLookupParameter<IntValue> MaximumIterationsParameter { 74 get { return (IValueLookupParameter<IntValue>)Parameters["MaximumIterations"]; } 55 public ILookupParameter<IntArray> WeightsParameter { 56 get { return (ILookupParameter<IntArray>)Parameters["Weights"]; } 75 57 } 76 public ILookupParameter<IntValue> EvaluatedSolutionsParameter {77 get { return (ILookupParameter<IntValue>)Parameters["EvaluatedSolutions"]; }78 }79 public ILookupParameter<ResultCollection> ResultsParameter {80 get { return (ILookupParameter<ResultCollection>)Parameters["Results"]; }81 }82 #endregion83 58 #endregion 84 59 … … 86 61 private IScope CurrentScope { 87 62 get { return CurrentScopeParameter.ActualValue; } 63 } 64 private IntValue KnapsackCapacity { 65 get { return KnapsackCapacityParameter.ActualValue; } 66 set { KnapsackCapacityParameter.ActualValue = value; } 67 } 68 private DoubleValue Penalty { 69 get { return PenaltyParameter.ActualValue; } 70 set { PenaltyParameter.ActualValue = value; } 71 } 72 private IItem Target { 73 get { return TargetParameter.ActualValue; } 88 74 } 89 75 private IntArray Values { … … 95 81 set { WeightsParameter.ActualValue = value; } 96 82 } 97 private IntValue KnapsackCapacity {98 get { return KnapsackCapacityParameter.ActualValue; }99 set { KnapsackCapacityParameter.ActualValue = value; }100 }101 private IItem Target {102 get { return TargetParameter.ActualValue; }103 }104 private DoubleValue Penalty {105 get { return PenaltyParameter.ActualValue; }106 set { PenaltyParameter.ActualValue = value; }107 }108 83 #endregion 109 84 110 85 [StorableConstructor] 111 86 private KnapsackImprovementOperator(bool deserializing) : base(deserializing) { } 112 private KnapsackImprovementOperator(KnapsackImprovementOperator original, Cloner cloner) 113 : base(original, cloner) { 114 this.problem = cloner.Clone(original.problem); 115 } 87 private KnapsackImprovementOperator(KnapsackImprovementOperator original, Cloner cloner) : base(original, cloner) { } 116 88 public KnapsackImprovementOperator() 117 89 : base() { 118 90 #region Create parameters 119 91 Parameters.Add(new ScopeParameter("CurrentScope")); 120 Parameters.Add(new ValueLookupParameter<IntArray>("Values")); 121 Parameters.Add(new ValueLookupParameter<IntArray>("Weights")); 122 Parameters.Add(new ValueLookupParameter<IntValue>("KnapsackCapacity")); 92 Parameters.Add(new LookupParameter<IntValue>("KnapsackCapacity")); 93 Parameters.Add(new LookupParameter<DoubleValue>("Penalty")); 123 94 Parameters.Add(new ValueLookupParameter<IItem>("Target")); 124 Parameters.Add(new ValueLookupParameter<DoubleValue>("Penalty")); 95 Parameters.Add(new LookupParameter<IntArray>("Values")); 96 Parameters.Add(new LookupParameter<IntArray>("Weights")); 125 97 #endregion 126 98 TargetParameter.ActualName = "KnapsackSolution"; // temporary solution for the knapsack problem … … 132 104 133 105 public override IOperation Apply() { 134 var sol = CurrentScope.Variables[TargetParameter.ActualName].Value as BinaryVector;106 BinaryVector sol = CurrentScope.Variables[TargetParameter.ActualName].Value as BinaryVector; 135 107 136 108 // calculate value-to-weight ratio
Note: See TracChangeset
for help on using the changeset viewer.