Changeset 15558 for branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms/3.3/GRASP.cs
- Timestamp:
- 12/22/17 01:32:13 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms/3.3/GRASP.cs
r15553 r15558 108 108 } 109 109 [Storable] 110 private FixedValueParameter< PercentValue> minimumDifferenceParameter;111 public IFixedValueParameter< PercentValue> MinimumDifferenceParameter {110 private FixedValueParameter<IntValue> minimumDifferenceParameter; 111 public IFixedValueParameter<IntValue> MinimumDifferenceParameter { 112 112 get { return minimumDifferenceParameter; } 113 113 } … … 121 121 set { seedParameter.Value.Value = value; } 122 122 } 123 public int EliteSetSize { 124 get { return eliteSetSizeParameter.Value.Value; } 125 set { eliteSetSizeParameter.Value.Value = value; } 126 } 123 127 public int MinimumEliteSetSize { 124 128 get { return minimiumEliteSetSizeParameter.Value.Value; } 125 129 set { minimiumEliteSetSizeParameter.Value.Value = value; } 126 130 } 127 public int EliteSetSize { 128 get { return eliteSetSizeParameter.Value.Value; } 129 set { eliteSetSizeParameter.Value.Value = value; } 131 public int MaximumIterations { 132 get { return maximumIterationsParameter.Value.Value; } 133 set { maximumIterationsParameter.Value.Value = value; } 134 } 135 public int MaximumLocalSearchIterations { 136 get { return maximumLocalSearchIterationsParameter.Value.Value; } 137 set { maximumLocalSearchIterationsParameter.Value.Value = value; } 130 138 } 131 139 public double CandidateSizeFactor { … … 141 149 set { oneMoveProbabilityParameter.Value.Value = value; } 142 150 } 143 public doubleMinimumDifference {151 public int MinimumDifference { 144 152 get { return minimumDifferenceParameter.Value.Value; } 145 153 set { minimumDifferenceParameter.Value.Value = value; } … … 174 182 Parameters.Add(maximumCandidateListSizeParameter = new FixedValueParameter<IntValue>("MaximumCandidateListSize", "The maximum number of candidates that should be found in each step.", new IntValue(10))); 175 183 Parameters.Add(oneMoveProbabilityParameter = new FixedValueParameter<PercentValue>("OneMoveProbability", "The probability for performing a 1-move, which is the opposite of performing a 2-move.", new PercentValue(.5))); 176 Parameters.Add(minimumDifferenceParameter = new FixedValueParameter< PercentValue>("MinimumDifference", "The minimum amount of difference between two solutions so that they are both accepted in the elite set.", new PercentValue(1e-7)));184 Parameters.Add(minimumDifferenceParameter = new FixedValueParameter<IntValue>("MinimumDifference", "The minimum amount of difference between two solutions so that they are both accepted in the elite set.", new IntValue(4))); 177 185 Problem = new GQAP(); 178 186 } … … 252 260 var fit = Problem.ProblemInstance.ToSingleObjective(pi_prime.Evaluation); 253 261 double[] similarities = context.Population.Select(x => HammingSimilarityCalculator.CalculateSimilarity(x.Solution.Assignment, pi_prime.Assignment)).ToArray(); 254 if (similarities.Max() <= 1.0 - MinimumDifference) { // cond. 2 of line 13 in Algorithm 1262 if (similarities.Max() <= 1.0 - (MinimumDifference / (double)pi_prime.Assignment.Length)) { // cond. 2 of line 13 in Algorithm 1 255 263 var replacement = context.Population.Select((v, i) => new { V = v, Index = i }) 256 264 .Where(x => x.V.Fitness >= fit).ToArray(); … … 277 285 } 278 286 279 context.Iterations++;280 281 287 IResult result; 282 288 if (Results.TryGetValue("Iterations", out result)) … … 294 300 295 301 context.RunOperator(analyzerParameter.Value, context.Scope, cancellationToken); 302 303 context.Iterations++; 296 304 } 297 305 } … … 299 307 private bool IsSufficientlyDifferent(IntegerVector vec) { 300 308 return context.Population.All(x => 301 HammingSimilarityCalculator.CalculateSimilarity( x.Solution.Assignment, vec) <= 1.0 - MinimumDifference309 HammingSimilarityCalculator.CalculateSimilarity(vec, x.Solution.Assignment) <= 1.0 - (MinimumDifference / (double)vec.Length) 302 310 ); 303 311 } … … 329 337 var localSearchEvaluations = 0; 330 338 ApproximateLocalSearch.Apply(context.Random, pi_prime, MaximumCandidateListSize, 331 OneMoveProbability, 1000, Problem.ProblemInstance, out localSearchEvaluations);339 OneMoveProbability, MaximumLocalSearchIterations, Problem.ProblemInstance, out localSearchEvaluations); 332 340 context.EvaluatedSolutions += localSearchEvaluations; 333 341 } 334 342 335 343 private bool StoppingCriterion() { 336 return context.Iterations > MaximumIterations Parameter.Value.Value;344 return context.Iterations > MaximumIterations; 337 345 } 338 346 }
Note: See TracChangeset
for help on using the changeset viewer.