Quintiq file version 2.0
|
#parent: #root
|
Method CapacityPlanningAlgorithmHandleFeasibleShiftPattern (
|
CapacityPlanningSuboptimizer_CapacityPlanningAlgorithm program,
|
const RunContextForCapacityPlanning runcontext,
|
LibOpt_Scope scope
|
)
|
{
|
Description: 'Update or create unit availabilities depending on the assigned shift pattern.'
|
TextBody:
|
[*
|
if( runcontext.UseShiftOptimization() )
|
{
|
// Iterate on every unit and then on every unitperiod in scope.
|
traverse( scope.GetUnitInOptimizerRun(), Elements, parentunit, parentunit.GetUseShiftOptimization() )
|
{
|
traverse( parentunit.GetUnitForShiftOptimization(), Elements, unit )
|
{
|
traverse( unit, UnitPeriod.astype(UnitPeriodTime), up, up.IsInScopeForShiftOptimization( scope ) )
|
{
|
traverse( unit, UnitShiftPatternAllowed.ShiftPattern, sp )
|
{
|
// Look for the shift pattern choosen by the optimizer for this unit period.
|
shiftpatternisused := this.GetOptimalValue( program.ShiftPatternIsUsedVariables().Get( sp, up ) ) > 0.5;
|
|
if( shiftpatternisused )
|
{
|
//We set a temporary shift pattern during meta optimizer processing for efficiency (meta iterations). Component OptimizerPrePostProcessing transfers the value
|
//over to regular planning using unit availability
|
up.SetTemporaryOptimizerShiftPattern( sp.Name() );
|
}
|
}
|
}
|
}
|
}
|
}
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|