- Timestamp:
- 09/06/10 17:05:13 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/VehicleRoutingProblem.cs
r4362 r4365 35 35 using HeuristicLab.Problems.VehicleRouting.Parsers; 36 36 using HeuristicLab.Problems.VehicleRouting.ProblemInstances; 37 using HeuristicLab.Problems.VehicleRouting.Variants; 37 38 38 39 namespace HeuristicLab.Problems.VehicleRouting { … … 61 62 get { return BestKnownQualityParameter; } 62 63 } 63 public IParameter SolutionCreatorParameter { 64 get { 65 if (ProblemInstance != null) 66 return ProblemInstance.SolutionCreatorParameter; 67 else 68 return null; 69 } 70 } 71 public IParameter EvaluatorParameter { 72 get { 73 if (ProblemInstance != null) 74 return ProblemInstance.EvaluatorParameter; 75 else 76 return null; 77 } 64 public IValueParameter<IVRPCreator> SolutionCreatorParameter { 65 get { return (IValueParameter<IVRPCreator>)Parameters["SolutionCreator"]; } 66 } 67 IParameter IProblem.SolutionCreatorParameter { 68 get { return SolutionCreatorParameter; } 69 } 70 public IValueParameter<IVRPEvaluator> EvaluatorParameter { 71 get { return (IValueParameter<IVRPEvaluator>)Parameters["Evaluator"]; } 72 } 73 IParameter IProblem.EvaluatorParameter { 74 get { return EvaluatorParameter; } 78 75 } 79 76 #endregion … … 86 83 87 84 public ISingleObjectiveEvaluator Evaluator { 88 get { 89 if (ProblemInstance != null) 90 return ProblemInstance.EvaluatorParameter.Value; 91 else 92 return null; 93 } 85 get { return ProblemInstance.EvaluatorParameter.Value; } 94 86 } 95 87 … … 99 91 100 92 public ISolutionCreator SolutionCreator { 101 get { 102 if (ProblemInstance != null) 103 return ProblemInstance.SolutionCreatorParameter.Value; 104 else 105 return null; 106 } 107 } 93 get { return ProblemInstance.SolutionCreatorParameter.Value; } 94 } 95 96 [Storable] 97 private List<IOperator> operators; 108 98 109 99 public IEnumerable<IOperator> Operators { 110 get { 111 if (ProblemInstance != null) 112 return ProblemInstance.Operators.OrderBy(op => op.Name); 113 else 114 return null; 115 } 100 get { return operators; } 116 101 } 117 102 #endregion … … 124 109 Parameters.Add(new ValueParameter<IVRPProblemInstance>("ProblemInstance", "The VRP problem instance")); 125 110 Parameters.Add(new OptionalValueParameter<DoubleValue>("BestKnownQuality", "The quality of the best known solution of this VRP instance.")); 126 111 112 operators = new List<IOperator>(); 113 127 114 InitializeRandomVRPInstance(); 115 InitializeOperators(); 128 116 129 117 AttachEventHandlers(); … … 133 121 public override IDeepCloneable Clone(Cloner cloner) { 134 122 VehicleRoutingProblem clone = (VehicleRoutingProblem)base.Clone(cloner); 123 clone.operators = operators.Select(x => (IOperator)cloner.Clone(x)).ToList(); 135 124 clone.AttachEventHandlers(); 136 125 return clone; … … 172 161 173 162 private void AttachProblemInstanceEventHandlers() { 163 if (Parameters.ContainsKey("Evaluator")) 164 Parameters.Remove("Evaluator"); 165 166 if (Parameters.ContainsKey("SolutionCreator")) 167 Parameters.Remove("SolutionCreator"); 168 174 169 if (ProblemInstance != null) { 175 170 ProblemInstance.SolutionCreatorParameter.ValueChanged += new EventHandler(SolutionCreatorParameter_ValueChanged); 176 171 ProblemInstance.EvaluatorParameter.ValueChanged += new EventHandler(EvaluatorParameter_ValueChanged); 172 Parameters.Add(ProblemInstance.EvaluatorParameter); 173 Parameters.Add(ProblemInstance.SolutionCreatorParameter); 177 174 } 178 175 } … … 180 177 void ProblemInstanceParameter_ValueChanged(object sender, EventArgs e) { 181 178 AttachProblemInstanceEventHandlers(); 182 } 183 179 InitializeOperators(); 180 181 OnSolutionCreatorChanged(); 182 OnEvaluatorChanged(); 183 OnOperatorsChanged(); 184 } 184 185 private void SolutionCreatorParameter_ValueChanged(object sender, EventArgs e) { 186 ParameterizeSolutionCreator(); 187 185 188 OnSolutionCreatorChanged(); 186 189 } 187 190 private void EvaluatorParameter_ValueChanged(object sender, EventArgs e) { 188 191 OnEvaluatorChanged(); 192 } 193 194 private void InitializeOperators() { 195 operators = new List<IOperator>(); 196 197 if (ProblemInstance != null) { 198 operators.AddRange( 199 ProblemInstance.Operators.Concat( 200 ApplicationManager.Manager.GetInstances<IGeneralVRPOperator>().Cast<IOperator>()).OrderBy(op => op.Name)); 201 } 202 203 ParameterizeOperators(); 204 } 205 206 private void ParameterizeSolutionCreator() { 207 if (SolutionCreator is IMultiVRPOperator) { 208 (SolutionCreator as IMultiVRPOperator).SetOperators(Operators); 209 } 210 } 211 212 private void ParameterizeOperators() { 213 foreach (IOperator op in Operators) { 214 if (op is IMultiVRPOperator) { 215 (op as IMultiVRPOperator).SetOperators(Operators); 216 } 217 } 189 218 } 190 219 #endregion
Note: See TracChangeset
for help on using the changeset viewer.