Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method InitForScaling ( 
 | 
  CapacityPlanningSuboptimizer_CapacityPlanningAlgorithm program 
 | 
) 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Update the constraint statistics for automatic scaling 
 | 
    debuginfo(  '>> Init for scaling. ' ); 
 | 
     
 | 
    //moving all updates on variables into the handle feasible, so methods can be read only. Originally we call with the unscaled(non cplex value) then divide to get cplex bound 
 | 
    //so now we start with the actual cplex bound in the call so no need to scale by dividing. Only difference would be squashing tiny values  
 | 
    traverse(  program, Variables, var, AlgorithmScaling::IsVariableForScaling( var ) )  
 | 
    {  
 | 
      bound := var.LowerBound();  
 | 
      if ( bound.IsFinite() ) 
 | 
      { 
 | 
        this.UpdateMinMaxBound( bound, var ); 
 | 
      } 
 | 
      bound := var.UpperBound();  
 | 
      if ( bound.IsFinite() )  
 | 
      { 
 | 
        this.UpdateMinMaxBound( bound, var );  
 | 
      } 
 | 
    }  
 | 
    this.Optimization().astype( Optimization ).AlgorithmScaling().UpdateConstraintStatistics( program ); 
 | 
    debuginfo(  '<< Done init' ); 
 | 
  *] 
 | 
  InterfaceProperties { Accessibility: 'Module' } 
 | 
} 
 |