Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/20/10 16:15:26 (15 years ago)
Author:
abeham
Message:

updated Tabu Search (reporting and visualization) #840

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Algorithms.TabuSearch/3.3/TabuSearch.cs

    r3131 r3141  
    7474      get { return (ValueParameter<IntValue>)Parameters["MaximumIterations"]; }
    7575    }
     76    private ValueParameter<IntValue> SampleSizeParameter {
     77      get { return (ValueParameter<IntValue>)Parameters["SampleSize"]; }
     78    }
    7679    #endregion
    7780
     
    124127    #endregion
    125128
     129    [StorableConstructor]
     130    public TabuSearch(bool deserializing) : base() { }
    126131    public TabuSearch()
    127132      : base() {
     
    135140      Parameters.Add(new ValueParameter<IntValue>("TabuTenure", "The length of the tabu list.", new IntValue(10)));
    136141      Parameters.Add(new ValueParameter<IntValue>("MaximumIterations", "The maximum number of generations which should be processed.", new IntValue(1000)));
     142      Parameters.Add(new ValueParameter<IntValue>("SampleSize", "The neighborhood size for stochastic sampling move generators", new IntValue(20)));
    137143
    138144      RandomCreator randomCreator = new RandomCreator();
     
    163169    }
    164170
    165     [StorableConstructor]
    166     private TabuSearch(bool deserializing) : base() { }
    167 
    168171    public override IDeepCloneable Clone(Cloner cloner) {
    169172      TabuSearch clone = (TabuSearch)base.Clone(cloner);
     
    185188      ParameterizeSolutionsCreator();
    186189      ParameterizeMainLoop();
     190      ParameterizeMoveGenerators();
    187191      ParameterizeMoveEvaluator();
    188192      ParameterizeMoveMaker();
     
    204208      Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged);
    205209      base.Problem_EvaluatorChanged(sender, e);
     210    }
     211    protected override void Problem_VisualizerChanged(object sender, EventArgs e) {
     212      ParameterizeStochasticOperator(Problem.Visualizer);
     213      ParameterizeMainLoop();
     214      if (Problem.Visualizer != null) Problem.Visualizer.VisualizationParameter.ActualNameChanged += new EventHandler(Visualizer_VisualizationParameter_ActualNameChanged);
     215      base.Problem_VisualizerChanged(sender, e);
    206216    }
    207217    protected override void Problem_OperatorsChanged(object sender, EventArgs e) {
     
    222232        UpdateMoveParameters();
    223233      ParameterizeMainLoop();
     234      ParameterizeMoveGenerators();
    224235      ParameterizeMoveEvaluator();
    225236      ParameterizeMoveMaker();
     
    249260    private void TabuMoveEvaluator_MoveTabuParameter_ActualNameChanged(object sender, EventArgs e) {
    250261      ParameterizeMainLoop();
     262    }
     263    private void Visualizer_VisualizationParameter_ActualNameChanged(object sender, EventArgs e) {
     264      ParameterizeMainLoop();
     265    }
     266    private void SampleSizeParameter_NameChanged(object sender, EventArgs e) {
     267      ParameterizeMoveGenerators();
    251268    }
    252269    #endregion
     
    260277          op.MoveQualityParameter.ActualNameChanged += new EventHandler(MoveEvaluator_MoveQualityParameter_ActualNameChanged);
    261278        }
     279        if (Problem.Visualizer != null) Problem.Visualizer.VisualizationParameter.ActualNameChanged += new EventHandler(Visualizer_VisualizationParameter_ActualNameChanged);
    262280      }
    263281      MoveGeneratorParameter.ValueChanged += new EventHandler(MoveGeneratorParameter_ValueChanged);
    264282      MoveEvaluatorParameter.ValueChanged += new EventHandler(MoveEvaluatorParameter_ValueChanged);
    265283      TabuMoveEvaluatorParameter.ValueChanged += new EventHandler(TabuMoveEvaluatorParameter_ValueChanged);
     284      SampleSizeParameter.NameChanged += new EventHandler(SampleSizeParameter_NameChanged);
    266285    }
    267286    private void UpdateMoveGenerator() {
     
    269288      MoveGeneratorParameter.ValidValues.Clear();
    270289      if (Problem != null) {
    271         foreach (IMoveGenerator generator in Problem.Operators.OfType<IMoveGenerator>().OrderBy(x => x.Name))
     290        foreach (IMoveGenerator generator in Problem.Operators.OfType<IMoveGenerator>().OrderBy(x => x.Name)) {
    272291          MoveGeneratorParameter.ValidValues.Add(generator);
     292        }
    273293      }
    274294      if (oldMoveGenerator != null && MoveGeneratorParameter.ValidValues.Any(x => x.GetType() == oldMoveGenerator.GetType()))
     
    330350    }
    331351    private void ParameterizeMainLoop() {
     352      MainLoop.BestKnownQualityParameter.ActualName = Problem.BestKnownQualityParameter.Name;
    332353      MainLoop.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name;
    333354      MainLoop.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName;
     
    336357      if (TabuMoveEvaluator != null)
    337358        MainLoop.MoveTabuParameter.ActualName = TabuMoveEvaluator.MoveTabuParameter.ActualName;
     359      MainLoop.VisualizerParameter.ActualName = Problem.VisualizerParameter.Name;
     360      if (Problem.Visualizer != null)
     361        MainLoop.VisualizationParameter.ActualName = Problem.Visualizer.VisualizationParameter.ActualName;
    338362    }
    339363    private void ParameterizeStochasticOperator(IOperator op) {
    340364      if (op is IStochasticOperator)
    341365        ((IStochasticOperator)op).RandomParameter.ActualName = RandomCreator.RandomParameter.ActualName;
     366    }
     367    private void ParameterizeMoveGenerators() {
     368      if (Problem != null) {
     369        foreach (IMultiMoveGenerator generator in Problem.Operators.OfType<IMultiMoveGenerator>())
     370          generator.SampleSizeParameter.ActualName = SampleSizeParameter.Name;
     371      }
    342372    }
    343373    private void ParameterizeMoveEvaluator() {
Note: See TracChangeset for help on using the changeset viewer.