Changeset 7970 for branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/Operators/LocalImprovers/ApproximateLocalSearch.cs
- Timestamp:
- 06/06/12 04:29:56 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/Operators/LocalImprovers/ApproximateLocalSearch.cs
r7523 r7970 37 37 public class ApproximateLocalSearch : SingleSuccessorOperator, IDemandsAwareGQAPOperator, ICapacitiesAwareGQAPOperator, 38 38 IWeightsAwareGQAPOperator, IDistancesAwareGQAPOperator, IInstallationCostsAwareGQAPOperator, 39 ITransportationCostsAwareGQAPOperator, IOverbookedCapacityPenaltyAwareGQAPOperator, 40 IAssignmentAwareGQAPOperator, IQualityAwareGQAPOperator, IGQAPLocalImprovementOperator, IStochasticOperator { 39 ITransportationCostsAwareGQAPOperator, IExpectedRandomQualityAwareGQAPOperator, 40 IAssignmentAwareGQAPOperator, IQualityAwareGQAPOperator, IGQAPLocalImprovementOperator, 41 IEvaluatorAwareGQAPOperator, IStochasticOperator { 41 42 public IProblem Problem { get; set; } 42 43 public Type ProblemType { … … 62 63 get { return (IValueLookupParameter<DoubleValue>)Parameters["TransportationCosts"]; } 63 64 } 64 public IValueLookupParameter<DoubleValue> OverbookedCapacityPenaltyParameter {65 get { return (IValueLookupParameter<DoubleValue>)Parameters[" OverbookedCapacityPenalty"]; }65 public IValueLookupParameter<DoubleValue> ExpectedRandomQualityParameter { 66 get { return (IValueLookupParameter<DoubleValue>)Parameters["ExpectedRandomQuality"]; } 66 67 } 67 68 public ILookupParameter<IntegerVector> AssignmentParameter { … … 100 101 public ILookupParameter<ResultCollection> ResultsParameter { 101 102 get { return (ILookupParameter<ResultCollection>)Parameters["Results"]; } 103 } 104 public IValueLookupParameter<IGQAPEvaluator> EvaluatorParameter { 105 get { return (IValueLookupParameter<IGQAPEvaluator>)Parameters["Evaluator"]; } 102 106 } 103 107 … … 113 117 Parameters.Add(new LookupParameter<DoubleMatrix>("InstallationCosts", GeneralizedQuadraticAssignmentProblem.InstallationCostsDescription)); 114 118 Parameters.Add(new ValueLookupParameter<DoubleValue>("TransportationCosts", GeneralizedQuadraticAssignmentProblem.TransportationCostsDescription)); 115 Parameters.Add(new ValueLookupParameter<DoubleValue>(" OverbookedCapacityPenalty", GeneralizedQuadraticAssignmentProblem.OverbookedCapacityPenaltyDescription));119 Parameters.Add(new ValueLookupParameter<DoubleValue>("ExpectedRandomQuality", GeneralizedQuadraticAssignmentProblem.ExpectedRandomQualityDescription)); 116 120 Parameters.Add(new LookupParameter<IntegerVector>("Assignment", GQAPSolutionCreator.AssignmentDescription)); 117 121 Parameters.Add(new LookupParameter<BoolValue>("Maximization", GeneralizedQuadraticAssignmentProblem.MaximizationDescription)); … … 126 130 Parameters.Add(new ValueLookupParameter<PercentValue>("OneMoveProbability", "The probability for performing a 1-move, which is the opposite of performing a 2-move.", new PercentValue(.5))); 127 131 Parameters.Add(new LookupParameter<ResultCollection>("Results", "The result collection that stores the results.")); 132 Parameters.Add(new ValueLookupParameter<IGQAPEvaluator>("Evaluator", "The evaluator that is used to evaluate GQAP solutions.")); 128 133 } 129 134 … … 157 162 IntValue maxCLS, IntValue maximumIterations, 158 163 DoubleMatrix weights, DoubleMatrix distances, DoubleMatrix installationCosts, DoubleArray demands, DoubleArray capacities, 159 DoubleValue transportationCosts, DoubleValue overbookedCapacityPenalty, PercentValue oneMoveProbability) { 164 DoubleValue transportationCosts, DoubleValue expectedRandomQuality, PercentValue oneMoveProbability, 165 IGQAPEvaluator evaluator) { 160 166 161 167 while (true) { … … 171 177 double moveFlowDistanceQuality, moveInstallationQuality, moveOverbookedCapacity; 172 178 GQAPNMoveEvaluator.Evaluate(move, assignment, weights, distances, installationCosts, 173 demands, capacities, out moveFlowDistanceQuality, out moveInstallationQuality, out moveOverbookedCapacity);174 double moveQuality = GQAPEvaluator.GetCombinedQuality(moveFlowDistanceQuality, moveInstallationQuality, moveOverbookedCapacity,175 transportationCosts.Value, overbookedCapacityPenalty.Value);179 demands, capacities, evaluator, out moveFlowDistanceQuality, out moveInstallationQuality, out moveOverbookedCapacity); 180 double moveQuality = evaluator.GetFitness(moveFlowDistanceQuality, moveInstallationQuality, moveOverbookedCapacity, 181 transportationCosts.Value, expectedRandomQuality.Value); 176 182 177 183 if (moveOverbookedCapacity <= 0.0 && moveQuality < 0.0) { … … 216 222 DemandsParameter.ActualValue, CapacitiesParameter.ActualValue, 217 223 TransportationCostsParameter.ActualValue, 218 OverbookedCapacityPenaltyParameter.ActualValue, 219 OneMoveProbabilityParameter.ActualValue); 224 ExpectedRandomQualityParameter.ActualValue, 225 OneMoveProbabilityParameter.ActualValue, 226 EvaluatorParameter.ActualValue); 220 227 return base.Apply(); 221 228 }
Note: See TracChangeset
for help on using the changeset viewer.