| 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; | 
|   *] | 
| } |