renhao
2023-09-21 1aa9f2bb83dd9e4b7517f1cbf06b0db53979bb31
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
Function CalcIsBottleneck
{
  TextBody:
  [*
    // ying ying Jul-18-2014 (created)
    
    numofup := this.MacroPlan().PeriodInBottleneckWindow( relsize );
    bottleneckpercentage := 0.0;
    
    if( numofup > 0 )
    {
      bottleneckpercentage := ( this.NumBottleneckPeriods() /  numofup ) * 100; // we take percentage
    }
    
    // Must exceed the GP tolerance in order to flag as bottleneck
    // If tolerance is 50%, at most can tolerate half of the periods to be bottleneck
    // If tolerance is 100%, then unit will never be bottleneck even though all periods within window are bottleneck
    value := bottleneckpercentage > this.MacroPlan().GlobalParameters_MP().BottleneckTolerance();
    
    if( this.Child( relsize ) > 0 )
    {
      value := value or exists( this, Child, c, c.IsBottleneck() );
    }
    
    this.IsBottleneck( value );
  *]
}