Changeset 3809
- Timestamp:
- 05/14/10 17:47:49 (15 years ago)
- Location:
- trunk/sources
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Algorithms.LocalSearch/3.3/LocalSearch.cs
r3750 r3809 72 72 get { return (ValueParameter<IntValue>)Parameters["SampleSize"]; } 73 73 } 74 private ValueParameter<MultiAnalyzer> MoveAnalyzerParameter {75 get { return (ValueParameter<MultiAnalyzer>)Parameters["MoveAnalyzer"]; }76 }77 74 private ValueParameter<MultiAnalyzer> AnalyzerParameter { 78 75 get { return (ValueParameter<MultiAnalyzer>)Parameters["Analyzer"]; } … … 108 105 get { return SampleSizeParameter.Value; } 109 106 set { SampleSizeParameter.Value = value; } 110 }111 public MultiAnalyzer MoveAnalyzer {112 get { return MoveAnalyzerParameter.Value; }113 set { MoveAnalyzerParameter.Value = value; }114 107 } 115 108 public MultiAnalyzer Analyzer { … … 141 134 Parameters.Add(new ValueParameter<IntValue>("MaximumIterations", "The maximum number of generations which should be processed.", new IntValue(1000))); 142 135 Parameters.Add(new ValueParameter<IntValue>("SampleSize", "Number of moves that MultiMoveGenerators should create. This is ignored for Exhaustive- and SingleMoveGenerators.", new IntValue(100))); 143 Parameters.Add(new ValueParameter<MultiAnalyzer>("MoveAnalyzer", "The operator used to analyze the moves.", new MultiAnalyzer())); 144 Parameters.Add(new ValueParameter<MultiAnalyzer>("Analyzer", "The operator used to analyze the solution.", new MultiAnalyzer())); 136 Parameters.Add(new ValueParameter<MultiAnalyzer>("Analyzer", "The operator used to analyze the solution and moves.", new MultiAnalyzer())); 145 137 146 138 RandomCreator randomCreator = new RandomCreator(); … … 165 157 lsMainLoop.RandomParameter.ActualName = RandomCreator.RandomParameter.ActualName; 166 158 lsMainLoop.ResultsParameter.ActualName = "Results"; 167 lsMainLoop.MoveAnalyzerParameter.ActualName = MoveAnalyzerParameter.Name;168 159 lsMainLoop.AnalyzerParameter.ActualName = AnalyzerParameter.Name; 169 160 … … 318 309 private void UpdateAnalyzers() { 319 310 Analyzer.Operators.Clear(); 320 MoveAnalyzer.Operators.Clear();321 MoveAnalyzer.Operators.Add(moveQualityAnalyzer);322 311 if (Problem != null) { 323 312 foreach (IAnalyzer analyzer in Problem.Operators.OfType<IAnalyzer>().OrderBy(x => x.Name)) { … … 327 316 } 328 317 } 318 Analyzer.Operators.Add(moveQualityAnalyzer); 329 319 } 330 320 private void ClearMoveParameters() { -
trunk/sources/HeuristicLab.Algorithms.LocalSearch/3.3/LocalSearchMainLoop.cs
r3750 r3809 68 68 get { return (ValueLookupParameter<IOperator>)Parameters["MoveMaker"]; } 69 69 } 70 public ValueLookupParameter<IOperator> MoveAnalyzerParameter {71 get { return (ValueLookupParameter<IOperator>)Parameters["MoveAnalyzer"]; }72 }73 70 public ValueLookupParameter<IOperator> AnalyzerParameter { 74 71 get { return (ValueLookupParameter<IOperator>)Parameters["Analyzer"]; } … … 104 101 Parameters.Add(new ValueLookupParameter<IOperator>("MoveEvaluator", "The operator that evaluates a move.")); 105 102 106 Parameters.Add(new ValueLookupParameter<IOperator>("MoveAnalyzer", "The operator used to analyze the moves.")); 107 Parameters.Add(new ValueLookupParameter<IOperator>("Analyzer", "The operator used to analyze the solution.")); 103 Parameters.Add(new ValueLookupParameter<IOperator>("Analyzer", "The operator used to analyze the solution and moves.")); 108 104 Parameters.Add(new ScopeParameter("CurrentScope", "The current scope which represents a population of solutions on which the TS should be applied.")); 109 105 #endregion … … 123 119 Placeholder moveAnalyzer = new Placeholder(); 124 120 BestSelector bestSelector = new BestSelector(); 125 RightReducer rightReducer = new RightReducer();126 121 SubScopesProcessor moveMakingProcessor = new SubScopesProcessor(); 122 UniformSubScopesProcessor selectedMoveMakingProcessor = new UniformSubScopesProcessor(); 127 123 QualityComparator qualityComparator = new QualityComparator(); 128 124 ConditionalBranch improvesQualityBranch = new ConditionalBranch(); 129 125 Placeholder moveMaker = new Placeholder(); 130 126 Assigner bestQualityUpdater = new Assigner(); 127 MergingReducer mergingReducer = new MergingReducer(); 128 Placeholder analyzer2 = new Placeholder(); 131 129 SubScopesRemover subScopesRemover = new SubScopesRemover(); 132 130 IntCounter iterationsCounter = new IntCounter(); 133 131 Comparator iterationsComparator = new Comparator(); 134 SubScopesProcessor subScopesProcessor1 = new SubScopesProcessor();135 Placeholder analyzer2 = new Placeholder();136 132 ResultsCollector resultsCollector3 = new ResultsCollector(); 137 133 ConditionalBranch iterationsTermination = new ConditionalBranch(); … … 167 163 evaluatedMovesCounter.Increment = new IntValue(1); 168 164 169 moveAnalyzer.Name = "MoveAnalyzer (placeholder)";170 moveAnalyzer.OperatorParameter.ActualName = MoveAnalyzerParameter.Name;171 172 165 bestSelector.CopySelected = new BoolValue(false); 173 166 bestSelector.MaximizationParameter.ActualName = MaximizationParameter.Name; … … 187 180 bestQualityUpdater.LeftSideParameter.ActualName = "BestQuality"; 188 181 bestQualityUpdater.RightSideParameter.ActualName = QualityParameter.Name; 182 183 analyzer2.Name = "Analyzer (placeholder)"; 184 analyzer2.OperatorParameter.ActualName = AnalyzerParameter.Name; 189 185 190 186 subScopesRemover.RemoveAllSubScopes = true; … … 199 195 iterationsComparator.RightSideParameter.ActualName = MaximumIterationsParameter.Name; 200 196 iterationsComparator.ResultParameter.ActualName = "Terminate"; 201 202 analyzer2.Name = "Analyzer (placeholder)";203 analyzer2.OperatorParameter.ActualName = AnalyzerParameter.Name;204 197 205 198 resultsCollector3.CopyValue = new BoolValue(true); … … 228 221 evaluatedMovesCounter.Successor = null; 229 222 moveAnalyzer.Successor = bestSelector; 230 bestSelector.Successor = rightReducer;231 rightReducer.Successor = moveMakingProcessor;232 moveMakingProcessor.Operators.Add( qualityComparator);233 moveMakingProcessor.Successor = subScopesRemover;234 s ubScopesRemover.Successor = null;223 bestSelector.Successor = moveMakingProcessor; 224 moveMakingProcessor.Operators.Add(new EmptyOperator()); 225 moveMakingProcessor.Operators.Add(selectedMoveMakingProcessor); 226 moveMakingProcessor.Successor = mergingReducer; 227 selectedMoveMakingProcessor.Operator = qualityComparator; 235 228 qualityComparator.Successor = improvesQualityBranch; 236 229 improvesQualityBranch.TrueBranch = moveMaker; … … 239 232 moveMaker.Successor = bestQualityUpdater; 240 233 bestQualityUpdater.Successor = null; 234 mergingReducer.Successor = analyzer2; 235 analyzer2.Successor = subScopesRemover; 236 subScopesRemover.Successor = null; 241 237 iterationsCounter.Successor = iterationsComparator; 242 iterationsComparator.Successor = subScopesProcessor1; 243 subScopesProcessor1.Operators.Add(analyzer2); 244 subScopesProcessor1.Successor = resultsCollector3; 245 analyzer2.Successor = null; 238 iterationsComparator.Successor = resultsCollector3; 246 239 resultsCollector3.Successor = iterationsTermination; 247 240 iterationsTermination.TrueBranch = null; -
trunk/sources/HeuristicLab.Algorithms.TabuSearch/3.3/TabuNeighborhoodAnalyzer.cs
r3659 r3809 48 48 public override IOperation Apply() { 49 49 ItemArray<BoolValue> tabu = IsTabuParameter.ActualValue; 50 PercentValue value = PercentTabuParameter.ActualValue; 51 if (value == null) { 52 value = new PercentValue(); 53 PercentTabuParameter.ActualValue = value; 54 } 55 value.Value = tabu.Where(x => x.Value).Count() / (double)tabu.Length; 56 ResultCollection results = ResultsParameter.ActualValue; 57 if (results != null) { 58 IResult result = null; 59 results.TryGetValue(PercentTabuParameter.ActualName, out result); 60 if (result != null) 61 result.Value = value; 62 else 63 results.Add(new Result(PercentTabuParameter.ActualName, "Indicates how much of the neighborhood is tabu.", (IItem)value.Clone())); 50 if (tabu.Length > 0) { 51 PercentValue value = PercentTabuParameter.ActualValue; 52 if (value == null) { 53 value = new PercentValue(); 54 PercentTabuParameter.ActualValue = value; 55 } 56 value.Value = tabu.Where(x => x.Value).Count() / (double)tabu.Length; 57 ResultCollection results = ResultsParameter.ActualValue; 58 if (results != null) { 59 IResult result = null; 60 results.TryGetValue(PercentTabuParameter.ActualName, out result); 61 if (result != null) 62 result.Value = value; 63 else 64 results.Add(new Result(PercentTabuParameter.ActualName, "Indicates how much of the neighborhood is tabu.", (IItem)value.Clone())); 65 } 64 66 } 65 67 return base.Apply(); -
trunk/sources/HeuristicLab.Algorithms.TabuSearch/3.3/TabuSearch.cs
r3750 r3809 81 81 get { return (ValueParameter<IntValue>)Parameters["SampleSize"]; } 82 82 } 83 private ValueParameter<MultiAnalyzer> MoveAnalyzerParameter {84 get { return (ValueParameter<MultiAnalyzer>)Parameters["MoveAnalyzer"]; }85 }86 83 private ValueParameter<MultiAnalyzer> AnalyzerParameter { 87 84 get { return (ValueParameter<MultiAnalyzer>)Parameters["Analyzer"]; } … … 125 122 get { return MaximumIterationsParameter.Value; } 126 123 set { MaximumIterationsParameter.Value = value; } 127 }128 public MultiAnalyzer MoveAnalyzer {129 get { return MoveAnalyzerParameter.Value; }130 set { MoveAnalyzerParameter.Value = value; }131 124 } 132 125 public MultiAnalyzer Analyzer { … … 161 154 Parameters.Add(new ValueParameter<IntValue>("MaximumIterations", "The maximum number of generations which should be processed.", new IntValue(1000))); 162 155 Parameters.Add(new ValueParameter<IntValue>("SampleSize", "The neighborhood size for stochastic sampling move generators", new IntValue(100))); 163 Parameters.Add(new ValueParameter<MultiAnalyzer>("MoveAnalyzer", "The operator used to analyze the moves.", new MultiAnalyzer()));164 156 Parameters.Add(new ValueParameter<MultiAnalyzer>("Analyzer", "The operator used to analyze the solution.", new MultiAnalyzer())); 165 157 … … 187 179 tsMainLoop.RandomParameter.ActualName = RandomCreator.RandomParameter.ActualName; 188 180 tsMainLoop.ResultsParameter.ActualName = "Results"; 189 tsMainLoop.MoveAnalyzerParameter.ActualName = MoveAnalyzerParameter.Name;190 181 tsMainLoop.AnalyzerParameter.ActualName = AnalyzerParameter.Name; 191 182 … … 392 383 private void UpdateAnalyzers() { 393 384 Analyzer.Operators.Clear(); 394 MoveAnalyzer.Operators.Clear();395 MoveAnalyzer.Operators.Add(moveQualityAnalyzer);396 MoveAnalyzer.Operators.Add(tabuNeighborhoodAnalyzer);397 385 if (Problem != null) { 398 386 foreach (IAnalyzer analyzer in Problem.Operators.OfType<IAnalyzer>().OrderBy(x => x.Name)) { … … 402 390 } 403 391 } 392 Analyzer.Operators.Add(moveQualityAnalyzer); 393 Analyzer.Operators.Add(tabuNeighborhoodAnalyzer); 404 394 } 405 395 private void ClearMoveParameters() { -
trunk/sources/HeuristicLab.Algorithms.TabuSearch/3.3/TabuSearchMainLoop.cs
r3750 r3809 77 77 get { return (ValueLookupParameter<IOperator>)Parameters["TabuMaker"]; } 78 78 } 79 public ValueLookupParameter<IOperator> MoveAnalyzerParameter {80 get { return (ValueLookupParameter<IOperator>)Parameters["MoveAnalyzer"]; }81 }82 79 public ValueLookupParameter<IOperator> AnalyzerParameter { 83 80 get { return (ValueLookupParameter<IOperator>)Parameters["Analyzer"]; } … … 112 109 Parameters.Add(new ValueLookupParameter<IOperator>("TabuMaker", "The operator that declares a move tabu.")); 113 110 114 Parameters.Add(new ValueLookupParameter<IOperator>("MoveAnalyzer", "The operator used to analyze the moves.")); 115 Parameters.Add(new ValueLookupParameter<IOperator>("Analyzer", "The operator used to analyze the solution.")); 111 Parameters.Add(new ValueLookupParameter<IOperator>("Analyzer", "The operator used to analyze the solution and moves.")); 116 112 Parameters.Add(new ValueLookupParameter<VariableCollection>("Results", "The variable collection where results should be stored.")); 117 113 #endregion … … 130 126 IntCounter evaluatedMovesCounter = new IntCounter(); 131 127 Placeholder tabuChecker = new Placeholder(); 132 Placeholder moveAnalyzer = new Placeholder();133 128 SubScopesSorter moveQualitySorter = new SubScopesSorter(); 134 129 TabuSelector tabuSelector = new TabuSelector(); 135 130 ConditionalBranch emptyNeighborhoodBranch1 = new ConditionalBranch(); 136 RightReducer rightReducer = new RightReducer();137 131 SubScopesProcessor moveMakingProcessor = new SubScopesProcessor(); 132 UniformSubScopesProcessor selectedMoveMakingProcesor = new UniformSubScopesProcessor(); 138 133 Placeholder tabuMaker = new Placeholder(); 139 134 Placeholder moveMaker = new Placeholder(); 135 MergingReducer mergingReducer = new MergingReducer(); 136 Placeholder analyzer2 = new Placeholder(); 140 137 SubScopesRemover subScopesRemover = new SubScopesRemover(); 141 138 ConditionalBranch emptyNeighborhoodBranch2 = new ConditionalBranch(); … … 143 140 IntCounter iterationsCounter = new IntCounter(); 144 141 Comparator iterationsComparator = new Comparator(); 145 SubScopesProcessor subScopesProcessor1 = new SubScopesProcessor();146 Placeholder analyzer2 = new Placeholder();147 142 ResultsCollector resultsCollector3 = new ResultsCollector(); 148 143 ConditionalBranch iterationsTermination = new ConditionalBranch(); … … 182 177 tabuChecker.Name = "TabuChecker (placeholder)"; 183 178 tabuChecker.OperatorParameter.ActualName = TabuCheckerParameter.Name; 184 185 moveAnalyzer.Name = "MoveAnalyzer (placeholder)";186 moveAnalyzer.OperatorParameter.ActualName = MoveAnalyzerParameter.Name;187 179 188 180 moveQualitySorter.DescendingParameter.ActualName = MaximizationParameter.Name; … … 208 200 moveMaker.OperatorParameter.ActualName = MoveMakerParameter.Name; 209 201 202 analyzer2.Name = "Analyzer (placeholder)"; 203 analyzer2.OperatorParameter.ActualName = AnalyzerParameter.Name; 204 210 205 subScopesRemover.RemoveAllSubScopes = true; 211 206 … … 225 220 iterationsComparator.ResultParameter.ActualName = "Terminate"; 226 221 227 analyzer2.Name = "Analyzer (placeholder)";228 analyzer2.OperatorParameter.ActualName = AnalyzerParameter.Name;229 230 222 resultsCollector3.CopyValue = new BoolValue(true); 231 223 resultsCollector3.CollectedValues.Add(new LookupParameter<IntValue>("Evaluated Moves", null, "EvaluatedMoves")); … … 244 236 subScopesProcessor0.Operators.Add(bestQualityInitializer); 245 237 subScopesProcessor0.Successor = resultsCollector1; 238 bestQualityInitializer.Successor = analyzer1; 239 analyzer1.Successor = null; 246 240 resultsCollector1.Successor = resultsCollector2; 247 241 resultsCollector2.Successor = solutionProcessor; … … 250 244 moveGenerator.Successor = moveEvaluationProcessor; 251 245 moveEvaluationProcessor.Operator = moveEvaluator; 252 moveEvaluationProcessor.Successor = move Analyzer;246 moveEvaluationProcessor.Successor = moveQualitySorter; 253 247 moveEvaluator.Successor = evaluatedMovesCounter; 254 248 evaluatedMovesCounter.Successor = tabuChecker; 255 249 tabuChecker.Successor = null; 256 moveAnalyzer.Successor = moveQualitySorter;257 250 moveQualitySorter.Successor = tabuSelector; 258 251 tabuSelector.Successor = emptyNeighborhoodBranch1; 259 emptyNeighborhoodBranch1.FalseBranch = rightReducer;252 emptyNeighborhoodBranch1.FalseBranch = moveMakingProcessor; 260 253 emptyNeighborhoodBranch1.TrueBranch = null; 261 254 emptyNeighborhoodBranch1.Successor = subScopesRemover; 262 rightReducer.Successor = moveMakingProcessor; 263 moveMakingProcessor.Operators.Add(tabuMaker); 264 moveMakingProcessor.Successor = null; 255 moveMakingProcessor.Operators.Add(new EmptyOperator()); 256 moveMakingProcessor.Operators.Add(selectedMoveMakingProcesor); 257 moveMakingProcessor.Successor = mergingReducer; 258 selectedMoveMakingProcesor.Operator = tabuMaker; 259 selectedMoveMakingProcesor.Successor = null; 265 260 tabuMaker.Successor = moveMaker; 266 261 moveMaker.Successor = null; 262 mergingReducer.Successor = analyzer2; 263 analyzer2.Successor = null; 267 264 subScopesRemover.Successor = null; 268 265 iterationsCounter.Successor = iterationsComparator; 269 iterationsComparator.Successor = subScopesProcessor1; 270 subScopesProcessor1.Operators.Add(analyzer2); 271 subScopesProcessor1.Successor = resultsCollector3; 266 iterationsComparator.Successor = resultsCollector3; 272 267 resultsCollector3.Successor = emptyNeighborhoodBranch2; 273 268 emptyNeighborhoodBranch2.TrueBranch = null;
Note: See TracChangeset
for help on using the changeset viewer.