Changeset 7852 for branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/VRPProblemInstance.cs
- Timestamp:
- 05/21/12 13:46:48 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/VRPProblemInstance.cs
r7543 r7852 38 38 [StorableClass] 39 39 public abstract class VRPProblemInstance : ParameterizedNamedItem, IVRPProblemInstance, IStatefulItem { 40 public IValueParameter<IVRPEvaluator> EvaluatorParameter {41 get { return (ValueParameter<IVRPEvaluator>)Parameters["Evaluator"]; }42 }43 44 40 IVRPEvaluator moveEvaluator; 45 41 46 42 public IVRPEvaluator MoveEvaluator { 47 43 get { 48 if ( EvaluatorParameter.Value== null)44 if (evaluator == null) 49 45 return null; 50 46 else { 51 47 if (moveEvaluator == null) { 52 moveEvaluator = EvaluatorParameter.Value.Clone() as IVRPEvaluator;48 moveEvaluator = evaluator.Clone() as IVRPEvaluator; 53 49 54 50 foreach (IParameter parameter in moveEvaluator.Parameters) { … … 68 64 } 69 65 70 public IValueParameter<IVRPCreator> SolutionCreatorParameter {71 get { return (ValueParameter<IVRPCreator>)Parameters["SolutionCreator"]; }72 }73 74 66 protected abstract IEnumerable<IOperator> GetOperators(); 75 67 protected abstract IEnumerable<IOperator> GetAnalyzers(); … … 104 96 } 105 97 106 protected OptionalValueParameter<DoubleValue> BestKnownQualityParameter {107 get { return (OptionalValueParameter<DoubleValue>)Parameters["BestKnownQuality"]; }108 }109 protected OptionalValueParameter<VRPSolution> BestKnownSolutionParameter {110 get { return (OptionalValueParameter<VRPSolution>)Parameters["BestKnownSolution"]; }111 }112 113 IValueParameter<DoubleValue> IVRPProblemInstance.BestKnownQualityParameter {114 get { return BestKnownQualityParameter; }115 }116 117 IValueParameter<VRPSolution> IVRPProblemInstance.BestKnownSolutionParameter {118 get { return BestKnownSolutionParameter; }119 }120 121 98 public DoubleMatrix Coordinates { 122 99 get { return CoordinatesParameter.Value; } … … 151 128 get { return DistanceFactorParameter.Value; } 152 129 set { DistanceFactorParameter.Value = value; } 153 }154 155 public DoubleValue BestKnownQuality {156 get { return BestKnownQualityParameter.Value; }157 set { BestKnownQualityParameter.Value = value; }158 }159 public VRPSolution BestKnownSolution {160 get { return BestKnownSolutionParameter.Value; }161 set { BestKnownSolutionParameter.Value = value; }162 130 } 163 131 … … 205 173 private IVRPEvaluator evaluator = null; 206 174 175 public IVRPEvaluator SolutionEvaluator { 176 get { 177 return evaluator; 178 } 179 } 180 207 181 public virtual double GetDistance(int start, int end, IVRPEncoding solution) { 208 182 double distance = 0.0; … … 259 233 } 260 234 235 236 public event EventHandler EvaluationChanged; 237 261 238 protected void EvalBestKnownSolution() { 262 if (BestKnownSolution != null) { 263 //call evaluator 264 BestKnownQuality = new DoubleValue(Evaluate(BestKnownSolution.Solution).Quality); 265 BestKnownSolution.Quality = BestKnownQuality; 266 } else { 267 BestKnownQuality = null; 268 } 239 EventHandler tmp = EvaluationChanged; 240 if (tmp != null) 241 tmp(this, null); 269 242 } 270 243 … … 286 259 Parameters.Add(new ValueParameter<DoubleValue>("EvalDistanceFactor", "The distance factor considered in the evaluation.", new DoubleValue(1))); 287 260 288 Parameters.Add(new ValueParameter<IVRPCreator>("SolutionCreator", "The operator which should be used to create new VRP solutions.", Creator)); 289 Parameters.Add(new ValueParameter<IVRPEvaluator>("Evaluator", "The operator which should be used to evaluate VRP solutions.", Evaluator)); 290 291 Parameters.Add(new OptionalValueParameter<DoubleValue>("BestKnownQuality", "The quality of the best known solution of this VRP instance.")); 292 Parameters.Add(new OptionalValueParameter<VRPSolution>("BestKnownSolution", "The best known solution of this VRP instance.")); 293 261 evaluator = Evaluator; 294 262 AttachEventHandlers(); 295 263 } … … 297 265 protected VRPProblemInstance(VRPProblemInstance original, Cloner cloner) 298 266 : base(original, cloner) { 299 AttachEventHandlers(); 267 evaluator = Evaluator; 268 AttachEventHandlers(); 300 269 } 301 270 302 271 [StorableHook(HookType.AfterDeserialization)] 303 272 private void AfterDeserializationHook() { 273 evaluator = Evaluator; 304 274 AttachEventHandlers(); 305 275 } 306 276 307 277 private void AttachEventHandlers() { 308 evaluator = EvaluatorParameter.Value;309 EvaluatorParameter.ValueChanged += new EventHandler(EvaluatorParameter_ValueChanged);310 BestKnownSolutionParameter.ValueChanged += new EventHandler(BestKnownSolutionParameter_ValueChanged);311 278 DistanceFactorParameter.ValueChanged += new EventHandler(DistanceFactorParameter_ValueChanged); 312 279 DistanceFactorParameter.Value.ValueChanged += new EventHandler(DistanceFactor_ValueChanged); … … 329 296 330 297 #region Event handlers 331 void EvaluatorParameter_ValueChanged(object sender, EventArgs e) {332 moveEvaluator = null;333 evaluator = EvaluatorParameter.Value;334 }335 336 void BestKnownSolutionParameter_ValueChanged(object sender, EventArgs e) {337 EvalBestKnownSolution();338 }339 298 void DistanceFactorParameter_ValueChanged(object sender, EventArgs e) { 340 299 DistanceFactorParameter.Value.ValueChanged += new EventHandler(DistanceFactor_ValueChanged);
Note: See TracChangeset
for help on using the changeset viewer.