- Timestamp:
- 03/01/12 15:15:22 (13 years ago)
- 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 28 28 29 29 namespace HeuristicLab.Problems.Instances.ElloumiCTAP { 30 public class ElloumiCTAPInstanceProvider : ProblemInstanceProvider< ICTAPInstance> {30 public class ElloumiCTAPInstanceProvider : ProblemInstanceProvider<CTAPInstance> { 31 31 public override string Name { 32 32 get { return "Elloumi's CTAP instances"; } … … 62 62 } 63 63 64 public override ICTAPInstance GetInstance(IInstanceDescriptor id) {64 public override CTAPInstance LoadInstance(IInstanceDescriptor id) { 65 65 var descriptor = (ElloumiCTAPInstanceDescriptor)id; 66 var instance = new ElloumiCTAPInstance();67 66 using (var stream = Assembly.GetExecutingAssembly() 68 67 .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); 78 71 79 72 instance.Name = id.Name; … … 91 84 } 92 85 } 86 return instance; 93 87 } 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; 94 111 return instance; 95 112 } -
branches/GeneralizedQAP/HeuristicLab.Problems.Instances.ElloumiCTAP/3.3/ElloumiCTAPParser.cs
r7448 r7538 32 32 public double[] MemoryRequirements { get; private set; } 33 33 public double[] MemoryCapacities { get; private set; } 34 public Exception Error { get; private set; }35 34 36 35 public ElloumiCTAPParser() { … … 45 44 MemoryRequirements = null; 46 45 MemoryCapacities = null; 47 Error = null;48 46 } 49 47 50 public boolParse(string file) {48 public void Parse(string file) { 51 49 using (Stream stream = new FileStream(file, FileMode.Open, FileAccess.Read)) { 52 returnParse(stream);50 Parse(stream); 53 51 } 54 52 } … … 62 60 /// <param name="stream">The stream to read data from.</param> 63 61 /// <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) { 66 63 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); 70 66 71 67 Tasks = int.Parse(line); 72 68 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); 73 80 line = Continue(reader); 81 } 74 82 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 } 76 92 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); 78 97 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); 86 99 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); 96 104 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 }114 105 } 115 106 -
branches/GeneralizedQAP/HeuristicLab.Problems.Instances.ElloumiCTAP/3.3/HeuristicLab.Problems.Instances.ElloumiCTAP-3.3.csproj
r7448 r7538 133 133 <EmbeddedResource Include="Data\tassc2005De.dat" /> 134 134 <None Include="Plugin.cs.frame" /> 135 <Compile Include="ElloumiCTAPInstance.cs" />136 135 <Compile Include="ElloumiCTAPInstanceDescriptor.cs" /> 137 136 <Compile Include="ElloumiCTAPInstanceProvider.cs" /> -
branches/GeneralizedQAP/HeuristicLab.Problems.Instances.ElloumiCTAP/3.3/Plugin.cs.frame
r7443 r7538 25 25 [Plugin("HeuristicLab.Problems.Instances.ElloumiCTAP", "3.3.6.$WCREV$")] 26 26 [PluginFile("HeuristicLab.Problems.Instances.ElloumiCTAP-3.3.dll", PluginFileType.Assembly)] 27 [PluginDependency("HeuristicLab.Common", "3.3")] 28 [PluginDependency("HeuristicLab.Problems.Instances", "3.3")] 27 29 public class HeuristicLabProblemsInstancesElloumiCTAPPlugin : PluginBase { 28 30 }
Note: See TracChangeset
for help on using the changeset viewer.