Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method RunCapacityPlanningAlgorithm ( 
 | 
  AlgorithmRun algorithmrun, 
 | 
  ProductInStockingPointInPeriodPlannings pispipssmartplan, 
 | 
  Period_MP periodstart, 
 | 
  Period_MP periodend, 
 | 
  Units units, 
 | 
  Process_MP process, 
 | 
  OptimizerPuzzle optimizerpuzzle 
 | 
) as stream[JSON] 
 | 
{ 
 | 
  Description: 'Executes capacity planning for all demands within the planning horizon of MacroPlanner' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Select the periods that are in the optimizer horizon 
 | 
    periods := this.Optimization().GetOptimizerPeriods( periodstart, periodend );   
 | 
    verify( periods.Size() > 0, Translations::Algorithm_MP_NoPeriodsAvailableError() );  
 | 
    verify( not isnull( optimizerpuzzle ), Translations::Algorithm_MP_NoOptimizerPuzzleAvailableError() );  
 | 
     
 | 
    // 
 | 
    // ********************** Calling optimizer ********************** 
 | 
    //  
 | 
    opt := this.Optimization();  
 | 
    s := null( stream[JSON] );  
 | 
     
 | 
    if ( algorithmrun.IsSmartPlan() )  
 | 
    { 
 | 
      osp := opt.GetOptimizerSmartPlan();  
 | 
      s := osp.Execute( algorithmrun,  
 | 
                        pispipssmartplan,  
 | 
                        opt.GetLaneLegsForOptimization(),  
 | 
                        periods,  
 | 
                        units,  
 | 
                        algorithmrun.IsUsingSelectedUnits(),  
 | 
                        process,  
 | 
                        this.GlobalParameters_MP().NumberOfPeriodsSmartPlan(),  
 | 
                        algorithmrun.IsUpstreamSmartPlan(),  
 | 
                        algorithmrun.IsMiddleOutSmartPlan(),  
 | 
                        optimizerpuzzle );  
 | 
    } 
 | 
    else if ( this.StrategyMacroPlan().UseMetaOptimizer() )  
 | 
    { 
 | 
      opmeta := opt.GetOptimizerMeta();  
 | 
      s := opmeta.Execute( algorithmrun, periods, units, optimizerpuzzle );  
 | 
    } 
 | 
    else 
 | 
    { 
 | 
      ofrun := opt.GetOptimizerFullRun();  
 | 
      s := ofrun.Execute( algorithmrun, units, periods, optimizerpuzzle );  
 | 
    } 
 | 
    return s; 
 | 
  *] 
 | 
  InterfaceProperties { Accessibility: 'Module' } 
 | 
} 
 |