Free cookie consent management tool by TermsFeed Policy Generator

Changeset 15490 for branches


Ignore:
Timestamp:
12/04/17 23:00:03 (6 years ago)
Author:
abeham
Message:

#1614:

  • branched optimization
  • adapted references
  • renamed plugin
Location:
branches/GeneralizedQAP
Files:
1 added
4 deleted
22 edited
1 copied
1 moved

Legend:

Unmodified
Added
Removed
  • branches/GeneralizedQAP

    • Property svn:ignore
      •  

        old new  
        22TestResults
        33*.user
         4.vs
  • branches/GeneralizedQAP/GeneralizedQAP.sln

    r13418 r15490  
    11
    22Microsoft Visual Studio Solution File, Format Version 12.00
    3 # Visual Studio 2013
    4 VisualStudioVersion = 12.0.40629.0
     3# Visual Studio 15
     4VisualStudioVersion = 15.0.27004.2002
    55MinimumVisualStudioVersion = 10.0.40219.1
    66Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.GeneralizedQuadraticAssignment-3.3", "HeuristicLab.Problems.GeneralizedQuadraticAssignment\3.3\HeuristicLab.Problems.GeneralizedQuadraticAssignment-3.3.csproj", "{C739E6D2-5680-4804-A810-8017DA0C238F}"
     
    88Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views-3.3", "HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views\3.3\HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views-3.3.csproj", "{BFAAC00C-B884-458D-BD74-98C94BFAFA41}"
    99EndProject
    10 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms.3.3", "HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms\3.3\HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms.3.3.csproj", "{53AB48BF-532F-417D-B98B-745105BB447A}"
     10Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Algorithms.GRASP-3.3", "HeuristicLab.Algorithms.GRASP\3.3\HeuristicLab.Algorithms.GRASP-3.3.csproj", "{53AB48BF-532F-417D-B98B-745105BB447A}"
    1111EndProject
    1212Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.GeneralizedQuadraticAssignment.Common-3.3", "HeuristicLab.Problems.GeneralizedQuadraticAssignment.Common\3.3\HeuristicLab.Problems.GeneralizedQuadraticAssignment.Common-3.3.csproj", "{DA367BE5-4F53-4243-933B-32AAB86189D5}"
     
    1515EndProject
    1616Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{7275B9B0-0E8D-471E-9F64-067E1F85BB71}"
    17   ProjectSection(SolutionItems) = preProject
    18     GeneralizedQAP.vsmdi = GeneralizedQAP.vsmdi
    19     Local.testsettings = Local.testsettings
    20     TraceAndTestImpact.testsettings = TraceAndTestImpact.testsettings
    21   EndProjectSection
     17EndProject
     18Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Optimization-3.3", "HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj", "{14AB8D24-25BC-400C-A846-4627AA945192}"
    2219EndProject
    2320Global
     
    9188    {68C6C157-08DA-414F-9256-CCCA13038399}.Release|x86.ActiveCfg = Release|Any CPU
    9289    {68C6C157-08DA-414F-9256-CCCA13038399}.Release|x86.Build.0 = Release|Any CPU
     90    {14AB8D24-25BC-400C-A846-4627AA945192}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
     91    {14AB8D24-25BC-400C-A846-4627AA945192}.Debug|Any CPU.Build.0 = Debug|Any CPU
     92    {14AB8D24-25BC-400C-A846-4627AA945192}.Debug|x64.ActiveCfg = Debug|x64
     93    {14AB8D24-25BC-400C-A846-4627AA945192}.Debug|x64.Build.0 = Debug|x64
     94    {14AB8D24-25BC-400C-A846-4627AA945192}.Debug|x86.ActiveCfg = Debug|x86
     95    {14AB8D24-25BC-400C-A846-4627AA945192}.Debug|x86.Build.0 = Debug|x86
     96    {14AB8D24-25BC-400C-A846-4627AA945192}.Release|Any CPU.ActiveCfg = Release|Any CPU
     97    {14AB8D24-25BC-400C-A846-4627AA945192}.Release|Any CPU.Build.0 = Release|Any CPU
     98    {14AB8D24-25BC-400C-A846-4627AA945192}.Release|x64.ActiveCfg = Release|x64
     99    {14AB8D24-25BC-400C-A846-4627AA945192}.Release|x64.Build.0 = Release|x64
     100    {14AB8D24-25BC-400C-A846-4627AA945192}.Release|x86.ActiveCfg = Release|x86
     101    {14AB8D24-25BC-400C-A846-4627AA945192}.Release|x86.Build.0 = Release|x86
    93102  EndGlobalSection
    94103  GlobalSection(SolutionProperties) = preSolution
    95104    HideSolutionNode = FALSE
    96105  EndGlobalSection
    97   GlobalSection(TestCaseManagementSettings) = postSolution
    98     CategoryFile = GeneralizedQAP.vsmdi
     106  GlobalSection(ExtensibilityGlobals) = postSolution
     107    SolutionGuid = {B0BBF50B-4E62-4BAB-A730-881208150933}
    99108  EndGlobalSection
    100109EndGlobal
  • branches/GeneralizedQAP/HeuristicLab.Algorithms.GRASP/3.3/GRASPWithPathRelinking.cs

    r11505 r15490  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2017 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    3434using HeuristicLab.Random;
    3535
    36 namespace HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms {
     36namespace HeuristicLab.Algorithms.GRASP {
    3737  /// <summary>
    3838  /// The algorithm combines the Greedy Randomized Adaptive Search Procedure (GRASP) with Path Relinking and is described in Mateus, G., Resende, M., and Silva, R. 2011. GRASP with path-relinking for the generalized quadratic assignment problem. Journal of Heuristics 17, Springer Netherlands, pp. 527-565.
  • branches/GeneralizedQAP/HeuristicLab.Algorithms.GRASP/3.3/GRASPWithPathRelinkingMainLoop.cs

    r7478 r15490  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2017 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    3333using HeuristicLab.Selection;
    3434
    35 namespace HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms {
     35namespace HeuristicLab.Algorithms.GRASP {
    3636  [Item("GRASP+PR MainLoop", "The main loop that implements the behavior of the GRASP+PR algorithm.")]
    3737  [StorableClass]
  • branches/GeneralizedQAP/HeuristicLab.Algorithms.GRASP/3.3/Plugin.cs.frame

    r13418 r15490  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2017 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2222using HeuristicLab.PluginInfrastructure;
    2323
    24 namespace HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms {
    25   [Plugin("HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms", "3.3.13.$WCREV$")]
    26   [PluginFile("HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms-3.3.dll", PluginFileType.Assembly)]
     24namespace HeuristicLab.Algorithms.GRASP {
     25  [Plugin("HeuristicLab.Algorithms.GRASP", "3.3.14.$WCREV$")]
     26  [PluginFile("HeuristicLab.Algorithms.GRASP-3.3.dll", PluginFileType.Assembly)]
    2727  [PluginDependency("HeuristicLab.Analysis", "3.3")]
    2828  [PluginDependency("HeuristicLab.Collections", "3.3")]
     
    3838  [PluginDependency("HeuristicLab.Random", "3.3")]
    3939  [PluginDependency("HeuristicLab.Selection", "3.3")]
    40   public class HeuristicLabProblemsGeneralizedQuadraticAssignmentAlgorithmsPlugin : PluginBase {
     40  public class HeuristicLabAlgorithmsGRASPPlugin : PluginBase {
    4141  }
    4242}
  • branches/GeneralizedQAP/HeuristicLab.Algorithms.GRASP/3.3/Properties/AssemblyInfo.cs.frame

    r7413 r15490  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2017 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2727// set of attributes. Change these attribute values to modify the information
    2828// associated with an assembly.
    29 [assembly: AssemblyTitle("HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms")]
     29[assembly: AssemblyTitle("HeuristicLab.Algorithms.GRASP")]
    3030[assembly: AssemblyDescription("")]
    3131[assembly: AssemblyConfiguration("")]
    3232[assembly: AssemblyCompany("HEAL")]
    3333[assembly: AssemblyProduct("HeuristicLab")]
    34 [assembly: AssemblyCopyright("(c) 2002-2012 HEAL")]
     34[assembly: AssemblyCopyright("(c) 2002-2017 HEAL")]
    3535[assembly: AssemblyTrademark("")]
    3636[assembly: AssemblyCulture("")]
     
    5555// [assembly: AssemblyVersion("1.0.*")]
    5656[assembly: AssemblyVersion("3.3.0.0")]
    57 [assembly: AssemblyFileVersion("3.3.6.$WCREV$")]
     57[assembly: AssemblyFileVersion("3.3.14.$WCREV$")]
  • branches/GeneralizedQAP/HeuristicLab.Optimization/3.3/BasicProblems/BasicProblem.cs

    r14185 r15490  
    6565    protected BasicProblem()
    6666      : base() {
    67       Parameters.Add(new ValueParameter<TEncoding>("Encoding", "Describes the configuration of the encoding, what the variables are called, what type they are and their bounds if any."));
     67      var encodingParameter = new ValueParameter<TEncoding>("Encoding", "Describes the configuration of the encoding, what the variables are called, what type they are and their bounds if any.");
     68      // ABE: disable showing the encoding itself in the run by default as it wastes a lot of space
     69      //      note that parameters of the encoding might still show up in the run
     70      encodingParameter.GetsCollected = false;
     71      Parameters.Add(encodingParameter);
    6872      oldEncoding = Encoding;
    6973      if(Encoding != null) Parameterize();
  • branches/GeneralizedQAP/HeuristicLab.Optimization/3.3/BasicProblems/Encoding.cs

    r14185 r15490  
    9292    protected Encoding(string name)
    9393      : base(name) {
    94       Parameters.Add(new FixedValueParameter<ReadOnlyItemSet<IOperator>>(name + ".Operators", "The operators that the encoding specifies.", encodingOperators.AsReadOnly()));
     94      var operatorsParam = new FixedValueParameter<ReadOnlyItemSet<IOperator>>(name + ".Operators", "The operators that the encoding specifies.", encodingOperators.AsReadOnly());
     95      // ABE: disable showing the operator collection in the run by default as it wastes a lot of space
     96      operatorsParam.GetsCollected = false;
     97      Parameters.Add(operatorsParam);
    9598    }
    9699
  • branches/GeneralizedQAP/HeuristicLab.Optimization/3.3/HeuristicLab.Optimization-3.3.csproj

    r15091 r15490  
    4141    <DebugType>full</DebugType>
    4242    <Optimize>false</Optimize>
    43     <OutputPath>$(SolutionDir)\bin\</OutputPath>
     43    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
    4444    <DefineConstants>DEBUG;TRACE</DefineConstants>
    4545    <ErrorReport>prompt</ErrorReport>
     
    5151    <DebugType>pdbonly</DebugType>
    5252    <Optimize>true</Optimize>
    53     <OutputPath>$(SolutionDir)\bin\</OutputPath>
     53    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
    5454    <DefineConstants>TRACE</DefineConstants>
    5555    <ErrorReport>prompt</ErrorReport>
     
    6262  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
    6363    <DebugSymbols>true</DebugSymbols>
    64     <OutputPath>$(SolutionDir)\bin\</OutputPath>
     64    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
    6565    <DefineConstants>DEBUG;TRACE</DefineConstants>
    6666    <DebugType>full</DebugType>
     
    7171  </PropertyGroup>
    7272  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
    73     <OutputPath>$(SolutionDir)\bin\</OutputPath>
     73    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
    7474    <DefineConstants>TRACE</DefineConstants>
    7575    <DocumentationFile>
     
    8484  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
    8585    <DebugSymbols>true</DebugSymbols>
    86     <OutputPath>$(SolutionDir)\bin\</OutputPath>
     86    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
    8787    <DefineConstants>DEBUG;TRACE</DefineConstants>
    8888    <DebugType>full</DebugType>
     
    9393  </PropertyGroup>
    9494  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
    95     <OutputPath>$(SolutionDir)\bin\</OutputPath>
     95    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
    9696    <DefineConstants>TRACE</DefineConstants>
    9797    <DocumentationFile>
     
    267267  </ItemGroup>
    268268  <ItemGroup>
    269     <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj">
    270       <Project>{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}</Project>
    271       <Name>HeuristicLab.Collections-3.3</Name>
    272       <Private>False</Private>
    273     </ProjectReference>
    274     <ProjectReference Include="..\..\HeuristicLab.Common.Resources\3.3\HeuristicLab.Common.Resources-3.3.csproj">
    275       <Project>{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}</Project>
    276       <Name>HeuristicLab.Common.Resources-3.3</Name>
    277       <Private>False</Private>
    278     </ProjectReference>
    279     <ProjectReference Include="..\..\HeuristicLab.Common\3.3\HeuristicLab.Common-3.3.csproj">
    280       <Project>{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}</Project>
    281       <Name>HeuristicLab.Common-3.3</Name>
    282       <Private>False</Private>
    283     </ProjectReference>
    284     <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
    285       <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
    286       <Name>HeuristicLab.Core-3.3</Name>
    287       <Private>False</Private>
    288     </ProjectReference>
    289     <ProjectReference Include="..\..\HeuristicLab.Data\3.3\HeuristicLab.Data-3.3.csproj">
    290       <Project>{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}</Project>
    291       <Name>HeuristicLab.Data-3.3</Name>
    292       <Private>False</Private>
    293     </ProjectReference>
    294     <ProjectReference Include="..\..\HeuristicLab.Operators\3.3\HeuristicLab.Operators-3.3.csproj">
    295       <Project>{23da7ff4-d5b8-41b6-aa96-f0561d24f3ee}</Project>
    296       <Name>HeuristicLab.Operators-3.3</Name>
    297       <Private>False</Private>
    298     </ProjectReference>
    299     <ProjectReference Include="..\..\HeuristicLab.Parameters\3.3\HeuristicLab.Parameters-3.3.csproj">
    300       <Project>{56F9106A-079F-4C61-92F6-86A84C2D84B7}</Project>
    301       <Name>HeuristicLab.Parameters-3.3</Name>
    302       <Private>False</Private>
    303     </ProjectReference>
    304     <ProjectReference Include="..\..\HeuristicLab.Persistence\3.3\HeuristicLab.Persistence-3.3.csproj">
    305       <Project>{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}</Project>
    306       <Name>HeuristicLab.Persistence-3.3</Name>
    307       <Private>False</Private>
    308     </ProjectReference>
    309     <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">
    310       <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
    311       <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
    312       <Private>False</Private>
    313     </ProjectReference>
     269    <Reference Include="HeuristicLab.Collections-3.3, Version=3.3.0.0">
     270      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Collections-3.3.dll</HintPath>
     271      <Private>False</Private>
     272    </Reference>
     273    <Reference Include="HeuristicLab.Common.Resources-3.3, Version=3.3.0.0">
     274      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Common.Resources-3.3.dll</HintPath>
     275      <Private>False</Private>
     276    </Reference>
     277    <Reference Include="HeuristicLab.Common-3.3, Version=3.3.0.0">
     278      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Common-3.3.dll</HintPath>
     279      <Private>False</Private>
     280    </Reference>
     281    <Reference Include="HeuristicLab.Core-3.3, Version=3.3.0.0">
     282      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Core-3.3.dll</HintPath>
     283      <Private>False</Private>
     284    </Reference>
     285    <Reference Include="HeuristicLab.Data-3.3, Version=3.3.0.0">
     286      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Data-3.3.dll</HintPath>
     287      <Private>False</Private>
     288    </Reference>
     289    <Reference Include="HeuristicLab.Operators-3.3, Version=3.3.0.0">
     290      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Operators-3.3.dll</HintPath>
     291      <Private>False</Private>
     292    </Reference>
     293    <Reference Include="HeuristicLab.Parameters-3.3, Version=3.3.0.0">
     294      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Parameters-3.3.dll</HintPath>
     295      <Private>False</Private>
     296    </Reference>
     297    <Reference Include="HeuristicLab.Persistence-3.3, Version=3.3.0.0">
     298      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Persistence-3.3.dll</HintPath>
     299      <Private>False</Private>
     300    </Reference>
     301    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
     302      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
     303      <Private>False</Private>
     304    </Reference>
    314305  </ItemGroup>
    315306  <ItemGroup>
  • branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Common/3.3

    • Property svn:ignore
      •  

        old new  
        11obj
        22Plugin.cs
         3*.user
  • branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Common/3.3/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Common-3.3.csproj

    r13418 r15490  
    6969      <Private>False</Private>
    7070    </Reference>
    71     <Reference Include="HeuristicLab.Optimization-3.3">
    72       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Optimization-3.3.dll</HintPath>
    73       <Private>False</Private>
    74     </Reference>
    7571    <Reference Include="HeuristicLab.Parameters-3.3">
    7672      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Parameters-3.3.dll</HintPath>
     
    10298    <None Include="HeuristicLab.snk" />
    10399  </ItemGroup>
     100  <ItemGroup>
     101    <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
     102      <Project>{14ab8d24-25bc-400c-a846-4627aa945192}</Project>
     103      <Name>HeuristicLab.Optimization-3.3</Name>
     104      <Private>False</Private>
     105    </ProjectReference>
     106  </ItemGroup>
    104107  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
    105108  <PropertyGroup>
  • branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Common/3.3/IntegerVectorEqualityComparer.cs

    r7432 r15490  
    2020#endregion
    2121
     22using System;
    2223using System.Collections.Generic;
    23 using HeuristicLab.Encodings.IntegerVectorEncoding;
    2424
    25 namespace HeuristicLab.Problems.GeneralizedQuadraticAssignment.Common {
    26   public class IntegerVectorEqualityComparer : EqualityComparer<IntegerVector> {
    27     public override bool Equals(IntegerVector x, IntegerVector y) {
    28       if (x == null || y == null) return false;
    29       if (x.Length != y.Length) return false;
    30 
    31       for (int i = 0; i < x.Length; i++)
    32         if (x[i] != y[i]) return false;
    33 
    34       return true;
    35     }
    36 
    37     public override int GetHashCode(IntegerVector obj) {
    38       return obj.GetHashCode();
    39     }
    40 
    41     public static double GetSimilarity(IntegerVector a, IntegerVector b) {
    42       int similar = 0;
    43       for (int i = 0; i < a.Length; i++) {
    44         if (a[i] == b[i]) similar++;
    45       }
    46       return similar / (double)a.Length;
    47     }
    48 
    49     public static double GetDistance(IntegerVector a, IntegerVector b) {
    50       return 1.0 - GetSimilarity(a, b);
    51     }
    52 
    53     public static IEnumerable<int> GetDifferingIndices(IntegerVector a, IntegerVector b) {
     25namespace HeuristicLab.Encodings.IntegerVectorEncoding {
     26  public static class IntegerVectorExtensions {
     27    public static IEnumerable<int> GetDifferingIndices(this IntegerVector a, IntegerVector b) {
     28      if (b == null) throw new ArgumentNullException("b");
    5429      for (int i = 0; i < a.Length; i++)
    5530        if (a[i] != b[i]) yield return i;
  • branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views-3.3.csproj

    r13418 r15490  
    8383      <Private>False</Private>
    8484    </Reference>
    85     <Reference Include="HeuristicLab.Optimization-3.3">
    86       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Optimization-3.3.dll</HintPath>
    87       <Private>False</Private>
    88     </Reference>
    8985    <Reference Include="HeuristicLab.Parameters-3.3">
    9086      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Parameters-3.3.dll</HintPath>
     
    113109  </ItemGroup>
    114110  <ItemGroup>
    115     <Compile Include="GQAPAssignmentArchiveView.cs" />
     111    <Compile Include="GQAPAssignmentArchiveView.cs">
     112      <SubType>UserControl</SubType>
     113    </Compile>
    116114    <Compile Include="GQAPAssignmentArchiveView.Designer.cs">
    117115      <DependentUpon>GQAPAssignmentArchiveView.cs</DependentUpon>
    118116    </Compile>
    119     <Compile Include="GQAPAssignmentView.cs" />
     117    <Compile Include="GQAPAssignmentView.cs">
     118      <SubType>UserControl</SubType>
     119    </Compile>
    120120    <Compile Include="GQAPAssignmentView.Designer.cs">
    121121      <DependentUpon>GQAPAssignmentView.cs</DependentUpon>
     
    130130  </ItemGroup>
    131131  <ItemGroup>
     132    <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
     133      <Project>{14ab8d24-25bc-400c-a846-4627aa945192}</Project>
     134      <Name>HeuristicLab.Optimization-3.3</Name>
     135      <Private>False</Private>
     136    </ProjectReference>
    132137    <ProjectReference Include="..\..\HeuristicLab.Problems.GeneralizedQuadraticAssignment\3.3\HeuristicLab.Problems.GeneralizedQuadraticAssignment-3.3.csproj">
    133138      <Project>{C739E6D2-5680-4804-A810-8017DA0C238F}</Project>
  • branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/Analyzers/GQAPPopulationDiversityAnalyzer.cs

    r7438 r15490  
    2727using HeuristicLab.Parameters;
    2828using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    29 using HeuristicLab.Problems.GeneralizedQuadraticAssignment.Common;
    3029
    3130namespace HeuristicLab.Problems.GeneralizedQuadraticAssignment.Analyzers {
     
    7170      for (int i = 0; i < solutions.Length - 1; i++)
    7271        for (int j = i + 1; j < solutions.Length; j++) {
    73           result[i, j] = IntegerVectorEqualityComparer.GetSimilarity(solutions[i], solutions[j]);
     72          result[i, j] = HammingSimilarityCalculator.CalculateSimilarity(solutions[i], solutions[j]);
    7473          result[j, i] = result[i, j];
    7574        }
  • branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/GeneralizedQuadraticAssignmentProblem.cs

    r7970 r15490  
    3535
    3636namespace HeuristicLab.Problems.GeneralizedQuadraticAssignment {
    37   [Item("Generalized Quadratic Assignment Problem", "The Generalized Quadratic Assignment Problem (GQAP) is a generalization of the QAP in that it allows to assign multiple facilities (here called equipment) to a single location. The problem is described in Lee, C.G., and Ma, Z. 2003. The Generalized Quadratic Assignment Problem. Technical Report M5S 3G8, University of Toronto, Canada.")]
     37  [Item("Generalized Quadratic Assignment Problem (GQAP)", "The Generalized Quadratic Assignment Problem (GQAP) is a generalization of the QAP in that it allows to assign multiple facilities (here called equipment) to a single location. The problem is described in Lee, C.G., and Ma, Z. 2003. The Generalized Quadratic Assignment Problem. Technical Report M5S 3G8, University of Toronto, Canada.")]
    3838  [Creatable("Problems")]
    3939  [StorableClass]
  • branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/HeuristicLab.Problems.GeneralizedQuadraticAssignment-3.3.csproj

    r13418 r15490  
    7171    <Reference Include="HeuristicLab.Operators-3.3">
    7272      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Operators-3.3.dll</HintPath>
    73       <Private>False</Private>
    74     </Reference>
    75     <Reference Include="HeuristicLab.Optimization-3.3">
    76       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Optimization-3.3.dll</HintPath>
    7773      <Private>False</Private>
    7874    </Reference>
     
    184180  </ItemGroup>
    185181  <ItemGroup>
     182    <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
     183      <Project>{14ab8d24-25bc-400c-a846-4627aa945192}</Project>
     184      <Name>HeuristicLab.Optimization-3.3</Name>
     185      <Private>False</Private>
     186    </ProjectReference>
    186187    <ProjectReference Include="..\..\HeuristicLab.Problems.GeneralizedQuadraticAssignment.Common\3.3\HeuristicLab.Problems.GeneralizedQuadraticAssignment.Common-3.3.csproj">
    187188      <Project>{DA367BE5-4F53-4243-933B-32AAB86189D5}</Project>
  • branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/HeuristicLab.Problems.GeneralizedQuadraticAssignment-3.3.csproj.user

    r11505 r15490  
    33  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
    44    <StartAction>Program</StartAction>
    5     <StartProgram>C:\Users\P40311\Work\HL3\trunk\sources\bin\HeuristicLab 3.3.exe</StartProgram>
     5    <StartProgram>C:\Users\P40311\Work\core\trunk\sources\bin\HeuristicLab 3.3.exe</StartProgram>
    66    <StartArguments>/hideStarter /start:Optimizer</StartArguments>
    77  </PropertyGroup>
  • branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/Operators/Crossovers/CordeauCrossover.cs

    r7970 r15490  
    2121
    2222using System;
     23using System.Linq;
    2324using HeuristicLab.Common;
    2425using HeuristicLab.Core;
     
    2728using HeuristicLab.Parameters;
    2829using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     30using HeuristicLab.Random;
    2931
    3032namespace HeuristicLab.Problems.GeneralizedQuadraticAssignment {
     
    7476    public IValueLookupParameter<IGQAPEvaluator> EvaluatorParameter {
    7577      get { return (IValueLookupParameter<IGQAPEvaluator>)Parameters["Evaluator"]; }
     78    }
     79    public ILookupParameter<IntValue> EvaluatedSolutionsParameter {
     80      get { return (ILookupParameter<IntValue>)Parameters["EvaluatedSolutions"]; }
    7681    }
    7782
     
    96101      Parameters.Add(new ValueLookupParameter<DoubleValue>("ExpectedRandomQuality", GeneralizedQuadraticAssignmentProblem.ExpectedRandomQualityDescription));
    97102      Parameters.Add(new ValueLookupParameter<IGQAPEvaluator>("Evaluator", "The evaluator used to evaluate solutions."));
     103      Parameters.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "The number of evaluated solutions."));
    98104    }
    99105
     
    107113      DoubleMatrix weights, DoubleMatrix distances, DoubleMatrix installationCosts,
    108114      DoubleArray demands, DoubleArray capacities,
    109       double transportationCosts, double expectedRandomQuality, IGQAPEvaluator evaluator) {
    110       var mediana = Inizialize(distances);
     115      double transportationCosts, double expectedRandomQuality, IGQAPEvaluator evaluator, IntValue evaluatedSolutions) {
     116      var medianDistances = Enumerable.Range(0, distances.Rows).Select(x => distances.GetRow(x).Median()).ToArray();
     117
    111118      int m = capacities.Length;
    112119      int n = demands.Length;
    113       int i, j, k, ik1, ik2;
    114       int control;
    115       bool nofound = false, onefound = false;
    116       double fbest;
    117       IntegerVector son = new IntegerVector(parent1.Length), result = null;
     120     
     121      bool onefound = false;
     122      double fbest, fbestAttempt = maximization.Value ? double.MinValue : double.MaxValue;
     123      IntegerVector bestAttempt = null;
     124      IntegerVector result = null;
    118125
    119126      fbest = quality1.Value;
     
    126133      }
    127134      var cap = new double[m];
    128       for (i = 0; i < m; i++) {
    129 
    130         for (j = 0; j < m; j++) cap[j] = 0;
    131 
    132         for (k = 0; k < n; k++) {
    133           son[k] = -1;
    134           ik1 = parent1[k];
    135           ik2 = parent2[k];
    136           if (distances[i, ik1] < mediana[i]) {
    137             son[k] = ik1;
    138             cap[ik1] += demands[k];
    139           } else if (distances[i, ik2] > mediana[i]) {
    140             son[k] = ik2;
    141             cap[ik2] += demands[k];
    142           }
    143         }
    144         k = 0;
    145         nofound = false;
    146         while (k < n && !nofound) {
    147           if (son[k] < 0) {
    148             control = 0;
    149             do {
    150               j = random.Next(m);
    151               control++;
    152             }
    153             while (cap[j] + demands[k] > capacities[j] && control < 3 * m);
    154             if (cap[j] + demands[k] <= capacities[j]) {
    155               son[k] = j;
    156               cap[j] += demands[k];
    157             } else {
    158               nofound = true;
    159             }
    160           }
    161           k++;
    162         }
    163         if (!nofound) {
    164           double sonQual = evaluator.Evaluate(son, weights, distances, installationCosts, demands, capacities, transportationCosts, expectedRandomQuality);
    165           if (sonQual < fbest) {
    166             fbest = sonQual;
    167             result = (IntegerVector)son.Clone();
     135      for (var i = 0; i < m; i++) {
     136        int unassigned;
     137        Array.Clear(cap, 0, m);
     138        var child = Merge(parent1, parent2, distances, demands, medianDistances, m, n, i, cap, out unassigned);
     139        if (unassigned > 0)
     140          TryRandomAssignment(random, demands, capacities, m, n, cap, child, ref unassigned);
     141        if (unassigned == 0) {
     142          var childFit = evaluator.Evaluate(child, weights, distances, installationCosts, demands, capacities, transportationCosts, expectedRandomQuality);
     143          evaluatedSolutions.Value++;
     144          if (maximization.Value && childFit >= fbest
     145            || !maximization.Value && childFit <= fbest) {
     146            fbest = childFit;
     147            result = child;
    168148            onefound = true;
    169149          }
    170         }/* else {
    171           abortedmerge++;
    172           printf("aborted merge %8d\n", abortedmerge);
    173         } */
    174       }
    175       if (!onefound && !nofound) {
    176         i = random.Next(m);
    177         for (j = 0; j < m; j++) {
    178           cap[j] = 0.0;
    179         }
    180         for (k = 0; k < n; k++) {
    181           son[k] = -1;
    182           ik1 = parent1[k];
    183           ik2 = parent2[k];
    184           if (distances[i, ik1] < mediana[i]) {
    185             son[k] = ik1;
    186             cap[ik1] += demands[k];
    187           } else if (distances[i, ik2] > mediana[i]) {
    188             son[k] = ik2;
    189             cap[ik2] += demands[k];
     150          if (!onefound && (maximization.Value && fbestAttempt < childFit || !maximization.Value && fbestAttempt > childFit)) {
     151            bestAttempt = child;
     152            fbestAttempt = childFit;
    190153          }
    191154        }
    192         for (k = 0; k < n; k++) {
    193           if (son[k] < 0) {
    194             j = random.Next(m);
    195             son[k] = j;
    196             cap[j] += demands[k];
    197           }
    198         }
    199         if (result == null) {
    200           result = (IntegerVector)son.Clone();
     155      }
     156
     157      if (!onefound) {
     158        var i = random.Next(m);
     159        int unassigned;
     160        Array.Clear(cap, 0, m);
     161        var child = Merge(parent1, parent2, distances, demands, medianDistances, m, n, i, cap, out unassigned);
     162        RandomAssignment(random, demands, capacities, m, n, cap, child, ref unassigned);
     163
     164        var childFit = evaluator.Evaluate(child, weights, distances, installationCosts, demands, capacities, transportationCosts, expectedRandomQuality);
     165        evaluatedSolutions.Value++;
     166        if (childFit < fbest) {
     167          fbest = childFit;
     168          result = child;
    201169          onefound = true;
    202         } else {
    203           double sonQual = evaluator.Evaluate(son, weights, distances, installationCosts, demands, capacities, transportationCosts, expectedRandomQuality);
    204           if (sonQual < fbest) {
    205             fbest = sonQual;
    206             result = (IntegerVector)son.Clone();
    207             onefound = true;
    208           }
    209         }
     170        }
     171
     172        if (!onefound && (maximization.Value && fbestAttempt < childFit || !maximization.Value && fbestAttempt > childFit)) {
     173          bestAttempt = child;
     174          fbestAttempt = childFit;
     175        }
     176      }
    210177        /*if (tabufix(&son, 0.5 * sqrt(n * m), round(n * m * log10(n)), &tabufix_it)) {
    211178          solution_cost(&son);
     
    216183            merge_fixed++;
    217184          }*/
    218       }
    219       if (result == null) throw new InvalidOperationException("Child could not be created.");
    220       return result;
     185      return result ?? bestAttempt;
     186    }
     187
     188    private static IntegerVector Merge(IntegerVector p1, IntegerVector p2,
     189      DoubleMatrix distances, DoubleArray demands, double[] mediana,
     190      int m, int n, int i, double[] cap, out int unassigned) {
     191      unassigned = n;
     192      var child = new IntegerVector(n);
     193      for (var k = 0; k < n; k++) {
     194        child[k] = -1;
     195        var ik1 = p1[k];
     196        var ik2 = p2[k];
     197        if (distances[i, ik1] < mediana[i]) {
     198          child[k] = ik1;
     199          cap[ik1] += demands[k];
     200          unassigned--;
     201        } else if (distances[i, ik2] > mediana[i]) {
     202          child[k] = ik2;
     203          cap[ik2] += demands[k];
     204          unassigned--;
     205        };
     206      }
     207      return child;
     208    }
     209
     210    private static bool TryRandomAssignment(IRandom random, DoubleArray demands, DoubleArray capacities, int m, int n, double[] cap, IntegerVector child, ref int unassigned) {
     211      var unbiasedOrder = Enumerable.Range(0, n).Shuffle(random).ToList();
     212      for (var idx = 0; idx < n; idx++) {
     213        var k = unbiasedOrder[idx];
     214        if (child[k] < 0) {
     215          var feasibleInserts = Enumerable.Range(0, m)
     216            .Select((v, i) => new { Pos = i, Slack = capacities[i] - cap[i] })
     217            .Where(x => x.Slack >= demands[k]).ToList();
     218          if (feasibleInserts.Count == 0) return false;
     219          var j = feasibleInserts.SampleRandom(random).Pos;
     220          child[k] = j;
     221          cap[j] += demands[k];
     222          unassigned--;
     223        }
     224      }
     225      return true;
     226    }
     227
     228    private static void RandomAssignment(IRandom random, DoubleArray demands, DoubleArray capacities, int m, int n, double[] cap, IntegerVector child, ref int unassigned) {
     229      for (var k = 0; k < n; k++) {
     230        if (child[k] < 0) {
     231          var j = random.Next(m);
     232          child[k] = j;
     233          cap[j] += demands[k];
     234          unassigned--;
     235        }
     236      }
    221237    }
    222238
     
    232248        DemandsParameter.ActualValue, CapacitiesParameter.ActualValue,
    233249        TransportationCostsParameter.ActualValue.Value, ExpectedRandomQualityParameter.ActualValue.Value,
    234         EvaluatorParameter.ActualValue);
    235     }
    236 
    237     private static double[] Inizialize(DoubleMatrix distances) {
    238       int i, j;
    239       double mdi;
    240       double delta;
    241       int ilow, ihigh;
    242       bool balance;
    243       int operation;
    244       int count;
    245       int m = distances.Rows;
    246 
    247       double[] mediana = new double[distances.Rows];
    248 
    249       for (i = 0; i < m; i++) {
    250         mdi = 0;
    251         for (j = 0; j < m; j++) {
    252           mdi += distances[i, j];
    253         }
    254         mediana[i] = mdi / m;
    255         balance = false;
    256         delta = 1;
    257         operation = 0;
    258         count = 0;
    259         while (!balance && count < 200) {
    260           ilow = 0;
    261           ihigh = 0;
    262           count++;
    263           for (j = 0; j < m; j++) {
    264             if (distances[i, j] < mediana[i]) ilow++;
    265             else if (distances[i, j] > mediana[i]) ihigh++;
    266           }
    267           if (ilow > ((m + 1) / 2)) {
    268             mediana[i] = mediana[i] - delta;
    269             if (operation == 1) delta = delta / 2;
    270             operation = -1;
    271           } else if (ihigh > ((m + 1) / 2)) {
    272             mediana[i] = mediana[i] + delta;
    273             if (operation == -1) delta = delta / 2;
    274             operation = 1;
    275           } else balance = true;
    276         }
    277       }
    278       return mediana;
     250        EvaluatorParameter.ActualValue, EvaluatedSolutionsParameter.ActualValue);
    279251    }
    280252  }
  • branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/Operators/Crossovers/GQAPPathRelinking.cs

    r7970 r15490  
    2929using HeuristicLab.Parameters;
    3030using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    31 using HeuristicLab.Problems.GeneralizedQuadraticAssignment.Common;
    3231using HeuristicLab.Random;
    3332
     
    138137      var fix = new HashSet<int>();
    139138      var nonFix = new HashSet<int>(Enumerable.Range(0, demands.Length));
    140       var phi = new HashSet<int>(IntegerVectorEqualityComparer.GetDifferingIndices(pi_prime, target));
     139      var phi = new HashSet<int>((pi_prime.GetDifferingIndices(target)));
    141140
    142141      while (phi.Any()) {
     
    162161              for (int i = 0; i < B.Count; i++) {
    163162                if (IsBetter(maximization.Value, solution.Quality.Value, B[i].Quality.Value)) {
    164                   var similarity = IntegerVectorEqualityComparer.GetSimilarity(solution.Assignment, B[i].Assignment);
     163                  var similarity = HammingSimilarityCalculator.CalculateSimilarity(solution.Assignment, B[i].Assignment);
    165164                  if (similarity == 1.0) {
    166165                    mostSimilarIndex = -1;
     
    177176              bool contains = false;
    178177              foreach (var b in B) {
    179                 if (!IntegerVectorEqualityComparer.GetDifferingIndices(solution.Assignment, b.Assignment).Any()) {
     178                if (!solution.Assignment.GetDifferingIndices(b.Assignment).Any()) {
    180179                  contains = true;
    181180                  break;
     
    190189          if (maximization.Value) pi = B.SampleProportional(random, 1, B.Select(x => x.Quality.Value), false).First();
    191190          else pi = B.SampleProportional(random, 1, B.Select(x => 1.0 / x.Quality.Value), false).First();
    192           var diff = IntegerVectorEqualityComparer.GetDifferingIndices(pi.Assignment, target);
     191          var diff = pi.Assignment.GetDifferingIndices(target);
    193192          var I = phi.Except(diff);
    194193          var i = I.SampleRandom(random);
     
    204203          }
    205204        } else return result;
    206         phi = new HashSet<int>(IntegerVectorEqualityComparer.GetDifferingIndices(pi_prime, target));
     205        phi = new HashSet<int>(pi_prime.GetDifferingIndices(target));
    207206      }
    208207
  • branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/Operators/PopulationReducers/GQAPQualitySimilarityReducer.cs

    r7523 r15490  
    9898
    9999      foreach (var candidate in candidates) {
    100         double[] similarities = population.Select(x => IntegerVectorEqualityComparer.GetSimilarity(x.Solution, candidate.Solution)).ToArray();
     100        double[] similarities = population.Select(x => HammingSimilarityCalculator.CalculateSimilarity(x.Solution, candidate.Solution)).ToArray();
    101101        if (!similarities.Any()) {
    102102          population.Add(candidate);
  • branches/GeneralizedQAP/UnitTests/CordeauCrossoverTest.cs

    r7970 r15490  
    2121
    2222using System.Linq;
     23using System.Threading;
    2324using HeuristicLab.Data;
    24 using HeuristicLab.Encodings.IntegerVectorEncoding;
    2525using HeuristicLab.Problems.GeneralizedQuadraticAssignment;
    2626using HeuristicLab.Problems.Instances.CordeauGQAP;
     
    3434    public void CordeauCrossoverFunctionalityTest() {
    3535      var provider = new CordeauGQAPInstanceProvider();
    36       var instance = provider.LoadData(provider.GetDataDescriptors().First());
     36      var instance = provider.LoadData(provider.GetDataDescriptors().Single(x => x.Name == "20-15-75"));
    3737      var gqap = new GeneralizedQuadraticAssignmentProblem();
    3838      gqap.Load(instance);
     39      var evaluator = gqap.Evaluator;
    3940
    40       var random = new MersenneTwister();
    4141      for (int i = 0; i < 100; i++) {
    42         var parent1 = new IntegerVector(gqap.Demands.Length, random, 0, gqap.Capacities.Length);
    43         var parent2 = new IntegerVector(gqap.Demands.Length, random, 0, gqap.Capacities.Length);
     42        var random = new MersenneTwister((uint)i);
     43        var parent1 = GreedyRandomizedSolutionCreator.CreateSolution(random, gqap.Demands, gqap.Capacities, gqap.Evaluator, 100, true, CancellationToken.None);
     44        var parent2 = GreedyRandomizedSolutionCreator.CreateSolution(random, gqap.Demands, gqap.Capacities, gqap.Evaluator, 100, true, CancellationToken.None);
    4445
    4546        try {
     
    4950            parent2,
    5051            new DoubleValue(gqap.Evaluator.Evaluate(parent2, gqap.Weights, gqap.Distances, gqap.InstallationCosts, gqap.Demands, gqap.Capacities, gqap.TransportationCosts, gqap.ExpectedRandomQuality)),
    51             gqap.Weights, gqap.Distances, gqap.InstallationCosts, gqap.Demands, gqap.Capacities, gqap.TransportationCosts, gqap.ExpectedRandomQuality, gqap.Evaluator);
     52            gqap.Weights, gqap.Distances, gqap.InstallationCosts, gqap.Demands, gqap.Capacities, gqap.TransportationCosts, gqap.ExpectedRandomQuality, gqap.Evaluator,
     53            new IntValue(0));
    5254        } catch {
    5355          Assert.Fail("Error during crossover");
  • branches/GeneralizedQAP/UnitTests/UnitTests.csproj

    r13418 r15490  
    6565      <Private>True</Private>
    6666    </Reference>
    67     <Reference Include="HeuristicLab.Optimization-3.3">
    68       <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Optimization-3.3.dll</HintPath>
    69       <Private>True</Private>
    70     </Reference>
    7167    <Reference Include="HeuristicLab.Parameters-3.3">
    7268      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Parameters-3.3.dll</HintPath>
     
    115111  </ItemGroup>
    116112  <ItemGroup>
     113    <ProjectReference Include="..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
     114      <Project>{14ab8d24-25bc-400c-a846-4627aa945192}</Project>
     115      <Name>HeuristicLab.Optimization-3.3</Name>
     116    </ProjectReference>
    117117    <ProjectReference Include="..\HeuristicLab.Problems.GeneralizedQuadraticAssignment.Common\3.3\HeuristicLab.Problems.GeneralizedQuadraticAssignment.Common-3.3.csproj">
    118118      <Project>{DA367BE5-4F53-4243-933B-32AAB86189D5}</Project>
Note: See TracChangeset for help on using the changeset viewer.