Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method ActivateSolverSettingsHierarchical ( 
 | 
  MathematicalProgram program, 
 | 
  const StrategyLevelMacroPlan runlevel, 
 | 
  MPGoal goal, 
 | 
  const RunContextForCapacityPlanning runcontext 
 | 
) const 
 | 
{ 
 | 
  Description: 'Activates the solver settings of the current algorithm run' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Activate the solver settings 
 | 
     
 | 
    maxthreadsglobal := ifexpr( this.MacroPlan().IsSizingParameterOn(), this.MacroPlan().ResourceManager_MP().MaxThreadForOptimization(), Number::MaxNumber() );  
 | 
    traverse( runlevel, SolverSettingGroupMacroPlan.SolverSettingMacroPlan, solversettingrun )  
 | 
    { 
 | 
       
 | 
      parametervalue := solversettingrun.ParameterValue(); 
 | 
      if ( solversettingrun.IsNumberParameter() )  
 | 
      { 
 | 
        if ( solversettingrun.ParameterNumber() = 1067 and runcontext.IsForBenchmarking() ) // threads  
 | 
        { 
 | 
          parametervalue := minvalue( parametervalue, runcontext.MaxNumberOfThreadsForBenchmarking() );    
 | 
        } 
 | 
         
 | 
        parametervalue := minvalue( parametervalue, maxthreadsglobal ); // limit by sizing parameter setting 
 | 
         
 | 
        goal.ParameterSet().Set(  solversettingrun.ParameterNumber(), [Number]parametervalue );  
 | 
      } 
 | 
      else 
 | 
      { 
 | 
        goal.ParameterSet().Set(  solversettingrun.ParameterNumber(), parametervalue );  
 | 
      } 
 | 
      debuginfo(  this.MacroPlan().DatasetName(),  
 | 
                  runlevel.Level(),  
 | 
                  '->',  
 | 
                  solversettingrun.SolverSettingGroupMacroPlan().Name(),  
 | 
                  ':', solversettingrun.ParameterNumber(),  
 | 
                  '-', parametervalue );  
 | 
    } 
 | 
  *] 
 | 
  InterfaceProperties { Accessibility: 'Module' } 
 | 
} 
 |