Changeset 7638 for trunk/sources/HeuristicLab.Problems.Instances.QAPLIB
- Timestamp:
- 03/20/12 11:06:32 (12 years ago)
- Location:
- trunk/sources/HeuristicLab.Problems.Instances.QAPLIB/3.3
- Files:
-
- 2 added
- 258 deleted
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.Instances.QAPLIB/3.3/HeuristicLab.Problems.Instances.QAPLIB-3.3.csproj
r7600 r7638 102 102 </PropertyGroup> 103 103 <ItemGroup> 104 <Reference Include="ICSharpCode.SharpZipLib, Version=0.85.4.369, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL" /> 104 105 <Reference Include="System" /> 105 106 <Reference Include="System.Core" /> … … 111 112 <Compile Include="QAPLIBSolutionParser.cs" /> 112 113 <Compile Include="QAPLIBInstanceProvider.cs" /> 113 <EmbeddedResource Include="Data\bur26a.dat" /> 114 <EmbeddedResource Include="Data\bur26b.dat" /> 115 <EmbeddedResource Include="Data\bur26c.dat" /> 116 <EmbeddedResource Include="Data\bur26d.dat" /> 117 <EmbeddedResource Include="Data\bur26e.dat" /> 118 <EmbeddedResource Include="Data\bur26f.dat" /> 119 <EmbeddedResource Include="Data\bur26g.dat" /> 120 <EmbeddedResource Include="Data\bur26h.dat" /> 121 <EmbeddedResource Include="Data\chr12a.dat" /> 122 <EmbeddedResource Include="Data\chr12b.dat" /> 123 <EmbeddedResource Include="Data\chr12c.dat" /> 124 <EmbeddedResource Include="Data\chr15a.dat" /> 125 <EmbeddedResource Include="Data\chr15b.dat" /> 126 <EmbeddedResource Include="Data\chr15c.dat" /> 127 <EmbeddedResource Include="Data\chr18a.dat" /> 128 <EmbeddedResource Include="Data\chr18b.dat" /> 129 <EmbeddedResource Include="Data\chr20a.dat" /> 130 <EmbeddedResource Include="Data\chr20b.dat" /> 131 <EmbeddedResource Include="Data\chr20c.dat" /> 132 <EmbeddedResource Include="Data\chr22a.dat" /> 133 <EmbeddedResource Include="Data\chr22b.dat" /> 134 <EmbeddedResource Include="Data\chr25a.dat" /> 135 <EmbeddedResource Include="Data\els19.dat" /> 136 <EmbeddedResource Include="Data\esc128.dat" /> 137 <EmbeddedResource Include="Data\esc16a.dat" /> 138 <EmbeddedResource Include="Data\esc16b.dat" /> 139 <EmbeddedResource Include="Data\esc16c.dat" /> 140 <EmbeddedResource Include="Data\esc16d.dat" /> 141 <EmbeddedResource Include="Data\esc16e.dat" /> 142 <EmbeddedResource Include="Data\esc16f.dat" /> 143 <EmbeddedResource Include="Data\esc16g.dat" /> 144 <EmbeddedResource Include="Data\esc16h.dat" /> 145 <EmbeddedResource Include="Data\esc16i.dat" /> 146 <EmbeddedResource Include="Data\esc16j.dat" /> 147 <EmbeddedResource Include="Data\esc32a.dat" /> 148 <EmbeddedResource Include="Data\esc32b.dat" /> 149 <EmbeddedResource Include="Data\esc32c.dat" /> 150 <EmbeddedResource Include="Data\esc32d.dat" /> 151 <EmbeddedResource Include="Data\esc32e.dat" /> 152 <EmbeddedResource Include="Data\esc32f.dat" /> 153 <EmbeddedResource Include="Data\esc32g.dat" /> 154 <EmbeddedResource Include="Data\esc32h.dat" /> 155 <EmbeddedResource Include="Data\esc64a.dat" /> 156 <EmbeddedResource Include="Data\had12.dat" /> 157 <EmbeddedResource Include="Data\had14.dat" /> 158 <EmbeddedResource Include="Data\had16.dat" /> 159 <EmbeddedResource Include="Data\had18.dat" /> 160 <EmbeddedResource Include="Data\had20.dat" /> 161 <EmbeddedResource Include="Data\kra30a.dat" /> 162 <EmbeddedResource Include="Data\kra30b.dat" /> 163 <EmbeddedResource Include="Data\kra32.dat" /> 164 <EmbeddedResource Include="Data\lipa20a.dat" /> 165 <EmbeddedResource Include="Data\lipa20b.dat" /> 166 <EmbeddedResource Include="Data\lipa30a.dat" /> 167 <EmbeddedResource Include="Data\lipa30b.dat" /> 168 <EmbeddedResource Include="Data\lipa40a.dat" /> 169 <EmbeddedResource Include="Data\lipa40b.dat" /> 170 <EmbeddedResource Include="Data\lipa50a.dat" /> 171 <EmbeddedResource Include="Data\lipa50b.dat" /> 172 <EmbeddedResource Include="Data\lipa60a.dat" /> 173 <EmbeddedResource Include="Data\lipa60b.dat" /> 174 <EmbeddedResource Include="Data\lipa70a.dat" /> 175 <EmbeddedResource Include="Data\lipa70b.dat" /> 176 <EmbeddedResource Include="Data\lipa80a.dat" /> 177 <EmbeddedResource Include="Data\lipa80b.dat" /> 178 <EmbeddedResource Include="Data\lipa90a.dat" /> 179 <EmbeddedResource Include="Data\lipa90b.dat" /> 180 <EmbeddedResource Include="Data\nug12.dat" /> 181 <EmbeddedResource Include="Data\nug14.dat" /> 182 <EmbeddedResource Include="Data\nug15.dat" /> 183 <EmbeddedResource Include="Data\nug16a.dat" /> 184 <EmbeddedResource Include="Data\nug16b.dat" /> 185 <EmbeddedResource Include="Data\nug17.dat" /> 186 <EmbeddedResource Include="Data\nug18.dat" /> 187 <EmbeddedResource Include="Data\nug20.dat" /> 188 <EmbeddedResource Include="Data\nug21.dat" /> 189 <EmbeddedResource Include="Data\nug22.dat" /> 190 <EmbeddedResource Include="Data\nug24.dat" /> 191 <EmbeddedResource Include="Data\nug25.dat" /> 192 <EmbeddedResource Include="Data\nug27.dat" /> 193 <EmbeddedResource Include="Data\nug28.dat" /> 194 <EmbeddedResource Include="Data\nug30.dat" /> 195 <EmbeddedResource Include="Data\rou12.dat" /> 196 <EmbeddedResource Include="Data\rou15.dat" /> 197 <EmbeddedResource Include="Data\rou20.dat" /> 198 <EmbeddedResource Include="Data\scr12.dat" /> 199 <EmbeddedResource Include="Data\scr15.dat" /> 200 <EmbeddedResource Include="Data\scr20.dat" /> 201 <EmbeddedResource Include="Data\sko100a.dat" /> 202 <EmbeddedResource Include="Data\sko100b.dat" /> 203 <EmbeddedResource Include="Data\sko100c.dat" /> 204 <EmbeddedResource Include="Data\sko100d.dat" /> 205 <EmbeddedResource Include="Data\sko100e.dat" /> 206 <EmbeddedResource Include="Data\sko100f.dat" /> 207 <EmbeddedResource Include="Data\sko42.dat" /> 208 <EmbeddedResource Include="Data\sko49.dat" /> 209 <EmbeddedResource Include="Data\sko56.dat" /> 210 <EmbeddedResource Include="Data\sko64.dat" /> 211 <EmbeddedResource Include="Data\sko72.dat" /> 212 <EmbeddedResource Include="Data\sko81.dat" /> 213 <EmbeddedResource Include="Data\sko90.dat" /> 214 <EmbeddedResource Include="Data\ste36a.dat" /> 215 <EmbeddedResource Include="Data\ste36b.dat" /> 216 <EmbeddedResource Include="Data\ste36c.dat" /> 217 <EmbeddedResource Include="Data\tai100a.dat" /> 218 <EmbeddedResource Include="Data\tai100b.dat" /> 219 <EmbeddedResource Include="Data\tai10a.dat" /> 220 <EmbeddedResource Include="Data\tai10b.dat" /> 221 <EmbeddedResource Include="Data\tai12a.dat" /> 222 <EmbeddedResource Include="Data\tai12b.dat" /> 223 <EmbeddedResource Include="Data\tai150b.dat" /> 224 <EmbeddedResource Include="Data\tai15a.dat" /> 225 <EmbeddedResource Include="Data\tai15b.dat" /> 226 <EmbeddedResource Include="Data\tai17a.dat" /> 227 <EmbeddedResource Include="Data\tai20a.dat" /> 228 <EmbeddedResource Include="Data\tai20b.dat" /> 229 <EmbeddedResource Include="Data\tai256c.dat" /> 230 <EmbeddedResource Include="Data\tai25a.dat" /> 231 <EmbeddedResource Include="Data\tai25b.dat" /> 232 <EmbeddedResource Include="Data\tai30a.dat" /> 233 <EmbeddedResource Include="Data\tai30b.dat" /> 234 <EmbeddedResource Include="Data\tai35a.dat" /> 235 <EmbeddedResource Include="Data\tai35b.dat" /> 236 <EmbeddedResource Include="Data\tai40a.dat" /> 237 <EmbeddedResource Include="Data\tai40b.dat" /> 238 <EmbeddedResource Include="Data\tai50a.dat" /> 239 <EmbeddedResource Include="Data\tai50b.dat" /> 240 <EmbeddedResource Include="Data\tai60a.dat" /> 241 <EmbeddedResource Include="Data\tai60b.dat" /> 242 <EmbeddedResource Include="Data\tai64c.dat" /> 243 <EmbeddedResource Include="Data\tai80a.dat" /> 244 <EmbeddedResource Include="Data\tai80b.dat" /> 245 <EmbeddedResource Include="Data\tho150.dat" /> 246 <EmbeddedResource Include="Data\tho30.dat" /> 247 <EmbeddedResource Include="Data\tho40.dat" /> 248 <EmbeddedResource Include="Data\wil100.dat" /> 249 <EmbeddedResource Include="Data\wil50.dat" /> 114 <EmbeddedResource Include="Data\qap.dat.zip" /> 115 <EmbeddedResource Include="Data\qap.sln.zip" /> 250 116 <None Include="Plugin.cs.frame" /> 251 117 <Compile Include="Plugin.cs" /> … … 255 121 <ItemGroup> 256 122 <None Include="HeuristicLab.snk" /> 257 </ItemGroup>258 <ItemGroup>259 <EmbeddedResource Include="Data\bur26a.sln" />260 <EmbeddedResource Include="Data\bur26b.sln" />261 <EmbeddedResource Include="Data\bur26c.sln" />262 <EmbeddedResource Include="Data\bur26d.sln" />263 <EmbeddedResource Include="Data\bur26e.sln" />264 <EmbeddedResource Include="Data\bur26f.sln" />265 <EmbeddedResource Include="Data\bur26g.sln" />266 <EmbeddedResource Include="Data\bur26h.sln" />267 <EmbeddedResource Include="Data\chr12a.sln" />268 <EmbeddedResource Include="Data\chr12b.sln" />269 <EmbeddedResource Include="Data\chr12c.sln" />270 <EmbeddedResource Include="Data\chr15a.sln" />271 <EmbeddedResource Include="Data\chr15b.sln" />272 <EmbeddedResource Include="Data\chr15c.sln" />273 <EmbeddedResource Include="Data\chr18a.sln" />274 <EmbeddedResource Include="Data\chr18b.sln" />275 <EmbeddedResource Include="Data\chr20a.sln" />276 <EmbeddedResource Include="Data\chr20b.sln" />277 <EmbeddedResource Include="Data\chr20c.sln" />278 <EmbeddedResource Include="Data\chr22a.sln" />279 <EmbeddedResource Include="Data\chr22b.sln" />280 <EmbeddedResource Include="Data\chr25a.sln" />281 <EmbeddedResource Include="Data\els19.sln" />282 <EmbeddedResource Include="Data\esc128.sln" />283 <EmbeddedResource Include="Data\esc16a.sln" />284 <EmbeddedResource Include="Data\esc16b.sln" />285 <EmbeddedResource Include="Data\esc16c.sln" />286 <EmbeddedResource Include="Data\esc16d.sln" />287 <EmbeddedResource Include="Data\esc16e.sln" />288 <EmbeddedResource Include="Data\esc16f.sln" />289 <EmbeddedResource Include="Data\esc16g.sln" />290 <EmbeddedResource Include="Data\esc16h.sln" />291 <EmbeddedResource Include="Data\esc16i.sln" />292 <EmbeddedResource Include="Data\esc16j.sln" />293 <EmbeddedResource Include="Data\esc32a.sln" />294 <EmbeddedResource Include="Data\esc32e.sln" />295 <EmbeddedResource Include="Data\esc32f.sln" />296 <EmbeddedResource Include="Data\esc32g.sln" />297 <EmbeddedResource Include="Data\had12.sln" />298 <EmbeddedResource Include="Data\had14.sln" />299 <EmbeddedResource Include="Data\had16.sln" />300 <EmbeddedResource Include="Data\had18.sln" />301 <EmbeddedResource Include="Data\had20.sln" />302 <EmbeddedResource Include="Data\kra30a.sln" />303 <EmbeddedResource Include="Data\kra30b.sln" />304 <EmbeddedResource Include="Data\kra32.sln" />305 <EmbeddedResource Include="Data\lipa20a.sln" />306 <EmbeddedResource Include="Data\lipa20b.sln" />307 <EmbeddedResource Include="Data\lipa30a.sln" />308 <EmbeddedResource Include="Data\lipa30b.sln" />309 <EmbeddedResource Include="Data\lipa40a.sln" />310 <EmbeddedResource Include="Data\lipa40b.sln" />311 <EmbeddedResource Include="Data\lipa50a.sln" />312 <EmbeddedResource Include="Data\lipa50b.sln" />313 <EmbeddedResource Include="Data\lipa60a.sln" />314 <EmbeddedResource Include="Data\lipa60b.sln" />315 <EmbeddedResource Include="Data\lipa70a.sln" />316 <EmbeddedResource Include="Data\lipa70b.sln" />317 <EmbeddedResource Include="Data\lipa80a.sln" />318 <EmbeddedResource Include="Data\lipa80b.sln" />319 <EmbeddedResource Include="Data\lipa90a.sln" />320 <EmbeddedResource Include="Data\lipa90b.sln" />321 <EmbeddedResource Include="Data\nug12.sln" />322 <EmbeddedResource Include="Data\nug14.sln" />323 <EmbeddedResource Include="Data\nug15.sln" />324 <EmbeddedResource Include="Data\nug16a.sln" />325 <EmbeddedResource Include="Data\nug16b.sln" />326 <EmbeddedResource Include="Data\nug17.sln" />327 <EmbeddedResource Include="Data\nug18.sln" />328 <EmbeddedResource Include="Data\nug20.sln" />329 <EmbeddedResource Include="Data\nug21.sln" />330 <EmbeddedResource Include="Data\nug22.sln" />331 <EmbeddedResource Include="Data\nug24.sln" />332 <EmbeddedResource Include="Data\nug25.sln" />333 <EmbeddedResource Include="Data\nug27.sln" />334 <EmbeddedResource Include="Data\nug28.sln" />335 <EmbeddedResource Include="Data\nug30.sln" />336 <EmbeddedResource Include="Data\rou12.sln" />337 <EmbeddedResource Include="Data\rou15.sln" />338 <EmbeddedResource Include="Data\rou20.sln" />339 <EmbeddedResource Include="Data\scr12.sln" />340 <EmbeddedResource Include="Data\scr15.sln" />341 <EmbeddedResource Include="Data\scr20.sln" />342 <EmbeddedResource Include="Data\sko100a.sln" />343 <EmbeddedResource Include="Data\sko100b.sln" />344 <EmbeddedResource Include="Data\sko100c.sln" />345 <EmbeddedResource Include="Data\sko100d.sln" />346 <EmbeddedResource Include="Data\sko100e.sln" />347 <EmbeddedResource Include="Data\sko100f.sln" />348 <EmbeddedResource Include="Data\sko49.sln" />349 <EmbeddedResource Include="Data\sko81.sln" />350 <EmbeddedResource Include="Data\sko90.sln" />351 <EmbeddedResource Include="Data\ste36a.sln" />352 <EmbeddedResource Include="Data\ste36b.sln" />353 <EmbeddedResource Include="Data\ste36c.sln" />354 <EmbeddedResource Include="Data\tai100a.sln" />355 <EmbeddedResource Include="Data\tai100b.sln" />356 <EmbeddedResource Include="Data\tai12a.sln" />357 <EmbeddedResource Include="Data\tai12b.sln" />358 <EmbeddedResource Include="Data\tai150b.sln" />359 <EmbeddedResource Include="Data\tai15a.sln" />360 <EmbeddedResource Include="Data\tai15b.sln" />361 <EmbeddedResource Include="Data\tai17a.sln" />362 <EmbeddedResource Include="Data\tai20a.sln" />363 <EmbeddedResource Include="Data\tai20b.sln" />364 <EmbeddedResource Include="Data\tai256c.sln" />365 <EmbeddedResource Include="Data\tai25a.sln" />366 <EmbeddedResource Include="Data\tai25b.sln" />367 <EmbeddedResource Include="Data\tai30b.sln" />368 <EmbeddedResource Include="Data\tai35b.sln" />369 <EmbeddedResource Include="Data\tai40b.sln" />370 <EmbeddedResource Include="Data\tai50a.sln" />371 <EmbeddedResource Include="Data\tai50b.sln" />372 <EmbeddedResource Include="Data\tai60a.sln" />373 <EmbeddedResource Include="Data\tai60b.sln" />374 <EmbeddedResource Include="Data\tai64c.sln" />375 <EmbeddedResource Include="Data\tai80a.sln" />376 <EmbeddedResource Include="Data\tai80b.sln" />377 <EmbeddedResource Include="Data\tho150.sln" />378 <EmbeddedResource Include="Data\tho30.sln" />379 <EmbeddedResource Include="Data\wil100.sln" />380 123 </ItemGroup> 381 124 <ItemGroup> -
trunk/sources/HeuristicLab.Problems.Instances.QAPLIB/3.3/QAPLIBInstanceProvider.cs
r7558 r7638 26 26 using System.Reflection; 27 27 using System.Text.RegularExpressions; 28 using ICSharpCode.SharpZipLib.Zip; 28 29 29 30 namespace HeuristicLab.Problems.Instances.QAPLIB { … … 159 160 } 160 161 162 private const string FileName = "qap"; 163 161 164 public override IEnumerable<IDataDescriptor> GetDataDescriptors() { 162 var solutions = Assembly.GetExecutingAssembly() 163 .GetManifestResourceNames() 164 .Where(x => x.EndsWith(".sln")) 165 .ToDictionary(x => Path.GetFileNameWithoutExtension(x) + ".dat", x => x); 166 167 return Assembly.GetExecutingAssembly() 168 .GetManifestResourceNames() 169 .Where(x => x.EndsWith(".dat")) 170 .OrderBy(x => x) 171 .Select(x => new QAPLIBDataDescriptor(GetPrettyName(x), GetDescription(), x, solutions.ContainsKey(x) ? solutions[x] : String.Empty)); 165 Dictionary<string, string> solutions = new Dictionary<string, string>(); 166 var solutionsArchiveName = GetResourceName(FileName + @"\.sln\.zip"); 167 if (!String.IsNullOrEmpty(solutionsArchiveName)) { 168 using (var solutionsZipFile = new ZipInputStream(GetType().Assembly.GetManifestResourceStream(solutionsArchiveName))) { 169 foreach (var entry in GetZipContents(solutionsZipFile)) 170 solutions.Add(Path.GetFileNameWithoutExtension(entry) + ".dat", entry); 171 } 172 } 173 var instanceArchiveName = GetResourceName(FileName + @"\.dat\.zip"); 174 if (String.IsNullOrEmpty(instanceArchiveName)) yield break; 175 176 using (var instanceStream = new ZipInputStream(GetType().Assembly.GetManifestResourceStream(instanceArchiveName))) { 177 foreach (var entry in GetZipContents(instanceStream).OrderBy(x => x)) { 178 yield return new QAPLIBDataDescriptor(Path.GetFileNameWithoutExtension(entry), GetDescription(), entry, solutions.ContainsKey(entry) ? solutions[entry] : String.Empty); 179 } 180 } 172 181 } 173 182 174 183 public override QAPData LoadData(IDataDescriptor id) { 175 184 var descriptor = (QAPLIBDataDescriptor)id; 176 using (var stream = Assembly.GetExecutingAssembly() 177 .GetManifestResourceStream(descriptor.InstanceIdentifier)) { 178 var parser = new QAPLIBParser(); 179 parser.Parse(stream); 180 var instance = Load(parser); 181 instance.Name = id.Name; 182 instance.Description = id.Description; 183 184 if (!String.IsNullOrEmpty(descriptor.SolutionIdentifier)) { 185 using (Stream solStream = Assembly.GetExecutingAssembly() 186 .GetManifestResourceStream(descriptor.SolutionIdentifier)) { 187 var slnParser = new QAPLIBSolutionParser(); 188 slnParser.Parse(solStream, true); 189 if (slnParser.Error != null) throw slnParser.Error; 190 191 int[] assignment = slnParser.Assignment; 192 if (reversedSolutions.Contains(instance.Name)) { 193 assignment = (int[])slnParser.Assignment.Clone(); 194 for (int i = 0; i < assignment.Length; i++) 195 assignment[slnParser.Assignment[i]] = i; 185 var instanceArchiveName = GetResourceName(FileName + @"\.dat\.zip"); 186 using (var instancesZipFile = new ZipFile(GetType().Assembly.GetManifestResourceStream(instanceArchiveName))) { 187 var entry = instancesZipFile.GetEntry(descriptor.InstanceIdentifier); 188 189 using (var stream = instancesZipFile.GetInputStream(entry)) { 190 var parser = new QAPLIBParser(); 191 parser.Parse(stream); 192 var instance = Load(parser); 193 instance.Name = id.Name; 194 instance.Description = id.Description; 195 196 if (!String.IsNullOrEmpty(descriptor.SolutionIdentifier)) { 197 var solutionsArchiveName = GetResourceName(FileName + @"\.sln\.zip"); 198 using (var solutionsZipFile = new ZipFile(GetType().Assembly.GetManifestResourceStream(solutionsArchiveName))) { 199 entry = solutionsZipFile.GetEntry(descriptor.SolutionIdentifier); 200 using (var solStream = solutionsZipFile.GetInputStream(entry)) { 201 var slnParser = new QAPLIBSolutionParser(); 202 slnParser.Parse(solStream, true); 203 if (slnParser.Error != null) throw slnParser.Error; 204 205 int[] assignment = slnParser.Assignment; 206 if (reversedSolutions.Contains(instance.Name)) { 207 assignment = (int[])slnParser.Assignment.Clone(); 208 for (int i = 0; i < assignment.Length; i++) 209 assignment[slnParser.Assignment[i]] = i; 210 } 211 instance.BestKnownAssignment = assignment; 212 instance.BestKnownQuality = slnParser.Quality; 213 } 196 214 } 197 instance.BestKnownAssignment = assignment;198 instance.BestKnownQuality = slnParser.Quality;199 215 } 216 return instance; 200 217 } 201 return instance;202 218 } 203 219 } … … 224 240 } 225 241 226 private string GetPrettyName(string instanceIdentifier) {227 return Regex.Match(instanceIdentifier, GetType().Namespace + @"\.Data\.(.*)\.dat").Groups[1].Captures[0].Value;228 }229 230 242 private string GetDescription() { 231 243 return "Embedded instance of plugin version " + Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true).Cast<AssemblyFileVersionAttribute>().First().Version + "."; 232 244 } 245 246 protected virtual string GetResourceName(string fileName) { 247 return Assembly.GetExecutingAssembly().GetManifestResourceNames() 248 .Where(x => Regex.Match(x, @".*\.Data\." + fileName).Success).SingleOrDefault(); 249 } 250 251 protected IEnumerable<string> GetZipContents(ZipInputStream zipFile) { 252 ZipEntry entry; 253 while ((entry = zipFile.GetNextEntry()) != null) { 254 yield return entry.Name; 255 } 256 } 233 257 } 234 258 }
Note: See TracChangeset
for help on using the changeset viewer.