Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method MetaOptimizerCreateSupportDataShiftOptimizer ( 
 | 
  MacroPlan macroplan, 
 | 
  OptimizerPuzzle puzzle, 
 | 
  RunContextForCapacityPlanning runcontext 
 | 
) 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    if ( runcontext.IsMetaIteration() )  
 | 
    { 
 | 
      nrshiftpatterns := macroplan.ShiftPattern( relsize );  
 | 
      traverse( puzzle.GetIncludedUnits(), Elements.UnitPeriod.astype( UnitPeriodTime ), up )  
 | 
      { 
 | 
        rv := RealVector::Construct( nrshiftpatterns, 0.0 ); // pre computed capacities for shift assignment. To avoid recomputing each time in meta optimizer 
 | 
         
 | 
        traverse( up, Unit.UnitShiftPatternAllowed.ShiftPattern, sp )  
 | 
        { 
 | 
          rv.Set( sp.Index(), up.GetTotalAvailableCapacity( sp ) ); 
 | 
        } 
 | 
        up.MetaOptimizerTotalAvailableCapacityVector( rv.AsBinaryValue() );  
 | 
      } 
 | 
    } 
 | 
  *] 
 | 
  InterfaceProperties { Accessibility: 'Module' } 
 | 
} 
 |