lazhen
2025-01-09 8afe90b633046db39042aada36b88193062f8cff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Quintiq file version 2.0
#parent: #root
Method AddDownStreamLimitedExplore (
  TransformerSmartPlanDownStream transformerdown,
  LibOpt_Scope scope,
  ProductInStockingPointInPeriodPlanningLeafs pispips,
  RunContextForCapacityPlanning runcontext,
  Boolean debug,
  Boolean checksize,
  Real fractionofmax,
  Number fanoutmaxlanes,
  Boolean limittononzeroplanning,
  Number operationselectlimit,
  Boolean resetvisited
)
{
  TextBody:
  [*
    start := OS::PrecisionCounter(); 
    rcm := RunContextMeta::GetRunContextMeta( scope.Run() ); 
    maxsizenbh := floor(  rcm.OptionMaxNumberOfPISPIPSForNeighborhood() * fractionofmax ); 
    
    // we do not recreate the transfer with the purpose we keep what has been visited already ( PISPIPVisited relation ) 
    transformerdown.InitForMeta( checksize, debug, fanoutmaxlanes, false, limittononzeroplanning, maxsizenbh, rcm.OptionNumberOfSmartPlanPeriods(), operationselectlimit ); 
    
    oldestimate := scope.EstimatedNrPISPIPs(); 
    this.AddDownStream( transformerdown, scope, runcontext, pispips, resetvisited );
    newestimate := scope.EstimatedNrPISPIPs(); 
    end := OS::PrecisionCounter(); 
    durationmethod := (end - start ) / OS::PrecisionCounterFrequency(); 
    if ( debug ) 
    {
      debuginfo(  'Limited search downstream added:', newestimate - oldestimate, 'new estimate=', newestimate, 'method time=', durationmethod );
    }
  *]
  InterfaceProperties { Accessibility: 'Module' }
}