Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method CapacityPlanningAlgorithmInitVariables ( 
 | 
  CapacityPlanningSuboptimizer_CapacityPlanningAlgorithm program, 
 | 
  const RunContextForCapacityPlanning runcontext, 
 | 
  const constcontent PeriodTaskOperations userperiodtasks, 
 | 
  const constcontent ProductInTrips userproductintrips, 
 | 
  const constcontent ProductInStockingPointInPeriodPlannings pispipssmartplan, 
 | 
  const LibOpt_Scope scope, 
 | 
  const constcontent ProductInStockingPointInPeriodPlannings pispipsinrun, 
 | 
  constcontent ProductInStockingPointInPeriodPlanningLeafs leafpispipsinrun, 
 | 
  const constcontent ProductInStockingPoint_MPs pispsinrun, 
 | 
  const constcontent ProductInTrips pitinrun 
 | 
) const 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    runcontext := this.GetRunContextConst();  
 | 
    if( not runcontext.IsInventoryOptimizationRun() ) 
 | 
    { 
 | 
      progress( 'Init variables', DateTime::ActualTime()); 
 | 
      info( 'Init variables', DateTime::ActualTime()); 
 | 
    } 
 | 
     
 | 
    this.RegisterTypes( program ); 
 | 
     
 | 
    computenvar := this.MacroPlan().Optimization().DebugMode();  
 | 
    nvars := ifexpr( computenvar, counter( program, Variables, v, true, true ), 0 );  
 | 
    oldnvars := nvars;  
 | 
    if ( computenvar )  
 | 
    { 
 | 
      debuginfo(  'start vars:', nvars );  
 | 
    } 
 | 
    // Create variables for KPI total value 
 | 
    this.InitVariablesForKPITotalValue( program, runcontext, scope ); 
 | 
    if ( computenvar )  
 | 
    { 
 | 
      nvars := counter( program, Variables, v, true, true );  
 | 
      debuginfo( ' this.InitVariablesForKPITotalValue( program, runcontext, scope );', nvars-oldnvars );   
 | 
      oldnvars := nvars;  
 | 
    } 
 | 
    // create variables for supply 
 | 
    this.InitVariablesForOperationPeriodTask( program, userperiodtasks, scope ); 
 | 
    if ( computenvar ) 
 | 
    { 
 | 
      nvars := counter( program, Variables, v, true, true );  
 | 
      debuginfo( ' periodtask related vars:', nvars-oldnvars );   
 | 
      oldnvars := nvars;  
 | 
    } 
 | 
     
 | 
    this.InitVariablesForTrip( program, userproductintrips, scope, pitinrun ); 
 | 
    if ( computenvar )  
 | 
    { 
 | 
      nvars := counter( program, Variables, v, true, true );  
 | 
      debuginfo( ' trip related vars;', nvars-oldnvars);   
 | 
      oldnvars := nvars;  
 | 
    } 
 | 
     
 | 
    // create variables for sales demands 
 | 
    this.InitVariablesForSalesDemands( program, scope ) 
 | 
    if ( computenvar )  
 | 
    { 
 | 
      nvars := counter( program, Variables, v, true, true );  
 | 
      debuginfo( ' sales demand vars:', nvars-oldnvars );   
 | 
      oldnvars := nvars;  
 | 
    } 
 | 
     
 | 
    // create variable for pispip 
 | 
    this.InitVariablesForPISPIP( program, pispipssmartplan, scope, pispipsinrun, leafpispipsinrun, pispsinrun ); 
 | 
    if ( computenvar )  
 | 
    { 
 | 
      nvars := counter( program, Variables, v, true, true );  
 | 
      debuginfo( ' pispips vars:', nvars-oldnvars);   
 | 
      oldnvars := nvars;  
 | 
    } 
 | 
     
 | 
    // create variable for stocking point inventory 
 | 
    this.InitVariablesForStockingPointInventory( program, runcontext, scope ); 
 | 
    if ( computenvar )  
 | 
    { 
 | 
      nvars := counter( program, Variables, v, true, true );  
 | 
      debuginfo( ' sp vars:', nvars-oldnvars );   
 | 
      oldnvars := nvars;  
 | 
    } 
 | 
     
 | 
    // create variable for unit period quantity 
 | 
    this.InitVariablesForUnitPeriods( program, scope ); 
 | 
    if ( computenvar )  
 | 
    { 
 | 
      nvars := counter( program, Variables, v, true, true );  
 | 
      debuginfo( ' unit period vars:', nvars-oldnvars );   
 | 
      oldnvars := nvars;  
 | 
    } 
 | 
     
 | 
    // create variable for supply specification 
 | 
    this.InitVariablesForSupplySpecification( program, scope ); 
 | 
    if ( computenvar )  
 | 
    { 
 | 
      nvars := counter( program, Variables, v, true, true );  
 | 
      debuginfo( ' supply spec:', nvars-oldnvars );   
 | 
      oldnvars := nvars;  
 | 
    }  
 | 
     
 | 
    //Generate variables related to campaigns if campaignoptimization is enabled 
 | 
    this.InitVariablesForCampaignCombiSelection( program, runcontext, scope );  
 | 
    if ( computenvar )  
 | 
    { 
 | 
      nvars := counter( program, Variables, v, true, true );  
 | 
      debuginfo( ' campaign related vars:', nvars-oldnvars );   
 | 
      oldnvars := nvars;  
 | 
    } 
 | 
     
 | 
    // create variables for shift patterns 
 | 
    this.InitVariablesForShiftPatterns( program, runcontext, scope ); 
 | 
    if ( computenvar )  
 | 
    { 
 | 
      nvars := counter( program, Variables, v, true, true );  
 | 
      debuginfo( ' shift pattern vars:', nvars-oldnvars );   
 | 
      oldnvars := nvars;  
 | 
    }  
 | 
     
 | 
    //Also add the total number of vars when in debugmode 
 | 
    if ( computenvar )  
 | 
    { 
 | 
      debuginfo( 'Total variables:', nvars );  
 | 
    } 
 | 
     
 | 
    if ( this.IsPriorLevelsFixed() )   
 | 
    { 
 | 
      this.FixDecisionVariablesToCurrentPlanBasedOnLevel( program, runcontext, scope );  
 | 
    } 
 | 
     
 | 
    // In the inventory optimization, we need to obtain the KPIs of each simulation at the end of the simulation 
 | 
    // Therefore, we rerun the optimizer over the full horizon with the decisions frozen 
 | 
    if( runcontext.IsFrozenRun() ) 
 | 
     
 | 
    { 
 | 
      debuginfo(  'Freezing decision variables. CurrentLevel = ', this.CurrentSubOptimizerLevel().LevelNumber() );  
 | 
      unfreeze := false;  
 | 
      this.Debug_FreezeDecisionVariables( program, runcontext.FirstPeriod_MP(), runcontext.LastPeriod_MP(), scope, unfreeze );  
 | 
    } 
 | 
  *] 
 | 
  InterfaceProperties { Accessibility: 'Module' } 
 | 
} 
 |