Changeset 7877 for trunk/sources/HeuristicLab.Problems.QuadraticAssignment
- Timestamp:
- 05/23/12 16:25:40 (13 years ago)
- Location:
- trunk/sources/HeuristicLab.Problems.QuadraticAssignment/3.3
- Files:
-
- 2 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/sources/HeuristicLab.Problems.QuadraticAssignment/3.3/HeuristicLab.Problems.QuadraticAssignment-3.3.csproj ¶
r7646 r7877 114 114 <Compile Include="Analyzers\QAPAlleleFrequencyAnalyzer.cs" /> 115 115 <Compile Include="Analyzers\QAPPopulationDiversityAnalyzer.cs" /> 116 <Compile Include="BoundsCalculators\GilmoreLawlerBoundCalculator.cs" /> 116 117 <Compile Include="Evaluators\QAPScrambleMoveEvaluator.cs" /> 117 118 <Compile Include="Evaluators\QAPSwap2MoveEvaluator.cs" /> … … 202 203 <Private>False</Private> 203 204 </ProjectReference> 205 <ProjectReference Include="..\..\HeuristicLab.Problems.LinearAssignment\3.3\HeuristicLab.Problems.LinearAssignment-3.3.csproj"> 206 <Project>{7250653F-DE83-4069-8D34-8050E8E45EA1}</Project> 207 <Name>HeuristicLab.Problems.LinearAssignment-3.3</Name> 208 </ProjectReference> 204 209 </ItemGroup> 205 210 <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> -
TabularUnified trunk/sources/HeuristicLab.Problems.QuadraticAssignment/3.3/Plugin.cs.frame ¶
r7558 r7877 37 37 [PluginDependency("HeuristicLab.Persistence", "3.3")] 38 38 [PluginDependency("HeuristicLab.Problems.Instances", "3.3")] 39 [PluginDependency("HeuristicLab.Problems.LinearAssignment", "3.3")] 39 40 public class HeuristicLabProblemsQuadraticAssignmentPlugin : PluginBase { } 40 41 } -
TabularUnified trunk/sources/HeuristicLab.Problems.QuadraticAssignment/3.3/QuadraticAssignmentProblem.cs ¶
r7768 r7877 60 60 get { return (IValueParameter<DoubleMatrix>)Parameters["Distances"]; } 61 61 } 62 public IValueParameter<DoubleValue> LowerBoundParameter { 63 get { return (IValueParameter<DoubleValue>)Parameters["LowerBound"]; } 64 } 65 public IValueParameter<DoubleValue> AverageQualityParameter { 66 get { return (IValueParameter<DoubleValue>)Parameters["AverageQuality"]; } 67 } 62 68 #endregion 63 69 … … 78 84 get { return DistancesParameter.Value; } 79 85 set { DistancesParameter.Value = value; } 86 } 87 public DoubleValue LowerBound { 88 get { return LowerBoundParameter.Value; } 89 set { LowerBoundParameter.Value = value; } 90 } 91 public DoubleValue AverageQuality { 92 get { return AverageQualityParameter.Value; } 93 set { AverageQualityParameter.Value = value; } 80 94 } 81 95 … … 105 119 Parameters.Add(new ValueParameter<DoubleMatrix>("Weights", "The strength of the connection between the facilities.", new DoubleMatrix(5, 5))); 106 120 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))); 121 Parameters.Add(new OptionalValueParameter<DoubleValue>("LowerBound", "The Gilmore-Lawler lower bound to the solution quality.")); 122 Parameters.Add(new OptionalValueParameter<DoubleValue>("AverageQuality", "The expected quality of a random solution.")); 107 123 108 124 Maximization.Value = false; 109 125 MaximizationParameter.Hidden = true; 110 126 127 WeightsParameter.GetsCollected = false; 111 128 Weights = new DoubleMatrix(new double[,] { 112 129 { 0, 1, 0, 0, 1 }, … … 117 134 }); 118 135 136 DistancesParameter.GetsCollected = false; 119 137 Distances = new DoubleMatrix(new double[,] { 120 138 { 0, 360, 582, 582, 360 }, … … 153 171 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.", d)); 154 172 } 173 if (!Parameters.ContainsKey("LowerBound")) { 174 Parameters.Add(new OptionalValueParameter<DoubleValue>("LowerBound", "The Gilmore-Lawler lower bound to the solution quality.")); 175 LowerBound = new DoubleValue(GilmoreLawlerBoundCalculator.CalculateLowerBound(Weights, Distances)); 176 } 177 if (!Parameters.ContainsKey("AverageQuality")) { 178 Parameters.Add(new OptionalValueParameter<DoubleValue>("AverageQuality", "The expected quality of a random solution.")); 179 AverageQuality = new DoubleValue(Weights.Average() * Distances.Average() * Weights.Rows * Weights.Rows); 180 } 181 #endregion 155 182 RegisterEventHandlers(); 156 #endregion157 183 } 158 184 … … 186 212 Weights.RowsChanged += new EventHandler(Weights_RowsChanged); 187 213 Weights.ColumnsChanged += new EventHandler(Weights_ColumnsChanged); 214 Weights.ToStringChanged += new EventHandler(Weights_ToStringChanged); 188 215 ParameterizeSolutionCreator(); 189 216 ParameterizeEvaluator(); … … 211 238 } 212 239 } 240 private void Weights_ToStringChanged(object sender, EventArgs e) { 241 UpdateParameterValues(); 242 } 213 243 private void DistancesParameter_ValueChanged(object sender, EventArgs e) { 214 244 Distances.RowsChanged += new EventHandler(Distances_RowsChanged); 215 245 Distances.ColumnsChanged += new EventHandler(Distances_ColumnsChanged); 246 Distances.ToStringChanged += new EventHandler(Distances_ToStringChanged); 216 247 ParameterizeSolutionCreator(); 217 248 ParameterizeEvaluator(); … … 239 270 } 240 271 } 272 private void Distances_ToStringChanged(object sender, EventArgs e) { 273 UpdateParameterValues(); 274 } 241 275 #endregion 242 276 243 #region Helpers244 277 private void RegisterEventHandlers() { 245 278 SolutionCreator.PermutationParameter.ActualNameChanged += new EventHandler(SolutionCreator_PermutationParameter_ActualNameChanged); … … 248 281 Weights.RowsChanged += new EventHandler(Weights_RowsChanged); 249 282 Weights.ColumnsChanged += new EventHandler(Weights_ColumnsChanged); 283 Weights.ToStringChanged += new EventHandler(Weights_ToStringChanged); 250 284 DistancesParameter.ValueChanged += new EventHandler(DistancesParameter_ValueChanged); 251 285 Distances.RowsChanged += new EventHandler(Distances_RowsChanged); 252 286 Distances.ColumnsChanged += new EventHandler(Distances_ColumnsChanged); 253 } 254 287 Distances.ToStringChanged += new EventHandler(Distances_ToStringChanged); 288 } 289 290 #region Helpers 255 291 private void InitializeOperators() { 256 292 var defaultOperators = new HashSet<IPermutationOperator>(new IPermutationOperator[] { … … 363 399 } 364 400 } 401 402 private void UpdateParameterValues() { 403 LowerBound = new DoubleValue(GilmoreLawlerBoundCalculator.CalculateLowerBound(Weights, Distances)); 404 AverageQuality = new DoubleValue(Weights.Average() * Distances.Average() * Weights.Rows * Weights.Rows); 405 } 365 406 #endregion 366 407 … … 407 448 BestKnownSolution = null; 408 449 BestKnownSolutions = null; 450 UpdateParameterValues(); 409 451 } 410 452
Note: See TracChangeset
for help on using the changeset viewer.