Quintiq file version 2.0
|
#parent: #root
|
MethodOverride InitConstraintsForUnitPeriodCapacities (
|
CapacityPlanningSuboptimizer_CapacityPlanningAlgorithm program,
|
Boolean enableminconst,
|
Real totalmincapacity,
|
Real totalmaxcapacity,
|
const RunContextForCapacityPlanning runcontext,
|
const LibOpt_Scope scope,
|
const CapacityPlanningSuboptimizer subopt
|
) const
|
{
|
TextBody:
|
[*
|
// defining minimum capacities for unit, Sum of PT Qty + not met >= UP.MinCapacity
|
// minconstup constraint UoM: Unit
|
minconstup := program.MinUnitCapacityQtyConstraints().New( this );
|
minconstup.Sense( '>=' );
|
|
// RHS UoM: Unit
|
minconstup.RHSValue( subopt.ScaleConstraintRHS( typeofexpression( minconstup ), totalmincapacity ) );
|
// Term UoM: Unit
|
var := this.GetCapacityNotMetVariable( program );
|
minconstup.NewTerm( 1.0 * subopt.ScaleConstraintTerm( typeofexpression( var ), typeofexpression( minconstup ) )
|
, var );
|
minconstup.Enabled( enableminconst )
|
|
// defining maximum capacities for unit, Sum of PT Qty <= UP.AvailableCapacity
|
// maxconstup constraint UoM: Unit
|
maxconstup := program.MaxUnitCapacityQtyConstraints().New( this );
|
maxconstup.Sense( '<=' );
|
// RHS UoM: Unit
|
maxconstup.RHSValue( subopt.ScaleConstraintRHS( typeofexpression( maxconstup ), totalmaxcapacity ) );
|
maxconstup.Enabled( not this.IsPlannedInfinite() );
|
|
this.InitConstraintsForCapacityUsage( program, minconstup, maxconstup, runcontext, scope, subopt );
|
|
//--------------------------------------------------------
|
//--------------------------------------------------------
|
//init constraints for secondary capacity definition
|
if( this.HasSecondaryCapacityDefinition() )
|
{
|
// defining minimum capacities for unit, Sum of PT Qty + not met >= UP.MinCapacity
|
// minconstup constraint UoM: Unit
|
minseconddaryconstup := program.MinUnitSecondaryCapacityQtyConstraints().New( this );
|
minseconddaryconstup.Sense( '>=' );
|
|
totalsecondarymincapacity := this.TotalSecondaryMinimumQuantity();
|
// RHS UoM: Unit
|
minseconddaryconstup.RHSValue( subopt.ScaleConstraintRHS( typeofexpression( minseconddaryconstup ), totalsecondarymincapacity ) );
|
// Term UoM: Unit
|
|
minseconddaryconstup.NewTerm( 1.0 * subopt.ScaleConstraintTerm( typeof( MPUnitSecondaryCapacityNotMetVariable ), typeofexpression( minseconddaryconstup ) )
|
, program.UnitSecondaryCapacityNotMetVariables().Get( this ) );
|
minseconddaryconstup.Enabled( this.TotalSecondaryMinimumQuantity() > 0 )
|
|
// defining maximum capacities for unit, Sum of PT Qty <= UP.AvailableCapacity
|
totalsecondarymaxcapacity := this.TotalSecondaryMaximumQuantity();
|
// maxconstup constraint UoM: Unit
|
maxsecondaryconstup := program.MaxUnitSecondaryCapacityQtyConstraints().New( this );
|
maxsecondaryconstup.Sense( '<=' );
|
// RHS UoM: Unit
|
maxsecondaryconstup.RHSValue( subopt.ScaleConstraintRHS( typeofexpression( maxconstup ), totalsecondarymaxcapacity ) );
|
maxsecondaryconstup.Enabled( not this.IsPlannedInfinite() );
|
|
this.InitConstraintsForSecondaryCapacityUsage( program, minseconddaryconstup, maxsecondaryconstup, runcontext, scope, subopt );
|
}
|
*]
|
}
|