| 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' } | 
| } |