- Timestamp:
- 03/01/12 15:15:22 (13 years ago)
- Location:
- branches/GeneralizedQAP/HeuristicLab.Problems.Instances.CordeauGQAP/3.3
- Files:
-
- 1 deleted
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GeneralizedQAP/HeuristicLab.Problems.Instances.CordeauGQAP/3.3/CordeauGQAPInstanceProvider.cs
r7523 r7538 22 22 using System; 23 23 using System.Collections.Generic; 24 using System.IO; 24 25 using System.Linq; 25 26 using System.Reflection; … … 27 28 28 29 namespace HeuristicLab.Problems.Instances.CordeauGQAP { 29 public class CordeauGQAPInstanceProvider : ProblemInstanceProvider< IGQAPInstance> {30 public class CordeauGQAPInstanceProvider : ProblemInstanceProvider<GQAPInstance> { 30 31 public override string Name { 31 32 get { return "Cordeau et al. GQAP instances"; } … … 56 57 } 57 58 58 public override IGQAPInstance GetInstance(IInstanceDescriptor id) {59 public override GQAPInstance LoadInstance(IInstanceDescriptor id) { 59 60 var descriptor = (CordeauGQAPInstanceDescriptor)id; 60 var instance = new CordeauGQAPInstance();61 61 using (var stream = Assembly.GetExecutingAssembly() 62 62 .GetManifestResourceStream(descriptor.InstanceIdentifier)) { 63 63 var parser = new CordeauGQAPParser(); 64 64 parser.Parse(stream); 65 if (parser.Error != null) throw parser.Error; 66 instance.Equipments = parser.Equipments; 67 instance.Locations = parser.Locations; 68 instance.Demands = parser.Demands; 69 instance.Capacities = parser.Capacities; 70 instance.Weights = parser.Weights; 71 instance.Distances = parser.Distances; 72 instance.InstallationCosts = parser.InstallationCosts; 73 instance.TransportationCosts = parser.TransportationCosts; 65 var instance = Load(parser); 74 66 75 67 instance.Name = id.Name; 76 68 instance.Description = id.Description; 69 70 return instance; 77 71 } 72 } 73 74 public override GQAPInstance LoadInstance(string path) { 75 var parser = new CordeauGQAPParser(); 76 parser.Parse(path); 77 var instance = Load(parser); 78 79 instance.Name = Path.GetFileName(path); 80 instance.Description = "Loaded from file \"" + path + "\" on " + DateTime.Now.ToString(); 81 82 return instance; 83 } 84 85 public override void SaveInstance(GQAPInstance instance, string path) { 86 throw new NotSupportedException(); 87 } 88 89 private GQAPInstance Load(CordeauGQAPParser parser) { 90 var instance = new GQAPInstance(); 91 instance.Equipments = parser.Equipments; 92 instance.Locations = parser.Locations; 93 instance.Demands = parser.Demands; 94 instance.Capacities = parser.Capacities; 95 instance.Weights = parser.Weights; 96 instance.Distances = parser.Distances; 97 instance.InstallationCosts = parser.InstallationCosts; 98 instance.TransportationCosts = parser.TransportationCosts; 78 99 return instance; 79 100 } -
branches/GeneralizedQAP/HeuristicLab.Problems.Instances.CordeauGQAP/3.3/CordeauGQAPParser.cs
r7505 r7538 34 34 public double[] Demands { get; private set; } 35 35 public double[] Capacities { get; private set; } 36 public Exception Error { get; private set; }37 36 38 37 public CordeauGQAPParser() { … … 48 47 Demands = null; 49 48 Capacities = null; 50 Error = null;51 49 } 52 50 53 public boolParse(string file) {51 public void Parse(string file) { 54 52 using (var stream = new FileStream(file, FileMode.Open, FileAccess.Read)) { 55 returnParse(stream);53 Parse(stream); 56 54 } 57 55 } … … 64 62 /// </remarks> 65 63 /// <param name="stream">The stream to read data from.</param> 66 /// <returns>True if the file was successfully read or false otherwise.</returns> 67 public bool Parse(Stream stream) { 68 Error = null; 64 public void Parse(Stream stream) { 69 65 var separator = new char[] { ' ', '\t' }; 70 try { 71 StreamReader reader = new StreamReader(stream); 72 string line = Continue(reader); 66 var reader = new StreamReader(stream); 67 string line = Continue(reader); 73 68 74 75 76 77 69 var info = line.Split(separator, StringSplitOptions.RemoveEmptyEntries); 70 Equipments = int.Parse(info[0]); 71 Locations = int.Parse(info[1]); 72 TransportationCosts = double.Parse(info[2]); 78 73 74 line = Continue(reader); 75 76 Weights = new double[Equipments, Equipments]; 77 for (int i = 0; i < Equipments; i++) { 78 var weightsPerEquipment = line.Split(separator, StringSplitOptions.RemoveEmptyEntries); 79 for (int j = 0; j < Equipments; j++) { 80 Weights[i, j] = double.Parse(weightsPerEquipment[j], CultureInfo.InvariantCulture.NumberFormat); 81 } 79 82 line = Continue(reader); 83 } 80 84 81 Weights = new double[Equipments, Equipments]; 82 for (int i = 0; i < Equipments; i++) { 83 var weightsPerEquipment = line.Split(separator, StringSplitOptions.RemoveEmptyEntries); 84 for (int j = 0; j < Equipments; j++) { 85 Weights[i, j] = double.Parse(weightsPerEquipment[j], CultureInfo.InvariantCulture.NumberFormat); 86 } 87 line = Continue(reader); 85 Distances = new double[Locations, Locations]; 86 for (int i = 0; i < Locations; i++) { 87 var distancePerLocation = line.Split(separator, StringSplitOptions.RemoveEmptyEntries); 88 for (int j = 0; j < Locations; j++) { 89 Distances[i, j] = double.Parse(distancePerLocation[j], CultureInfo.InvariantCulture.NumberFormat); 88 90 } 91 line = Continue(reader); 92 } 89 93 90 Distances = new double[Locations, Locations]; 91 for (int i = 0; i < Locations; i++) { 92 var distancePerLocation = line.Split(separator, StringSplitOptions.RemoveEmptyEntries); 93 for (int j = 0; j < Locations; j++) { 94 Distances[i, j] = double.Parse(distancePerLocation[j], CultureInfo.InvariantCulture.NumberFormat); 95 } 96 line = Continue(reader); 97 } 94 InstallationCosts = new double[Equipments, Locations]; 95 for (int i = 0; i < Equipments; i++) { 96 var costsPerEquipment = line.Split(separator, StringSplitOptions.RemoveEmptyEntries); 97 for (int j = 0; j < Locations; j++) 98 InstallationCosts[i, j] = double.Parse(costsPerEquipment[j], CultureInfo.InvariantCulture.NumberFormat); 99 line = Continue(reader); 100 } 98 101 99 InstallationCosts = new double[Equipments, Locations]; 100 for (int i = 0; i < Equipments; i++) { 101 var costsPerEquipment = line.Split(separator, StringSplitOptions.RemoveEmptyEntries); 102 for (int j = 0; j < Locations; j++) 103 InstallationCosts[i, j] = double.Parse(costsPerEquipment[j], CultureInfo.InvariantCulture.NumberFormat); 104 line = Continue(reader); 105 } 102 Demands = new double[Equipments]; 103 var demandsPerEquipment = line.Split(separator, StringSplitOptions.RemoveEmptyEntries); 104 for (int i = 0; i < Equipments; i++) 105 Demands[i] = double.Parse(demandsPerEquipment[i], CultureInfo.InvariantCulture.NumberFormat); 106 106 107 Demands = new double[Equipments]; 108 var demandsPerEquipment = line.Split(separator, StringSplitOptions.RemoveEmptyEntries); 109 for (int i = 0; i < Equipments; i++) 110 Demands[i] = double.Parse(demandsPerEquipment[i], CultureInfo.InvariantCulture.NumberFormat); 107 line = Continue(reader); 111 108 112 line = Continue(reader); 113 114 Capacities = new double[Locations]; 115 string[] capacityPerLocation = line.Split(separator, StringSplitOptions.RemoveEmptyEntries); 116 for (int i = 0; i < Locations; i++) 117 Capacities[i] = double.Parse(capacityPerLocation[i], CultureInfo.InvariantCulture.NumberFormat); 118 119 return true; 120 } catch (Exception e) { 121 Error = e; 122 return false; 123 } 109 Capacities = new double[Locations]; 110 string[] capacityPerLocation = line.Split(separator, StringSplitOptions.RemoveEmptyEntries); 111 for (int i = 0; i < Locations; i++) 112 Capacities[i] = double.Parse(capacityPerLocation[i], CultureInfo.InvariantCulture.NumberFormat); 124 113 } 125 114 -
branches/GeneralizedQAP/HeuristicLab.Problems.Instances.CordeauGQAP/3.3/HeuristicLab.Problems.Instances.CordeauGQAP-3.3.csproj
r7505 r7538 111 111 <None Include="Plugin.cs.frame" /> 112 112 <Compile Include="CordeauGQAPParser.cs" /> 113 <Compile Include="CordeauGQAPInstance.cs" />114 113 <Compile Include="CordeauGQAPInstanceProvider.cs" /> 115 114 <Compile Include="CordeauGQAPInstanceDescriptor.cs" /> -
branches/GeneralizedQAP/HeuristicLab.Problems.Instances.CordeauGQAP/3.3/Plugin.cs.frame
r7505 r7538 25 25 [Plugin("HeuristicLab.Problems.Instances.CordeauGQAP", "3.3.6.$WCREV$")] 26 26 [PluginFile("HeuristicLab.Problems.Instances.CordeauGQAP-3.3.dll", PluginFileType.Assembly)] 27 [PluginDependency("HeuristicLab.Common", "3.3")] 28 [PluginDependency("HeuristicLab.Problems.Instances", "3.3")] 27 29 public class HeuristicLabProblemsInstancesCordeauGQAPPlugin : PluginBase { 28 30 }
Note: See TracChangeset
for help on using the changeset viewer.