| Quintiq file version 2.0 | 
| #parent: #root | 
| MethodOverride AddTermsForCapacityUsage ( | 
|   CapacityPlanningSuboptimizer_CapacityPlanningAlgorithm program, | 
|   MPConstraint minconst, | 
|   MPConstraint maxconst, | 
|   const LibOpt_Scope scope, | 
|   const CapacityPlanningSuboptimizer subopt, | 
|   const UnitPeriod unitperiodforconstraint, | 
|   Real scalefactor_periodtaskqty_minconst, | 
|   Real scalefactor_periodtaskqty_maxconst, | 
|   Real scalefactor_tripnewsupply_minconst, | 
|   Real scalefactor_tripnewsupply_maxconst, | 
|   output Real bound | 
| ) const | 
| { | 
|   TextBody: | 
|   [* | 
|     traverse( this, PeriodTask_MP.astype( PeriodTaskLaneLeg ), ptll, | 
|               scope.Contains( ptll.Trip().TripInOptimizerRun() ) )     // Only if the trip is part of this optimizer run | 
|     { | 
|       traverse( ptll, Trip.ProductInTrip, productintrip, | 
|                 scope.Contains( productintrip.ProductInTripInOptimizerRun() ) ) // Only if the productintrip is part of this optimizer run | 
|       { | 
|         uomconversion := productintrip.UnitConversionFactor(); | 
|         factor := ptll.Process_MP().GetCapacityUsagePerQuantity( unitperiodforconstraint ); | 
|        | 
|         var := program.TripNewSupplyVariables().Get( productintrip ); | 
|      | 
|         // Term:    uomconversion   *      factor          * TripNewSupply variable | 
|         // UoM: [Output PISP to Unit] * [Time / Unit] *      [Output PISP]     | 
|         maxconst.NewTerm( uomconversion * factor * scalefactor_tripnewsupply_maxconst, var ); | 
|         minconst.NewTerm( uomconversion * factor * scalefactor_tripnewsupply_minconst, var ); | 
|      | 
|         bound := bound + factor * var.LowerBound(); | 
|       } | 
|     } | 
|      | 
|     traverse( this, ChildOfUnitDimension, childunitperiod ) | 
|     { | 
|       childunitperiod.AddTermsForCapacityUsage( program, | 
|                                                 minconst, | 
|                                                 maxconst, | 
|                                                 scope, | 
|                                                 subopt, | 
|                                                 unitperiodforconstraint, | 
|                                                 scalefactor_periodtaskqty_minconst, | 
|                                                 scalefactor_periodtaskqty_maxconst, | 
|                                                 scalefactor_tripnewsupply_minconst, | 
|                                                 scalefactor_tripnewsupply_maxconst, | 
|                                                 bound ); | 
|     } | 
|   *] | 
| } |