Quintiq file version 2.0
|
#parent: #root
|
MethodOverride GetAnchorPISPIPs (
|
LibOpt_Scope scope,
|
RunContextForCapacityPlanning runcontext,
|
RunContextMeta runcontextmeta
|
) as owning ProductInStockingPointInPeriodPlannings
|
{
|
TextBody:
|
[*
|
pispips := construct( ProductInStockingPointInPeriodPlanningLeafs );
|
anchor := null( PeriodTaskOperation );
|
runcontext := this.GetRunContextCapacityPlanning();
|
runcontextmeta := this.GetRunContextMeta();
|
candidates :=LinkProbabilityPeriodTaskOperation::GetCandidates( scope );
|
candidatesvector := selectvalues( candidates, Elements, c, true, c.EstimatedImprovementScore() );
|
maxindex := candidatesvector.Size() - 1;
|
i := SelectorMeta::GetRandomIndex( candidatesvector );
|
comment := '';
|
if ( i <= maxindex )
|
{
|
anchor := candidates.Element( i );
|
}
|
else
|
{
|
anchor := this.GetRandomPeriodTaskOperation( scope ); // failsafe
|
comment := 'R ';
|
}
|
|
if ( not isnull( anchor ) )
|
{
|
this.SetDescriptionAnchor( anchor,comment );
|
debuginfo( this.DescriptionSelectedAnchor() );
|
anchor.MetaOptimizerTried( anchor.MetaOptimizerTried() + 1 );
|
}
|
|
pispipcount := 0;
|
traverse( anchor, NewSupply.ProductInStockingPointInPeriodPlanningLeaf, nspispip )
|
{
|
pispips.Add( nspispip );
|
pispipcount++;
|
}
|
|
traverse( anchor, DependentDemand.ProductInStockingPointInPeriodPlanningLeaf, ddpispip )
|
{
|
pispips.Add( ddpispip );
|
pispipcount++
|
}
|
debuginfo( 'pispips for ns/dd = ', pispipcount );
|
|
return &pispips;
|
*]
|
}
|