Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/04/15 10:18:39 (10 years ago)
Author:
abeham
Message:

#1985:

  • Restored compilable state of TimeLimitRunOptimizer branch
  • Updated changes from trunk
Location:
branches/TimeLimitRunOptimizer
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/TimeLimitRunOptimizer

    • Property svn:ignore set to
      *.suo
  • branches/TimeLimitRunOptimizer/HeuristicLab.Optimization

    • Property svn:mergeinfo set to (toggle deleted branches)
      /branches/HLScript/HeuristicLab.Optimizationmergedeligible
      /stable/HeuristicLab.Optimizationmergedeligible
      /trunk/sources/HeuristicLab.Optimizationmergedeligible
      /branches/1721-RandomForestPersistence/HeuristicLab.Optimization10321-10322
      /branches/Algorithms.GradientDescent/HeuristicLab.Optimization5516-5520
      /branches/Benchmarking/sources/HeuristicLab.Optimization6917-7005
      /branches/Classification-Extensions/HeuristicLab.Optimization11687-11761
      /branches/CloningRefactoring/HeuristicLab.Optimization4656-4721
      /branches/DataAnalysis Refactoring/HeuristicLab.Optimization5471-5808
      /branches/DataAnalysis SolutionEnsembles/HeuristicLab.Optimization5815-6180
      /branches/DataAnalysis/HeuristicLab.Optimization4458-4459,​4462,​4464
      /branches/DataPreprocessing/HeuristicLab.Optimization10085-11101
      /branches/GP.Grammar.Editor/HeuristicLab.Optimization6284-6795
      /branches/GP.Symbols (TimeLag, Diff, Integral)/HeuristicLab.Optimization5060
      /branches/HeuristicLab.Problems.DataAnalysis.Trading/HeuristicLab.Optimization6123-9799
      /branches/LogResidualEvaluator/HeuristicLab.Optimization10202-10483
      /branches/NET40/sources/HeuristicLab.Optimization5138-5162
      /branches/ParallelEngine/HeuristicLab.Optimization5175-5192
      /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Optimization7568-7810
      /branches/ProgrammableProblem/HeuristicLab.Optimization11573-11959
      /branches/QAPAlgorithms/HeuristicLab.Optimization6350-6627
      /branches/Restructure trunk solution/HeuristicLab.Optimization6828
      /branches/RuntimeOptimizer/HeuristicLab.Optimization8943-9078
      /branches/ScatterSearch (trunk integration)/HeuristicLab.Optimization7787-8333
      /branches/SlaveShutdown/HeuristicLab.Optimization8944-8956
      /branches/SpectralKernelForGaussianProcesses/HeuristicLab.Optimization10204-10479
      /branches/SuccessProgressAnalysis/HeuristicLab.Optimization5370-5682
      /branches/Trunk/HeuristicLab.Optimization6829-6865
      /branches/UnloadJobs/HeuristicLab.Optimization9168-9215
      /branches/VNS/HeuristicLab.Optimization5594-5752
      /branches/histogram/HeuristicLab.Optimization5959-6341
  • branches/TimeLimitRunOptimizer/HeuristicLab.Optimization/3.3/RunCollection.cs

    r8967 r12118  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2222using System;
    2323using System.Collections.Generic;
     24using System.ComponentModel;
    2425using System.Linq;
    2526using HeuristicLab.Collections;
     
    5859      RegisterConstraintsEvents();
    5960      RegisterConstraintEvents(constraints);
     61
     62      foreach (var run in this) {
     63        RegisterRunParametersEvents(run);
     64        RegisterRunResultsEvents(run);
     65      }
    6066
    6167      UpdateFiltering(true);
     
    132138      RegisterConstraintsEvents();
    133139      RegisterConstraintEvents(constraints);
     140
     141      foreach (var run in this) {
     142        RegisterRunParametersEvents(run);
     143        RegisterRunResultsEvents(run);
     144      }
    134145      UpdateFiltering(true);
    135146    }
     
    160171        foreach (KeyValuePair<string, IItem> result in run.Results)
    161172          AddResult(result.Key, result.Value);
     173        run.PropertyChanged += RunOnPropertyChanged;
     174        RegisterRunParametersEvents(run);
     175        RegisterRunResultsEvents(run);
     176      }
     177      foreach (IRun run in oldItems) {
     178        run.PropertyChanged -= RunOnPropertyChanged;
     179        DeregisterRunParametersEvents(run);
     180        DeregisterRunResultsEvents(run);
    162181      }
    163182      columnNameCache = null;
     
    178197        foreach (KeyValuePair<string, IItem> result in run.Results)
    179198          columnsChanged |= AddResult(result.Key, result.Value);
     199        run.PropertyChanged += RunOnPropertyChanged;
     200        RegisterRunParametersEvents(run);
     201        RegisterRunResultsEvents(run);
    180202      }
    181203      if (columnsChanged) columnNameCache = null;
     
    198220        foreach (string resultName in run.Results.Keys)
    199221          columnsChanged |= RemoveResultName(resultName);
     222        run.PropertyChanged -= RunOnPropertyChanged;
     223        DeregisterRunParametersEvents(run);
     224        DeregisterRunResultsEvents(run);
    200225      }
    201226      if (columnsChanged) columnNameCache = null;
     
    205230      OnRowsChanged();
    206231      OnRowNamesChanged();
     232      if (columnsChanged) {
     233        OnColumnsChanged();
     234        OnColumnNamesChanged();
     235      }
     236    }
     237
     238    private void RunOnPropertyChanged(object sender, PropertyChangedEventArgs e) {
     239      if (e.PropertyName == "Parameters") {
     240        RegisterRunParametersEvents((IRun)sender);
     241      } else if (e.PropertyName == "Results") {
     242        RegisterRunResultsEvents((IRun)sender);
     243      }
     244    }
     245
     246    private void RegisterRunParametersEvents(IRun run) {
     247      IObservableDictionary<string, IItem> dict = run.Parameters;
     248      dict.ItemsAdded += RunOnParameterChanged;
     249      dict.ItemsRemoved += RunOnParameterRemoved;
     250      dict.ItemsReplaced += RunOnParameterChanged;
     251      dict.CollectionReset += RunOnParameterChanged;
     252    }
     253
     254    private void RegisterRunResultsEvents(IRun run) {
     255      IObservableDictionary<string, IItem> dict = run.Results;
     256      dict.ItemsAdded += RunOnResultChanged;
     257      dict.ItemsRemoved += RunOnResultRemoved;
     258      dict.ItemsReplaced += RunOnResultChanged;
     259      dict.CollectionReset += RunOnResultChanged;
     260    }
     261
     262    private void DeregisterRunParametersEvents(IRun run) {
     263      IObservableDictionary<string, IItem> dict = run.Parameters;
     264      dict.ItemsAdded -= RunOnParameterChanged;
     265      dict.ItemsRemoved -= RunOnParameterRemoved;
     266      dict.ItemsReplaced -= RunOnParameterChanged;
     267      dict.CollectionReset -= RunOnParameterChanged;
     268    }
     269
     270    private void DeregisterRunResultsEvents(IRun run) {
     271      IObservableDictionary<string, IItem> dict = run.Results;
     272      dict.ItemsAdded -= RunOnResultChanged;
     273      dict.ItemsRemoved -= RunOnResultRemoved;
     274      dict.ItemsReplaced -= RunOnResultChanged;
     275      dict.CollectionReset -= RunOnResultChanged;
     276    }
     277
     278    private void RunOnParameterChanged(object sender, CollectionItemsChangedEventArgs<KeyValuePair<string, IItem>> e) {
     279      bool columnsChanged = false;
     280      foreach (var param in e.Items)
     281        columnsChanged |= AddParameter(param.Key, param.Value);
     282      foreach (var param in e.OldItems)
     283        columnsChanged |= RemoveParameterName(param.Key);
     284      if (columnsChanged) columnNameCache = null;
     285      OnReset();
     286      if (columnsChanged) {
     287        OnColumnsChanged();
     288        OnColumnNamesChanged();
     289      }
     290    }
     291
     292    private void RunOnParameterRemoved(object sender, CollectionItemsChangedEventArgs<KeyValuePair<string, IItem>> e) {
     293      bool columnsChanged = false;
     294      foreach (var param in e.Items)
     295        columnsChanged |= RemoveParameterName(param.Key);
     296      if (columnsChanged) columnNameCache = null;
     297      OnReset();
     298      if (columnsChanged) {
     299        OnColumnsChanged();
     300        OnColumnNamesChanged();
     301      }
     302    }
     303
     304    private void RunOnResultChanged(object sender, CollectionItemsChangedEventArgs<KeyValuePair<string, IItem>> e) {
     305      bool columnsChanged = false;
     306      foreach (var result in e.Items)
     307        columnsChanged |= AddResult(result.Key, result.Value);
     308      foreach (var result in e.OldItems)
     309        columnsChanged |= RemoveResultName(result.Key);
     310      if (columnsChanged) columnNameCache = null;
     311      OnReset();
     312      if (columnsChanged) {
     313        OnColumnsChanged();
     314        OnColumnNamesChanged();
     315      }
     316    }
     317
     318    private void RunOnResultRemoved(object sender, CollectionItemsChangedEventArgs<KeyValuePair<string, IItem>> e) {
     319      bool columnsChanged = false;
     320      foreach (var result in e.Items)
     321        columnsChanged |= RemoveResultName(result.Key);
     322      if (columnsChanged) columnNameCache = null;
     323      OnReset();
    207324      if (columnsChanged) {
    208325        OnColumnsChanged();
     
    382499    }
    383500
    384     protected virtual void RegisterConstraintEvents(IEnumerable<IRunCollectionConstraint> constraints) {
     501    private void RegisterConstraintEvents(IEnumerable<IRunCollectionConstraint> constraints) {
    385502      foreach (IRunCollectionConstraint constraint in constraints) {
    386503        constraint.ActiveChanged += new EventHandler(Constraint_ActiveChanged);
     
    390507      }
    391508    }
    392     protected virtual void DeregisterConstraintEvents(IEnumerable<IRunCollectionConstraint> constraints) {
     509    private void DeregisterConstraintEvents(IEnumerable<IRunCollectionConstraint> constraints) {
    393510      foreach (IRunCollectionConstraint constraint in constraints) {
    394511        constraint.ActiveChanged -= new EventHandler(Constraint_ActiveChanged);
Note: See TracChangeset for help on using the changeset viewer.