Quintiq file version 2.0
|
#parent: #root
|
Method VerifyCapacitySmoothing (
|
MacroPlan macroplan
|
)
|
{
|
TextBody:
|
[*
|
epsilon := 1e-4;
|
units := selectset( macroplan, Unit, u, u.ID() = 'Supplier UBC scrap (Asia)' or u.ID() = 'Melting furnace (Qi-Ying)' );
|
|
traverse( units, Elements, unit )
|
{
|
unitperiod := selectsortedset( unit, PlanningUnitPeriod, p, not p.Period_MP().IsHistorical(), p.Start() );
|
i := 0;
|
while ( i < unitperiod.Size() )
|
{
|
max_value := Real::MinReal();
|
min_value := Real::MaxReal();
|
for ( j := 0; j < unit.CapacitySmoothingLength() and i + j < unitperiod.Size(); j++ )
|
{
|
up1 := unitperiod.Element( i + j ).UtilizationPercentage();
|
max_value := maxvalue( max_value, up1 );
|
min_value := minvalue( min_value , up1 );
|
}
|
|
diff := max_value - min_value;
|
// Verify there are 9 sanity check number of message count.
|
this.Run().AssertLess( unit.CapacitySmoothingPercentageDelta() + epsilon, diff, 'Verify capacity smoothing [Planning issue] is correct' + unit.Name() + 'first period=' + [String] unitperiod.Element( i ).Start() );
|
|
i := i + ifexpr( unit.IsOverlapCapacitySmoothing(), 1, unit.CapacitySmoothingLength() - 1 );
|
}
|
}
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|