Changeset 15721 for branches/1614_GeneralizedQAP/HeuristicLab.Optimization/3.3/MetaOptimizers/BatchRun.cs
- Timestamp:
- 02/04/18 22:33:26 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/1614_GeneralizedQAP/HeuristicLab.Optimization/3.3/MetaOptimizers/BatchRun.cs
r15605 r15721 68 68 } 69 69 } 70 70 71 71 [Storable] 72 72 private TimeSpan executionTime; 73 73 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; 76 88 77 89 [Storable] … … 162 174 executionState = ExecutionState.Stopped; 163 175 executionTime = TimeSpan.Zero; 176 runsExecutionTime = TimeSpan.Zero; 164 177 repetitions = 10; 165 178 repetitionsCounter = 0; … … 171 184 executionState = ExecutionState.Stopped; 172 185 executionTime = TimeSpan.Zero; 186 runsExecutionTime = TimeSpan.Zero; 173 187 repetitions = 10; 174 188 repetitionsCounter = 0; … … 179 193 executionState = ExecutionState.Stopped; 180 194 executionTime = TimeSpan.Zero; 195 runsExecutionTime = TimeSpan.Zero; 181 196 repetitions = 10; 182 197 repetitionsCounter = 0; … … 194 209 executionState = original.executionState; 195 210 executionTime = original.executionTime; 211 runsExecutionTime = original.runsExecutionTime; 196 212 optimizer = cloner.Clone(original.optimizer); 197 213 repetitions = original.repetitions; … … 218 234 throw new InvalidOperationException(string.Format("Prepare not allowed in execution state \"{0}\".", ExecutionState)); 219 235 if (Optimizer != null) { 220 executionTime = TimeSpan.Zero;236 ExecutionTime = TimeSpan.Zero; 221 237 RepetitionsCounter = 0; 222 238 if (clearRuns) runs.Clear(); … … 282 298 if (handler != null) handler(this, EventArgs.Empty); 283 299 } 284 [Obsolete("Deprecated needs to be removed")]285 300 public event EventHandler ExecutionTimeChanged; 301 private void OnExecutionTimeChanged() { 302 EventHandler handler = ExecutionTimeChanged; 303 if (handler != null) handler(this, EventArgs.Empty); 304 } 286 305 public event EventHandler OptimizerChanged; 287 306 private void OnOptimizerChanged() { … … 335 354 private void RegisterOptimizerEvents() { 336 355 optimizer.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(Optimizer_ExceptionOccurred); 356 optimizer.ExecutionTimeChanged += new EventHandler(Optimizer_ExecutionTimeChanged); 337 357 optimizer.Paused += new EventHandler(Optimizer_Paused); 338 358 optimizer.Prepared += new EventHandler(Optimizer_Prepared); … … 345 365 private void DeregisterOptimizerEvents() { 346 366 optimizer.ExceptionOccurred -= new EventHandler<EventArgs<Exception>>(Optimizer_ExceptionOccurred); 367 optimizer.ExecutionTimeChanged -= new EventHandler(Optimizer_ExecutionTimeChanged); 347 368 optimizer.Paused -= new EventHandler(Optimizer_Paused); 348 369 optimizer.Prepared -= new EventHandler(Optimizer_Prepared); … … 356 377 OnExceptionOccurred(e.Value); 357 378 } 379 private void Optimizer_ExecutionTimeChanged(object sender, EventArgs e) { 380 OnExecutionTimeChanged(); 381 } 358 382 private void Optimizer_Paused(object sender, EventArgs e) { 359 383 if (ExecutionState == ExecutionState.Started) { … … 363 387 private void Optimizer_Prepared(object sender, EventArgs e) { 364 388 if (batchRunAction == BatchRunAction.Prepare || ExecutionState == ExecutionState.Stopped) { 389 ExecutionTime = TimeSpan.Zero; 390 runsExecutionTime = TimeSpan.Zero; 365 391 RepetitionsCounter = 0; 366 392 OnPrepared(); … … 373 399 private void Optimizer_Stopped(object sender, EventArgs e) { 374 400 RepetitionsCounter++; 401 ExecutionTime += runsExecutionTime; 402 runsExecutionTime = TimeSpan.Zero; 375 403 376 404 if (batchRunAction == BatchRunAction.Stop) OnStopped(); … … 407 435 private void Runs_CollectionReset(object sender, CollectionItemsChangedEventArgs<IRun> e) { 408 436 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 } 411 443 } 412 444 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 } 414 456 } 415 457 private void Runs_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IRun> e) { 416 458 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;428 459 } 429 460 #endregion
Note: See TracChangeset
for help on using the changeset viewer.