Changeset 5931
- Timestamp:
- 04/02/11 16:45:04 (14 years ago)
- Location:
- branches/QAP
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/QAP/HeuristicLab.Analysis/3.3/HeuristicLabAnalysisPlugin.cs.frame
r5446 r5931 28 28 [Plugin("HeuristicLab.Analysis", "3.3.3.$WCREV$")] 29 29 [PluginFile("HeuristicLab.Analysis-3.3.dll", PluginFileType.Assembly)] 30 [PluginDependency("HeuristicLab.ALGLIB", "3.1")] 30 31 [PluginDependency("HeuristicLab.Collections", "3.3")] 31 32 [PluginDependency("HeuristicLab.Common", "3.3")] -
branches/QAP/HeuristicLab.Analysis/3.3/MultidimensionalScaling/MultidimensionalScaling.cs
r5871 r5931 29 29 /// Performs the Kruskal-Shepard algorithm and applies a gradient descent method 30 30 /// to fit the coordinates such that the difference between the fit distances 31 /// and the actual distances becomes minimal.31 /// and the dissimilarities becomes minimal. 32 32 /// </summary> 33 33 /// <remarks> 34 34 /// It will initialize the coordinates in a deterministic fashion such that all initial points are equally spaced on a circle. 35 35 /// </remarks> 36 /// <param name="dissimilarities">A symmetric NxN matrix that specifies the dis tances between each element i and j. Diagonal elements are ignored.</param>36 /// <param name="dissimilarities">A symmetric NxN matrix that specifies the dissimilarities between each element i and j. Diagonal elements are ignored.</param> 37 37 /// 38 38 /// <returns>A Nx2 matrix where the first column represents the x- and the second column the y coordinates.</returns> … … 43 43 int dimension = dissimilarities.Rows; 44 44 if (dimension == 1) return new DoubleMatrix(new double[,] { { 0, 0 } }); 45 else if (dimension == 2) return new DoubleMatrix(new double[,] { { 0, dissimilarities[0, 1] } });45 else if (dimension == 2) return new DoubleMatrix(new double[,] { { 0, 0 }, { 0, dissimilarities[0, 1] } }); 46 46 47 47 DoubleMatrix coordinates = new DoubleMatrix(dimension, 2); … … 58 58 /// Performs the Kruskal-Shepard algorithm and applies a gradient descent method 59 59 /// to fit the coordinates such that the difference between the fit distances 60 /// and the actual distances is minimal.60 /// and the dissimilarities is minimal. 61 61 /// </summary> 62 62 /// <remarks> 63 63 /// It will use a pre-initialized x,y-coordinates matrix as a starting point of the gradient descent. 64 64 /// </remarks> 65 /// <param name="dissimilarities">A symmetric NxN matrix that specifies the distances between each element i and j. Diagonal elements are ignored.</param> 66 /// 65 /// <param name="dissimilarities">A symmetric NxN matrix that specifies the dissimilarities between each element i and j. Diagonal elements are ignored.</param> 67 66 /// <param name="coordinates">The Nx2 matrix of initial coordinates.</param> 67 /// <param name="maximumIterations">The number of iterations for which the algorithm should run. 68 /// In every iteration it tries to find the best location for every item.</param> 68 69 /// <returns>A Nx2 matrix where the first column represents the x- and the second column the y coordinates.</returns> 69 public static DoubleMatrix KruskalShepard(DoubleMatrix dissimilarities, DoubleMatrix coordinates ) {70 public static DoubleMatrix KruskalShepard(DoubleMatrix dissimilarities, DoubleMatrix coordinates, int maximumIterations = 100) { 70 71 int dimension = dissimilarities.Rows; 71 72 if (dimension != dissimilarities.Columns || coordinates.Rows != dimension) throw new ArgumentException("The number of coordinates and the number of rows and columns in the dissimilarities matrix do not match."); … … 78 79 alglib.mincgreport rep; 79 80 80 for (int iterations = 0; iterations < 10; iterations++) { 81 for (int iterations = 0; iterations < maximumIterations; iterations++) { 82 bool changed = false; 81 83 for (int i = 0; i < dimension; i++) { 82 84 double[] c = new double[] { coordinates[i, 0], coordinates[i, 1] }; … … 93 95 } catch (alglib.alglibexception) { } 94 96 if (!double.IsNaN(c[0]) && !double.IsNaN(c[1])) { 97 changed = changed || (coordinates[i, 0] != c[0]) || (coordinates[i, 1] != c[1]); 95 98 coordinates[i, 0] = c[0]; 96 99 coordinates[i, 1] = c[1]; 97 100 } 98 101 } 102 if (!changed) break; 99 103 } 100 104 return coordinates; … … 106 110 Info info = (obj as Info); 107 111 for (int i = 0; i < info.Coordinates.Rows; i++) { 108 double c = info.Dis tances[info.Row, i];112 double c = info.Dissimilarities[info.Row, i]; 109 113 if (i != info.Row) { 110 114 double a = info.Coordinates[i, 0]; … … 143 147 for (int i = 0; i < dimension - 1; i++) { 144 148 for (int j = i + 1; j < dimension; j++) { 145 if (dissimilarities[i, j] != dissimilarities[j, i]) throw new ArgumentException("Dis tances is not a symmetric matrix.", "distances");149 if (dissimilarities[i, j] != dissimilarities[j, i]) throw new ArgumentException("Dissimilarities is not a symmetric matrix.", "dissimilarities"); 146 150 if (dissimilarities[i, j] != 0) { 147 151 stress += Stress(coordinates[i, 0], coordinates[i, 1], dissimilarities[i, j], coordinates[j, 0], coordinates[j, 1]); … … 155 159 private class Info { 156 160 public DoubleMatrix Coordinates { get; set; } 157 public DoubleMatrix Dis tances { get; set; }161 public DoubleMatrix Dissimilarities { get; set; } 158 162 public int Row { get; set; } 159 163 160 164 public Info(DoubleMatrix c, DoubleMatrix d, int r) { 161 165 Coordinates = c; 162 Dis tances = d;166 Dissimilarities = d; 163 167 Row = r; 164 168 } -
branches/QAP/HeuristicLab.Analysis/3.3/Tests/HeuristicLab.Analysis.Tests-3.3.csproj
r5873 r5931 32 32 <ErrorReport>prompt</ErrorReport> 33 33 <WarningLevel>4</WarningLevel> 34 </PropertyGroup> 35 <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'"> 36 <DebugSymbols>true</DebugSymbols> 37 <OutputPath>bin\x86\Debug\</OutputPath> 38 <DefineConstants>DEBUG;TRACE</DefineConstants> 39 <DebugType>full</DebugType> 40 <PlatformTarget>x86</PlatformTarget> 41 <CodeAnalysisLogFile>bin\Debug\HeuristicLab.Analysis.Tests.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile> 42 <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression> 43 <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile> 44 <ErrorReport>prompt</ErrorReport> 45 <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> 46 <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories> 47 <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets> 48 <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories> 49 <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules> 50 </PropertyGroup> 51 <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'"> 52 <OutputPath>bin\x86\Release\</OutputPath> 53 <DefineConstants>TRACE</DefineConstants> 54 <Optimize>true</Optimize> 55 <DebugType>pdbonly</DebugType> 56 <PlatformTarget>x86</PlatformTarget> 57 <CodeAnalysisLogFile>bin\Release\HeuristicLab.Analysis.Tests.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile> 58 <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression> 59 <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile> 60 <ErrorReport>prompt</ErrorReport> 61 <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> 62 <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories> 63 <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets> 64 <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories> 65 <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules> 66 </PropertyGroup> 67 <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'"> 68 <DebugSymbols>true</DebugSymbols> 69 <OutputPath>bin\x64\Debug\</OutputPath> 70 <DefineConstants>DEBUG;TRACE</DefineConstants> 71 <DebugType>full</DebugType> 72 <PlatformTarget>x64</PlatformTarget> 73 <CodeAnalysisLogFile>bin\Debug\HeuristicLab.Analysis.Tests.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile> 74 <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression> 75 <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile> 76 <ErrorReport>prompt</ErrorReport> 77 <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> 78 <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories> 79 <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets> 80 <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories> 81 <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules> 82 <CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules> 83 </PropertyGroup> 84 <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'"> 85 <OutputPath>bin\x64\Release\</OutputPath> 86 <DefineConstants>TRACE</DefineConstants> 87 <Optimize>true</Optimize> 88 <DebugType>pdbonly</DebugType> 89 <PlatformTarget>x64</PlatformTarget> 90 <CodeAnalysisLogFile>bin\Release\HeuristicLab.Analysis.Tests.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile> 91 <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression> 92 <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile> 93 <ErrorReport>prompt</ErrorReport> 94 <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> 95 <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories> 96 <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets> 97 <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories> 98 <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules> 34 99 </PropertyGroup> 35 100 <ItemGroup> -
branches/QAP/HeuristicLab.Encodings.PermutationEncoding/3.3/Moves/Swap2/ExhaustiveSwap2MoveGenerator.cs
r5838 r5931 43 43 if (length == 1) throw new ArgumentException("ExhaustiveSwap2MoveGenerator: There cannot be an Swap move given a permutation of length 1.", "permutation"); 44 44 int totalMoves = (length) * (length - 1) / 2; 45 Swap2Move[] moves = n ull;45 Swap2Move[] moves = new Swap2Move[totalMoves]; 46 46 int count = 0; 47 47 48 if (permutation.PermutationType == PermutationTypes.RelativeUndirected) { 49 if (totalMoves - 3 > 0) { 50 moves = new Swap2Move[totalMoves - 3]; 51 for (int i = 0; i < length - 1; i++) { 52 for (int j = i + 1; j < length; j++) { 53 if (j - i >= length - 2) continue; 54 moves[count++] = new Swap2Move(i, j); 55 } 56 } 57 } else { // when length is 3 or less, there's actually no difference, but for the sake of not crashing the algorithm create a dummy move 58 moves = new Swap2Move[1]; 59 moves[0] = new Swap2Move(0, 1); 48 for (int i = 0; i < length - 1; i++) 49 for (int j = i + 1; j < length; j++) { 50 moves[count++] = new Swap2Move(i, j); 60 51 } 61 } else {62 moves = new Swap2Move[totalMoves];63 for (int i = 0; i < length - 1; i++)64 for (int j = i + 1; j < length; j++) {65 moves[count++] = new Swap2Move(i, j);66 }67 }68 52 return moves; 69 53 } -
branches/QAP/HeuristicLab.Encodings.PermutationEncoding/3.3/Moves/Swap2/StochasticSwap2SingleMoveGenerator.cs
r5838 r5931 49 49 public static Swap2Move Apply(Permutation permutation, IRandom random) { 50 50 int length = permutation.Length; 51 if (length == 1) throw new ArgumentException("StochasticSwap2SingleMoveGenerator: There cannot be an Swap move given a permutation of length 1.", "permutation"); 52 int index1 = random.Next(length - 1); 53 int index2 = random.Next(index1 + 1, length); 51 if (length < 2) throw new ArgumentException("StochasticSwap2SingleMoveGenerator: There cannot be a swap-2 move given a permutation of length less than 2.", "permutation"); 52 int index1 = random.Next(length), index2 = 0; 53 do { 54 index2 = random.Next(length); 55 } while (index1 == index2); 54 56 return new Swap2Move(index1, index2); 55 57 } -
branches/QAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/QuadraticAssignmentProblemView.Designer.cs
r5838 r5931 68 68 this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft); 69 69 this.errorProvider.SetIconPadding(this.nameTextBox, 2); 70 this.nameTextBox.Location = new System.Drawing.Point( 86, 29);71 this.nameTextBox.Size = new System.Drawing.Size(5 61, 20);70 this.nameTextBox.Location = new System.Drawing.Point(105, 29); 71 this.nameTextBox.Size = new System.Drawing.Size(517, 20); 72 72 // 73 73 // nameLabel 74 74 // 75 75 this.nameLabel.Location = new System.Drawing.Point(3, 32); 76 // 77 // infoLabel 78 // 79 this.infoLabel.Location = new System.Drawing.Point(628, 32); 76 80 // 77 81 // importInstanceButton … … 160 164 this.visualizationTabPage.Name = "visualizationTabPage"; 161 165 this.visualizationTabPage.Padding = new System.Windows.Forms.Padding(3); 162 this.visualizationTabPage.Size = new System.Drawing.Size(639, 385);166 this.visualizationTabPage.Size = new System.Drawing.Size(639, 411); 163 167 this.visualizationTabPage.TabIndex = 1; 164 168 this.visualizationTabPage.Text = "Visualization"; … … 172 176 this.qapView.Location = new System.Drawing.Point(3, 3); 173 177 this.qapView.Name = "qapView"; 174 this.qapView.Size = new System.Drawing.Size(633, 379);178 this.qapView.Size = new System.Drawing.Size(633, 405); 175 179 this.qapView.TabIndex = 0; 176 180 this.qapView.Weights = null; -
branches/QAP/HeuristicLab.Problems.QuadraticAssignment/3.3/Analyzers/BestQAPSolutionAnalyzer.cs
r5838 r5931 40 40 get { return (LookupParameter<BoolValue>)Parameters["Maximization"]; } 41 41 } 42 public LookupParameter<DoubleMatrix> CoordinatesParameter {43 get { return (LookupParameter<DoubleMatrix>)Parameters["Coordinates"]; }44 }45 42 public LookupParameter<DoubleMatrix> DistancesParameter { 46 43 get { return (LookupParameter<DoubleMatrix>)Parameters["Distances"]; } … … 77 74 : base() { 78 75 Parameters.Add(new LookupParameter<BoolValue>("Maximization", "True if the problem is a maximization problem.")); 79 Parameters.Add(new LookupParameter<DoubleMatrix>("Coordinates", "The x- and y-Coordinates of the locations."));80 76 Parameters.Add(new LookupParameter<DoubleMatrix>("Distances", "The distances between the locations.")); 81 77 Parameters.Add(new LookupParameter<DoubleMatrix>("Weights", "The weights between the facilities.")); -
branches/QAP/HeuristicLab.Problems.QuadraticAssignment/3.3/QuadraticAssignmentProblem.cs
r5855 r5931 50 50 get { return (IValueParameter<Permutation>)Parameters["BestKnownSolution"]; } 51 51 } 52 public IValueParameter<DoubleMatrix> CoordinatesParameter {53 get { return (IValueParameter<DoubleMatrix>)Parameters["Coordinates"]; }54 }55 52 public IValueParameter<DoubleMatrix> WeightsParameter { 56 53 get { return (IValueParameter<DoubleMatrix>)Parameters["Weights"]; } … … 65 62 get { return BestKnownSolutionParameter.Value; } 66 63 set { BestKnownSolutionParameter.Value = value; } 67 }68 public DoubleMatrix Coordinates {69 get { return CoordinatesParameter.Value; }70 set { CoordinatesParameter.Value = value; }71 64 } 72 65 public DoubleMatrix Weights { … … 102 95 } 103 96 public QuadraticAssignmentProblem() 104 : base( ) {97 : base(new QAPEvaluator(), new RandomPermutationCreator()) { 105 98 Parameters.Add(new OptionalValueParameter<Permutation>("BestKnownSolution", "The best known solution which is updated whenever a new better solution is found or may be the optimal solution if it is known beforehand.", null)); 106 Parameters.Add(new OptionalValueParameter<DoubleMatrix>("Coordinates", "The coordinates of the locations. If this is changed the distance matrix is calculated automatically using the euclidean distance."));107 99 Parameters.Add(new ValueParameter<DoubleMatrix>("Weights", "The strength of the connection between the facilities.", new DoubleMatrix(5, 5))); 108 100 Parameters.Add(new ValueParameter<DoubleMatrix>("Distances", "The distance matrix which can either be specified directly without the coordinates, or can be calculated automatically from the coordinates.", new DoubleMatrix(5, 5))); 109 101 110 102 Maximization = new BoolValue(false); 111 112 Coordinates = new DoubleMatrix(new double[,] {113 { 294.000, 3.000 },114 { 585.246, 214.603 },115 { 474.000, 556.983 },116 { 114.000, 556.983 },117 { 2.754, 214.603 }118 });119 103 120 104 Weights = new DoubleMatrix(new double[,] { … … 134 118 }); 135 119 136 RandomPermutationCreator solutionCreator = new RandomPermutationCreator(); 137 solutionCreator.LengthParameter.Value = new IntValue(5); 138 solutionCreator.PermutationParameter.ActualName = "Assignment"; 139 QAPEvaluator evaluator = new QAPEvaluator(); 140 141 SolutionCreatorParameter.Value = solutionCreator; 142 EvaluatorParameter.Value = evaluator; 120 SolutionCreator.PermutationParameter.ActualName = "Assignment"; 121 ParameterizeSolutionCreator(); 122 ParameterizeEvaluator(); 143 123 144 124 InitializeOperators(); … … 231 211 AdjustWeightsMatrix(); 232 212 } 233 }234 private void CoordinatesParameter_ValueChanged(object sender, EventArgs e) {235 if (Coordinates != null) {236 Coordinates.Reset += new EventHandler(Coordinates_Reset);237 Coordinates.ItemChanged += new EventHandler<EventArgs<int, int>>(Coordinates_ItemChanged);238 UpdateDistancesFromCoordinates();239 }240 }241 private void Coordinates_ItemChanged(object sender, EventArgs<int, int> e) {242 UpdateDistancesFromCoordinates();243 }244 private void Coordinates_Reset(object sender, EventArgs e) {245 UpdateDistancesFromCoordinates();246 213 } 247 214 #endregion … … 262 229 Distances.RowsChanged += new EventHandler(Distances_RowsChanged); 263 230 Distances.ColumnsChanged += new EventHandler(Distances_ColumnsChanged); 264 CoordinatesParameter.ValueChanged += new EventHandler(CoordinatesParameter_ValueChanged);265 Coordinates.Reset += new EventHandler(Coordinates_Reset);266 Coordinates.ItemChanged += new EventHandler<EventArgs<int, int>>(Coordinates_ItemChanged);267 231 } 268 232 … … 289 253 if (BestQAPSolutionAnalyzer != null) { 290 254 BestQAPSolutionAnalyzer.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName; 291 BestQAPSolutionAnalyzer.CoordinatesParameter.ActualName = CoordinatesParameter.Name;292 255 BestQAPSolutionAnalyzer.DistancesParameter.ActualName = DistancesParameter.Name; 293 256 BestQAPSolutionAnalyzer.WeightsParameter.ActualName = WeightsParameter.Name; … … 335 298 } 336 299 } 337 338 private void UpdateDistancesFromCoordinates() {339 if (Coordinates != null && Coordinates.Columns == 2 && Coordinates.Rows > 1) {340 DoubleMatrix distance = new DoubleMatrix(Coordinates.Rows, Coordinates.Rows);341 for (int i = 0; i < Coordinates.Rows - 1; i++) {342 for (int j = i + 1; j < Coordinates.Rows; j++) {343 double dx = Coordinates[i, 0] - Coordinates[j, 0];344 double dy = Coordinates[i, 1] - Coordinates[j, 1];345 distance[i, j] = Math.Sqrt(dx * dx + dy * dy);346 distance[j, i] = Distances[i, j];347 }348 }349 Distances = distance;350 }351 }352 300 #endregion 353 301 … … 356 304 parser.Parse(filename); 357 305 if (parser.Error != null) throw parser.Error; 358 Coordinates = new DoubleMatrix();359 306 Distances = new DoubleMatrix(parser.Distances); 360 307 Weights = new DoubleMatrix(parser.Weights); … … 372 319 parser.Parse(stream); 373 320 if (parser.Error != null) throw parser.Error; 374 Coordinates = new DoubleMatrix();375 321 Distances = new DoubleMatrix(parser.Distances); 376 322 Weights = new DoubleMatrix(parser.Weights); -
branches/QAP/QAP.sln
r5873 r5931 138 138 {34C967E5-EEB1-4502-8035-122EDDEF44CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 139 139 {34C967E5-EEB1-4502-8035-122EDDEF44CB}.Debug|Any CPU.Build.0 = Debug|Any CPU 140 {34C967E5-EEB1-4502-8035-122EDDEF44CB}.Debug|x64.ActiveCfg = Debug|Any CPU 141 {34C967E5-EEB1-4502-8035-122EDDEF44CB}.Debug|x86.ActiveCfg = Debug|Any CPU 140 {34C967E5-EEB1-4502-8035-122EDDEF44CB}.Debug|x64.ActiveCfg = Debug|x64 141 {34C967E5-EEB1-4502-8035-122EDDEF44CB}.Debug|x64.Build.0 = Debug|x64 142 {34C967E5-EEB1-4502-8035-122EDDEF44CB}.Debug|x86.ActiveCfg = Debug|x86 143 {34C967E5-EEB1-4502-8035-122EDDEF44CB}.Debug|x86.Build.0 = Debug|x86 142 144 {34C967E5-EEB1-4502-8035-122EDDEF44CB}.Release|Any CPU.ActiveCfg = Release|Any CPU 143 145 {34C967E5-EEB1-4502-8035-122EDDEF44CB}.Release|Any CPU.Build.0 = Release|Any CPU 144 {34C967E5-EEB1-4502-8035-122EDDEF44CB}.Release|x64.ActiveCfg = Release|Any CPU 145 {34C967E5-EEB1-4502-8035-122EDDEF44CB}.Release|x86.ActiveCfg = Release|Any CPU 146 {34C967E5-EEB1-4502-8035-122EDDEF44CB}.Release|x64.ActiveCfg = Release|x64 147 {34C967E5-EEB1-4502-8035-122EDDEF44CB}.Release|x64.Build.0 = Release|x64 148 {34C967E5-EEB1-4502-8035-122EDDEF44CB}.Release|x86.ActiveCfg = Release|x86 149 {34C967E5-EEB1-4502-8035-122EDDEF44CB}.Release|x86.Build.0 = Release|x86 146 150 EndGlobalSection 147 151 GlobalSection(SolutionProperties) = preSolution
Note: See TracChangeset
for help on using the changeset viewer.