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' }
|
}
|