Quintiq file version 2.0
|
#parent: #root
|
Method SetShiftPatterns (
|
MacroPlan macroplan
|
)
|
{
|
Description: 'We set a temporary shift pattern during meta optimizer processing for efficiency. Then in post-processing transfer the value over to regular planning using unit availability'
|
TextBody:
|
[*
|
updatedunits := construct( Units );
|
traverse( macroplan, Unit, unit, unit.IsInOptimizerPuzzle() )
|
{
|
sortedups := selectsortedset( unit, UnitPeriod.astype( UnitPeriodTime ), up, true, up.Start() );
|
traverse( sortedups, Elements, up )
|
{
|
if ( up.HasTemporaryOptimizerShiftPattern() )
|
{
|
up.SetShift( up.ShiftPattern() ); // derived from TemporaryOptimizerShiftPattern
|
up.ClearTemporaryOptimizerShiftPattern();
|
updatedunits.Add( up.Unit() );
|
}
|
}
|
}
|
|
// Clean up identical unit availabilities.
|
traverse( updatedunits.Unique(), Elements, unit )
|
{
|
unit.CleanUpUnitAvailability();
|
}
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|