Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method RunAutoScaling ( 
 | 
  MathematicalProgram program, 
 | 
  LibOpt_Task task, 
 | 
  Boolean ismeta 
 | 
) 
 | 
{ 
 | 
  Description: 'Updates the min/max optimal variable values and runs the scaling algorithm' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Update the optimal variable value statistics for the automatic scaling 
 | 
    debuginfo( 'Running auto scaling algorithm' );  
 | 
    macroplan := this.Optimization().astype( Optimization ).MacroPlan();  
 | 
    algorithmrun := macroplan.GetLastAlgorithmRun();  
 | 
     
 | 
    algscaling := this.Optimization().astype( Optimization ).AlgorithmScaling();  
 | 
    if ( program.HasSolution() )  
 | 
    { 
 | 
      this.UpdateOptimalVariableValues( program ); 
 | 
    } 
 | 
     
 | 
    // Run the automatic scaling optimizer 
 | 
    // We do not want to include the coefficients for which both scaling types are the same as we cannot influence them 
 | 
    coefficientscaling := selectset( algorithmrun, ScalingType_Lib.AsConstraintScalingType, coeffscaling, 
 | 
                                     not coeffscaling.HasSameScalingTypes() ); 
 | 
    algscaling.MMPAutomaticScaling( coefficientscaling, task, ismeta, this.FocusLevel() ); 
 | 
  *] 
 | 
  InterfaceProperties { Accessibility: 'Module' } 
 | 
} 
 |