Quintiq file version 2.0
|
#parent: #root
|
Method RemoveUnusedOperationPeriodTaskAfterOptimizerRun (
|
LibOpt_Scope scope,
|
RunContextForCapacityPlanning runcontext,
|
PeriodTaskOperations userperiodtasks
|
)
|
{
|
Description: 'Remove the period task with quantity = 0 after running optimizer, to reduce memory consumption'
|
TextBody:
|
[*
|
noisethreshold := this.Optimization().astype( Optimization ).MacroPlan().GlobalParameters_MP().NoiseThresholdOptimizerOutput();
|
|
unitperiods := selectset( scope.GetPeriodInOptimizerRun(),
|
Elements.UnitPeriod,
|
up,
|
true,
|
not up.IsPeriodFrozen() );
|
|
periodtasks := selectset( unitperiods,
|
Elements.PeriodTask_MP.astype( PeriodTaskOperation ),
|
periodtask,
|
not periodtask.HasFeedback()
|
and abs( periodtask.OptimizerQuantity() ) < noisethreshold );
|
periodtasks := periodtasks.Difference( userperiodtasks ); // Remove those with manual planning quantity set to 0.
|
|
debuginfo( 'Removed period tasks = ', periodtasks.Size() );
|
traverse( periodtasks, Elements, pt )
|
{
|
pt.Delete();
|
}
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|