Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
11/28/15 23:38:51 (8 years ago)
Author:
abeham
Message:

#2221:

  • Completely refactored PTSP branch
    • Added two sets of problem instances based on TSPLIB: homogeneous and heterogeneous
    • Implemented missing EvaluateByCoordinates for 1-shift moves
    • Made it clear that move evaluators are for estimated PTSP only
    • Changed parameter realization from a rather strange list of list of ints to a list of bool arrays
    • Reusing code of the 2-opt and 1-shift move evaluators in 2.5 move evaluator
    • Introducing distance calculators to properly handle the case when no distance matrix is given (previous code only worked with distance matrix and without only with euclidean distance in some settings)
    • Fixed several smaller code issues: protected, static, method parameters, copy & paste, interfaces, naming, parameters, serialization hooks, license headers, doc comments, data types
Location:
branches/PTSP/HeuristicLab.Problems.Instances
Files:
3 edited
1 copied
1 moved

Legend:

Unmodified
Added
Removed
  • branches/PTSP/HeuristicLab.Problems.Instances/3.3

    • Property svn:ignore
      •  

        old new  
        33Plugin.cs
        44*.user
         5*.DotSettings
  • branches/PTSP/HeuristicLab.Problems.Instances/3.3/HeuristicLab.Problems.Instances-3.3.csproj

    r12722 r13412  
    1919    <DebugType>full</DebugType>
    2020    <Optimize>false</Optimize>
    21     <OutputPath>..\..\bin\</OutputPath>
     21    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
    2222    <DefineConstants>DEBUG;TRACE</DefineConstants>
    2323    <ErrorReport>prompt</ErrorReport>
     
    2828    <DebugType>pdbonly</DebugType>
    2929    <Optimize>true</Optimize>
    30     <OutputPath>..\..\bin\</OutputPath>
     30    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
    3131    <DefineConstants>TRACE</DefineConstants>
    3232    <ErrorReport>prompt</ErrorReport>
     
    4242  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
    4343    <DebugSymbols>true</DebugSymbols>
    44     <OutputPath>..\..\bin\</OutputPath>
     44    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
    4545    <DefineConstants>DEBUG;TRACE</DefineConstants>
    4646    <DebugType>full</DebugType>
     
    5959  </PropertyGroup>
    6060  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
    61     <OutputPath>..\..\bin\</OutputPath>
     61    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
    6262    <DefineConstants>TRACE</DefineConstants>
    6363    <Optimize>true</Optimize>
     
    7878  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
    7979    <DebugSymbols>true</DebugSymbols>
    80     <OutputPath>..\..\bin\</OutputPath>
     80    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
    8181    <DefineConstants>DEBUG;TRACE</DefineConstants>
    8282    <DebugType>full</DebugType>
     
    9595  </PropertyGroup>
    9696  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
    97     <OutputPath>..\..\bin\</OutputPath>
     97    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
    9898    <DefineConstants>TRACE</DefineConstants>
    9999    <Optimize>true</Optimize>
     
    112112  </PropertyGroup>
    113113  <ItemGroup>
     114    <Reference Include="HeuristicLab.Common-3.3">
     115      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Common-3.3.dll</HintPath>
     116      <Private>False</Private>
     117    </Reference>
     118    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
     119      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
     120      <Private>False</Private>
     121    </Reference>
    114122    <Reference Include="Microsoft.CSharp" />
    115123    <Reference Include="System" />
     
    121129    <Compile Include="ProblemInstanceManager.cs" />
    122130    <Compile Include="IProblemInstanceExporter.cs" />
     131    <Compile Include="Types\PTSPData.cs" />
    123132    <Compile Include="Types\ATSPData.cs" />
    124133    <Compile Include="Types\JSSPData.cs" />
     
    146155  <ItemGroup>
    147156    <None Include="HeuristicLab.snk" />
    148   </ItemGroup>
    149   <ItemGroup>
    150     <ProjectReference Include="..\..\HeuristicLab.Common\3.3\HeuristicLab.Common-3.3.csproj">
    151       <Project>{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}</Project>
    152       <Name>HeuristicLab.Common-3.3</Name>
    153       <Private>False</Private>
    154     </ProjectReference>
    155     <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">
    156       <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
    157       <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
    158       <Private>False</Private>
    159     </ProjectReference>
    160157  </ItemGroup>
    161158  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  • branches/PTSP/HeuristicLab.Problems.Instances/3.3/Types/DistanceHelper.cs

    r12012 r13412  
    2121
    2222using System;
    23 using System.Collections.Generic;
    24 using System.Linq;
    25 using System.Text;
    2623
    2724namespace HeuristicLab.Problems.Instances {
    2825  public enum DistanceMeasure { Direct, Euclidean, RoundedEuclidean, UpperEuclidean, Geo, Manhattan, Maximum, Att };
    29  
     26
    3027  public static class DistanceHelper {
    3128    /// <summary>
     
    3532    public static double[,] GetDistanceMatrix(DistanceMeasure distanceMeasure, double[,] coordinates, double[,] distances, int dimension) {
    3633      if (distances != null) return distances;
    37      
     34
    3835      distances = new double[dimension, dimension];
    3936      for (int i = 0; i < dimension - 1; i++)
     
    4441
    4542      return distances;
     43    }
     44
     45    public static double GetDistance(DistanceMeasure distanceMeasure, double x1, double y1, double x2, double y2) {
     46      switch (distanceMeasure) {
     47        case DistanceMeasure.Att:
     48          return AttDistance(x1, y1, x2, y2);
     49        case DistanceMeasure.Direct:
     50          throw new ArgumentException("Direct distance measure requires distance matrix for distance calculation.");
     51        case DistanceMeasure.Euclidean:
     52          return EuclideanDistance(x1, y1, x2, y2);
     53        case DistanceMeasure.Geo:
     54          return GeoDistance(x1, y1, x2, y2);
     55        case DistanceMeasure.Manhattan:
     56          return ManhattanDistance(x1, y1, x2, y2);
     57        case DistanceMeasure.Maximum:
     58          return MaximumDistance(x1, y1, x2, y2);
     59        case DistanceMeasure.RoundedEuclidean:
     60          return Math.Round(EuclideanDistance(x1, y1, x2, y2));
     61        case DistanceMeasure.UpperEuclidean:
     62          return Math.Ceiling(EuclideanDistance(x1, y1, x2, y2));
     63        default:
     64          throw new InvalidOperationException("Distance measure is not known.");
     65      }
    4666    }
    4767
  • branches/PTSP/HeuristicLab.Problems.Instances/3.3/Types/PTSPData.cs

    r13408 r13412  
    1 using System;
    2 using System.Collections.Generic;
    3 using System.Linq;
    4 using System.Text;
    5 using HeuristicLab.Problems.Instances;
    6 
    7 namespace HeuristicLab.Problems.PTSP {
     1
     2namespace HeuristicLab.Problems.Instances {
     3  /// <summary>
     4  /// Describes instances of the Probabilistic Traveling Salesman Problem (PTSP).
     5  /// </summary>
    86  public class PTSPData : TSPData {
     7    /// <summary>
     8    /// The probabilities for each of the cities to appear in a route.
     9    /// </summary>
    910    public double[] Probabilities { get; set; }
    1011  }
Note: See TracChangeset for help on using the changeset viewer.