haorenhui
2023-10-30 6d6cc10d9e8e242661da7fd655dec155a09d676c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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' }
}