Changeset 15639 for branches/2864_PermutationProblems/HeuristicLab.Problems.Instances.PFSP/3.3/FSSPTAILIBInstanceProvider.cs
- Timestamp:
- 01/22/18 17:15:29 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2864_PermutationProblems/HeuristicLab.Problems.Instances.PFSP/3.3/FSSPTAILIBInstanceProvider.cs
r15541 r15639 28 28 using System.Text.RegularExpressions; 29 29 30 namespace HeuristicLab.Problems.Instances.PFSP 31 { 32 public class FSSPTAILIBInstanceProvider : ProblemInstanceProvider<FSSPData> 30 namespace HeuristicLab.Problems.Instances.PFSP { 31 public class FSSPTAILIBInstanceProvider : ProblemInstanceProvider<FSSPData> { 32 33 public override string Name 33 34 { 35 get { return "FSSPTAI"; } 36 } 34 37 35 public override string Name 36 { 37 get { return "FSSPTAI"; } 38 public override string Description 39 { 40 get { return "Permutation Flowshop Scheduling Problems (PFSP) as defined by Taillard."; } 41 } 42 43 public override Uri WebLink 44 { 45 get { return new Uri("http://mistic.heig-vd.ch/taillard/problemes.dir/ordonnancement.dir/ordonnancement.html"); } 46 } 47 48 public override string ReferencePublication 49 { 50 get { return String.Empty; } 51 } 52 53 public override IEnumerable<IDataDescriptor> GetDataDescriptors() { 54 var instanceArchiveName = GetResourceName("FSSPTAI.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 FSSPTAILIBDataDescriptor(Path.GetFileNameWithoutExtension(entry), GetDescription(), entry, null); 38 60 } 61 } 62 } 39 63 40 public override string Description 41 { 42 get { return "Permutation Flowshop Scheduling Problems (PFSP) as defined by Taillard."; } 64 public override FSSPData LoadData(IDataDescriptor id) { 65 var descriptor = (FSSPTAILIBDataDescriptor)id; 66 var instanceArchiveName = GetResourceName("FSSPTAI.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 FSSPTAILIBParser(); 72 parser.Parse(stream); 73 return Load(parser); 43 74 } 75 } 76 } 44 77 45 public override Uri WebLink 46 { 47 get { return new Uri("http://mistic.heig-vd.ch/taillard/problemes.dir/ordonnancement.dir/ordonnancement.html"); } 48 } 78 public override bool CanImportData 79 { 80 get { return true; } 81 } 82 public override FSSPData ImportData(string path) { 83 var parser = new FSSPTAILIBParser(); 84 parser.Parse(path); 85 return Load(parser); 86 } 49 87 50 public override string ReferencePublication 51 { 52 get { return String.Empty; } 53 } 88 private FSSPData Load(FSSPTAILIBParser parser) { 89 var instance = new FSSPData { 90 Name = parser.Name, 91 Description = parser.Description, 92 Jobs = parser.Jobs, 93 Machines = parser.Machines, 94 ProcessingTimes = parser.ProcessingTimes, 95 BestKnownSchedule = parser.BestKnownSchedule, 96 BestKnownQuality = parser.BestKnownQuality 97 }; 98 return instance; 99 } 54 100 55 public override IEnumerable<IDataDescriptor> GetDataDescriptors()56 57 var instanceArchiveName = GetResourceName("FSSPTAI.zip");58 if (String.IsNullOrEmpty(instanceArchiveName)) yield break;101 public override bool CanExportData 102 { 103 get { return false; } 104 } 59 105 60 using (var instanceStream = new ZipArchive(GetType().Assembly.GetManifestResourceStream(instanceArchiveName), ZipArchiveMode.Read)) 61 { 62 foreach (var entry in instanceStream.Entries.Select(x => x.Name).OrderBy(x => x)) 63 { 64 yield return new FSSPTAILIBDataDescriptor(Path.GetFileNameWithoutExtension(entry), GetDescription(), entry, null); 65 } 66 } 67 } 106 private string GetDescription() { 107 return "Embedded instance of plugin version " + Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true).Cast<AssemblyFileVersionAttribute>().First().Version + "."; 108 } 68 109 69 public override FSSPData LoadData(IDataDescriptor id) 70 { 71 var descriptor = (FSSPTAILIBDataDescriptor)id; 72 var instanceArchiveName = GetResourceName("FSSPTAI.zip"); 73 using (var instancesZipFile = new ZipArchive(GetType().Assembly.GetManifestResourceStream(instanceArchiveName), ZipArchiveMode.Read)) 74 { 75 var entry = instancesZipFile.GetEntry(descriptor.InstanceIdentifier); 76 77 using (var stream = entry.Open()) 78 { 79 var parser = new FSSPTAILIBParser(); 80 parser.Parse(stream); 81 return Load(parser); 82 } 83 } 84 } 85 86 public override bool CanImportData 87 { 88 get { return true; } 89 } 90 public override FSSPData ImportData(string path) 91 { 92 var parser = new FSSPTAILIBParser(); 93 parser.Parse(path); 94 return Load(parser); 95 } 96 97 private FSSPData Load(FSSPTAILIBParser parser) 98 { 99 var instance = new FSSPData 100 { 101 Name = parser.Name, 102 Description = parser.Description, 103 Jobs = parser.Jobs, 104 Machines = parser.Machines, 105 ProcessingTimes = parser.ProcessingTimes, 106 BestKnownSchedule = parser.BestKnownSchedule, 107 BestKnownQuality = parser.BestKnownQuality 108 }; 109 return instance; 110 } 111 112 public override bool CanExportData 113 { 114 get { return false; } 115 } 116 117 private string GetDescription() 118 { 119 return "Embedded instance of plugin version " + Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true).Cast<AssemblyFileVersionAttribute>().First().Version + "."; 120 } 121 122 protected virtual string GetResourceName(string fileName) 123 { 124 return Assembly.GetExecutingAssembly().GetManifestResourceNames() 125 .SingleOrDefault(x => Regex.Match(x, @".*\.Data\." + fileName).Success); 126 } 110 protected virtual string GetResourceName(string fileName) { 111 return Assembly.GetExecutingAssembly().GetManifestResourceNames() 112 .SingleOrDefault(x => Regex.Match(x, @".*\.Data\." + fileName).Success); 127 113 } 114 } 128 115 }
Note: See TracChangeset
for help on using the changeset viewer.