Quintiq file version 2.0
|
#parent: #root
|
Method CapacityPlanningAlgorithmHandleFeasibleOperationPeriodTask_SetPT (
|
CapacityPlanningSuboptimizer_CapacityPlanningAlgorithm program,
|
const RunContextForCapacityPlanning runcontext,
|
PeriodTaskOperation pt,
|
Real quantity
|
)
|
{
|
Description: 'Assign the optimal quantity from optimizer for period task planned quantity'
|
TextBody:
|
[*
|
operation := pt.Operation( );
|
period := pt.UnitPeriod().Period_MP();
|
campaignSequencingEnabled := runcontext.UseCampaignSequenceOptimizer()
|
|
if( not pt.HasUserQuantity() ) // has user flag will retain, while has feedback flag will be reset to optimizer flag.
|
{
|
pt.SetOptimizerQuantity( quantity );
|
}
|
|
// Assign optimizer fulfillment for dependent demand in input group.
|
// The dependent demand not in group will be fulfilled by greedy after the optimizer run, by setting SystemFulfilledQuantity.
|
this.CapacityPlanningAlgorithmHandleFeasibleOperationDependentDemandInputGroup( program, pt, runcontext );
|
|
// Assign period task in campaign type quantity.
|
// Period task in campaign type fulfillment
|
if( runcontext.UseCampaign()
|
and not campaignSequencingEnabled // for campaign sequencing already created the periodtask and their quantity
|
and period.GetIsInCampaignTypeHorizonUnit( operation.Unit() ) )
|
{
|
if( operation.OperationInCampaignType( relsize ) > 0 )
|
{
|
pt.CreatePeriodTaskInCampaigns();
|
|
traverse( pt, PeriodTaskInCampaign, ptct )
|
{
|
if ( exists( ptct,
|
OperationInCampaign.Campaign_MP.PlanningCampaignPeriod,
|
cperiod,
|
cperiod.UnitPeriod().Period_MP() = period ) )
|
{
|
ptct.Quantity( this.GetOptimalValue( program.PTCampaignQtyVariables().Get( ptct.OperationInCampaign(), period ) ) );
|
}
|
}
|
}
|
|
if( operation.OperationInTransitionType( relsize ) > 0 and not campaignSequencingEnabled )
|
{
|
pt.CreatePeriodTaskInTransitions();
|
|
traverse( pt, PeriodTaskInTransition, ptt )
|
{
|
ptt.Quantity( this.GetOptimalValue( program.PTTransitionQtyVariables().Get( ptt.OperationInTransition(), period ) ) );
|
}
|
}
|
}
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|