Quintiq file version 2.0
|
#parent: #root
|
Method InitConstraintsForOneTimeCost (
|
CapacityPlanningSuboptimizer_CapacityPlanningAlgorithm program,
|
const RunContextForCapacityPlanning runcontext,
|
const LibOpt_Scope scope
|
) const
|
{
|
Description: 'Initialize defining constraints for isused variable if needed'
|
TextBody:
|
[*
|
// constraint to define isused for (operation, period)
|
|
if ( runcontext.UseOneTimeCost() )
|
{
|
traverse( scope.GetOperationInOptimizerRunConst(), Elements, operation, operation.HasOneTimeCost() )
|
{
|
periods := this.GetPeriodsForOperation( scope, operation );
|
|
traverse( periods, Elements, period )
|
{
|
// add constraint: not isused -> PTQty <= 0
|
var := program.PTQtyVariables().Get( operation, period );
|
isusedvar := program.PTIsUsedVariables().Get( operation, period );
|
|
defconstr := program.PTIsUsedDefinitionConstraints().New( operation, period );
|
defconstr.RHSValue( 0.0 );
|
defconstr.Sense( '<=' );
|
defconstr.NewTerm( 1.0, var );
|
|
program.NewIfNotThenConstraint( CapacityPlanningSuboptimizer::ConstraintNameIsUsedVarDef( operation, period ), isusedvar, defconstr );
|
}
|
}
|
}
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|