Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/22/18 17:15:29 (6 years ago)
Author:
fholzing
Message:

#2864: Adapted PFSP and LOP to the new BasicProblem

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2864_PermutationProblems/HeuristicLab.Problems.Instances.LinearOrdering/3.3/LOPXLOLIBInstanceProvider.cs

    r15541 r15639  
    2929using System.Text.RegularExpressions;
    3030
    31 namespace HeuristicLab.Problems.Instances.LinearOrdering
    32 {
    33     public class LOPXLOLIBInstanceProvider : ProblemInstanceProvider<LOPData>
     31namespace HeuristicLab.Problems.Instances.LinearOrdering {
     32  public class LOPXLOLIBInstanceProvider : ProblemInstanceProvider<LOPData> {
     33
     34    public override string Name
    3435    {
     36      get { return "XLOLIB"; }
     37    }
    3538
    36         public override string Name {
    37             get { return "XLOLIB"; }
     39    public override string Description
     40    {
     41      get { return "Linear Ordering Problems XLOLIB test instances"; }
     42    }
     43
     44    public override Uri WebLink
     45    {
     46      get { return new Uri("http://www.optsicom.es/lolib/lop/XLOLIB.zip"); }
     47    }
     48
     49    public override string ReferencePublication
     50    {
     51      get { return String.Empty; }
     52    }
     53
     54    public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
     55      var instanceArchiveName = GetResourceName("XLOLIB.zip");
     56      if (String.IsNullOrEmpty(instanceArchiveName)) yield break;
     57
     58      using (var instanceStream = new ZipArchive(GetType().Assembly.GetManifestResourceStream(instanceArchiveName), ZipArchiveMode.Read)) {
     59        foreach (var entry in instanceStream.Entries.Select(x => x.Name).OrderBy(x => x)) {
     60          yield return new LOPDataDescriptor(Path.GetFileNameWithoutExtension(entry), GetDescription(), entry, null);
    3861        }
     62      }
     63    }
    3964
    40         public override string Description {
    41             get { return "Linear Ordering Problems XLOLIB test instances"; }
     65    public override LOPData LoadData(IDataDescriptor id) {
     66      var descriptor = (LOPDataDescriptor)id;
     67      var instanceArchiveName = GetResourceName("XLOLIB.zip");
     68      using (var instancesZipFile = new ZipArchive(GetType().Assembly.GetManifestResourceStream(instanceArchiveName), ZipArchiveMode.Read)) {
     69        var entry = instancesZipFile.GetEntry(descriptor.InstanceIdentifier);
     70
     71        using (var stream = entry.Open()) {
     72          var parser = new LOPParser();
     73          parser.Parse(stream);
     74          return Load(parser);
    4275        }
     76      }
     77    }
    4378
    44         public override Uri WebLink {
    45             get { return new Uri("http://www.optsicom.es/lolib/lop/XLOLIB.zip"); }
    46         }
     79    public override bool CanImportData
     80    {
     81      get { return true; }
     82    }
     83    public override LOPData ImportData(string path) {
     84      var parser = new LOPParser();
     85      parser.Parse(path);
     86      return Load(parser);
     87    }
    4788
    48         public override string ReferencePublication {
    49             get { return String.Empty; }
    50         }
     89    private LOPData Load(LOPParser parser) {
     90      var instance = new LOPData {
     91        Name = parser.Name,
     92        Description = parser.Description,
     93        Dimension = parser.Dimension,
     94        Matrix = parser.Matrix,
     95        BestKnownPermutation = parser.BestKnownPermutation,
     96        BestKnownQuality = parser.BestKnownQuality
     97      };
     98      return instance;
     99    }
    51100
    52         public override IEnumerable<IDataDescriptor> GetDataDescriptors()
    53         {
    54             var instanceArchiveName = GetResourceName("XLOLIB.zip");
    55             if (String.IsNullOrEmpty(instanceArchiveName)) yield break;
     101    public override bool CanExportData
     102    {
     103      get { return false; }
     104    }
    56105
    57             using (var instanceStream = new ZipArchive(GetType().Assembly.GetManifestResourceStream(instanceArchiveName), ZipArchiveMode.Read))
    58             {
    59                 foreach (var entry in instanceStream.Entries.Select(x => x.Name).OrderBy(x => x))
    60                 {
    61                     yield return new LOPDataDescriptor(Path.GetFileNameWithoutExtension(entry), GetDescription(), entry, null);
    62                 }
    63             }
    64         }
     106    private string GetDescription() {
     107      return "Embedded instance of plugin version " + Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true).Cast<AssemblyFileVersionAttribute>().First().Version + ".";
     108    }
    65109
    66         public override LOPData LoadData(IDataDescriptor id)
    67         {
    68             var descriptor = (LOPDataDescriptor)id;
    69             var instanceArchiveName = GetResourceName("XLOLIB.zip");
    70             using (var instancesZipFile = new ZipArchive(GetType().Assembly.GetManifestResourceStream(instanceArchiveName), ZipArchiveMode.Read))
    71             {
    72                 var entry = instancesZipFile.GetEntry(descriptor.InstanceIdentifier);
    73 
    74                 using (var stream = entry.Open())
    75                 {
    76                     var parser = new LOPParser();
    77                     parser.Parse(stream);
    78                     return Load(parser);
    79                 }
    80             }
    81         }
    82 
    83         public override bool CanImportData {
    84             get { return true; }
    85         }
    86         public override LOPData ImportData(string path)
    87         {
    88             var parser = new LOPParser();
    89             parser.Parse(path);
    90             return Load(parser);
    91         }
    92 
    93         private LOPData Load(LOPParser parser)
    94         {
    95             var instance = new LOPData
    96             {
    97                 Name = parser.Name,
    98                 Description = parser.Description,
    99                 Dimension = parser.Dimension,
    100                 Matrix = parser.Matrix,
    101                 BestKnownPermutation = parser.BestKnownPermutation,
    102                 BestKnownQuality = parser.BestKnownQuality
    103             };
    104             return instance;
    105         }
    106 
    107         public override bool CanExportData {
    108             get { return false; }
    109         }
    110        
    111         private string GetDescription()
    112         {
    113             return "Embedded instance of plugin version " + Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true).Cast<AssemblyFileVersionAttribute>().First().Version + ".";
    114         }
    115 
    116         protected virtual string GetResourceName(string fileName)
    117         {
    118             return Assembly.GetExecutingAssembly().GetManifestResourceNames()
    119               .SingleOrDefault(x => Regex.Match(x, @".*\.Data\." + fileName).Success);
    120         }
     110    protected virtual string GetResourceName(string fileName) {
     111      return Assembly.GetExecutingAssembly().GetManifestResourceNames()
     112        .SingleOrDefault(x => Regex.Match(x, @".*\.Data\." + fileName).Success);
    121113    }
     114  }
    122115}
Note: See TracChangeset for help on using the changeset viewer.