Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/01/12 15:15:22 (13 years ago)
Author:
abeham
Message:

#1614

  • Fixed plugin dependencies
  • Updated GQAP view
  • Changed instances infrastructure
    • Changed interface types into classes
    • Removed the library specific instance classes
Location:
branches/GeneralizedQAP/HeuristicLab.Problems.Instances.ElloumiCTAP/3.3
Files:
1 deleted
4 edited

Legend:

Unmodified
Added
Removed
  • branches/GeneralizedQAP/HeuristicLab.Problems.Instances.ElloumiCTAP/3.3/ElloumiCTAPInstanceProvider.cs

    r7482 r7538  
    2828
    2929namespace HeuristicLab.Problems.Instances.ElloumiCTAP {
    30   public class ElloumiCTAPInstanceProvider : ProblemInstanceProvider<ICTAPInstance> {
     30  public class ElloumiCTAPInstanceProvider : ProblemInstanceProvider<CTAPInstance> {
    3131    public override string Name {
    3232      get { return "Elloumi's CTAP instances"; }
     
    6262    }
    6363
    64     public override ICTAPInstance GetInstance(IInstanceDescriptor id) {
     64    public override CTAPInstance LoadInstance(IInstanceDescriptor id) {
    6565      var descriptor = (ElloumiCTAPInstanceDescriptor)id;
    66       var instance = new ElloumiCTAPInstance();
    6766      using (var stream = Assembly.GetExecutingAssembly()
    6867        .GetManifestResourceStream(descriptor.InstanceIdentifier)) {
    69         ElloumiCTAPParser datParser = new ElloumiCTAPParser();
    70         datParser.Parse(stream);
    71         if (datParser.Error != null) throw datParser.Error;
    72         instance.Processors = datParser.Processors;
    73         instance.Tasks = datParser.Tasks;
    74         instance.ExecutionCosts = datParser.ExecutionCosts;
    75         instance.CommunicationCosts = datParser.CommunicationCosts;
    76         instance.MemoryRequirements = datParser.MemoryRequirements;
    77         instance.MemoryCapacities = datParser.MemoryCapacities;
     68        var parser = new ElloumiCTAPParser();
     69        parser.Parse(stream);
     70        var instance = Load(parser);
    7871
    7972        instance.Name = id.Name;
     
    9184          }
    9285        }
     86        return instance;
    9387      }
     88    }
     89
     90    public override CTAPInstance LoadInstance(string path) {
     91      var parser = new ElloumiCTAPParser();
     92      parser.Parse(path);
     93      var instance = Load(parser);
     94      instance.Name = Path.GetFileName(path);
     95      instance.Description = "Loaded from file \"" + path + "\" on " + DateTime.Now.ToString();
     96      return instance;
     97    }
     98
     99    public override void SaveInstance(CTAPInstance instance, string path) {
     100      throw new NotSupportedException();
     101    }
     102
     103    private CTAPInstance Load(ElloumiCTAPParser parser) {
     104      var instance = new CTAPInstance();
     105      instance.Processors = parser.Processors;
     106      instance.Tasks = parser.Tasks;
     107      instance.ExecutionCosts = parser.ExecutionCosts;
     108      instance.CommunicationCosts = parser.CommunicationCosts;
     109      instance.MemoryRequirements = parser.MemoryRequirements;
     110      instance.MemoryCapacities = parser.MemoryCapacities;
    94111      return instance;
    95112    }
  • branches/GeneralizedQAP/HeuristicLab.Problems.Instances.ElloumiCTAP/3.3/ElloumiCTAPParser.cs

    r7448 r7538  
    3232    public double[] MemoryRequirements { get; private set; }
    3333    public double[] MemoryCapacities { get; private set; }
    34     public Exception Error { get; private set; }
    3534
    3635    public ElloumiCTAPParser() {
     
    4544      MemoryRequirements = null;
    4645      MemoryCapacities = null;
    47       Error = null;
    4846    }
    4947
    50     public bool Parse(string file) {
     48    public void Parse(string file) {
    5149      using (Stream stream = new FileStream(file, FileMode.Open, FileAccess.Read)) {
    52         return Parse(stream);
     50        Parse(stream);
    5351      }
    5452    }
     
    6260    /// <param name="stream">The stream to read data from.</param>
    6361    /// <returns>True if the file was successfully read or false otherwise.</returns>
    64     public bool Parse(Stream stream) {
    65       Error = null;
     62    public void Parse(Stream stream) {
    6663      var separator = new char[] { ' ', '\t' };
    67       try {
    68         StreamReader reader = new StreamReader(stream);
    69         string line = Continue(reader);
     64      var reader = new StreamReader(stream);
     65      string line = Continue(reader);
    7066
    71         Tasks = int.Parse(line);
     67      Tasks = int.Parse(line);
    7268
     69      line = Continue(reader);
     70
     71      Processors = int.Parse(line);
     72
     73      line = Continue(reader);
     74
     75      ExecutionCosts = new double[Processors, Tasks];
     76      for (int i = 0; i < Processors; i++) {
     77        string[] costsPerTask = line.Split(separator, StringSplitOptions.RemoveEmptyEntries);
     78        for (int j = 0; j < Tasks; j++)
     79          ExecutionCosts[i, j] = double.Parse(costsPerTask[j], CultureInfo.InvariantCulture.NumberFormat);
    7380        line = Continue(reader);
     81      }
    7482
    75         Processors = int.Parse(line);
     83      CommunicationCosts = new double[Tasks, Tasks];
     84      for (int i = 0; i < Tasks - 1; i++) {
     85        string[] costsTaskToTasks = line.Split(separator, StringSplitOptions.RemoveEmptyEntries);
     86        for (int j = i + 1; j < Tasks; j++) {
     87          CommunicationCosts[i, j] = double.Parse(costsTaskToTasks[j - i - 1], CultureInfo.InvariantCulture.NumberFormat);
     88          CommunicationCosts[j, i] = CommunicationCosts[i, j];
     89        }
     90        line = Continue(reader);
     91      }
    7692
    77         line = Continue(reader);
     93      MemoryRequirements = new double[Tasks];
     94      string[] requirementsPerTask = line.Split(separator, StringSplitOptions.RemoveEmptyEntries);
     95      for (int i = 0; i < Tasks; i++)
     96        MemoryRequirements[i] = double.Parse(requirementsPerTask[i], CultureInfo.InvariantCulture.NumberFormat);
    7897
    79         ExecutionCosts = new double[Processors, Tasks];
    80         for (int i = 0; i < Processors; i++) {
    81           string[] costsPerTask = line.Split(separator, StringSplitOptions.RemoveEmptyEntries);
    82           for (int j = 0; j < Tasks; j++)
    83             ExecutionCosts[i, j] = double.Parse(costsPerTask[j], CultureInfo.InvariantCulture.NumberFormat);
    84           line = Continue(reader);
    85         }
     98      line = Continue(reader);
    8699
    87         CommunicationCosts = new double[Tasks, Tasks];
    88         for (int i = 0; i < Tasks - 1; i++) {
    89           string[] costsTaskToTasks = line.Split(separator, StringSplitOptions.RemoveEmptyEntries);
    90           for (int j = i + 1; j < Tasks; j++) {
    91             CommunicationCosts[i, j] = double.Parse(costsTaskToTasks[j - i - 1], CultureInfo.InvariantCulture.NumberFormat);
    92             CommunicationCosts[j, i] = CommunicationCosts[i, j];
    93           }
    94           line = Continue(reader);
    95         }
     100      MemoryCapacities = new double[Processors];
     101      string[] capacitiesPerProcessor = line.Split(separator, StringSplitOptions.RemoveEmptyEntries);
     102      for (int i = 0; i < Processors; i++)
     103        MemoryCapacities[i] = double.Parse(capacitiesPerProcessor[i], CultureInfo.InvariantCulture.NumberFormat);
    96104
    97         MemoryRequirements = new double[Tasks];
    98         string[] requirementsPerTask = line.Split(separator, StringSplitOptions.RemoveEmptyEntries);
    99         for (int i = 0; i < Tasks; i++)
    100           MemoryRequirements[i] = double.Parse(requirementsPerTask[i], CultureInfo.InvariantCulture.NumberFormat);
    101 
    102         line = Continue(reader);
    103 
    104         MemoryCapacities = new double[Processors];
    105         string[] capacitiesPerProcessor = line.Split(separator, StringSplitOptions.RemoveEmptyEntries);
    106         for (int i = 0; i < Processors; i++)
    107           MemoryCapacities[i] = double.Parse(capacitiesPerProcessor[i], CultureInfo.InvariantCulture.NumberFormat);
    108 
    109         return true;
    110       } catch (Exception e) {
    111         Error = e;
    112         return false;
    113       }
    114105    }
    115106
  • branches/GeneralizedQAP/HeuristicLab.Problems.Instances.ElloumiCTAP/3.3/HeuristicLab.Problems.Instances.ElloumiCTAP-3.3.csproj

    r7448 r7538  
    133133    <EmbeddedResource Include="Data\tassc2005De.dat" />
    134134    <None Include="Plugin.cs.frame" />
    135     <Compile Include="ElloumiCTAPInstance.cs" />
    136135    <Compile Include="ElloumiCTAPInstanceDescriptor.cs" />
    137136    <Compile Include="ElloumiCTAPInstanceProvider.cs" />
  • branches/GeneralizedQAP/HeuristicLab.Problems.Instances.ElloumiCTAP/3.3/Plugin.cs.frame

    r7443 r7538  
    2525  [Plugin("HeuristicLab.Problems.Instances.ElloumiCTAP", "3.3.6.$WCREV$")]
    2626  [PluginFile("HeuristicLab.Problems.Instances.ElloumiCTAP-3.3.dll", PluginFileType.Assembly)]
     27  [PluginDependency("HeuristicLab.Common", "3.3")]
     28  [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
    2729  public class HeuristicLabProblemsInstancesElloumiCTAPPlugin : PluginBase {
    2830  }
Note: See TracChangeset for help on using the changeset viewer.