| 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 );                 | 
|     } | 
|   *] | 
| } |