Quintiq file version 2.0
|
#parent: #root
|
MethodOverride InitConstraintsForPostponedSalesDemands (
|
const CapacityPlanningSuboptimizer subopt,
|
CapacityPlanningSuboptimizer_CapacityPlanningAlgorithm program,
|
const LibOpt_Scope scope,
|
Number optminpostponementperiod
|
) const
|
{
|
TextBody:
|
[*
|
// const constraint UoM: PISP
|
const := program.LinkedSalesDemandConstraints().New( this );
|
const.Sense( '<=' );
|
|
rhs := this.GetQuantityForOptimizer( scope );
|
issdipbeforescope := scope.Contains( this.SDIPBeforeScopeInRun() );
|
|
// Check if the SDIP is within the optimizer horizon. The SalesDemandQty variable is only created if the SDIP is within the optimizer horizon
|
// If the SDIP is within the optimizer horizon, then add the SalesDemandQty variable, otherwise subtract the fulfilled quantity.
|
if( not issdipbeforescope )
|
{
|
// Term UoM: PISP
|
scalefactor_SDQty_constr := subopt.ScaleConstraintTerm( typeof( MPSalesDemandQtyVariable ), typeofexpression( const ) );
|
const.NewTerm( 1.0 * scalefactor_SDQty_constr, program.SalesDemandQtyVariables().Get( this ) );
|
}
|
else
|
{
|
// Adjust RHS value if this LeafSDIP is not in the run.
|
rhs := maxvalue( rhs - this.FulfilledQuantity(), 0.0 );
|
}
|
|
// RHS UoM: PISP
|
const.RHSValue( subopt.ScaleConstraintRHS( typeofexpression( const ), rhs ) );
|
|
this.AddTermsForDelayedSalesDemandsForward( program, const, 1.0, scope, subopt, optminpostponementperiod );
|
*]
|
}
|