Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method InitConstraintsForOneTimeCost ( 
 | 
  CapacityPlanningSuboptimizer_CapacityPlanningAlgorithm program, 
 | 
  const RunContextForCapacityPlanning runcontext, 
 | 
  const LibOpt_Scope scope 
 | 
) const 
 | 
{ 
 | 
  Description: 'Initialize defining constraints for isused variable if needed' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // constraint to define isused for (operation, period) 
 | 
     
 | 
    if ( runcontext.UseOneTimeCost() )  
 | 
    { 
 | 
      traverse( scope.GetOperationInOptimizerRunConst(), Elements, operation, operation.HasOneTimeCost() ) 
 | 
      { 
 | 
        periods := this.GetPeriodsForOperation( scope, operation ); 
 | 
         
 | 
        traverse( periods, Elements, period ) 
 | 
        { 
 | 
          // add constraint: not isused -> PTQty <= 0  
 | 
          var := program.PTQtyVariables().Get( operation, period ); 
 | 
          isusedvar := program.PTIsUsedVariables().Get( operation, period );  
 | 
           
 | 
          defconstr := program.PTIsUsedDefinitionConstraints().New( operation, period );  
 | 
          defconstr.RHSValue( 0.0 );  
 | 
          defconstr.Sense( '<=' );  
 | 
          defconstr.NewTerm( 1.0, var );  
 | 
           
 | 
          program.NewIfNotThenConstraint( CapacityPlanningSuboptimizer::ConstraintNameIsUsedVarDef( operation, period ), isusedvar, defconstr );   
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  *] 
 | 
  InterfaceProperties { Accessibility: 'Module' } 
 | 
} 
 |