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