Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method UpdateRHSForPeriodTasksNotInScope ( 
 | 
  MPConstraint minconst, 
 | 
  MPConstraint maxconst, 
 | 
  const RunContextForCapacityPlanning runcontext, 
 | 
  const LibOpt_Scope scope, 
 | 
  const CapacityPlanningSuboptimizer subopt, 
 | 
  Real scalefactor_rhs_minconst, 
 | 
  Real scalefactor_rhs_maxconst 
 | 
) const 
 | 
{ 
 | 
  Description: 'Update the RHS based on operations outisde the optimizer horizon' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // note for UnitPeriodTransportTime, UnitPeriodTransportQuantity we rely on overloads so we only treat PeriodTaskOperation here.  
 | 
    traverse( this,  
 | 
              PeriodTaskOperation,  
 | 
              periodtask,  
 | 
              isnull( periodtask.UnitPeriodWhenInScope() ) ) 
 | 
    { 
 | 
      //Changed the guard default value to periodtask.QuantityToProcess() as periodtask.RequiredQuantity mainly used when its Time based capacity. 
 | 
      //For other capacity type, normally RequiredCapacity will be set as zero and that will resulted in fixedquantity = 0. 
 | 
      fixedquantity := guard( periodtask.QuantityToProcess() / periodtask.RequiredCapacity(), periodtask.QuantityToProcess() ); 
 | 
      newrhsminconst := subopt.GetConstraintRHS( minconst, scalefactor_rhs_minconst ) - fixedquantity; 
 | 
      minconst.RHSValue( newrhsminconst * scalefactor_rhs_minconst ); 
 | 
     
 | 
      newrhsmaxconst := subopt.GetConstraintRHS( maxconst, scalefactor_rhs_maxconst ) - fixedquantity; 
 | 
      maxconst.RHSValue( newrhsmaxconst * scalefactor_rhs_maxconst ); 
 | 
    } 
 | 
     
 | 
    traverse( this, ChildOfUnitDimension, childunitperiod ) 
 | 
    { 
 | 
      childunitperiod.UpdateRHSForPeriodTasksNotInScope( minconst, maxconst, runcontext, scope, subopt, scalefactor_rhs_minconst, scalefactor_rhs_maxconst ); 
 | 
    } 
 | 
  *] 
 | 
  InterfaceProperties { Accessibility: 'Module' } 
 | 
} 
 |