| Quintiq file version 2.0 | 
| #parent: #root | 
| Method InitVariablesForOperationPeriodTask_AddDemandVar ( | 
|   CapacityPlanningSuboptimizer_CapacityPlanningAlgorithm program, | 
|   const RunContextForCapacityPlanning runcontext, | 
|   const LibOpt_Scope scope, | 
|   const OperationInput input, | 
|   const Period_MP period | 
| ) const | 
| { | 
|   Description: 'Initialize all variables related to period task operation, including lot sizes, campaign, etc' | 
|   TextBody: | 
|   [* | 
|     // OperationDemandQty variable UoM: Input PISP | 
|      | 
|     program.OperationDemandQtyVariables().New( input, period );     // Total fulfilled demand quantity for operation input on that period | 
|      | 
|     // Input lot size | 
|     if( ( runcontext.UseLotSize() or runcontext.UseLotCost() ) | 
|         and input.ProductInStockingPoint_MP().HasInputLotSize() | 
|         and period.IsWithinLotSizeHorizon() ) | 
|     { | 
|       // OperationInputNrOfLots variable UoM: Number | 
|       operationinputnroflotsvar := program.OperationInputNrOfLotsVariables().New( input, period ); | 
|       this.SetStartSolutionOperationInputNrOfLotsVar( operationinputnroflotsvar, input, period );  | 
|        | 
|       // If this is a sliding windows run and the period is not in the sliding window, | 
|       // then relax the integer variable. | 
|       if( runcontext.IsSlidingWindowsRun() | 
|           and not period.GetIsInSlidingWindow( scope ) ) | 
|       { | 
|         operationinputnroflotsvar.VariableType( 'Continuous' ); | 
|       } | 
|            | 
|       // OperationInputLotSizeUnder variable UoM: Unit | 
|       // Additional quantity required to reach a multiple of the input lot size | 
|       program.OperationInputLotSizeUnderVariables().New( input, period ); | 
|       program.OperationInputLotSizeOverVariables().New( input, period );    | 
|     } | 
|   *] | 
|   InterfaceProperties { Accessibility: 'Module' } | 
| } |