Index: /branches/1614_GeneralizedQAP/GQAPSolver/App.config
===================================================================
--- /branches/1614_GeneralizedQAP/GQAPSolver/App.config	(revision 15890)
+++ /branches/1614_GeneralizedQAP/GQAPSolver/App.config	(revision 15890)
@@ -0,0 +1,6 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+    <startup> 
+        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
+    </startup>
+</configuration>
Index: /branches/1614_GeneralizedQAP/GQAPSolver/GQAPSolver.csproj
===================================================================
--- /branches/1614_GeneralizedQAP/GQAPSolver/GQAPSolver.csproj	(revision 15890)
+++ /branches/1614_GeneralizedQAP/GQAPSolver/GQAPSolver.csproj	(revision 15890)
@@ -0,0 +1,91 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{6EC9E8AB-3547-4EC2-901B-6ACD494BE434}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <RootNamespace>GQAPSolver</RootNamespace>
+    <AssemblyName>GQAPSolver</AssemblyName>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="CommandLine, Version=2.2.1.0, Culture=neutral, PublicKeyToken=de6f01bd326f8c32, processorArchitecture=MSIL">
+      <HintPath>..\packages\CommandLineParser.2.2.1\lib\net45\CommandLine.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Collections-3.3">
+      <HintPath>..\..\..\trunk\bin\HeuristicLab.Collections-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Common-3.3">
+      <HintPath>..\..\..\trunk\bin\HeuristicLab.Common-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Core-3.3">
+      <HintPath>..\..\..\trunk\bin\HeuristicLab.Core-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Data-3.3">
+      <HintPath>..\..\..\trunk\bin\HeuristicLab.Data-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.Instances-3.3">
+      <HintPath>..\..\..\trunk\bin\HeuristicLab.Problems.Instances-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.Instances.CordeauGQAP-3.3">
+      <HintPath>..\..\..\trunk\bin\HeuristicLab.Problems.Instances.CordeauGQAP-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Net.Http" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="App.config" />
+    <None Include="packages.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\HeuristicLab.Encodings.IntegerVectorEncoding\3.3\HeuristicLab.Encodings.IntegerVectorEncoding-3.3.csproj">
+      <Project>{ddfb14dd-2a85-493c-a52d-e69729bbaeb0}</Project>
+      <Name>HeuristicLab.Encodings.IntegerVectorEncoding-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
+      <Project>{14ab8d24-25bc-400c-a846-4627aa945192}</Project>
+      <Name>HeuristicLab.Optimization-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms\3.3\HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms-3.3.csproj">
+      <Project>{577239ec-7d7f-4505-a0a4-572e34010dba}</Project>
+      <Name>HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Problems.GeneralizedQuadraticAssignment\3.3\HeuristicLab.Problems.GeneralizedQuadraticAssignment-3.3.csproj">
+      <Project>{c739e6d2-5680-4804-a810-8017da0c238f}</Project>
+      <Name>HeuristicLab.Problems.GeneralizedQuadraticAssignment-3.3</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project>
Index: /branches/1614_GeneralizedQAP/GQAPSolver/Program.cs
===================================================================
--- /branches/1614_GeneralizedQAP/GQAPSolver/Program.cs	(revision 15890)
+++ /branches/1614_GeneralizedQAP/GQAPSolver/Program.cs	(revision 15890)
@@ -0,0 +1,152 @@
+﻿using System;
+using System.Linq;
+using CommandLine;
+using HeuristicLab.Data;
+using HeuristicLab.Problems.GeneralizedQuadraticAssignment;
+using HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms.Evolutionary;
+using HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms.GRASP;
+using HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms.LocalSearch;
+using HeuristicLab.Problems.Instances.CordeauGQAP;
+
+namespace GQAPSolver {
+  public enum AlgorithmType { OSGA = 1, ILS = 2, ES = 3, GRASP = 4 }
+
+  class CLOptions {
+    [Value(0, HelpText = "Configuration ID, set by irace.")]
+    public int ConfigId { get; set; }
+    [Value(1, HelpText = "Instance ID, set by irace.")]
+    public int InstanceId { get; set; }
+    [Value(2, HelpText = "Seed, set by irace.")]
+    public long Seed { get; set; }
+
+    [Value(3, Default = "20-15-35", HelpText = "Name of the problem instance.", Required = true)]
+    public string ProblemInstance { get; set; }
+
+    [Option('a', "alg", Default = AlgorithmType.OSGA, HelpText = "Either: OSGA, ILS, ES, GRASP")]
+    public AlgorithmType Algorithm { get; set; }
+
+    [Option('t', "tries", Default = 1,
+      HelpText = "Number of repetitions to perform.")]
+    public int Tries { get; set; }
+    [Option('r', "maxrt", Default = 60,
+      HelpText = "Maximum runtime in seconds.")]
+    public int MaxRuntime { get; set; }
+    [Option('i', "maxiter", Default = 0,
+      HelpText = "Maximum number of iterations.")]
+    public int MaxIterations { get; set; }
+    [Option('e', "maxeval", Default = 0,
+      HelpText = "Maximum number of evaluations.")]
+    public int MaxEvaluations { get; set; }
+
+    [Option("popsize", Default = 500, HelpText = "Population size (OSGA)")]
+    public int PopulationSize { get; set; }
+    [Option("mutprob", Default = 0.05, HelpText = "Mutation probability (OSGA)")]
+    public double MutationProbability { get; set; }
+
+    [Option("pertstr", Default = 0.5, HelpText = "Perturbation strength (ILS)")]
+    public double PerturbationStrength { get; set; }
+
+    [Option("mu", Default = 10, HelpText = "Parent population size (ES)")]
+    public int Mu { get; set; }
+    [Option("lambda", Default = 10, HelpText = "Offspring population size (ES)")]
+    public int Lambda { get; set; }
+    [Option("evosel", Default = ESSelection.Plus, HelpText = "Selection strategy + or , (ES)")]
+    public ESSelection Selection { get; set; }
+    [Option("recomb", Default = 0, HelpText = "Use recombination 0 or 1 (ES)")]
+    public int Recombination { get; set; }
+
+    [Option("eliteset", Default = 10, HelpText = "Size of the elite set (GRASP)")]
+    public int EliteSetSize { get; set; }
+    [Option("mineliteset", Default = 2, HelpText = "Minimum size of the elite set (GRASP)")]
+    public int MinimumEliteSetSize { get; set; }
+    [Option("lsiters", Default = 100, HelpText = "Maximum local search iterations (GRASP)")]
+    public int MaximumLocalSearchIterations { get; set; }
+    [Option("candidatesize", Default = 0.5, HelpText = "Candidate Size Factor (GRASP)")]
+    public double CandidateSizeFactor { get; set; }
+    [Option("maxcandsize", Default = 10, HelpText = "Maximum candidate list size (GRASP)")]
+    public int MaximumCandidateListSize { get; set; }
+    [Option("onemoveprob", Default = 0.5, HelpText = "Probability for performing a 1-move (GRASP)")]
+    public double OneMoveProbability { get; set; }
+    [Option("mindiff", Default = 4, HelpText = "Minimum difference (GRASP)")]
+    public int MinimumDifference { get; set; }
+  }
+
+  class Program {
+    static void Main(string[] args) {
+      var parsed = CommandLine.Parser.Default.ParseArguments<CLOptions>(args)
+        .WithParsed(x => Run(x));
+    }
+
+    private static void Run(CLOptions opts) {
+      var provider = new CordeauGQAPInstanceProvider();
+      var descriptors = provider.GetDataDescriptors().ToList();
+      var avgBest = 0.0;
+      for (var t = 0; t < opts.Tries; t++) {
+        HeuristicLab.Optimization.IAlgorithm alg = null;
+        switch (opts.Algorithm) {
+          case AlgorithmType.OSGA:
+            alg = new OSGA() {
+              MaximumEvaluations = opts.MaxEvaluations,
+              MaximumIterations = opts.MaxIterations,
+              MaximumRuntime = TimeSpan.FromSeconds(opts.MaxRuntime),
+              PopulationSize = opts.PopulationSize,
+              MutationProbability = opts.MutationProbability,
+              StopAtBestKnownQuality = true,
+              Seed = (int)opts.Seed,
+              SetSeedRandomly = false
+            };
+            break;
+          case AlgorithmType.ILS:
+            alg = new IteratedLS() {
+              MaximumEvaluations = opts.MaxEvaluations,
+              MaximumIterations = opts.MaxIterations,
+              MaximumRuntime = TimeSpan.FromSeconds(opts.MaxRuntime),
+              PerturbationStrength = opts.PerturbationStrength,
+              StopAtBestKnownQuality = true,
+              Seed = (int)opts.Seed,
+              SetSeedRandomly = false
+            };
+            break;
+          case AlgorithmType.ES:
+            alg = new EvolutionStrategy() {
+              MaximumEvaluations = opts.MaxEvaluations,
+              MaximumIterations = opts.MaxIterations,
+              MaximumRuntime = TimeSpan.FromSeconds(opts.MaxRuntime),
+              Mu = opts.Mu,
+              Lambda = opts.Lambda,
+              Selection = opts.Selection,
+              UseRecombination = opts.Recombination > 0,
+              StopAtBestKnownQuality = true,
+              Seed = (int)opts.Seed,
+              SetSeedRandomly = false
+            };
+            break;
+          case AlgorithmType.GRASP:
+            alg = new GRASP() {
+              MaximumEvaluations = opts.MaxEvaluations,
+              MaximumIterations = opts.MaxIterations,
+              MaximumRuntime = TimeSpan.FromSeconds(opts.MaxRuntime),
+              EliteSetSize = opts.EliteSetSize,
+              MinimumEliteSetSize = opts.MinimumEliteSetSize,
+              MaximumLocalSearchIterations = opts.MaximumLocalSearchIterations,
+              CandidateSizeFactor = opts.CandidateSizeFactor,
+              MaximumCandidateListSize = opts.MaximumCandidateListSize,
+              OneMoveProbability = opts.OneMoveProbability,
+              MinimumDifference = opts.MinimumDifference,
+              StopAtBestKnownQuality = true,
+              Seed = (int)opts.Seed,
+              SetSeedRandomly = false
+            };
+            break;
+        }
+        if (alg == null) throw new InvalidOperationException("Unknown algorithm.");
+        var prob = alg.Problem as GQAP;
+        if (prob == null) alg.Problem = prob = new GQAP();
+        prob.Load(provider.LoadData(descriptors[opts.InstanceId-1]));
+        alg.Start();
+        avgBest += ((DoubleValue)alg.Results["BestQuality"].Value).Value;
+      }
+      Console.WriteLine(avgBest / opts.Tries);
+    }
+  }
+}
Index: /branches/1614_GeneralizedQAP/GQAPSolver/Properties/AssemblyInfo.cs
===================================================================
--- /branches/1614_GeneralizedQAP/GQAPSolver/Properties/AssemblyInfo.cs	(revision 15890)
+++ /branches/1614_GeneralizedQAP/GQAPSolver/Properties/AssemblyInfo.cs	(revision 15890)
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("GQAPSolver")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("GQAPSolver")]
+[assembly: AssemblyCopyright("Copyright ©  2018")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components.  If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("6ec9e8ab-3547-4ec2-901b-6acd494be434")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: /branches/1614_GeneralizedQAP/GQAPSolver/packages.config
===================================================================
--- /branches/1614_GeneralizedQAP/GQAPSolver/packages.config	(revision 15890)
+++ /branches/1614_GeneralizedQAP/GQAPSolver/packages.config	(revision 15890)
@@ -0,0 +1,4 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="CommandLineParser" version="2.2.1" targetFramework="net45" />
+</packages>
Index: /branches/1614_GeneralizedQAP/GeneralizedQAP.sln
===================================================================
--- /branches/1614_GeneralizedQAP/GeneralizedQAP.sln	(revision 15889)
+++ /branches/1614_GeneralizedQAP/GeneralizedQAP.sln	(revision 15890)
@@ -33,4 +33,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.OptimizationExpertSystem-3.3", "HeuristicLab.OptimizationExpertSystem\3.3\HeuristicLab.OptimizationExpertSystem-3.3.csproj", "{6240A044-BD4B-4DDB-9E67-A6CFA5E0C7BE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GQAPSolver", "GQAPSolver\GQAPSolver.csproj", "{6EC9E8AB-3547-4EC2-901B-6ACD494BE434}"
 EndProject
 Global
@@ -224,4 +226,16 @@
 		{6240A044-BD4B-4DDB-9E67-A6CFA5E0C7BE}.Release|x86.ActiveCfg = Release|x86
 		{6240A044-BD4B-4DDB-9E67-A6CFA5E0C7BE}.Release|x86.Build.0 = Release|x86
+		{6EC9E8AB-3547-4EC2-901B-6ACD494BE434}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{6EC9E8AB-3547-4EC2-901B-6ACD494BE434}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{6EC9E8AB-3547-4EC2-901B-6ACD494BE434}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{6EC9E8AB-3547-4EC2-901B-6ACD494BE434}.Debug|x64.Build.0 = Debug|Any CPU
+		{6EC9E8AB-3547-4EC2-901B-6ACD494BE434}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{6EC9E8AB-3547-4EC2-901B-6ACD494BE434}.Debug|x86.Build.0 = Debug|Any CPU
+		{6EC9E8AB-3547-4EC2-901B-6ACD494BE434}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{6EC9E8AB-3547-4EC2-901B-6ACD494BE434}.Release|Any CPU.Build.0 = Release|Any CPU
+		{6EC9E8AB-3547-4EC2-901B-6ACD494BE434}.Release|x64.ActiveCfg = Release|Any CPU
+		{6EC9E8AB-3547-4EC2-901B-6ACD494BE434}.Release|x64.Build.0 = Release|Any CPU
+		{6EC9E8AB-3547-4EC2-901B-6ACD494BE434}.Release|x86.ActiveCfg = Release|Any CPU
+		{6EC9E8AB-3547-4EC2-901B-6ACD494BE434}.Release|x86.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
@@ -231,18 +245,3 @@
 		SolutionGuid = {B0BBF50B-4E62-4BAB-A730-881208150933}
 	EndGlobalSection
-	GlobalSection(Performance) = preSolution
-		HasPerformanceSessions = true
-	EndGlobalSection
-	GlobalSection(Performance) = preSolution
-		HasPerformanceSessions = true
-	EndGlobalSection
-	GlobalSection(Performance) = preSolution
-		HasPerformanceSessions = true
-	EndGlobalSection
-	GlobalSection(Performance) = preSolution
-		HasPerformanceSessions = true
-	EndGlobalSection
-	GlobalSection(Performance) = preSolution
-		HasPerformanceSessions = true
-	EndGlobalSection
 EndGlobal
Index: /branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms/3.3/LocalSolverNet/GQAPListSolver.cs
===================================================================
--- /branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms/3.3/LocalSolverNet/GQAPListSolver.cs	(revision 15889)
+++ /branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms/3.3/LocalSolverNet/GQAPListSolver.cs	(revision 15890)
@@ -50,5 +50,4 @@
     // LS Program variables
     private LSExpression[] x;
-    private LSExpression[] equipmentsOnLocations;
     private LSExpression obj;
     private LocalSolver localSolver;
