Quintiq file version 2.0 
 | 
#parent: #root 
 | 
MethodOverride InitConstraintsForUnitPeriodCapacities ( 
 | 
  CapacityPlanningSuboptimizer_CapacityPlanningAlgorithm program, 
 | 
  Boolean enableminconst, 
 | 
  Real totalmincapacity, 
 | 
  Real totalmaxcapacity, 
 | 
  const RunContextForCapacityPlanning runcontext, 
 | 
  const LibOpt_Scope scope, 
 | 
  const CapacityPlanningSuboptimizer subopt 
 | 
) const 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // defining minimum capacities for unit, Sum of PT Qty + not met >= UP.MinCapacity 
 | 
    // minconstup constraint UoM: Unit 
 | 
    minconstup := program.MinUnitCapacityQtyConstraints().New( this ); 
 | 
    minconstup.Sense( '>=' ); 
 | 
     
 | 
    // RHS UoM: Unit 
 | 
    minconstup.RHSValue( subopt.ScaleConstraintRHS( typeofexpression( minconstup ), totalmincapacity ) ); 
 | 
    // Term UoM: Unit 
 | 
    var := this.GetCapacityNotMetVariable( program );  
 | 
    minconstup.NewTerm( 1.0 * subopt.ScaleConstraintTerm( typeofexpression( var ), typeofexpression( minconstup ) ) 
 | 
                        , var ); 
 | 
    minconstup.Enabled( enableminconst ) 
 | 
     
 | 
    // defining maximum capacities for unit, Sum of PT Qty <= UP.AvailableCapacity 
 | 
    // maxconstup constraint UoM: Unit 
 | 
    maxconstup := program.MaxUnitCapacityQtyConstraints().New( this ); 
 | 
    maxconstup.Sense( '<=' ); 
 | 
    // RHS UoM: Unit 
 | 
    maxconstup.RHSValue( subopt.ScaleConstraintRHS( typeofexpression( maxconstup ), totalmaxcapacity ) ); 
 | 
    maxconstup.Enabled( not this.IsPlannedInfinite() ); 
 | 
     
 | 
    this.InitConstraintsForCapacityUsage( program, minconstup, maxconstup, runcontext, scope, subopt  ); 
 | 
     
 | 
    //-------------------------------------------------------- 
 | 
    //-------------------------------------------------------- 
 | 
    //init constraints for secondary capacity definition 
 | 
    if( this.HasSecondaryCapacityDefinition() ) 
 | 
    { 
 | 
      // defining minimum capacities for unit, Sum of PT Qty + not met >= UP.MinCapacity 
 | 
      // minconstup constraint UoM: Unit 
 | 
      minseconddaryconstup := program.MinUnitSecondaryCapacityQtyConstraints().New( this ); 
 | 
      minseconddaryconstup.Sense( '>=' ); 
 | 
     
 | 
      totalsecondarymincapacity := this.TotalSecondaryMinimumQuantity(); 
 | 
      // RHS UoM: Unit 
 | 
      minseconddaryconstup.RHSValue( subopt.ScaleConstraintRHS( typeofexpression( minseconddaryconstup ), totalsecondarymincapacity ) ); 
 | 
      // Term UoM: Unit 
 | 
     
 | 
      minseconddaryconstup.NewTerm( 1.0 * subopt.ScaleConstraintTerm( typeof( MPUnitSecondaryCapacityNotMetVariable ), typeofexpression( minseconddaryconstup ) ) 
 | 
                          , program.UnitSecondaryCapacityNotMetVariables().Get( this ) ); 
 | 
      minseconddaryconstup.Enabled( this.TotalSecondaryMinimumQuantity() > 0 ) 
 | 
       
 | 
      // defining maximum capacities for unit, Sum of PT Qty <= UP.AvailableCapacity 
 | 
      totalsecondarymaxcapacity := this.TotalSecondaryMaximumQuantity(); 
 | 
      // maxconstup constraint UoM: Unit 
 | 
      maxsecondaryconstup := program.MaxUnitSecondaryCapacityQtyConstraints().New( this ); 
 | 
      maxsecondaryconstup.Sense( '<=' ); 
 | 
      // RHS UoM: Unit 
 | 
      maxsecondaryconstup.RHSValue( subopt.ScaleConstraintRHS( typeofexpression( maxconstup ), totalsecondarymaxcapacity ) ); 
 | 
      maxsecondaryconstup.Enabled( not this.IsPlannedInfinite() ); 
 | 
       
 | 
      this.InitConstraintsForSecondaryCapacityUsage( program, minseconddaryconstup, maxsecondaryconstup, runcontext, scope, subopt );                 
 | 
    } 
 | 
  *] 
 | 
} 
 |