- Timestamp:
- 06/21/12 18:02:33 (12 years ago)
- Location:
- branches/GP-MoveOperators
- Files:
-
- 6 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/GP-MoveOperators
- Property svn:ignore
-
old new 20 20 bin 21 21 protoc.exe 22 _ReSharper.HeuristicLab 3.3 Tests
-
- Property svn:mergeinfo changed
- Property svn:ignore
-
branches/GP-MoveOperators/HeuristicLab.Problems.QuadraticAssignment
- Property svn:mergeinfo changed
/trunk/sources/HeuristicLab.Problems.QuadraticAssignment (added) merged: 7877-7878
- Property svn:mergeinfo changed
-
branches/GP-MoveOperators/HeuristicLab.Problems.QuadraticAssignment/3.3/HeuristicLab.Problems.QuadraticAssignment-3.3.csproj
r7646 r8085 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" /> -
branches/GP-MoveOperators/HeuristicLab.Problems.QuadraticAssignment/3.3/LocalImprovement/QAPExhaustiveSwap2LocalImprovement.cs
r7259 r8085 100 100 } 101 101 102 public override IOperation Apply() { 103 int maxIterations = MaximumIterationsParameter.ActualValue.Value; 104 Permutation assignment = AssignmentParameter.ActualValue; 105 bool maximization = MaximizationParameter.ActualValue.Value; 106 DoubleMatrix weights = WeightsParameter.ActualValue; 107 DoubleMatrix distances = DistancesParameter.ActualValue; 108 109 double evaluatedSolutions = 0.0; 102 public static double Improve(Permutation assignment, double quality, DoubleMatrix weights, DoubleMatrix distances, bool maximization, int maxIterations, out double evaluatedSolutions) { 103 evaluatedSolutions = 0.0; 110 104 double evalSolPerMove = 4.0 / assignment.Length; 111 105 … … 124 118 if (bestMove == null) break; 125 119 Swap2Manipulator.Apply(assignment, bestMove.Index1, bestMove.Index2); 126 QualityParameter.ActualValue.Value+= bestQuality;120 quality += bestQuality; 127 121 } 128 EvaluatedSolutionsParameter.ActualValue.Value += (int)Math.Ceiling(evaluatedSolutions); 122 return quality; 123 } 124 125 public override IOperation Apply() { 126 int maxIterations = MaximumIterationsParameter.ActualValue.Value; 127 Permutation assignment = AssignmentParameter.ActualValue; 128 bool maximization = MaximizationParameter.ActualValue.Value; 129 DoubleMatrix weights = WeightsParameter.ActualValue; 130 DoubleMatrix distances = DistancesParameter.ActualValue; 131 double quality = QualityParameter.ActualValue.Value; 132 133 double evaluations; 134 QualityParameter.ActualValue.Value = Improve(assignment, quality, weights, distances, maximization, maxIterations, out evaluations); 135 EvaluatedSolutionsParameter.ActualValue.Value += (int)Math.Ceiling(evaluations); 129 136 return base.Apply(); 130 137 } -
branches/GP-MoveOperators/HeuristicLab.Problems.QuadraticAssignment/3.3/Plugin.cs.frame
r7558 r8085 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 } -
branches/GP-MoveOperators/HeuristicLab.Problems.QuadraticAssignment/3.3/QuadraticAssignmentProblem.cs
r7768 r8085 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.