haorenhui
2023-10-30 6d6cc10d9e8e242661da7fd655dec155a09d676c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Quintiq file version 2.0
#parent: #root
Method InitVariablesForLevelGoal (
  CapacityPlanningSuboptimizer_CapacityPlanningAlgorithm program,
  const RunContextForCapacityPlanning runcontext
) const
{
  Description: 'Initialize all KPI variables that used as goal'
  TextBody:
  [*
    traverse( this, MacroPlan.StrategyMacroPlan.StrategyLevelMacroPlan, level ) 
    {
      var := program.GoalForLevelVariables().New( level ); 
      var.LowerBound( Real::MinReal() ); 
      if ( runcontext.IsMetaIteration() ) 
      {
        varslack := program.GoalLevelSlackVariables().New( level ); 
        varslack.UpperBound( 0.0 ); // only when we set a bound for the level we will allow some small nonzero value 
      }
    }
    
    if ( runcontext.IsMetaIteration() ) 
    {
      lotsizevarslack := program.GoalLevelSlackLotSizeVariables().New(); 
      lotsizevarslack.UpperBound( 0.0 ); 
    }
  *]
  InterfaceProperties { Accessibility: 'Module' }
}