Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
11/16/15 21:28:59 (8 years ago)
Author:
abeham
Message:

#2444: merged r12810, r12835, r12855 to stable

File:
1 edited

Legend:

Unmodified
Added
Removed
  • stable/HeuristicLab.Problems.QuadraticAssignment.Algorithms/3.3/RobustTabooSeachOperator.cs

    r12009 r13191  
    2020#endregion
    2121
     22using System;
    2223using HeuristicLab.Common;
    2324using HeuristicLab.Core;
     
    9091    private ILookupParameter<BoolValue> AllMovesTabuParameter {
    9192      get { return (ILookupParameter<BoolValue>)Parameters["AllMovesTabu"]; }
     93    }
     94
     95    public ILookupParameter<IntValue> EvaluatedSolutionsParameter {
     96      get { return (ILookupParameter<IntValue>)Parameters["EvaluatedSolutions"]; }
     97    }
     98
     99    public ILookupParameter<DoubleValue> EvaluatedSolutionEquivalentsParameter {
     100      get { return (ILookupParameter<DoubleValue>)Parameters["EvaluatedSolutionEquivalents"]; }
    92101    }
    93102    #endregion
     
    117126      Parameters.Add(new ValueLookupParameter<IntValue>("AlternativeAspirationTenure", "The time t that a move will be remembered for the alternative aspiration condition."));
    118127      Parameters.Add(new LookupParameter<BoolValue>("AllMovesTabu", "Indicates that all moves are tabu."));
     128      Parameters.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "The number of evaluated solutions."));
     129      Parameters.Add(new LookupParameter<DoubleValue>("EvaluatedSolutionEquivalents", "The number of evaluated solution equivalents."));
    119130    }
    120131
     
    129140      if (!Parameters.ContainsKey("AllMovesTabu")) {
    130141        Parameters.Add(new LookupParameter<BoolValue>("AllMovesTabu", "Indicates that all moves are tabu."));
     142      }
     143      if (!Parameters.ContainsKey("EvaluatedSolutions")) {
     144        Parameters.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "The number of evaluated solutions."));
     145      }
     146      if (!Parameters.ContainsKey("EvaluatedSolutionEquivalents")) {
     147        Parameters.Add(new LookupParameter<DoubleValue>("EvaluatedSolutionEquivalents", "The number of evaluated solution equivalents."));
    131148      }
    132149      #endregion
     
    163180      bool already_aspired = false;
    164181
     182      double evaluations = EvaluatedSolutionEquivalentsParameter.ActualValue.Value;
    165183      foreach (Swap2Move move in ExhaustiveSwap2MoveGenerator.Generate(solution)) {
    166184        double moveQuality;
    167         if (lastMove == null)
     185        if (lastMove == null) {
    168186          moveQuality = QAPSwap2MoveEvaluator.Apply(solution, move, weights, distances);
    169         else if (allMovesTabu) moveQuality = moveQualityMatrix[move.Index1, move.Index2];
    170         else moveQuality = QAPSwap2MoveEvaluator.Apply(solution, move, moveQualityMatrix[move.Index1, move.Index2], weights, distances, lastMove);
     187          evaluations += 4.0 / solution.Length;
     188        } else if (allMovesTabu) moveQuality = moveQualityMatrix[move.Index1, move.Index2];
     189        else {
     190          moveQuality = QAPSwap2MoveEvaluator.Apply(solution, move, moveQualityMatrix[move.Index1, move.Index2], weights, distances, lastMove);
     191          if (move.Index1 == lastMove.Index1 || move.Index2 == lastMove.Index1 || move.Index1 == lastMove.Index2 || move.Index2 == lastMove.Index2)
     192            evaluations += 4.0 / solution.Length;
     193          else evaluations += 2.0 / (solution.Length * solution.Length);
     194        }
    171195
    172196        moveQualityMatrix[move.Index1, move.Index2] = moveQuality;
     
    200224        }
    201225      }
     226
     227      EvaluatedSolutionEquivalentsParameter.ActualValue.Value = evaluations;
     228      EvaluatedSolutionsParameter.ActualValue.Value = (int)Math.Ceiling(evaluations);
    202229
    203230      allMovesTabu = bestMove == null;
Note: See TracChangeset for help on using the changeset viewer.