Free cookie consent management tool by TermsFeed Policy Generator

source: stable/HeuristicLab.Problems.VehicleRouting/3.3/Analyzers/BestAverageWorstVRPToursAnalyzer.cs @ 9661

Last change on this file since 9661 was 9456, checked in by swagner, 12 years ago

Updated copyright year and added some missing license headers (#1889)

File size: 23.1 KB
Line 
1#region License Information
2/* HeuristicLab
3 * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
4 *
5 * This file is part of HeuristicLab.
6 *
7 * HeuristicLab is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * HeuristicLab is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
19 */
20#endregion
21
22using System;
23using HeuristicLab.Analysis;
24using HeuristicLab.Common;
25using HeuristicLab.Core;
26using HeuristicLab.Data;
27using HeuristicLab.Operators;
28using HeuristicLab.Optimization;
29using HeuristicLab.Optimization.Operators;
30using HeuristicLab.Parameters;
31using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
32
33namespace HeuristicLab.Problems.VehicleRouting {
34  /// <summary>
35  /// An operator which analyzes the best, average and worst quality of solutions in the scope tree.
36  /// </summary>
37  [Item("BestAverageWorstVRPToursAnalyzer", "An operator which analyzes the best, average and worst properties of the VRP tours in the scope tree.")]
38  [StorableClass]
39  public sealed class BestAverageWorstVRPToursAnalyzer : AlgorithmOperator, IAnalyzer {
40    #region Parameter properties
41    public ScopeTreeLookupParameter<DoubleValue> OverloadParameter {
42      get { return (ScopeTreeLookupParameter<DoubleValue>)Parameters["Overload"]; }
43    }
44    public ValueLookupParameter<DoubleValue> BestOverloadParameter {
45      get { return (ValueLookupParameter<DoubleValue>)Parameters["BestOverload"]; }
46    }
47    public ValueLookupParameter<DoubleValue> CurrentBestOverloadParameter {
48      get { return (ValueLookupParameter<DoubleValue>)Parameters["CurrentBestOverload"]; }
49    }
50    public ValueLookupParameter<DoubleValue> CurrentAverageOverloadParameter {
51      get { return (ValueLookupParameter<DoubleValue>)Parameters["CurrentAverageOverload"]; }
52    }
53    public ValueLookupParameter<DoubleValue> CurrentWorstOverloadParameter {
54      get { return (ValueLookupParameter<DoubleValue>)Parameters["CurrentWorstOverload"]; }
55    }
56    public ValueLookupParameter<DataTable> OverloadsParameter {
57      get { return (ValueLookupParameter<DataTable>)Parameters["Overloads"]; }
58    }
59
60    public ScopeTreeLookupParameter<DoubleValue> TardinessParameter {
61      get { return (ScopeTreeLookupParameter<DoubleValue>)Parameters["Tardiness"]; }
62    }
63    public ValueLookupParameter<DoubleValue> BestTardinessParameter {
64      get { return (ValueLookupParameter<DoubleValue>)Parameters["BestTardiness"]; }
65    }
66    public ValueLookupParameter<DoubleValue> CurrentBestTardinessParameter {
67      get { return (ValueLookupParameter<DoubleValue>)Parameters["CurrentBestTardiness"]; }
68    }
69    public ValueLookupParameter<DoubleValue> CurrentAverageTardinessParameter {
70      get { return (ValueLookupParameter<DoubleValue>)Parameters["CurrentAverageTardiness"]; }
71    }
72    public ValueLookupParameter<DoubleValue> CurrentWorstTardinessParameter {
73      get { return (ValueLookupParameter<DoubleValue>)Parameters["CurrentWorstTardiness"]; }
74    }
75    public ValueLookupParameter<DataTable> TardinessValuesParameter {
76      get { return (ValueLookupParameter<DataTable>)Parameters["TardinessValues"]; }
77    }
78
79    public ScopeTreeLookupParameter<DoubleValue> DistanceParameter {
80      get { return (ScopeTreeLookupParameter<DoubleValue>)Parameters["Distance"]; }
81    }
82    public ValueLookupParameter<DoubleValue> BestDistanceParameter {
83      get { return (ValueLookupParameter<DoubleValue>)Parameters["BestDistance"]; }
84    }
85    public ValueLookupParameter<DoubleValue> CurrentBestDistanceParameter {
86      get { return (ValueLookupParameter<DoubleValue>)Parameters["CurrentBestDistance"]; }
87    }
88    public ValueLookupParameter<DoubleValue> CurrentAverageDistanceParameter {
89      get { return (ValueLookupParameter<DoubleValue>)Parameters["CurrentAverageDistance"]; }
90    }
91    public ValueLookupParameter<DoubleValue> CurrentWorstDistanceParameter {
92      get { return (ValueLookupParameter<DoubleValue>)Parameters["CurrentWorstDistance"]; }
93    }
94    public ValueLookupParameter<DataTable> DistancesParameter {
95      get { return (ValueLookupParameter<DataTable>)Parameters["Distances"]; }
96    }
97
98    public ScopeTreeLookupParameter<DoubleValue> TravelTimeParameter {
99      get { return (ScopeTreeLookupParameter<DoubleValue>)Parameters["TravelTime"]; }
100    }
101    public ValueLookupParameter<DoubleValue> BestTravelTimeParameter {
102      get { return (ValueLookupParameter<DoubleValue>)Parameters["BestTravelTime"]; }
103    }
104    public ValueLookupParameter<DoubleValue> CurrentBestTravelTimeParameter {
105      get { return (ValueLookupParameter<DoubleValue>)Parameters["CurrentBestTravelTime"]; }
106    }
107    public ValueLookupParameter<DoubleValue> CurrentAverageTravelTimeParameter {
108      get { return (ValueLookupParameter<DoubleValue>)Parameters["CurrentAverageTravelTime"]; }
109    }
110    public ValueLookupParameter<DoubleValue> CurrentWorstTravelTimeParameter {
111      get { return (ValueLookupParameter<DoubleValue>)Parameters["CurrentWorstTravelTime"]; }
112    }
113    public ValueLookupParameter<DataTable> TravelTimesParameter {
114      get { return (ValueLookupParameter<DataTable>)Parameters["TravelTimes"]; }
115    }
116
117    public ScopeTreeLookupParameter<DoubleValue> VehiclesUtilizedParameter {
118      get { return (ScopeTreeLookupParameter<DoubleValue>)Parameters["VehiclesUtilized"]; }
119    }
120    public ValueLookupParameter<DoubleValue> BestVehiclesUtilizedParameter {
121      get { return (ValueLookupParameter<DoubleValue>)Parameters["BestVehiclesUtilized"]; }
122    }
123    public ValueLookupParameter<DoubleValue> CurrentBestVehiclesUtilizedParameter {
124      get { return (ValueLookupParameter<DoubleValue>)Parameters["CurrentBestVehiclesUtilized"]; }
125    }
126    public ValueLookupParameter<DoubleValue> CurrentAverageVehiclesUtilizedParameter {
127      get { return (ValueLookupParameter<DoubleValue>)Parameters["CurrentAverageVehiclesUtilized"]; }
128    }
129    public ValueLookupParameter<DoubleValue> CurrentWorstVehiclesUtilizedParameter {
130      get { return (ValueLookupParameter<DoubleValue>)Parameters["CurrentWorstVehiclesUtilized"]; }
131    }
132    public ValueLookupParameter<DataTable> VehiclesUtilizedValuesParameter {
133      get { return (ValueLookupParameter<DataTable>)Parameters["VehiclesUtilizedValues"]; }
134    }
135
136    public ValueLookupParameter<VariableCollection> ResultsParameter {
137      get { return (ValueLookupParameter<VariableCollection>)Parameters["Results"]; }
138    }
139    #endregion
140
141    #region Properties
142    public bool EnabledByDefault {
143      get { return true; }
144    }
145    private BestVRPToursMemorizer BestMemorizer {
146      get { return (BestVRPToursMemorizer)OperatorGraph.InitialOperator; }
147    }
148    private BestAverageWorstVRPToursCalculator BestAverageWorstCalculator {
149      get { return (BestAverageWorstVRPToursCalculator)BestMemorizer.Successor; }
150    }
151    #endregion
152
153    public BestAverageWorstVRPToursAnalyzer()
154      : base() {
155      #region Create parameters
156      Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("Overload", "The overloads of the VRP solutions which should be analyzed."));
157      Parameters.Add(new ValueLookupParameter<DoubleValue>("BestOverload", "The best overload value."));
158      Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentBestOverload", "The current best overload value."));
159      Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentAverageOverload", "The current average overload value of all solutions."));
160      Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentWorstOverload", "The current worst overload value of all solutions."));
161      Parameters.Add(new ValueLookupParameter<DataTable>("Overloads", "The data table to store the current best, current average, current worst, best and best known overload value."));
162
163      Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("Tardiness", "The tardiness of the VRP solutions which should be analyzed."));
164      Parameters.Add(new ValueLookupParameter<DoubleValue>("BestTardiness", "The best tardiness value."));
165      Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentBestTardiness", "The current best tardiness value."));
166      Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentAverageTardiness", "The current average tardiness value of all solutions."));
167      Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentWorstTardiness", "The current worst tardiness value of all solutions."));
168      Parameters.Add(new ValueLookupParameter<DataTable>("TardinessValues", "The data table to store the current best, current average, current worst, best and best known tardiness value."));
169
170      Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("Distance", "The distance of the VRP solutions which should be analyzed."));
171      Parameters.Add(new ValueLookupParameter<DoubleValue>("BestDistance", "The best distance value."));
172      Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentBestDistance", "The current best distance value."));
173      Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentAverageDistance", "The current average distance value of all solutions."));
174      Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentWorstDistance", "The current worst distance value of all solutions."));
175      Parameters.Add(new ValueLookupParameter<DataTable>("Distances", "The data table to store the current best, current average, current worst, best and best known distance value."));
176
177      Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("TravelTime", "The travel time of the VRP solutions which should be analyzed."));
178      Parameters.Add(new ValueLookupParameter<DoubleValue>("BestTravelTime", "The best travel time value."));
179      Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentBestTravelTime", "The current best travel time value."));
180      Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentAverageTravelTime", "The current average travel time value of all solutions."));
181      Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentWorstTravelTime", "The current worst travel time value of all solutions."));
182      Parameters.Add(new ValueLookupParameter<DataTable>("TravelTimes", "The data table to store the current best, current average, current worst, best and best known travel time value."));
183
184      Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("VehiclesUtilized", "The vehicles utilized of the VRP solutions which should be analyzed."));
185      Parameters.Add(new ValueLookupParameter<DoubleValue>("BestVehiclesUtilized", "The best  vehicles utilized value."));
186      Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentBestVehiclesUtilized", "The current best  vehicles utilized value."));
187      Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentAverageVehiclesUtilized", "The current average  vehicles utilized value of all solutions."));
188      Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentWorstVehiclesUtilized", "The current worst  vehicles utilized value of all solutions."));
189      Parameters.Add(new ValueLookupParameter<DataTable>("VehiclesUtilizedValues", "The data table to store the current best, current average, current worst, best and best known vehicles utilized value."));
190
191      Parameters.Add(new ValueLookupParameter<VariableCollection>("Results", "The results collection where the analysis values should be stored."));
192      #endregion
193
194      #region Create operators
195      BestVRPToursMemorizer bestMemorizer = new BestVRPToursMemorizer();
196      BestAverageWorstVRPToursCalculator calculator = new BestAverageWorstVRPToursCalculator();
197      ResultsCollector resultsCollector = new ResultsCollector();
198
199      //overload
200      bestMemorizer.BestOverloadParameter.ActualName = BestOverloadParameter.Name;
201      bestMemorizer.OverloadParameter.ActualName = OverloadParameter.Name;
202      bestMemorizer.OverloadParameter.Depth = OverloadParameter.Depth;
203
204      calculator.OverloadParameter.ActualName = OverloadParameter.Name;
205      calculator.OverloadParameter.Depth = OverloadParameter.Depth;
206      calculator.BestOverloadParameter.ActualName = CurrentBestOverloadParameter.Name;
207      calculator.AverageOverloadParameter.ActualName = CurrentAverageOverloadParameter.Name;
208      calculator.WorstOverloadParameter.ActualName = CurrentWorstOverloadParameter.Name;
209
210      DataTableValuesCollector overloadDataTablesCollector = new DataTableValuesCollector();
211      overloadDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("BestOverload", null, BestOverloadParameter.Name));
212      overloadDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentBestOverload", null, CurrentBestOverloadParameter.Name));
213      overloadDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentAverageOverload", null, CurrentAverageOverloadParameter.Name));
214      overloadDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentWorstOverload", null, CurrentWorstOverloadParameter.Name));
215      overloadDataTablesCollector.DataTableParameter.ActualName = OverloadsParameter.Name;
216
217      resultsCollector.CollectedValues.Add(new LookupParameter<DataTable>(OverloadsParameter.Name));
218
219      //tardiness
220      bestMemorizer.BestTardinessParameter.ActualName = BestTardinessParameter.Name;
221      bestMemorizer.TardinessParameter.ActualName = TardinessParameter.Name;
222      bestMemorizer.TardinessParameter.Depth = TardinessParameter.Depth;
223
224      calculator.TardinessParameter.ActualName = TardinessParameter.Name;
225      calculator.TardinessParameter.Depth = TardinessParameter.Depth;
226      calculator.BestTardinessParameter.ActualName = CurrentBestTardinessParameter.Name;
227      calculator.AverageTardinessParameter.ActualName = CurrentAverageTardinessParameter.Name;
228      calculator.WorstTardinessParameter.ActualName = CurrentWorstTardinessParameter.Name;
229
230      DataTableValuesCollector tardinessDataTablesCollector = new DataTableValuesCollector();
231      tardinessDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("BestTardiness", null, BestTardinessParameter.Name));
232      tardinessDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentBestTardiness", null, CurrentBestTardinessParameter.Name));
233      tardinessDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentAverageTardiness", null, CurrentAverageTardinessParameter.Name));
234      tardinessDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentWorstTardiness", null, CurrentWorstTardinessParameter.Name));
235      tardinessDataTablesCollector.DataTableParameter.ActualName = TardinessValuesParameter.Name;
236
237      resultsCollector.CollectedValues.Add(new LookupParameter<DataTable>(TardinessValuesParameter.Name));
238
239      //Distance
240      bestMemorizer.BestDistanceParameter.ActualName = BestDistanceParameter.Name;
241      bestMemorizer.DistanceParameter.ActualName = DistanceParameter.Name;
242      bestMemorizer.DistanceParameter.Depth = DistanceParameter.Depth;
243
244      calculator.DistanceParameter.ActualName = DistanceParameter.Name;
245      calculator.DistanceParameter.Depth = DistanceParameter.Depth;
246      calculator.BestDistanceParameter.ActualName = CurrentBestDistanceParameter.Name;
247      calculator.AverageDistanceParameter.ActualName = CurrentAverageDistanceParameter.Name;
248      calculator.WorstDistanceParameter.ActualName = CurrentWorstDistanceParameter.Name;
249
250      DataTableValuesCollector distanceDataTablesCollector = new DataTableValuesCollector();
251      distanceDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("BestDistance", null, BestDistanceParameter.Name));
252      distanceDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentBestDistance", null, CurrentBestDistanceParameter.Name));
253      distanceDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentAverageDistance", null, CurrentAverageDistanceParameter.Name));
254      distanceDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentWorstDistance", null, CurrentWorstDistanceParameter.Name));
255      distanceDataTablesCollector.DataTableParameter.ActualName = DistancesParameter.Name;
256
257      resultsCollector.CollectedValues.Add(new LookupParameter<DataTable>(DistancesParameter.Name));
258
259      //Travel Time
260      bestMemorizer.BestTravelTimeParameter.ActualName = BestTravelTimeParameter.Name;
261      bestMemorizer.TravelTimeParameter.ActualName = TravelTimeParameter.Name;
262      bestMemorizer.TravelTimeParameter.Depth = TravelTimeParameter.Depth;
263
264      calculator.TravelTimeParameter.ActualName = TravelTimeParameter.Name;
265      calculator.TravelTimeParameter.Depth = TravelTimeParameter.Depth;
266      calculator.BestTravelTimeParameter.ActualName = CurrentBestTravelTimeParameter.Name;
267      calculator.AverageTravelTimeParameter.ActualName = CurrentAverageTravelTimeParameter.Name;
268      calculator.WorstTravelTimeParameter.ActualName = CurrentWorstTravelTimeParameter.Name;
269
270      DataTableValuesCollector travelTimeDataTablesCollector = new DataTableValuesCollector();
271      travelTimeDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("BestTravelTime", null, BestTravelTimeParameter.Name));
272      travelTimeDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentBestTravelTime", null, CurrentBestTravelTimeParameter.Name));
273      travelTimeDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentAverageTravelTime", null, CurrentAverageTravelTimeParameter.Name));
274      travelTimeDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentWorstTravelTime", null, CurrentWorstTravelTimeParameter.Name));
275      travelTimeDataTablesCollector.DataTableParameter.ActualName = TravelTimesParameter.Name;
276
277      resultsCollector.CollectedValues.Add(new LookupParameter<DataTable>(TravelTimesParameter.Name));
278
279      //Vehicles Utlized
280      bestMemorizer.BestVehiclesUtilizedParameter.ActualName = BestVehiclesUtilizedParameter.Name;
281      bestMemorizer.VehiclesUtilizedParameter.ActualName = VehiclesUtilizedParameter.Name;
282      bestMemorizer.VehiclesUtilizedParameter.Depth = VehiclesUtilizedParameter.Depth;
283
284      calculator.VehiclesUtilizedParameter.ActualName = VehiclesUtilizedParameter.Name;
285      calculator.VehiclesUtilizedParameter.Depth = VehiclesUtilizedParameter.Depth;
286      calculator.BestVehiclesUtilizedParameter.ActualName = CurrentBestVehiclesUtilizedParameter.Name;
287      calculator.AverageVehiclesUtilizedParameter.ActualName = CurrentAverageVehiclesUtilizedParameter.Name;
288      calculator.WorstVehiclesUtilizedParameter.ActualName = CurrentWorstVehiclesUtilizedParameter.Name;
289
290      DataTableValuesCollector vehiclesUtilizedDataTablesCollector = new DataTableValuesCollector();
291      vehiclesUtilizedDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("BestVehiclesUtilized", null, BestVehiclesUtilizedParameter.Name));
292      vehiclesUtilizedDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentBestVehiclesUtilized", null, CurrentBestVehiclesUtilizedParameter.Name));
293      vehiclesUtilizedDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentAverageVehiclesUtilized", null, CurrentAverageVehiclesUtilizedParameter.Name));
294      vehiclesUtilizedDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentWorstVehiclesUtilized", null, CurrentWorstVehiclesUtilizedParameter.Name));
295      vehiclesUtilizedDataTablesCollector.DataTableParameter.ActualName = VehiclesUtilizedValuesParameter.Name;
296
297      resultsCollector.CollectedValues.Add(new LookupParameter<DataTable>(VehiclesUtilizedValuesParameter.Name));
298      #endregion
299
300      #region Create operator graph
301      OperatorGraph.InitialOperator = bestMemorizer;
302      bestMemorizer.Successor = calculator;
303      calculator.Successor = overloadDataTablesCollector;
304      overloadDataTablesCollector.Successor = tardinessDataTablesCollector;
305      tardinessDataTablesCollector.Successor = distanceDataTablesCollector;
306      distanceDataTablesCollector.Successor = travelTimeDataTablesCollector;
307      travelTimeDataTablesCollector.Successor = vehiclesUtilizedDataTablesCollector;
308      vehiclesUtilizedDataTablesCollector.Successor = resultsCollector;
309      resultsCollector.Successor = null;
310      #endregion
311
312      Initialize();
313    }
314    [StorableConstructor]
315    private BestAverageWorstVRPToursAnalyzer(bool deserializing) : base() { }
316    private BestAverageWorstVRPToursAnalyzer(BestAverageWorstVRPToursAnalyzer original, Cloner cloner)
317      : base(original, cloner) {
318      Initialize();
319    }
320    public override IDeepCloneable Clone(Cloner cloner) {
321      return new BestAverageWorstVRPToursAnalyzer(this, cloner);
322    }
323
324    [StorableHook(HookType.AfterDeserialization)]
325    private void AfterDeserialization() {
326      Initialize();
327    }
328    private void Initialize() {
329      OverloadParameter.DepthChanged += new EventHandler(OverloadParameter_DepthChanged);
330      TardinessParameter.DepthChanged += new EventHandler(TardinessParameter_DepthChanged);
331      DistanceParameter.DepthChanged += new EventHandler(DistanceParameter_DepthChanged);
332      TravelTimeParameter.DepthChanged += new EventHandler(TravelTimeParameter_DepthChanged);
333      VehiclesUtilizedParameter.DepthChanged += new EventHandler(VehiclesUtilizedParameter_DepthChanged);
334    }
335
336
337    void OverloadParameter_DepthChanged(object sender, EventArgs e) {
338      BestAverageWorstCalculator.OverloadParameter.Depth = OverloadParameter.Depth;
339      BestMemorizer.OverloadParameter.Depth = OverloadParameter.Depth;
340    }
341
342    void TardinessParameter_DepthChanged(object sender, EventArgs e) {
343      BestAverageWorstCalculator.TardinessParameter.Depth = TardinessParameter.Depth;
344      BestMemorizer.TardinessParameter.Depth = TardinessParameter.Depth;
345    }
346
347    void DistanceParameter_DepthChanged(object sender, EventArgs e) {
348      BestAverageWorstCalculator.DistanceParameter.Depth = DistanceParameter.Depth;
349      BestMemorizer.DistanceParameter.Depth = DistanceParameter.Depth;
350    }
351
352    void TravelTimeParameter_DepthChanged(object sender, EventArgs e) {
353      BestAverageWorstCalculator.TravelTimeParameter.Depth = TravelTimeParameter.Depth;
354      BestMemorizer.TravelTimeParameter.Depth = DistanceParameter.Depth;
355    }
356
357    void VehiclesUtilizedParameter_DepthChanged(object sender, EventArgs e) {
358      BestAverageWorstCalculator.VehiclesUtilizedParameter.Depth = VehiclesUtilizedParameter.Depth;
359      BestMemorizer.VehiclesUtilizedParameter.Depth = VehiclesUtilizedParameter.Depth;
360    }
361  }
362}
Note: See TracBrowser for help on using the repository browser.