Changeset 16013 for branches/2864_PermutationProblems/HeuristicLab.Problems.Instances.PermutationProblems/3.3/LOP/LOPRANDBInstanceProvider.cs
- Timestamp:
- 07/24/18 17:16:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2864_PermutationProblems/HeuristicLab.Problems.Instances.PermutationProblems/3.3/LOP/LOPRANDBInstanceProvider.cs
r16009 r16013 21 21 22 22 using System; 23 using System.Collections.Generic;24 using System.IO;25 using System.IO.Compression;26 using System.Linq;27 using System.Reflection;28 using System.Text.RegularExpressions;29 23 30 24 namespace HeuristicLab.Problems.Instances.PermutationProblems.LinearOrdering { 31 public class LOPRANDBInstanceProvider : ProblemInstanceProvider<LOPData>{25 public class LOPRANDBInstanceProvider : LOPInstanceProvider { 32 26 33 27 public override string Name … … 45 39 get { return new Uri("http://www.optsicom.es/lolib/lop/RandB.zip"); } 46 40 } 47 48 public override string ReferencePublication49 {50 get { return "Martí, R., & Reinelt, G. (2011). The Linear Ordering Problem. Applied Mathematical Sciences. Springer Berlin Heidelberg. https://doi.org/10.1007/978-3-642-16729-4"; }51 }52 53 public override IEnumerable<IDataDescriptor> GetDataDescriptors() {54 var instanceArchiveName = GetResourceName("RANDB.zip");55 if (String.IsNullOrEmpty(instanceArchiveName)) yield break;56 57 using (var instanceStream = new ZipArchive(GetType().Assembly.GetManifestResourceStream(instanceArchiveName), ZipArchiveMode.Read)) {58 foreach (var entry in instanceStream.Entries.Select(x => x.Name).OrderBy(x => x)) {59 yield return new LOPDataDescriptor(Path.GetFileNameWithoutExtension(entry), GetDescription(), entry, null);60 }61 }62 }63 64 public override LOPData LoadData(IDataDescriptor id) {65 var descriptor = (LOPDataDescriptor)id;66 var instanceArchiveName = GetResourceName("RANDB.zip");67 using (var instancesZipFile = new ZipArchive(GetType().Assembly.GetManifestResourceStream(instanceArchiveName), ZipArchiveMode.Read)) {68 var entry = instancesZipFile.GetEntry(descriptor.InstanceIdentifier);69 70 using (var stream = entry.Open()) {71 var parser = new LOPParser();72 parser.Parse(stream);73 return Load(parser);74 }75 }76 }77 78 public override bool CanImportData79 {80 get { return true; }81 }82 public override LOPData ImportData(string path) {83 var parser = new LOPParser();84 parser.Parse(path);85 return Load(parser);86 }87 88 private LOPData Load(LOPParser parser) {89 var instance = new LOPData {90 Name = parser.Name,91 Description = parser.Description,92 Dimension = parser.Dimension,93 Matrix = parser.Matrix,94 BestKnownPermutation = parser.BestKnownPermutation,95 BestKnownQuality = parser.BestKnownQuality96 };97 return instance;98 }99 100 public override bool CanExportData101 {102 get { return false; }103 }104 105 private string GetDescription() {106 return "Embedded instance of plugin version " + Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true).Cast<AssemblyFileVersionAttribute>().First().Version + ".";107 }108 109 protected virtual string GetResourceName(string fileName) {110 return Assembly.GetExecutingAssembly().GetManifestResourceNames()111 .SingleOrDefault(x => Regex.Match(x, @".*\.Data\." + fileName).Success);112 }113 41 } 114 42 }
Note: See TracChangeset
for help on using the changeset viewer.