| Quintiq file version 2.0 | 
| #parent: #root | 
| MethodOverride GetAnchorPISPIPs ( | 
|   LibOpt_Scope scope, | 
|   RunContextForCapacityPlanning runcontext, | 
|   RunContextMeta runcontextmeta | 
| ) as owning ProductInStockingPointInPeriodPlannings | 
| { | 
|   TextBody: | 
|   [* | 
|     pispips := construct( ProductInStockingPointInPeriodPlanningLeafs );  | 
|     runcontext := this.GetRunContextCapacityPlanning();  | 
|     runcontextmeta := this.GetRunContextMeta();  | 
|     mp := runcontext.FirstPeriod_MP().MacroPlan();  | 
|      | 
|     anchor := null( Trip );  | 
|      | 
|     candidates := LinkProbabilityTrip::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.GetRandomTrip( mp, scope ); // failsafe | 
|       comment := 'R ';  | 
|     } | 
|      | 
|     if ( not isnull( anchor ) )  | 
|     { | 
|       debuginfo( 'anchor trip = ', anchor.ID(), anchor.Departure(), anchor.Arrival() );  | 
|       this.SetDescriptionAnchor( anchor,comment );  | 
|       anchor.MetaOptimizerTried( anchor.MetaOptimizerTried() + 1 );  | 
|     } | 
|      | 
|     arrivaldepcount := 0;  | 
|     traverse( anchor, ProductInTrip.ArrivalPISPIP, arrivalpispip )  | 
|     { | 
|       pispips.Add(  arrivalpispip );  | 
|       arrivaldepcount++;  | 
|     } | 
|      | 
|     traverse( anchor, ProductInTrip.DeparturePISPIP, departurepispip )  | 
|     { | 
|       pispips.Add(  departurepispip );  | 
|       arrivaldepcount++ | 
|     } | 
|     debuginfo( 'pispips for trip departure/arrival = ', arrivaldepcount );  | 
|      | 
|     return &pispips; | 
|   *] | 
| } |