Free cookie consent management tool by TermsFeed Policy Generator

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

fixed some things in trajectory based algorithms #933

Location:
trunk/sources/HeuristicLab.Algorithms.LocalSearch/3.3
Files:
2 edited

Legend:

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

    r3134 r3145  
    103103    #endregion
    104104
     105    [StorableConstructor]
     106    private LocalSearch(bool deserializing) : base() { }
    105107    public LocalSearch()
    106108      : base() {
     
    137139    }
    138140
    139     [StorableConstructor]
    140     private LocalSearch(bool deserializing) : base() { }
    141 
    142141    public override IDeepCloneable Clone(Cloner cloner) {
    143142      LocalSearch clone = (LocalSearch)base.Clone(cloner);
     
    156155      ParameterizeSolutionsCreator();
    157156      ParameterizeMainLoop();
    158       ParameterizeMoveEvaluator();
    159       ParameterizeMoveMaker();
     157      ParameterizeMoveEvaluators();
     158      ParameterizeMoveMakers();
    160159      UpdateMoveGenerator();
    161160      Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged);
     
    171170      ParameterizeSolutionsCreator();
    172171      ParameterizeMainLoop();
    173       ParameterizeMoveEvaluator();
    174       ParameterizeMoveMaker();
     172      ParameterizeMoveEvaluators();
     173      ParameterizeMoveMakers();
    175174      Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged);
    176175      base.Problem_EvaluatorChanged(sender, e);
     
    179178      ParameterizeStochasticOperator(Problem.Visualizer);
    180179      ParameterizeMainLoop();
     180      if (Problem.Visualizer != null) Problem.Visualizer.VisualizationParameter.ActualNameChanged += new EventHandler(Visualizer_VisualizationParameter_ActualNameChanged);
    181181      base.Problem_VisualizerChanged(sender, e);
    182182    }
     
    194194        UpdateMoveParameters();
    195195      ParameterizeMainLoop();
    196       ParameterizeMoveEvaluator();
    197       ParameterizeMoveMaker();
     196      ParameterizeMoveEvaluators();
     197      ParameterizeMoveMakers();
    198198      base.Problem_OperatorsChanged(sender, e);
    199199    }
    200200    private void Evaluator_QualityParameter_ActualNameChanged(object sender, EventArgs e) {
    201201      ParameterizeMainLoop();
    202       ParameterizeMoveEvaluator();
    203       ParameterizeMoveMaker();
     202      ParameterizeMoveEvaluators();
     203      ParameterizeMoveMakers();
    204204    }
    205205    private void MoveGeneratorParameter_ValueChanged(object sender, EventArgs e) {
     
    208208    private void MoveEvaluatorParameter_ValueChanged(object sender, EventArgs e) {
    209209      ParameterizeMainLoop();
    210       ParameterizeMoveEvaluator();
    211       ParameterizeMoveMaker();
     210      ParameterizeMoveEvaluators();
     211      ParameterizeMoveMakers();
    212212    }
    213213    private void MoveEvaluator_MoveQualityParameter_ActualNameChanged(object sender, EventArgs e) {
    214214      ParameterizeMainLoop();
    215       ParameterizeMoveEvaluator();
    216       ParameterizeMoveMaker();
     215      ParameterizeMoveEvaluators();
     216      ParameterizeMoveMakers();
     217    }
     218    private void Visualizer_VisualizationParameter_ActualNameChanged(object sender, EventArgs e) {
     219      ParameterizeMainLoop();
    217220    }
    218221    #endregion
     
    237240          MoveGeneratorParameter.ValidValues.Add(generator);
    238241      }
    239       if (oldMoveGenerator != null && MoveGeneratorParameter.ValidValues.Any(x => x.GetType() == oldMoveGenerator.GetType()))
    240         MoveGenerator = MoveGeneratorParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldMoveGenerator.GetType());
     242      if (oldMoveGenerator != null) {
     243        IMoveGenerator newMoveGenerator = MoveGeneratorParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldMoveGenerator.GetType());
     244        if (newMoveGenerator != null) MoveGenerator = newMoveGenerator;
     245      }
    241246      if (MoveGenerator == null) {
    242247        ClearMoveParameters();
     
    279284    }
    280285    private void ParameterizeMainLoop() {
     286      MainLoop.BestKnownQualityParameter.ActualName = Problem.BestKnownQualityParameter.Name;
    281287      MainLoop.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name;
    282288      MainLoop.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName;
    283289      if (MoveEvaluator != null)
    284290        MainLoop.MoveQualityParameter.ActualName = MoveEvaluator.MoveQualityParameter.ActualName;
    285       MainLoop.BestKnownQualityParameter.ActualName = Problem.BestKnownQualityParameter.Name;
    286291      MainLoop.VisualizerParameter.ActualName = Problem.VisualizerParameter.Name;
    287       MainLoop.VisualizationParameter.ActualName = Problem.Visualizer.VisualizationParameter.ActualName;
     292      if (Problem.Visualizer != null)
     293        MainLoop.VisualizationParameter.ActualName = Problem.Visualizer.VisualizationParameter.ActualName;
    288294    }
    289295    private void ParameterizeStochasticOperator(IOperator op) {
     
    291297        ((IStochasticOperator)op).RandomParameter.ActualName = RandomCreator.RandomParameter.ActualName;
    292298    }
    293     private void ParameterizeMoveEvaluator() {
     299    private void ParameterizeMoveEvaluators() {
    294300      foreach (ISingleObjectiveMoveEvaluator op in Problem.Operators.OfType<ISingleObjectiveMoveEvaluator>()) {
    295301        op.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName;
    296302      }
    297303    }
    298     private void ParameterizeMoveMaker() {
     304    private void ParameterizeMoveMakers() {
    299305      foreach (IMoveMaker op in Problem.Operators.OfType<IMoveMaker>()) {
    300306        op.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName;
  • trunk/sources/HeuristicLab.Algorithms.LocalSearch/3.3/LocalSearchMainLoop.cs

    r3143 r3145  
    3535  [Item("LocalSearchMainLoop", "An operator which represents the main loop of a best improvement local search (if only a single move is generated in each iteration it is a first improvement local search).")]
    3636  [StorableClass]
    37   public class LocalSearchMainLoop : AlgorithmOperator {
     37  public sealed class LocalSearchMainLoop : AlgorithmOperator {
    3838    #region Parameter properties
    3939    public ValueLookupParameter<IRandom> RandomParameter {
     
    8282    #endregion
    8383
     84    [StorableConstructor]
     85    private LocalSearchMainLoop(bool deserializing) : base() { }
    8486    public LocalSearchMainLoop()
    8587      : base() {
     88      Initialize();
     89    }
     90
     91    private void Initialize() {
    8692      #region Create parameters
    8793      Parameters.Add(new ValueLookupParameter<IRandom>("Random", "A pseudo random number generator."));
Note: See TracChangeset for help on using the changeset viewer.