Quintiq file version 2.0
|
#parent: #root
|
Method AddTermsToInventorySpecificationHighLevelConstraint (
|
CapacityPlanningSuboptimizer_CapacityPlanningAlgorithm program,
|
MPConstraint constr,
|
const ProductInStockingPointInPeriod pispip,
|
const LibOpt_Scope scope,
|
Real scalefactor_invqty_constr,
|
Real scalefactor_rhs_constr
|
) const
|
{
|
TextBody:
|
[*
|
// sum of inventory quantity of active pispip
|
traverse( pispip.GetLeavesOfProductDimensionConst(), Elements.astype( ProductInStockingPointInPeriodPlanning ), activepispip,
|
not activepispip.ProductInStockingPoint_MP().IsNegativeInventoryAllowed() )
|
{
|
targetuom := pispip.ProductInStockingPoint_MP().UnitOfMeasure_MP();
|
uomconversionfactor := activepispip.ProductInStockingPoint_MP().GetUOMConversionFactor( targetuom );
|
// if the activepispip is part of the optimizer run, add the invqty variable, otherwise update the RHS
|
if( scope.Contains( activepispip.PISPIPInOptimizerRun() ) )
|
{
|
// Term: uomconversion * InvQty
|
// UoM: [leaf PISP to Target PISP] * [leaf PISP]
|
constr.NewTerm( uomconversionfactor * scalefactor_invqty_constr, program.InvQtyVariables().Get( activepispip ) );
|
}
|
else
|
{
|
// RHS: current RHS - uomconversion * inventory level end
|
// UoM: [Target PISP] - [Leaf PISP to Target PISP] * [Leaf PISP]
|
newrhs := this.GetConstraintRHS( constr, scalefactor_rhs_constr ) - uomconversionfactor * activepispip.InventoryLevelEnd();
|
constr.RHSValue( newrhs * scalefactor_rhs_constr );
|
}
|
}
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|