Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/07/11 23:45:06 (13 years ago)
Author:
abeham
Message:

#1619, #1628

  • reintegrated changes from branch
Location:
trunk/sources/HeuristicLab.Problems.QuadraticAssignment
Files:
1 deleted
3 edited
15 copied

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.QuadraticAssignment

  • trunk/sources/HeuristicLab.Problems.QuadraticAssignment/3.3/HeuristicLab.Problems.QuadraticAssignment-3.3.csproj

    r6866 r6891  
    106106    <Reference Include="System.Data" />
    107107    <Reference Include="System.Drawing" />
     108    <Reference Include="System.Runtime.Serialization" />
     109    <Reference Include="System.ServiceModel" />
     110    <Reference Include="System.Xml" />
    108111  </ItemGroup>
    109112  <ItemGroup>
     
    127130    <Compile Include="QAPPermutationProximityCalculator.cs" />
    128131    <Compile Include="QuadraticAssignmentProblem.cs" />
    129     <EmbeddedResource Include="Data\bur26a.dat" />
    130     <EmbeddedResource Include="Data\bur26b.dat" />
    131     <EmbeddedResource Include="Data\bur26c.dat" />
    132     <EmbeddedResource Include="Data\bur26d.dat" />
    133     <EmbeddedResource Include="Data\bur26e.dat" />
    134     <EmbeddedResource Include="Data\bur26f.dat" />
    135     <EmbeddedResource Include="Data\bur26g.dat" />
    136     <EmbeddedResource Include="Data\bur26h.dat" />
    137     <EmbeddedResource Include="Data\chr12a.dat" />
    138     <EmbeddedResource Include="Data\chr12b.dat" />
    139     <EmbeddedResource Include="Data\chr12c.dat" />
    140     <EmbeddedResource Include="Data\chr15a.dat" />
    141     <EmbeddedResource Include="Data\chr15b.dat" />
    142     <EmbeddedResource Include="Data\chr15c.dat" />
    143     <EmbeddedResource Include="Data\chr18a.dat" />
    144     <EmbeddedResource Include="Data\chr18b.dat" />
    145     <EmbeddedResource Include="Data\chr20a.dat" />
    146     <EmbeddedResource Include="Data\chr20b.dat" />
    147     <EmbeddedResource Include="Data\chr20c.dat" />
    148     <EmbeddedResource Include="Data\chr22a.dat" />
    149     <EmbeddedResource Include="Data\chr22b.dat" />
    150     <EmbeddedResource Include="Data\chr25a.dat" />
    151     <EmbeddedResource Include="Data\els19.dat" />
    152     <EmbeddedResource Include="Data\esc128.dat" />
    153     <EmbeddedResource Include="Data\esc16a.dat" />
    154     <EmbeddedResource Include="Data\esc16b.dat" />
    155     <EmbeddedResource Include="Data\esc16c.dat" />
    156     <EmbeddedResource Include="Data\esc16d.dat" />
    157     <EmbeddedResource Include="Data\esc16e.dat" />
    158     <EmbeddedResource Include="Data\esc16f.dat" />
    159     <EmbeddedResource Include="Data\esc16g.dat" />
    160     <EmbeddedResource Include="Data\esc16h.dat" />
    161     <EmbeddedResource Include="Data\esc16i.dat" />
    162     <EmbeddedResource Include="Data\esc16j.dat" />
    163     <EmbeddedResource Include="Data\esc32a.dat" />
    164     <EmbeddedResource Include="Data\esc32b.dat" />
    165     <EmbeddedResource Include="Data\esc32c.dat" />
    166     <EmbeddedResource Include="Data\esc32d.dat" />
    167     <EmbeddedResource Include="Data\esc32e.dat" />
    168     <EmbeddedResource Include="Data\esc32f.dat" />
    169     <EmbeddedResource Include="Data\esc32g.dat" />
    170     <EmbeddedResource Include="Data\esc32h.dat" />
    171     <EmbeddedResource Include="Data\esc64a.dat" />
    172     <EmbeddedResource Include="Data\had12.dat" />
    173     <EmbeddedResource Include="Data\had14.dat" />
    174     <EmbeddedResource Include="Data\had16.dat" />
    175     <EmbeddedResource Include="Data\had18.dat" />
    176     <EmbeddedResource Include="Data\had20.dat" />
    177     <EmbeddedResource Include="Data\kra30a.dat" />
    178     <EmbeddedResource Include="Data\kra30b.dat" />
    179     <EmbeddedResource Include="Data\kra32.dat" />
    180     <EmbeddedResource Include="Data\lipa20a.dat" />
    181     <EmbeddedResource Include="Data\lipa20b.dat" />
    182     <EmbeddedResource Include="Data\lipa30a.dat" />
    183     <EmbeddedResource Include="Data\lipa30b.dat" />
    184     <EmbeddedResource Include="Data\lipa40a.dat" />
    185     <EmbeddedResource Include="Data\lipa40b.dat" />
    186     <EmbeddedResource Include="Data\lipa50a.dat" />
    187     <EmbeddedResource Include="Data\lipa50b.dat" />
    188     <EmbeddedResource Include="Data\lipa60a.dat" />
    189     <EmbeddedResource Include="Data\lipa60b.dat" />
    190     <EmbeddedResource Include="Data\lipa70a.dat" />
    191     <EmbeddedResource Include="Data\lipa70b.dat" />
    192     <EmbeddedResource Include="Data\lipa80a.dat" />
    193     <EmbeddedResource Include="Data\lipa80b.dat" />
    194     <EmbeddedResource Include="Data\lipa90a.dat" />
    195     <EmbeddedResource Include="Data\lipa90b.dat" />
    196     <EmbeddedResource Include="Data\nug12.dat" />
    197     <EmbeddedResource Include="Data\nug14.dat" />
    198     <EmbeddedResource Include="Data\nug15.dat" />
    199     <EmbeddedResource Include="Data\nug16a.dat" />
    200     <EmbeddedResource Include="Data\nug16b.dat" />
    201     <EmbeddedResource Include="Data\nug17.dat" />
    202     <EmbeddedResource Include="Data\nug18.dat" />
    203     <EmbeddedResource Include="Data\nug20.dat" />
    204     <EmbeddedResource Include="Data\nug21.dat" />
    205     <EmbeddedResource Include="Data\nug22.dat" />
    206     <EmbeddedResource Include="Data\nug24.dat" />
    207     <EmbeddedResource Include="Data\nug25.dat" />
    208     <EmbeddedResource Include="Data\nug27.dat" />
    209     <EmbeddedResource Include="Data\nug28.dat" />
    210     <EmbeddedResource Include="Data\nug30.dat" />
    211     <EmbeddedResource Include="Data\rou12.dat" />
    212     <EmbeddedResource Include="Data\rou15.dat" />
    213     <EmbeddedResource Include="Data\rou20.dat" />
    214     <EmbeddedResource Include="Data\scr12.dat" />
    215     <EmbeddedResource Include="Data\scr15.dat" />
    216     <EmbeddedResource Include="Data\scr20.dat" />
    217     <EmbeddedResource Include="Data\sko100a.dat" />
    218     <EmbeddedResource Include="Data\sko100b.dat" />
    219     <EmbeddedResource Include="Data\sko100c.dat" />
    220     <EmbeddedResource Include="Data\sko100d.dat" />
    221     <EmbeddedResource Include="Data\sko100e.dat" />
    222     <EmbeddedResource Include="Data\sko100f.dat" />
    223     <EmbeddedResource Include="Data\sko42.dat" />
    224     <EmbeddedResource Include="Data\sko49.dat" />
    225     <EmbeddedResource Include="Data\sko56.dat" />
    226     <EmbeddedResource Include="Data\sko64.dat" />
    227     <EmbeddedResource Include="Data\sko72.dat" />
    228     <EmbeddedResource Include="Data\sko81.dat" />
    229     <EmbeddedResource Include="Data\sko90.dat" />
    230     <EmbeddedResource Include="Data\ste36a.dat" />
    231     <EmbeddedResource Include="Data\ste36b.dat" />
    232     <EmbeddedResource Include="Data\ste36c.dat" />
    233     <EmbeddedResource Include="Data\tai100a.dat" />
    234     <EmbeddedResource Include="Data\tai100b.dat" />
    235     <EmbeddedResource Include="Data\tai10a.dat" />
    236     <EmbeddedResource Include="Data\tai10b.dat" />
    237     <EmbeddedResource Include="Data\tai12a.dat" />
    238     <EmbeddedResource Include="Data\tai12b.dat" />
    239     <EmbeddedResource Include="Data\tai150b.dat" />
    240     <EmbeddedResource Include="Data\tai15a.dat" />
    241     <EmbeddedResource Include="Data\tai15b.dat" />
    242     <EmbeddedResource Include="Data\tai17a.dat" />
    243     <EmbeddedResource Include="Data\tai20a.dat" />
    244     <EmbeddedResource Include="Data\tai20b.dat" />
    245     <EmbeddedResource Include="Data\tai256c.dat" />
    246     <EmbeddedResource Include="Data\tai25a.dat" />
    247     <EmbeddedResource Include="Data\tai25b.dat" />
    248     <EmbeddedResource Include="Data\tai30a.dat" />
    249     <EmbeddedResource Include="Data\tai30b.dat" />
    250     <EmbeddedResource Include="Data\tai35a.dat" />
    251     <EmbeddedResource Include="Data\tai35b.dat" />
    252     <EmbeddedResource Include="Data\tai40a.dat" />
    253     <EmbeddedResource Include="Data\tai40b.dat" />
    254     <EmbeddedResource Include="Data\tai50a.dat" />
    255     <EmbeddedResource Include="Data\tai50b.dat" />
    256     <EmbeddedResource Include="Data\tai60a.dat" />
    257     <EmbeddedResource Include="Data\tai60b.dat" />
    258     <EmbeddedResource Include="Data\tai64c.dat" />
    259     <EmbeddedResource Include="Data\tai80a.dat" />
    260     <EmbeddedResource Include="Data\tai80b.dat" />
    261     <EmbeddedResource Include="Data\tho150.dat" />
    262     <EmbeddedResource Include="Data\tho30.dat" />
    263     <EmbeddedResource Include="Data\tho40.dat" />
    264     <EmbeddedResource Include="Data\wil100.dat" />
    265     <EmbeddedResource Include="Data\wil50.dat" />
     132    <Compile Include="Service References\QAPInstanceService\Reference.cs">
     133      <AutoGen>True</AutoGen>
     134      <DesignTime>True</DesignTime>
     135      <DependentUpon>Reference.svcmap</DependentUpon>
     136    </Compile>
     137    <None Include="app.config" />
    266138    <None Include="Plugin.cs.frame" />
    267139    <Compile Include="Plugin.cs" />
    268140    <Compile Include="Properties\AssemblyInfo.cs" />
    269141    <None Include="Properties\AssemblyInfo.cs.frame" />
     142    <None Include="Service References\QAPInstanceService\HeuristicLab.Problems.QuadraticAssignment.QAPInstanceService.QAPInstanceDto.datasource">
     143      <DependentUpon>Reference.svcmap</DependentUpon>
     144    </None>
     145    <None Include="Service References\QAPInstanceService\HeuristicLab.Problems.QuadraticAssignment.QAPInstanceService.QAPSolutionDto.datasource">
     146      <DependentUpon>Reference.svcmap</DependentUpon>
     147    </None>
     148    <None Include="Service References\QAPInstanceService\QAP.wsdl" />
     149    <None Include="Service References\QAPInstanceService\QAP.xsd">
     150      <SubType>Designer</SubType>
     151    </None>
     152    <None Include="Service References\QAPInstanceService\QAP1.xsd">
     153      <SubType>Designer</SubType>
     154    </None>
     155    <None Include="Service References\QAPInstanceService\QAP2.xsd">
     156      <SubType>Designer</SubType>
     157    </None>
     158    <None Include="Service References\QAPInstanceService\QAP3.xsd">
     159      <SubType>Designer</SubType>
     160    </None>
    270161  </ItemGroup>
    271162  <ItemGroup>
    272163    <None Include="HeuristicLab.snk" />
    273   </ItemGroup>
    274   <ItemGroup>
    275     <EmbeddedResource Include="Data\bur26a.sln" />
    276     <EmbeddedResource Include="Data\bur26b.sln" />
    277     <EmbeddedResource Include="Data\bur26c.sln" />
    278     <EmbeddedResource Include="Data\bur26d.sln" />
    279     <EmbeddedResource Include="Data\bur26e.sln" />
    280     <EmbeddedResource Include="Data\bur26f.sln" />
    281     <EmbeddedResource Include="Data\bur26g.sln" />
    282     <EmbeddedResource Include="Data\bur26h.sln" />
    283     <EmbeddedResource Include="Data\chr12a.sln" />
    284     <EmbeddedResource Include="Data\chr12b.sln" />
    285     <EmbeddedResource Include="Data\chr12c.sln" />
    286     <EmbeddedResource Include="Data\chr15a.sln" />
    287     <EmbeddedResource Include="Data\chr15b.sln" />
    288     <EmbeddedResource Include="Data\chr15c.sln" />
    289     <EmbeddedResource Include="Data\chr18a.sln" />
    290     <EmbeddedResource Include="Data\chr18b.sln" />
    291     <EmbeddedResource Include="Data\chr20a.sln" />
    292     <EmbeddedResource Include="Data\chr20b.sln" />
    293     <EmbeddedResource Include="Data\chr20c.sln" />
    294     <EmbeddedResource Include="Data\chr22a.sln" />
    295     <EmbeddedResource Include="Data\chr22b.sln" />
    296     <EmbeddedResource Include="Data\chr25a.sln" />
    297     <EmbeddedResource Include="Data\els19.sln" />
    298     <EmbeddedResource Include="Data\esc128.sln" />
    299     <EmbeddedResource Include="Data\esc16a.sln" />
    300     <EmbeddedResource Include="Data\esc16b.sln" />
    301     <EmbeddedResource Include="Data\esc16c.sln" />
    302     <EmbeddedResource Include="Data\esc16d.sln" />
    303     <EmbeddedResource Include="Data\esc16e.sln" />
    304     <EmbeddedResource Include="Data\esc16f.sln" />
    305     <EmbeddedResource Include="Data\esc16g.sln" />
    306     <EmbeddedResource Include="Data\esc16h.sln" />
    307     <EmbeddedResource Include="Data\esc16i.sln" />
    308     <EmbeddedResource Include="Data\esc16j.sln" />
    309     <EmbeddedResource Include="Data\esc32e.sln" />
    310     <EmbeddedResource Include="Data\esc32f.sln" />
    311     <EmbeddedResource Include="Data\esc32g.sln" />
    312     <EmbeddedResource Include="Data\had12.sln" />
    313     <EmbeddedResource Include="Data\had14.sln" />
    314     <EmbeddedResource Include="Data\had16.sln" />
    315     <EmbeddedResource Include="Data\had18.sln" />
    316     <EmbeddedResource Include="Data\had20.sln" />
    317     <EmbeddedResource Include="Data\kra30a.sln" />
    318     <EmbeddedResource Include="Data\kra30b.sln" />
    319     <EmbeddedResource Include="Data\kra32.sln" />
    320     <EmbeddedResource Include="Data\lipa20a.sln" />
    321     <EmbeddedResource Include="Data\lipa20b.sln" />
    322     <EmbeddedResource Include="Data\lipa30a.sln" />
    323     <EmbeddedResource Include="Data\lipa30b.sln" />
    324     <EmbeddedResource Include="Data\lipa40a.sln" />
    325     <EmbeddedResource Include="Data\lipa40b.sln" />
    326     <EmbeddedResource Include="Data\lipa50a.sln" />
    327     <EmbeddedResource Include="Data\lipa50b.sln" />
    328     <EmbeddedResource Include="Data\lipa60a.sln" />
    329     <EmbeddedResource Include="Data\lipa60b.sln" />
    330     <EmbeddedResource Include="Data\lipa70a.sln" />
    331     <EmbeddedResource Include="Data\lipa70b.sln" />
    332     <EmbeddedResource Include="Data\lipa80a.sln" />
    333     <EmbeddedResource Include="Data\lipa80b.sln" />
    334     <EmbeddedResource Include="Data\lipa90a.sln" />
    335     <EmbeddedResource Include="Data\lipa90b.sln" />
    336     <EmbeddedResource Include="Data\nug12.sln" />
    337     <EmbeddedResource Include="Data\nug14.sln" />
    338     <EmbeddedResource Include="Data\nug15.sln" />
    339     <EmbeddedResource Include="Data\nug16a.sln" />
    340     <EmbeddedResource Include="Data\nug16b.sln" />
    341     <EmbeddedResource Include="Data\nug17.sln" />
    342     <EmbeddedResource Include="Data\nug18.sln" />
    343     <EmbeddedResource Include="Data\nug20.sln" />
    344     <EmbeddedResource Include="Data\nug21.sln" />
    345     <EmbeddedResource Include="Data\nug22.sln" />
    346     <EmbeddedResource Include="Data\nug24.sln" />
    347     <EmbeddedResource Include="Data\nug25.sln" />
    348     <EmbeddedResource Include="Data\nug27.sln" />
    349     <EmbeddedResource Include="Data\nug28.sln" />
    350     <EmbeddedResource Include="Data\nug30.sln" />
    351     <EmbeddedResource Include="Data\rou12.sln" />
    352     <EmbeddedResource Include="Data\rou15.sln" />
    353     <EmbeddedResource Include="Data\rou20.sln" />
    354     <EmbeddedResource Include="Data\scr12.sln" />
    355     <EmbeddedResource Include="Data\scr15.sln" />
    356     <EmbeddedResource Include="Data\scr20.sln" />
    357     <EmbeddedResource Include="Data\sko100a.sln" />
    358     <EmbeddedResource Include="Data\sko100b.sln" />
    359     <EmbeddedResource Include="Data\sko100c.sln" />
    360     <EmbeddedResource Include="Data\sko100d.sln" />
    361     <EmbeddedResource Include="Data\sko100e.sln" />
    362     <EmbeddedResource Include="Data\sko100f.sln" />
    363     <EmbeddedResource Include="Data\sko81.sln" />
    364     <EmbeddedResource Include="Data\sko90.sln" />
    365     <EmbeddedResource Include="Data\ste36a.sln" />
    366     <EmbeddedResource Include="Data\ste36b.sln" />
    367     <EmbeddedResource Include="Data\ste36c.sln" />
    368     <EmbeddedResource Include="Data\tai100b.sln" />
    369     <EmbeddedResource Include="Data\tai12a.sln" />
    370     <EmbeddedResource Include="Data\tai12b.sln" />
    371     <EmbeddedResource Include="Data\tai150b.sln" />
    372     <EmbeddedResource Include="Data\tai15a.sln" />
    373     <EmbeddedResource Include="Data\tai15b.sln" />
    374     <EmbeddedResource Include="Data\tai17a.sln" />
    375     <EmbeddedResource Include="Data\tai20a.sln" />
    376     <EmbeddedResource Include="Data\tai20b.sln" />
    377     <EmbeddedResource Include="Data\tai256c.sln" />
    378     <EmbeddedResource Include="Data\tai25b.sln" />
    379     <EmbeddedResource Include="Data\tai30b.sln" />
    380     <EmbeddedResource Include="Data\tai35b.sln" />
    381     <EmbeddedResource Include="Data\tai40b.sln" />
    382     <EmbeddedResource Include="Data\tai50b.sln" />
    383     <EmbeddedResource Include="Data\tai60a.sln" />
    384     <EmbeddedResource Include="Data\tai60b.sln" />
    385     <EmbeddedResource Include="Data\tai64c.sln" />
    386     <EmbeddedResource Include="Data\tai80a.sln" />
    387     <EmbeddedResource Include="Data\tai80b.sln" />
    388     <EmbeddedResource Include="Data\tho150.sln" />
    389     <EmbeddedResource Include="Data\tho30.sln" />
    390     <EmbeddedResource Include="Data\wil100.sln" />
    391164  </ItemGroup>
    392165  <ItemGroup>
     
    453226  </ItemGroup>
    454227  <ItemGroup>
    455     <EmbeddedResource Include="Data\tai100a.sln" />
    456     <EmbeddedResource Include="Data\tai25a.sln" />
    457     <EmbeddedResource Include="Data\tai50a.sln" />
    458   </ItemGroup>
    459   <ItemGroup>
    460     <EmbeddedResource Include="Data\esc32a.sln" />
    461   </ItemGroup>
    462   <ItemGroup>
    463     <EmbeddedResource Include="Data\sko49.sln" />
     228    <WCFMetadata Include="Service References\" />
     229  </ItemGroup>
     230  <ItemGroup>
     231    <WCFMetadataStorage Include="Service References\QAPInstanceService\" />
     232  </ItemGroup>
     233  <ItemGroup>
     234    <None Include="Service References\QAPInstanceService\QAP.disco" />
     235  </ItemGroup>
     236  <ItemGroup>
     237    <None Include="Service References\QAPInstanceService\configuration91.svcinfo" />
     238  </ItemGroup>
     239  <ItemGroup>
     240    <None Include="Service References\QAPInstanceService\configuration.svcinfo" />
     241  </ItemGroup>
     242  <ItemGroup>
     243    <None Include="Service References\QAPInstanceService\Reference.svcmap">
     244      <Generator>WCF Proxy Generator</Generator>
     245      <LastGenOutput>Reference.cs</LastGenOutput>
     246    </None>
    464247  </ItemGroup>
    465248  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  • trunk/sources/HeuristicLab.Problems.QuadraticAssignment/3.3/QuadraticAssignmentProblem.cs

    r6628 r6891  
    2121
    2222using System;
    23 using System.Collections.Generic;
    2423using System.Drawing;
    2524using System.IO;
    2625using System.Linq;
    2726using System.Reflection;
     27using HeuristicLab.Collections;
    2828using HeuristicLab.Common;
    2929using HeuristicLab.Core;
     
    8181    }
    8282
    83     public IEnumerable<string> EmbeddedInstances {
    84       get {
    85         return Assembly.GetExecutingAssembly()
    86           .GetManifestResourceNames()
    87           .Where(x => x.EndsWith(".dat"))
    88           .OrderBy(x => x)
    89           .Select(x => x.Replace(".dat", String.Empty))
    90           .Select(x => x.Replace(InstancePrefix, String.Empty));
    91       }
    92     }
    93 
    9483    private BestQAPSolutionAnalyzer BestQAPSolutionAnalyzer {
    9584      get { return Operators.OfType<BestQAPSolutionAnalyzer>().FirstOrDefault(); }
     
    10291    private QAPPopulationDiversityAnalyzer QAPPopulationDiversityAnalyzer {
    10392      get { return Operators.OfType<QAPPopulationDiversityAnalyzer>().FirstOrDefault(); }
     93    }
     94
     95    private ObservableList<string> instances = new ObservableList<string>();
     96    public ObservableList<string> Instances {
     97      get { return instances; }
    10498    }
    10599    #endregion
     
    109103    private QuadraticAssignmentProblem(QuadraticAssignmentProblem original, Cloner cloner)
    110104      : base(original, cloner) {
     105      instances = new ObservableList<string>(original.instances);
    111106      AttachEventHandlers();
    112107    }
     
    364359    #endregion
    365360
    366     public void ImportFileInstance(string filename) {
     361    public void LoadInstanceFromFile(string filename) {
    367362      QAPLIBParser parser = new QAPLIBParser();
    368363      parser.Parse(filename);
     
    373368      Description = "Imported problem data using QAPLIBParser " + Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true).Cast<AssemblyFileVersionAttribute>().FirstOrDefault().Version + ".";
    374369      BestKnownQuality = null;
     370      BestKnownSolution = null;
    375371      BestKnownSolutions = null;
    376372      OnReset();
    377373    }
    378374
    379     public void LoadEmbeddedInstance(string instance) {
    380       using (Stream stream = Assembly.GetExecutingAssembly()
    381         .GetManifestResourceStream(InstancePrefix + instance + ".dat")) {
    382         QAPLIBParser parser = new QAPLIBParser();
    383         parser.Parse(stream);
    384         if (parser.Error != null) throw parser.Error;
    385         Distances = new DoubleMatrix(parser.Distances);
    386         Weights = new DoubleMatrix(parser.Weights);
    387         Name = instance;
    388         Description = "Loaded embedded QAPLIB problem data of instance " + instance + ".";
    389         OnReset();
    390       }
    391       bool solutionExists = Assembly.GetExecutingAssembly()
    392           .GetManifestResourceNames()
    393           .Where(x => x.EndsWith(instance + ".sln"))
    394           .Any();
    395       if (solutionExists) {
    396         using (Stream solStream = Assembly.GetExecutingAssembly()
    397           .GetManifestResourceStream(InstancePrefix + instance + ".sln")) {
    398           QAPLIBSolutionParser solParser = new QAPLIBSolutionParser();
    399           solParser.Parse(solStream, true); // most sln's seem to be of the type index = "facility" => value = "location"
    400           if (solParser.Error != null) throw solParser.Error;
    401           if (!solParser.Quality.IsAlmost(QAPEvaluator.Apply(new Permutation(PermutationTypes.Absolute, solParser.Assignment), Weights, Distances))) {
    402             solStream.Seek(0, SeekOrigin.Begin);
    403             solParser.Reset();
    404             solParser.Parse(solStream, false); // some sln's seem to be of the type index = "location" => value = "facility"
    405             if (solParser.Error != null) throw solParser.Error;
    406             if (solParser.Quality.IsAlmost(QAPEvaluator.Apply(new Permutation(PermutationTypes.Absolute, solParser.Assignment), Weights, Distances))) {
    407               BestKnownQuality = new DoubleValue(solParser.Quality);
    408               BestKnownSolutions = new ItemSet<Permutation>(new Permutation[] { new Permutation(PermutationTypes.Absolute, solParser.Assignment) }, new PermutationEqualityComparer());
    409               BestKnownSolution = new Permutation(PermutationTypes.Absolute, solParser.Assignment);
    410             } else {
    411               BestKnownQuality = new DoubleValue(solParser.Quality);
    412               BestKnownSolutions = null;
    413               BestKnownSolution = null;
    414             }
    415           } else {
    416             BestKnownQuality = new DoubleValue(solParser.Quality);
    417             BestKnownSolutions = new ItemSet<Permutation>(new Permutation[] { new Permutation(PermutationTypes.Absolute, solParser.Assignment) }, new PermutationEqualityComparer());
    418             BestKnownSolution = new Permutation(PermutationTypes.Absolute, solParser.Assignment);
    419           }
     375    public void LoadInstanceFromFile(string datFilename, string slnFilename) {
     376      QAPLIBParser datParser = new QAPLIBParser();
     377      datParser.Parse(datFilename);
     378      if (datParser.Error != null) throw datParser.Error;
     379      Distances = new DoubleMatrix(datParser.Distances);
     380      Weights = new DoubleMatrix(datParser.Weights);
     381      Name = "Quadratic Assignment Problem (imported from " + Path.GetFileNameWithoutExtension(datFilename) + ")";
     382      Description = "Imported problem data using QAPLIBParser " + Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true).Cast<AssemblyFileVersionAttribute>().FirstOrDefault().Version + ".";
     383
     384      QAPLIBSolutionParser slnParser = new QAPLIBSolutionParser();
     385      slnParser.Parse(slnFilename, true);
     386      if (slnParser.Error != null) throw slnParser.Error;
     387
     388      BestKnownQuality = new DoubleValue(slnParser.Quality);
     389      BestKnownSolution = new Permutation(PermutationTypes.Absolute, slnParser.Assignment);
     390      BestKnownSolutions = new ItemSet<Permutation>(new PermutationEqualityComparer());
     391      BestKnownSolutions.Add((Permutation)BestKnownSolution.Clone());
     392
     393      if (!BestKnownQuality.Value.IsAlmost(QAPEvaluator.Apply(BestKnownSolution, Weights, Distances))) {
     394        // the solution doesn't result in the given quality, maybe indices and values are inverted
     395        // try parsing again, this time inverting them
     396        slnParser.Reset();
     397        slnParser.Parse(slnFilename, false);
     398        if (slnParser.Error != null) throw slnParser.Error;
     399
     400        BestKnownQuality = new DoubleValue(slnParser.Quality);
     401        BestKnownSolution = new Permutation(PermutationTypes.Absolute, slnParser.Assignment);
     402        BestKnownSolutions = new ItemSet<Permutation>(new PermutationEqualityComparer());
     403        BestKnownSolutions.Add((Permutation)BestKnownSolution.Clone());
     404
     405        if (!BestKnownQuality.Value.IsAlmost(QAPEvaluator.Apply(BestKnownSolution, Weights, Distances))) {
     406          // if the solution still doesn't result in the given quality, remove it and only take the quality
     407          BestKnownSolution = null;
     408          BestKnownSolutions = new ItemSet<Permutation>(new PermutationEqualityComparer());
    420409        }
    421       } else {
    422         BestKnownQuality = null;
    423         BestKnownSolutions = new ItemSet<Permutation>(new PermutationEqualityComparer());
    424         BestKnownSolution = null;
    425       }
     410      }
     411      OnReset();
    426412    }
    427413  }
Note: See TracChangeset for help on using the changeset viewer.