Quintiq file version 2.0
|
#parent: #root
|
Method RexecuteForHierarchicalGoals (
|
CapacityPlanningSuboptimizer_CapacityPlanningAlgorithm program,
|
const RunContextForCapacityPlanning runcontext,
|
LibOpt_Scope scope
|
)
|
{
|
TextBody:
|
[*
|
this.SetNextSubOptimizerLevelAsCurrent();
|
debuginfo( 'Re-execute for hierarchical cplex' );
|
this.Debug_FreezeDecisionVariables( program, runcontext.FirstPeriod_MP(), runcontext.LastPeriod_MP(), scope, true );
|
this.ReExecute( program );
|
|
maxlevel := minvalue( this.FocusLevel(), this.GetMaxLevelNumberForHierarchicalGoals( runcontext, scope ) );
|
for ( i := 0; i < maxlevel; i++ )
|
{
|
nameofgoal := CapacityPlanningSuboptimizer::HierarchicalGoalLevelName( i );
|
try
|
{
|
goalvalue := program.GoalValue( nameofgoal );
|
goal := program.Goal( nameofgoal );
|
traverse( goal.Terms(), Elements, t )
|
{
|
t.Coefficient( 0.0 );
|
}
|
level := this.GetRunLevel( i );
|
levelvar := program.GoalForLevelVariables().Get( level );
|
levelvar.LowerBound( goalvalue );
|
debuginfo( 'Set bound of ', goalvalue, ' for level ', i );
|
}
|
onerror
|
{
|
debuginfo( 'error encountered' );
|
// we skip levels
|
}
|
}
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|