Changeset 17175
- Timestamp:
- 07/26/19 15:13:36 (5 years ago)
- Location:
- branches/2457_ExpertSystem
- Files:
-
- 1 added
- 6 edited
- 7 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/2457_ExpertSystem/HeuristicLab.OptimizationExpertSystem.Common/3.3/HeuristicLab.OptimizationExpertSystem.Common-3.3.csproj
r16958 r17175 151 151 <Reference Include="System.Core" /> 152 152 <Reference Include="System.Drawing" /> 153 <Reference Include="System.IO.Compression" /> 153 154 <Reference Include="System.Runtime.Serialization" /> 154 155 <Reference Include="System.Xml.Linq" /> -
branches/2457_ExpertSystem/HeuristicLab.OptimizationExpertSystem.Common/3.3/KnowledgeCenter.cs
r16958 r17175 24 24 using System.Drawing; 25 25 using System.IO; 26 using System.IO.Compression; 26 27 using System.Linq; 27 28 using System.Threading; 28 29 using System.Threading.Tasks; 30 using HEAL.Attic; 29 31 using HeuristicLab.Algorithms.DataAnalysis; 30 32 using HeuristicLab.Analysis; … … 296 298 297 299 private static readonly HashSet<string> InterestingValueNames = new HashSet<string>() { 298 "QualityPerEvaluations", " Problem Name", "Problem Type", "Algorithm Name", "Algorithm Type", "Maximization", "BestKnownQuality"300 "QualityPerEvaluations", "QualityPerClock", "Problem Name", "Problem Type", "Algorithm Name", "Algorithm Type", "Maximization", "BestKnownQuality" 299 301 }; 300 302 … … 517 519 518 520 IItem bkParam; 519 if (!prob.Parameters.TryGetValue("BestKnownQuality", out bkParam) || !(bkParam is DoubleValue)) { 520 var list = kvp.Value.SelectMany(x => x.Value) 521 .Where(x => x.Results.ContainsKey("QualityPerEvaluations")) 522 .Select(x => ((IndexedDataTable<double>)x.Results["QualityPerEvaluations"]).Rows.First().Values.Last().Item2); 523 if (!list.Any()) continue; 524 bkParam = new DoubleValue(maximization ? list.Max() : list.Min()); 521 if (!prob.Parameters.TryGetValue("BestKnownQuality", out bkParam) || !(bkParam is DoubleValue) || double.IsNaN(((DoubleValue)bkParam).Value)) { 522 var best = double.NaN; 523 foreach (var x in kvp.Value.SelectMany(x => x.Value)) { 524 double? lastVal = null; 525 if (x.Results.TryGetValue("QualityPerEvaluations", out var item)) { 526 lastVal = ((IndexedDataTable<double>)item).Rows.FirstOrDefault()?.Values.LastOrDefault()?.Item2; 527 } 528 if (x.Results.TryGetValue("QualityPerClock", out item)) { 529 lastVal = ((IndexedDataTable<double>)item).Rows.FirstOrDefault()?.Values.LastOrDefault()?.Item2; 530 } 531 if (lastVal.HasValue && (double.IsNaN(best) 532 || maximization && best < lastVal.Value 533 || !maximization && best > lastVal.Value)) 534 best = lastVal.Value; 535 } 536 if (double.IsNaN(best)) continue; 537 bkParam = new DoubleValue(best); 525 538 prob.Parameters["BestKnownQuality"] = bkParam; 526 539 } … … 600 613 var total = hashSet.Count; 601 614 try { 602 var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "HeuristicLab.OKB", "cache", "runs"); 603 Parallel.ForEach(Directory.EnumerateDirectories(path).Select((d, i) => new { Index = i, Directory = d }).GroupBy(x => x.Index / 100), new ParallelOptions() { MaxDegreeOfParallelism = Environment.ProcessorCount }, 604 (folderGroup) => { 605 var localRunList = new List<Tuple<long, long, IRun>>(); 606 foreach (var runPath in folderGroup.Select(x => x.Directory)) { 607 long runId; 608 var runFolder = new DirectoryInfo(runPath).Name; 609 if (!long.TryParse(runFolder, out runId) || !hashSet.Contains(runId)) continue; 610 var runFilePath = Directory.EnumerateFiles(runPath).Single(); 611 var runFileName = Path.GetFileNameWithoutExtension(runFilePath); 612 long algId; 613 if (!long.TryParse(runFileName, out algId)) continue; 614 IRun run = null; 615 try { 616 using (var file = File.OpenRead(runFilePath)) 617 run = XmlParser.Deserialize<IRun>(file); 618 } catch { 619 File.Delete(runFilePath); 620 Directory.Delete(runPath); 621 } 622 if (run != null) localRunList.Add(Tuple.Create(algId, runId, run)); 623 } 624 lock (runList) { 625 foreach (var r in localRunList) { 626 hashSet.Remove(r.Item2); 627 algorithmId2RunMapping.Add(r.Item1, r.Item3); 628 runList.Add(r.Item3); 629 } 630 progress.Message = string.Format("Retrieved {0} of {1} from cache", runList.Count, total); 631 progress.ProgressValue = (double)runList.Count / total; 632 } 633 }); 615 var updateCount = 0; 616 var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "HeuristicLab.OKB", "cache", "runsperalg"); 617 Parallel.ForEach(Directory.EnumerateFiles(path), new ParallelOptions() { MaxDegreeOfParallelism = Environment.ProcessorCount }, 618 (algPath) => { 619 var serializer = new ProtoBufSerializer(); 620 var algId = long.Parse(Path.GetFileName(algPath)); 621 using (var stream = File.Open(algPath, FileMode.Open, FileAccess.ReadWrite, FileShare.None)) { 622 using (var archive = new ZipArchive(stream, ZipArchiveMode.Read)) { 623 foreach (var entry in archive.Entries) { 624 var runId = long.Parse(entry.Name); 625 var useEntry = false; 626 lock (hashSet) { 627 useEntry = hashSet.Remove(runId); 628 } 629 if (useEntry) { 630 //using (var df = new DeflateStream(entry.Open(), CompressionMode.Decompress)) { 631 var run = (Tuple<long, long, IRun>)serializer.Deserialize(entry.Open()); 632 if (run.Item1 != algId || run.Item2 != runId) { 633 lock (hashSet) hashSet.Add(runId); 634 continue; 635 } 636 lock (runList) { 637 algorithmId2RunMapping.Add(algId, run.Item3); 638 runList.Add(run.Item3); 639 updateCount++; 640 if (total < 100 || updateCount % (total / 100) == 0) { 641 progress.Message = string.Format("Retrieved {0} of {1} from cache", updateCount, total); 642 progress.ProgressValue = (double)runList.Count / total; 643 } 644 } 645 //} 646 } 647 } 648 } 649 } 650 }); 634 651 } catch { } 635 652 return hashSet.ToList(); … … 638 655 private void SaveToCache(IEnumerable<Tuple<long, long, IRun>> runs) { 639 656 try { 640 var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "HeuristicLab.OKB", "cache", "runs ");657 var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "HeuristicLab.OKB", "cache", "runsperalg"); 641 658 if (!Directory.Exists(path)) Directory.CreateDirectory(path); 642 foreach (var r in runs) { 643 var runPath = Path.Combine(path, r.Item2.ToString()); 644 if (!Directory.Exists(runPath)) Directory.CreateDirectory(runPath); 645 using (var file = File.Open(Path.Combine(runPath, r.Item1.ToString()), FileMode.Create, FileAccess.ReadWrite)) { 646 XmlGenerator.Serialize(r.Item3, file); 659 var serializer = new ProtoBufSerializer(); 660 foreach (var runsOfAlg in runs.GroupBy(x => x.Item1)) { 661 var runPath = Path.Combine(path, runsOfAlg.Key.ToString()); 662 using (var stream = File.Open(runPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None)) { 663 using (var archive = new ZipArchive(stream, ZipArchiveMode.Update)) { 664 foreach (var run in runsOfAlg) { 665 var entry = archive.CreateEntry(run.Item2.ToString(), CompressionLevel.NoCompression); 666 using (var entrystream = entry.Open()) { 667 serializer.Serialize(run, entrystream, disposeStream: false); 668 } 669 } 670 } 647 671 } 648 672 } … … 764 788 var target = GetTarget(((DoubleValue)problemInstance.Parameters["BestKnownQuality"]).Value, MinimumTarget.Value, Maximization); 765 789 return knowledgeBase.Where(x => ((StringValue)x.Parameters["Problem Name"]).Value == ((StringValue)problemInstance.Parameters["Problem Name"]).Value) 766 .GroupBy(x => algorithmId2AlgorithmInstanceMapping.GetByFirst(algorithmId2RunMapping.GetBySecond(x).Single())) 767 .ToDictionary(x => x.Key, x => ExpectedRuntimeHelper.CalculateErt(x.ToList(), "QualityPerEvaluations", target, Maximization).ExpectedRuntime); 790 .Select(x => { 791 IItem item = null; 792 if (x.Results.TryGetValue("QualityPerEvaluations", out item)) { 793 var idt = (IndexedDataTable<double>)item; 794 return Tuple.Create(x, idt.Rows.First().Values.AsEnumerable()); 795 } 796 if (x.Results.TryGetValue("QualityPerClock", out item)) { 797 var idt = (IndexedDataTable<double>)item; 798 return Tuple.Create(x, idt.Rows.First().Values.AsEnumerable()); 799 } 800 return null; 801 }) 802 .Where(x => x != null) 803 .GroupBy(x => algorithmId2AlgorithmInstanceMapping.GetByFirst(algorithmId2RunMapping.GetBySecond(x.Item1).Single())) 804 .ToDictionary(x => x.Key, x => ExpectedRuntimeHelper.CalculateErt(x.Select(y => y.Item2), target, Maximization).ExpectedRuntime); 768 805 } 769 806 … … 772 809 var target = GetTarget(((DoubleValue)problemInstance.Parameters["BestKnownQuality"]).Value, MinimumTarget.Value, Maximization); 773 810 return knowledgeBase.Where(x => ((StringValue)x.Parameters["Problem Name"]).Value == ((StringValue)problemInstance.Parameters["Problem Name"]).Value) 774 .GroupBy(x => algorithmId2AlgorithmInstanceMapping.GetByFirst(algorithmId2RunMapping.GetBySecond(x).Single())) 775 .ToDictionary(x => x.Key, x => Math.Log10(ExpectedRuntimeHelper.CalculateErt(x.ToList(), "QualityPerEvaluations", target, Maximization).ExpectedRuntime)); 811 .Select(x => { 812 IItem item = null; 813 if (x.Results.TryGetValue("QualityPerEvaluations", out item)) { 814 var idt = (IndexedDataTable<double>)item; 815 return Tuple.Create(x, idt.Rows.First().Values.AsEnumerable()); 816 } 817 if (x.Results.TryGetValue("QualityPerClock", out item)) { 818 var idt = (IndexedDataTable<double>)item; 819 return Tuple.Create(x, idt.Rows.First().Values.AsEnumerable()); 820 } 821 return null; 822 }) 823 .Where(x => x != null) 824 .GroupBy(x => algorithmId2AlgorithmInstanceMapping.GetByFirst(algorithmId2RunMapping.GetBySecond(x.Item1).Single())) 825 .ToDictionary(x => x.Key, x => Math.Log10(ExpectedRuntimeHelper.CalculateErt(x.Select(y => y.Item2), target, Maximization).ExpectedRuntime)); 776 826 } 777 827 … … 871 921 result[problemMap[pr.Key]] = new Dictionary<long, int>(); 872 922 873 var values = pr.GroupBy(x => algorithmId2RunMapping.GetBySecond(x).Single()) 874 .ToDictionary(x => x.Key, x => Math.Log10(ExpectedRuntimeHelper.CalculateErt(x.ToList(), "QualityPerEvaluations", GetTarget(bkq, target, max), max).ExpectedRuntime)); 923 var values = pr.Select(x => { 924 IItem item = null; 925 if (x.Results.TryGetValue("QualityPerEvaluations", out item)) { 926 var idt = (IndexedDataTable<double>)item; 927 return Tuple.Create(x, idt.Rows.First().Values.AsEnumerable()); 928 } 929 if (x.Results.TryGetValue("QualityPerClock", out item)) { 930 var idt = (IndexedDataTable<double>)item; 931 return Tuple.Create(x, idt.Rows.First().Values.AsEnumerable()); 932 } 933 return null; 934 }) 935 .Where(x => x != null) 936 .GroupBy(x => algorithmId2RunMapping.GetBySecond(x.Item1).Single()) 937 .ToDictionary(x => x.Key, x => Math.Log10(ExpectedRuntimeHelper.CalculateErt(x.Select(y => y.Item2), GetTarget(bkq, target, max), max).ExpectedRuntime)); 875 938 var ranks = ClusteringHelper<long>.Cluster(nClasses, values, x => double.IsInfinity(x.Value)) 876 939 .GetByCluster().ToList(); -
branches/2457_ExpertSystem/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms/3.3/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms-3.3.csproj
r16728 r17175 111 111 </ItemGroup> 112 112 <ItemGroup> 113 <Compile Include="CPLEX\CplexSolver.cs" />114 <Compile Include="CPLEX\GQAP-FY.cs" />115 <Compile Include="CPLEX\GQAP-KB.cs" />116 <Compile Include="CPLEX\GQAPDataSource.cs" />117 <Compile Include="CPLEX\CplexContext.cs" />118 113 <Compile Include="Evolutionary\ESContext.cs" /> 119 114 <Compile Include="Evolutionary\ESGQAPSolution.cs" /> … … 135 130 <Compile Include="LocalSearch\IteratedLS.cs" /> 136 131 <Compile Include="LocalSearch\MultistartLS.cs" /> 137 <Compile Include="LocalSolverNet\GQAPListSolver.cs" />138 <Compile Include="LocalSolverNet\GQAPIntegerSolver.cs" />139 <Compile Include="LocalSolverNet\LocalSolverContext.cs" />140 <Compile Include="LocalSolverNet\GQAPBinarySolver.cs" />141 132 <Compile Include="Plugin.cs" /> 142 133 <Compile Include="Infrastructure\Contexts\SingleSolutionContext.cs" /> -
branches/2457_ExpertSystem/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms/3.3/Plugin.cs
r15574 r17175 40 40 [PluginDependency("HeuristicLab.Problems.Instances", "3.3")] 41 41 [PluginDependency("HeuristicLab.Random", "3.3")] 42 [PluginDependency("CPLEX Transport", "12.7.0")]43 [PluginDependency("LocalSolver 7.5 Transport", "7.5")]42 //[PluginDependency("CPLEX Transport", "12.7.0")] 43 //[PluginDependency("LocalSolver 7.5 Transport", "7.5")] 44 44 public class Plugin : PluginBase { 45 45 } -
branches/2457_ExpertSystem/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/HeuristicLab.Problems.GeneralizedQuadraticAssignment-3.3.csproj
r16728 r17175 117 117 <Compile Include="Moves\ExhaustiveOneMoveGenerator.cs" /> 118 118 <Compile Include="Operators\Crossovers\CordeauCrossover.cs" /> 119 <Compile Include="Operators\GQAPQualitySimilarityReducer.cs" /> 119 120 <Compile Include="Operators\LocalImprovers\OneOptLocalSearch.cs" /> 120 121 <Compile Include="SolutionCreators\SlackMinimizationSolutionCreator.cs" /> -
branches/2457_ExpertSystem/PerformanceComparison.sln
r16955 r17175 33 33 EndProject 34 34 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WalkExporter", "WalkExporter\WalkExporter.csproj", "{EE6BD7D3-8012-4A5D-ABAE-356B3D1E4573}" 35 EndProject 36 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.GeneralizedQuadraticAssignment-3.3", "HeuristicLab.Problems.GeneralizedQuadraticAssignment\3.3\HeuristicLab.Problems.GeneralizedQuadraticAssignment-3.3.csproj", "{C739E6D2-5680-4804-A810-8017DA0C238F}" 37 EndProject 38 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.GeneralizedQuadraticAssignment.Instances-3.3", "HeuristicLab.Problems.GeneralizedQuadraticAssignment.Instances\3.3\HeuristicLab.Problems.GeneralizedQuadraticAssignment.Instances-3.3.csproj", "{0EB9AB8E-D0D2-4A63-9353-BD5CE57DBDFE}" 39 EndProject 40 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms-3.3", "HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms\3.3\HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms-3.3.csproj", "{577239EC-7D7F-4505-A0A4-572E34010DBA}" 41 EndProject 42 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views-3.3", "HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views\3.3\HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views-3.3.csproj", "{BFAAC00C-B884-458D-BD74-98C94BFAFA41}" 43 EndProject 44 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Encodings.IntegerVectorEncoding-3.3", "HeuristicLab.Encodings.IntegerVectorEncoding\3.3\HeuristicLab.Encodings.IntegerVectorEncoding-3.3.csproj", "{DDFB14DD-2A85-493C-A52D-E69729BBAEB0}" 35 45 EndProject 36 46 Global … … 224 234 {EE6BD7D3-8012-4A5D-ABAE-356B3D1E4573}.Release|x86.ActiveCfg = Release|Any CPU 225 235 {EE6BD7D3-8012-4A5D-ABAE-356B3D1E4573}.Release|x86.Build.0 = Release|Any CPU 236 {C739E6D2-5680-4804-A810-8017DA0C238F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 237 {C739E6D2-5680-4804-A810-8017DA0C238F}.Debug|Any CPU.Build.0 = Debug|Any CPU 238 {C739E6D2-5680-4804-A810-8017DA0C238F}.Debug|x64.ActiveCfg = Debug|Any CPU 239 {C739E6D2-5680-4804-A810-8017DA0C238F}.Debug|x64.Build.0 = Debug|Any CPU 240 {C739E6D2-5680-4804-A810-8017DA0C238F}.Debug|x86.ActiveCfg = Debug|Any CPU 241 {C739E6D2-5680-4804-A810-8017DA0C238F}.Debug|x86.Build.0 = Debug|Any CPU 242 {C739E6D2-5680-4804-A810-8017DA0C238F}.Release|Any CPU.ActiveCfg = Release|Any CPU 243 {C739E6D2-5680-4804-A810-8017DA0C238F}.Release|Any CPU.Build.0 = Release|Any CPU 244 {C739E6D2-5680-4804-A810-8017DA0C238F}.Release|x64.ActiveCfg = Release|Any CPU 245 {C739E6D2-5680-4804-A810-8017DA0C238F}.Release|x64.Build.0 = Release|Any CPU 246 {C739E6D2-5680-4804-A810-8017DA0C238F}.Release|x86.ActiveCfg = Release|Any CPU 247 {C739E6D2-5680-4804-A810-8017DA0C238F}.Release|x86.Build.0 = Release|Any CPU 248 {0EB9AB8E-D0D2-4A63-9353-BD5CE57DBDFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 249 {0EB9AB8E-D0D2-4A63-9353-BD5CE57DBDFE}.Debug|Any CPU.Build.0 = Debug|Any CPU 250 {0EB9AB8E-D0D2-4A63-9353-BD5CE57DBDFE}.Debug|x64.ActiveCfg = Debug|Any CPU 251 {0EB9AB8E-D0D2-4A63-9353-BD5CE57DBDFE}.Debug|x64.Build.0 = Debug|Any CPU 252 {0EB9AB8E-D0D2-4A63-9353-BD5CE57DBDFE}.Debug|x86.ActiveCfg = Debug|Any CPU 253 {0EB9AB8E-D0D2-4A63-9353-BD5CE57DBDFE}.Debug|x86.Build.0 = Debug|Any CPU 254 {0EB9AB8E-D0D2-4A63-9353-BD5CE57DBDFE}.Release|Any CPU.ActiveCfg = Release|Any CPU 255 {0EB9AB8E-D0D2-4A63-9353-BD5CE57DBDFE}.Release|Any CPU.Build.0 = Release|Any CPU 256 {0EB9AB8E-D0D2-4A63-9353-BD5CE57DBDFE}.Release|x64.ActiveCfg = Release|Any CPU 257 {0EB9AB8E-D0D2-4A63-9353-BD5CE57DBDFE}.Release|x64.Build.0 = Release|Any CPU 258 {0EB9AB8E-D0D2-4A63-9353-BD5CE57DBDFE}.Release|x86.ActiveCfg = Release|Any CPU 259 {0EB9AB8E-D0D2-4A63-9353-BD5CE57DBDFE}.Release|x86.Build.0 = Release|Any CPU 260 {577239EC-7D7F-4505-A0A4-572E34010DBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 261 {577239EC-7D7F-4505-A0A4-572E34010DBA}.Debug|Any CPU.Build.0 = Debug|Any CPU 262 {577239EC-7D7F-4505-A0A4-572E34010DBA}.Debug|x64.ActiveCfg = Debug|Any CPU 263 {577239EC-7D7F-4505-A0A4-572E34010DBA}.Debug|x64.Build.0 = Debug|Any CPU 264 {577239EC-7D7F-4505-A0A4-572E34010DBA}.Debug|x86.ActiveCfg = Debug|Any CPU 265 {577239EC-7D7F-4505-A0A4-572E34010DBA}.Debug|x86.Build.0 = Debug|Any CPU 266 {577239EC-7D7F-4505-A0A4-572E34010DBA}.Release|Any CPU.ActiveCfg = Release|Any CPU 267 {577239EC-7D7F-4505-A0A4-572E34010DBA}.Release|Any CPU.Build.0 = Release|Any CPU 268 {577239EC-7D7F-4505-A0A4-572E34010DBA}.Release|x64.ActiveCfg = Release|Any CPU 269 {577239EC-7D7F-4505-A0A4-572E34010DBA}.Release|x64.Build.0 = Release|Any CPU 270 {577239EC-7D7F-4505-A0A4-572E34010DBA}.Release|x86.ActiveCfg = Release|Any CPU 271 {577239EC-7D7F-4505-A0A4-572E34010DBA}.Release|x86.Build.0 = Release|Any CPU 272 {BFAAC00C-B884-458D-BD74-98C94BFAFA41}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 273 {BFAAC00C-B884-458D-BD74-98C94BFAFA41}.Debug|Any CPU.Build.0 = Debug|Any CPU 274 {BFAAC00C-B884-458D-BD74-98C94BFAFA41}.Debug|x64.ActiveCfg = Debug|Any CPU 275 {BFAAC00C-B884-458D-BD74-98C94BFAFA41}.Debug|x64.Build.0 = Debug|Any CPU 276 {BFAAC00C-B884-458D-BD74-98C94BFAFA41}.Debug|x86.ActiveCfg = Debug|Any CPU 277 {BFAAC00C-B884-458D-BD74-98C94BFAFA41}.Debug|x86.Build.0 = Debug|Any CPU 278 {BFAAC00C-B884-458D-BD74-98C94BFAFA41}.Release|Any CPU.ActiveCfg = Release|Any CPU 279 {BFAAC00C-B884-458D-BD74-98C94BFAFA41}.Release|Any CPU.Build.0 = Release|Any CPU 280 {BFAAC00C-B884-458D-BD74-98C94BFAFA41}.Release|x64.ActiveCfg = Release|Any CPU 281 {BFAAC00C-B884-458D-BD74-98C94BFAFA41}.Release|x64.Build.0 = Release|Any CPU 282 {BFAAC00C-B884-458D-BD74-98C94BFAFA41}.Release|x86.ActiveCfg = Release|Any CPU 283 {BFAAC00C-B884-458D-BD74-98C94BFAFA41}.Release|x86.Build.0 = Release|Any CPU 284 {DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 285 {DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Debug|Any CPU.Build.0 = Debug|Any CPU 286 {DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Debug|x64.ActiveCfg = Debug|x64 287 {DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Debug|x64.Build.0 = Debug|x64 288 {DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Debug|x86.ActiveCfg = Debug|x86 289 {DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Debug|x86.Build.0 = Debug|x86 290 {DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Release|Any CPU.ActiveCfg = Release|Any CPU 291 {DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Release|Any CPU.Build.0 = Release|Any CPU 292 {DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Release|x64.ActiveCfg = Release|x64 293 {DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Release|x64.Build.0 = Release|x64 294 {DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Release|x86.ActiveCfg = Release|x86 295 {DDFB14DD-2A85-493C-A52D-E69729BBAEB0}.Release|x86.Build.0 = Release|x86 226 296 EndGlobalSection 227 297 GlobalSection(SolutionProperties) = preSolution
Note: See TracChangeset
for help on using the changeset viewer.