Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Function CalcIsActiveTuningLevel 
 | 
{ 
 | 
  Description: 
 | 
  [* 
 | 
    This level will be actively tuned if: 
 | 
    + If the oldest tuning run of any of the SSGInSL related to this strategy level is older than the oldest tuning run on any other level 
 | 
    + The oldest tuning run is equally old and the default duration of this level is longer than on the other levels with the oldest tuning runs 
 | 
  *] 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Martijn Apr-7-2016 (created) 
 | 
     
 | 
    value := false; 
 | 
     
 | 
    if( this.SolverSettingGroup( relsize ) > 0     // If there are SSGInSL for this strategy level 
 | 
        and this.Strategy().HasTestedBestSSG() )   // And the combination of best settings has already been tested 
 | 
    { 
 | 
      // Oldest tuning run of any of the settings on this level 
 | 
      oldesttuningrun := guard( min( this, SSGInStrategyLevel, ssginsl, ssginsl.DateLastTuningRun() ), 
 | 
                                DateTime::MaxDateTime() ); 
 | 
     
 | 
      // Oldest tuning run on any of the other levnmels of this strategy 
 | 
      oldesttuningrunotherlevels := guard( min( this, Strategy.StrategyLevel.SSGInStrategyLevel, ssginsl, 
 | 
                                                     ssginsl.Level() <> this.Level()                                                        // Other level 
 | 
                                                     and exists( ssginsl, StrategyLevel.KPIWeight, kpiweight, kpiweight.Weight() > 0.0 ),   // That is active in the strategy 
 | 
                                                     ssginsl.DateLastTuningRun() ), 
 | 
                                                DateTime::MaxDateTime() ); 
 | 
     
 | 
     
 | 
      // If the oldest tuning run of this strategy level is older than the oldest tuning run of any other strategy this is the active tuning level 
 | 
      if( oldesttuningrun < oldesttuningrunotherlevels ) 
 | 
      { 
 | 
        value := true; 
 | 
      } 
 | 
      // Else, if the oldest tuning run of this strategy level is as old as the oldest tuning run of any other strategy 
 | 
      else if( oldesttuningrun = oldesttuningrunotherlevels ) 
 | 
      { 
 | 
      // Last duration of the currently default settings on this level 
 | 
      durationdefaultrun := guard( select( this, SSGInStrategyLevel, ssginsl, 
 | 
                                           ssginsl.SolverSettingGroupName() = this.SolverSettingGroupName() ).LastDuration(), 
 | 
                                   Duration::Zero() ); 
 | 
     
 | 
      // Select the levels with the oldest tuning runs 
 | 
      // This will initially include all levels since their DateLastTuningRun is initially set to MinDate time. 
 | 
      // After all settings have been tried on all levels this will only include a single level 
 | 
      oldesttuninglevels := selectset( this, Strategy.StrategyLevel, strategylevel, 
 | 
                                       strategylevel.Level() <> this.Level()                                                                                  // Other level 
 | 
                                       and min( strategylevel, SSGInStrategyLevel, ssginsl, ssginsl.DateLastTuningRun() ) = oldesttuningrunotherlevels   // Has a SSGinSL whose LastTuning run is as old as the oldest run 
 | 
                                       and exists( strategylevel, KPIWeight, kpiweight, 
 | 
                                                   kpiweight.Weight() > 0.0 and kpiweight.Level() > 0.0 ) );                                                  // The strategy level must be an active level 
 | 
     
 | 
     
 | 
      // Maximum Last duration of the default setting on any of the levels that have the oldest tuning run 
 | 
      maxdefaultrunotherlevels  := guard( max( oldesttuninglevels, Elements.SSGInStrategyLevel, ssginsl, 
 | 
                                               ssginsl.SolverSettingGroupName() = ssginsl.StrategyLevel().SolverSettingGroupName(), 
 | 
                                               ssginsl.LastDuration() ), 
 | 
                                          Duration::MinDuration() ); 
 | 
     
 | 
      // Maximum Last duration of the default setting on any of the previous levels that have the oldest tuning run 
 | 
      maxdefaultrunpreviouslevels := guard( max( oldesttuninglevels, Elements.SSGInStrategyLevel, ssginsl, 
 | 
                                                 ssginsl.SolverSettingGroupName() = ssginsl.StrategyLevel().SolverSettingGroupName() 
 | 
                                                 and ssginsl.Level() <= this.Level(), 
 | 
                                                 ssginsl.LastDuration() ), 
 | 
                                            Duration::MinDuration() ); 
 | 
     
 | 
      // If the duration with the default settings on this level is longer than on any other level with an equally long tuning run 
 | 
      // (or as long as any later level with an equally old tuning run), then this is the active tuning level 
 | 
      if( durationdefaultrun >= maxdefaultrunotherlevels 
 | 
          and durationdefaultrun > maxdefaultrunpreviouslevels ) 
 | 
        { 
 | 
          value := true 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
     
 | 
    this.IsActiveTuningLevel( value ); 
 | 
  *] 
 | 
} 
 |