Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
09/14/12 18:58:15 (12 years ago)
Author:
gkronber
Message:

#1847 merged r8205:8635 from trunk into branch

Location:
branches/GP-MoveOperators
Files:
7 edited
3 copied

Legend:

Unmodified
Added
Removed
  • branches/GP-MoveOperators

  • branches/GP-MoveOperators/HeuristicLab.Problems.QuadraticAssignment

  • branches/GP-MoveOperators/HeuristicLab.Problems.QuadraticAssignment/3.3/HeuristicLab.Problems.QuadraticAssignment-3.3.csproj

    r8085 r8660  
    125125    <Compile Include="Interfaces\IQAPEvaluator.cs" />
    126126    <Compile Include="Interfaces\IQAPMoveEvaluator.cs" />
     127    <Compile Include="LocalImprovement\QAPExhaustiveInsertionLocalImprovement.cs" />
     128    <Compile Include="LocalImprovement\QAPStochasticScrambleLocalImprovement.cs" />
    127129    <Compile Include="LocalImprovement\QAPExhaustiveSwap2LocalImprovement.cs" />
     130    <Compile Include="LocalImprovement\QAPExhaustiveInversionLocalImprovement.cs" />
    128131    <Compile Include="QAPAssignment.cs" />
    129132    <Compile Include="QAPPermutationProximityCalculator.cs" />
     
    210213  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
    211214  <PropertyGroup>
    212     <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
     215   <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
    213216set ProjectDir=$(ProjectDir)
    214217set SolutionDir=$(SolutionDir)
     
    216219
    217220call PreBuildEvent.cmd</PreBuildEvent>
     221<PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
     222export ProjectDir=$(ProjectDir)
     223export SolutionDir=$(SolutionDir)
     224
     225$SolutionDir/PreBuildEvent.sh
     226</PreBuildEvent>
    218227  </PropertyGroup>
    219228  <PropertyGroup>
  • branches/GP-MoveOperators/HeuristicLab.Problems.QuadraticAssignment/3.3/LocalImprovement/QAPExhaustiveSwap2LocalImprovement.cs

    r8085 r8660  
    2121
    2222using System;
     23using System.Threading;
    2324using HeuristicLab.Common;
    2425using HeuristicLab.Core;
     
    4445      get { return problem; }
    4546      set { problem = (QuadraticAssignmentProblem)value; }
     47    }
     48
     49    public ILookupParameter<IntValue> LocalIterationsParameter {
     50      get { return (ILookupParameter<IntValue>)Parameters["LocalIterations"]; }
    4651    }
    4752
     
    8691    public QAPExhaustiveSwap2LocalImprovement()
    8792      : base() {
    88       Parameters.Add(new ValueLookupParameter<IntValue>("MaximumIterations", "The maximum amount of iterations that should be performed (note that this operator will abort earlier when a local optimum is reached.", new IntValue(10000)));
     93      Parameters.Add(new LookupParameter<IntValue>("LocalIterations", "The number of iterations that have already been performed."));
     94      Parameters.Add(new ValueLookupParameter<IntValue>("MaximumIterations", "The maximum amount of iterations that should be performed (note that this operator will abort earlier when a local optimum is reached).", new IntValue(10000)));
    8995      Parameters.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "The amount of evaluated solutions (here a move is counted only as 4/n evaluated solutions with n being the length of the permutation)."));
    9096      Parameters.Add(new LookupParameter<ResultCollection>("Results", "The collection where to store results."));
     
    100106    }
    101107
    102     public static double Improve(Permutation assignment, double quality, DoubleMatrix weights, DoubleMatrix distances, bool maximization, int maxIterations, out double evaluatedSolutions) {
    103       evaluatedSolutions = 0.0;
     108    // BackwardsCompatibility3.3
     109    #region Backwards compatible code, remove with 3.4
     110    [StorableHook(HookType.AfterDeserialization)]
     111    private void AfterDeserialization() {
     112      if (!Parameters.ContainsKey("LocalIterations"))
     113        Parameters.Add(new LookupParameter<IntValue>("LocalIterations", "The number of iterations that have already been performed."));
     114    }
     115    #endregion
     116
     117    public static void Improve(Permutation assignment, DoubleMatrix weights, DoubleMatrix distances, DoubleValue quality, IntValue localIterations, IntValue evaluatedSolutions, bool maximization, int maxIterations, CancellationToken cancellation) {
    104118      double evalSolPerMove = 4.0 / assignment.Length;
    105119
    106       for (int i = 0; i < maxIterations; i++) {
     120      for (int i = localIterations.Value; i < maxIterations; i++) {
    107121        Swap2Move bestMove = null;
    108122        double bestQuality = 0; // we have to make an improvement, so 0 is the baseline
     123        double evaluations = 0.0;
    109124        foreach (Swap2Move move in ExhaustiveSwap2MoveGenerator.Generate(assignment)) {
    110125          double moveQuality = QAPSwap2MoveEvaluator.Apply(assignment, move, weights, distances);
    111           evaluatedSolutions += evalSolPerMove;
     126          evaluations += evalSolPerMove;
    112127          if (maximization && moveQuality > bestQuality
    113128            || !maximization && moveQuality < bestQuality) {
     
    116131          }
    117132        }
     133        evaluatedSolutions.Value += (int)Math.Ceiling(evaluations);
    118134        if (bestMove == null) break;
    119135        Swap2Manipulator.Apply(assignment, bestMove.Index1, bestMove.Index2);
    120         quality += bestQuality;
     136        quality.Value += bestQuality;
     137        localIterations.Value++;
     138        cancellation.ThrowIfCancellationRequested();
    121139      }
    122       return quality;
    123140    }
    124141
    125142    public override IOperation Apply() {
    126       int maxIterations = MaximumIterationsParameter.ActualValue.Value;
    127       Permutation assignment = AssignmentParameter.ActualValue;
    128       bool maximization = MaximizationParameter.ActualValue.Value;
    129       DoubleMatrix weights = WeightsParameter.ActualValue;
    130       DoubleMatrix distances = DistancesParameter.ActualValue;
    131       double quality = QualityParameter.ActualValue.Value;
     143      var maxIterations = MaximumIterationsParameter.ActualValue.Value;
     144      var assignment = AssignmentParameter.ActualValue;
     145      var maximization = MaximizationParameter.ActualValue.Value;
     146      var weights = WeightsParameter.ActualValue;
     147      var distances = DistancesParameter.ActualValue;
     148      var quality = QualityParameter.ActualValue;
     149      var localIterations = LocalIterationsParameter.ActualValue;
     150      var evaluations = EvaluatedSolutionsParameter.ActualValue;
     151      if (localIterations == null) {
     152        localIterations = new IntValue(0);
     153        LocalIterationsParameter.ActualValue = localIterations;
     154      }
    132155
    133       double evaluations;
    134       QualityParameter.ActualValue.Value = Improve(assignment, quality, weights, distances, maximization, maxIterations, out evaluations);
    135       EvaluatedSolutionsParameter.ActualValue.Value += (int)Math.Ceiling(evaluations);
     156      Improve(assignment, weights, distances, quality, localIterations, evaluations, maximization, maxIterations, CancellationToken);
    136157      return base.Apply();
    137158    }
  • branches/GP-MoveOperators/HeuristicLab.Problems.QuadraticAssignment/3.3/Plugin.cs.frame

    r8085 r8660  
    2323
    2424namespace HeuristicLab.Problems.QuadraticAssignment {
    25   [Plugin("HeuristicLab.Problems.QuadraticAssignment", "3.3.6.$WCREV$")]
     25  [Plugin("HeuristicLab.Problems.QuadraticAssignment", "3.3.7.$WCREV$")]
    2626  [PluginFile("HeuristicLab.Problems.QuadraticAssignment-3.3.dll", PluginFileType.Assembly)]
    2727  [PluginDependency("HeuristicLab.Analysis", "3.3")]
  • branches/GP-MoveOperators/HeuristicLab.Problems.QuadraticAssignment/3.3/Properties/AssemblyInfo.cs.frame

    r7259 r8660  
    5555// [assembly: AssemblyVersion("1.0.*")]
    5656[assembly: AssemblyVersion("3.3.0.0")]
    57 [assembly: AssemblyFileVersion("3.3.6.$WCREV$")]
     57[assembly: AssemblyFileVersion("3.3.7.$WCREV$")]
  • branches/GP-MoveOperators/HeuristicLab.Problems.QuadraticAssignment/3.3/QuadraticAssignmentProblem.cs

    r8085 r8660  
    412412      Description = data.Description;
    413413      Load(weights, distances);
     414      if (data.BestKnownQuality.HasValue) BestKnownQuality = new DoubleValue(data.BestKnownQuality.Value);
    414415      EvaluateAndLoadAssignment(data.BestKnownAssignment);
    415416      OnReset();
     
    426427      Description = data.Description;
    427428      Load(weights, distances);
     429      if (data.BestKnownQuality.HasValue) BestKnownQuality = new DoubleValue(data.BestKnownQuality.Value);
    428430      EvaluateAndLoadAssignment(data.BestKnownTour);
    429431      OnReset();
Note: See TracChangeset for help on using the changeset viewer.