Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/04/18 22:33:26 (6 years ago)
Author:
abeham
Message:

#1614:

  • reverted r15603 by reverse merging
  • added expert system plugins from #2457
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/1614_GeneralizedQAP/HeuristicLab.Optimization/3.3/MetaOptimizers/BatchRun.cs

    r15605 r15721  
    6868      }
    6969    }
    70    
     70
    7171    [Storable]
    7272    private TimeSpan executionTime;
    7373    public TimeSpan ExecutionTime {
    74       get { return executionTime + (Optimizer?.ExecutionTime ?? TimeSpan.Zero); }
    75     }
     74      get {
     75        if ((Optimizer != null) && (Optimizer.ExecutionState != ExecutionState.Stopped))
     76          return executionTime + Optimizer.ExecutionTime;
     77        else
     78          return executionTime;
     79      }
     80      private set {
     81        executionTime = value;
     82        OnExecutionTimeChanged();
     83      }
     84    }
     85
     86    [Storable]
     87    private TimeSpan runsExecutionTime;
    7688
    7789    [Storable]
     
    162174      executionState = ExecutionState.Stopped;
    163175      executionTime = TimeSpan.Zero;
     176      runsExecutionTime = TimeSpan.Zero;
    164177      repetitions = 10;
    165178      repetitionsCounter = 0;
     
    171184      executionState = ExecutionState.Stopped;
    172185      executionTime = TimeSpan.Zero;
     186      runsExecutionTime = TimeSpan.Zero;
    173187      repetitions = 10;
    174188      repetitionsCounter = 0;
     
    179193      executionState = ExecutionState.Stopped;
    180194      executionTime = TimeSpan.Zero;
     195      runsExecutionTime = TimeSpan.Zero;
    181196      repetitions = 10;
    182197      repetitionsCounter = 0;
     
    194209      executionState = original.executionState;
    195210      executionTime = original.executionTime;
     211      runsExecutionTime = original.runsExecutionTime;
    196212      optimizer = cloner.Clone(original.optimizer);
    197213      repetitions = original.repetitions;
     
    218234        throw new InvalidOperationException(string.Format("Prepare not allowed in execution state \"{0}\".", ExecutionState));
    219235      if (Optimizer != null) {
    220         executionTime = TimeSpan.Zero;
     236        ExecutionTime = TimeSpan.Zero;
    221237        RepetitionsCounter = 0;
    222238        if (clearRuns) runs.Clear();
     
    282298      if (handler != null) handler(this, EventArgs.Empty);
    283299    }
    284     [Obsolete("Deprecated needs to be removed")]
    285300    public event EventHandler ExecutionTimeChanged;
     301    private void OnExecutionTimeChanged() {
     302      EventHandler handler = ExecutionTimeChanged;
     303      if (handler != null) handler(this, EventArgs.Empty);
     304    }
    286305    public event EventHandler OptimizerChanged;
    287306    private void OnOptimizerChanged() {
     
    335354    private void RegisterOptimizerEvents() {
    336355      optimizer.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(Optimizer_ExceptionOccurred);
     356      optimizer.ExecutionTimeChanged += new EventHandler(Optimizer_ExecutionTimeChanged);
    337357      optimizer.Paused += new EventHandler(Optimizer_Paused);
    338358      optimizer.Prepared += new EventHandler(Optimizer_Prepared);
     
    345365    private void DeregisterOptimizerEvents() {
    346366      optimizer.ExceptionOccurred -= new EventHandler<EventArgs<Exception>>(Optimizer_ExceptionOccurred);
     367      optimizer.ExecutionTimeChanged -= new EventHandler(Optimizer_ExecutionTimeChanged);
    347368      optimizer.Paused -= new EventHandler(Optimizer_Paused);
    348369      optimizer.Prepared -= new EventHandler(Optimizer_Prepared);
     
    356377      OnExceptionOccurred(e.Value);
    357378    }
     379    private void Optimizer_ExecutionTimeChanged(object sender, EventArgs e) {
     380      OnExecutionTimeChanged();
     381    }
    358382    private void Optimizer_Paused(object sender, EventArgs e) {
    359383      if (ExecutionState == ExecutionState.Started) {
     
    363387    private void Optimizer_Prepared(object sender, EventArgs e) {
    364388      if (batchRunAction == BatchRunAction.Prepare || ExecutionState == ExecutionState.Stopped) {
     389        ExecutionTime = TimeSpan.Zero;
     390        runsExecutionTime = TimeSpan.Zero;
    365391        RepetitionsCounter = 0;
    366392        OnPrepared();
     
    373399    private void Optimizer_Stopped(object sender, EventArgs e) {
    374400      RepetitionsCounter++;
     401      ExecutionTime += runsExecutionTime;
     402      runsExecutionTime = TimeSpan.Zero;
    375403
    376404      if (batchRunAction == BatchRunAction.Stop) OnStopped();
     
    407435    private void Runs_CollectionReset(object sender, CollectionItemsChangedEventArgs<IRun> e) {
    408436      if (Optimizer != null) Optimizer.Runs.RemoveRange(e.OldItems);
    409       executionTime += SumExecutionTimes(e.OldItems);
    410       executionTime += SumExecutionTimes(e.Items);
     437      foreach (IRun run in e.Items) {
     438        IItem item;
     439        run.Results.TryGetValue("Execution Time", out item);
     440        TimeSpanValue executionTime = item as TimeSpanValue;
     441        if (executionTime != null) ExecutionTime += executionTime.Value;
     442      }
    411443    }
    412444    private void Runs_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IRun> e) {
    413       executionTime += SumExecutionTimes(e.Items);
     445      foreach (IRun run in e.Items) {
     446        IItem item;
     447        run.Results.TryGetValue("Execution Time", out item);
     448        TimeSpanValue executionTime = item as TimeSpanValue;
     449        if (executionTime != null) {
     450          if (Optimizer.ExecutionState == ExecutionState.Started)
     451            runsExecutionTime += executionTime.Value;
     452          else
     453            ExecutionTime += executionTime.Value;
     454        }
     455      }
    414456    }
    415457    private void Runs_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IRun> e) {
    416458      if (Optimizer != null) Optimizer.Runs.RemoveRange(e.Items);
    417       executionTime -= SumExecutionTimes(e.Items);
    418     }
    419     private TimeSpan SumExecutionTimes(IEnumerable<IRun> runs) {
    420       var sum = TimeSpan.Zero;
    421       foreach (IRun run in runs) {
    422         IItem item;
    423         run.Results.TryGetValue("Execution Time", out item);
    424         TimeSpanValue exTime = item as TimeSpanValue;
    425         if (exTime != null) sum += exTime.Value;
    426       }
    427       return sum;
    428459    }
    429460    #endregion
Note: See TracChangeset for help on using the changeset viewer.