Changeset 6891 for trunk/sources/HeuristicLab.Problems.QuadraticAssignment
- Timestamp:
- 10/07/11 23:45:06 (13 years ago)
- Location:
- trunk/sources/HeuristicLab.Problems.QuadraticAssignment
- Files:
-
- 1 deleted
- 3 edited
- 15 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.QuadraticAssignment
-
Property
svn:mergeinfo
set to
/branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment merged eligible
-
Property
svn:mergeinfo
set to
-
trunk/sources/HeuristicLab.Problems.QuadraticAssignment/3.3/HeuristicLab.Problems.QuadraticAssignment-3.3.csproj
r6866 r6891 106 106 <Reference Include="System.Data" /> 107 107 <Reference Include="System.Drawing" /> 108 <Reference Include="System.Runtime.Serialization" /> 109 <Reference Include="System.ServiceModel" /> 110 <Reference Include="System.Xml" /> 108 111 </ItemGroup> 109 112 <ItemGroup> … … 127 130 <Compile Include="QAPPermutationProximityCalculator.cs" /> 128 131 <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" /> 266 138 <None Include="Plugin.cs.frame" /> 267 139 <Compile Include="Plugin.cs" /> 268 140 <Compile Include="Properties\AssemblyInfo.cs" /> 269 141 <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> 270 161 </ItemGroup> 271 162 <ItemGroup> 272 163 <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" />391 164 </ItemGroup> 392 165 <ItemGroup> … … 453 226 </ItemGroup> 454 227 <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> 464 247 </ItemGroup> 465 248 <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> -
trunk/sources/HeuristicLab.Problems.QuadraticAssignment/3.3/QuadraticAssignmentProblem.cs
r6628 r6891 21 21 22 22 using System; 23 using System.Collections.Generic;24 23 using System.Drawing; 25 24 using System.IO; 26 25 using System.Linq; 27 26 using System.Reflection; 27 using HeuristicLab.Collections; 28 28 using HeuristicLab.Common; 29 29 using HeuristicLab.Core; … … 81 81 } 82 82 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 94 83 private BestQAPSolutionAnalyzer BestQAPSolutionAnalyzer { 95 84 get { return Operators.OfType<BestQAPSolutionAnalyzer>().FirstOrDefault(); } … … 102 91 private QAPPopulationDiversityAnalyzer QAPPopulationDiversityAnalyzer { 103 92 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; } 104 98 } 105 99 #endregion … … 109 103 private QuadraticAssignmentProblem(QuadraticAssignmentProblem original, Cloner cloner) 110 104 : base(original, cloner) { 105 instances = new ObservableList<string>(original.instances); 111 106 AttachEventHandlers(); 112 107 } … … 364 359 #endregion 365 360 366 public void ImportFileInstance(string filename) {361 public void LoadInstanceFromFile(string filename) { 367 362 QAPLIBParser parser = new QAPLIBParser(); 368 363 parser.Parse(filename); … … 373 368 Description = "Imported problem data using QAPLIBParser " + Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true).Cast<AssemblyFileVersionAttribute>().FirstOrDefault().Version + "."; 374 369 BestKnownQuality = null; 370 BestKnownSolution = null; 375 371 BestKnownSolutions = null; 376 372 OnReset(); 377 373 } 378 374 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()); 420 409 } 421 } else { 422 BestKnownQuality = null; 423 BestKnownSolutions = new ItemSet<Permutation>(new PermutationEqualityComparer()); 424 BestKnownSolution = null; 425 } 410 } 411 OnReset(); 426 412 } 427 413 }
Note: See TracChangeset
for help on using the changeset viewer.