Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/22/17 01:32:13 (6 years ago)
Author:
abeham
Message:

#1614: fixed bugs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms/3.3/GRASP.cs

    r15553 r15558  
    108108    }
    109109    [Storable]
    110     private FixedValueParameter<PercentValue> minimumDifferenceParameter;
    111     public IFixedValueParameter<PercentValue> MinimumDifferenceParameter {
     110    private FixedValueParameter<IntValue> minimumDifferenceParameter;
     111    public IFixedValueParameter<IntValue> MinimumDifferenceParameter {
    112112      get { return minimumDifferenceParameter; }
    113113    }
     
    121121      set { seedParameter.Value.Value = value; }
    122122    }
     123    public int EliteSetSize {
     124      get { return eliteSetSizeParameter.Value.Value; }
     125      set { eliteSetSizeParameter.Value.Value = value; }
     126    }
    123127    public int MinimumEliteSetSize {
    124128      get { return minimiumEliteSetSizeParameter.Value.Value; }
    125129      set { minimiumEliteSetSizeParameter.Value.Value = value; }
    126130    }
    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; }
    130138    }
    131139    public double CandidateSizeFactor {
     
    141149      set { oneMoveProbabilityParameter.Value.Value = value; }
    142150    }
    143     public double MinimumDifference {
     151    public int MinimumDifference {
    144152      get { return minimumDifferenceParameter.Value.Value; }
    145153      set { minimumDifferenceParameter.Value.Value = value; }
     
    174182      Parameters.Add(maximumCandidateListSizeParameter = new FixedValueParameter<IntValue>("MaximumCandidateListSize", "The maximum number of candidates that should be found in each step.", new IntValue(10)));
    175183      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)));
    177185      Problem = new GQAP();
    178186    }
     
    252260            var fit = Problem.ProblemInstance.ToSingleObjective(pi_prime.Evaluation);
    253261            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 1
     262            if (similarities.Max() <= 1.0 - (MinimumDifference / (double)pi_prime.Assignment.Length)) { // cond. 2 of line 13 in Algorithm 1
    255263              var replacement = context.Population.Select((v, i) => new { V = v, Index = i })
    256264                                          .Where(x => x.V.Fitness >= fit).ToArray();
     
    277285        }
    278286
    279         context.Iterations++;
    280 
    281287        IResult result;
    282288        if (Results.TryGetValue("Iterations", out result))
     
    294300
    295301        context.RunOperator(analyzerParameter.Value, context.Scope, cancellationToken);
     302
     303        context.Iterations++;
    296304      }
    297305    }
     
    299307    private bool IsSufficientlyDifferent(IntegerVector vec) {
    300308      return context.Population.All(x =>
    301         HammingSimilarityCalculator.CalculateSimilarity(x.Solution.Assignment, vec) <= 1.0 - MinimumDifference
     309        HammingSimilarityCalculator.CalculateSimilarity(vec, x.Solution.Assignment) <= 1.0 - (MinimumDifference / (double)vec.Length)
    302310      );
    303311    }
     
    329337      var localSearchEvaluations = 0;
    330338      ApproximateLocalSearch.Apply(context.Random, pi_prime, MaximumCandidateListSize,
    331         OneMoveProbability, 1000, Problem.ProblemInstance, out localSearchEvaluations);
     339        OneMoveProbability, MaximumLocalSearchIterations, Problem.ProblemInstance, out localSearchEvaluations);
    332340      context.EvaluatedSolutions += localSearchEvaluations;
    333341    }
    334342
    335343    private bool StoppingCriterion() {
    336       return context.Iterations > MaximumIterationsParameter.Value.Value;
     344      return context.Iterations > MaximumIterations;
    337345    }
    338346  }
Note: See TracChangeset for help on using the changeset viewer.