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
  | Quintiq file version 2.0 
 |  #parent: #root 
 |  Method GetWindowCampaignSequenceOptimizer ( 
 |    output Date earlieststart, 
 |    output Date lateststart, 
 |    Number windowsizenrperiods, 
 |    DateTime latestcampaignhorizonend, 
 |    OptCampaign optcampaign 
 |  ) 
 |  { 
 |    TextBody: 
 |    [* 
 |      periods := selectsortedset(  this.GetPeriodInOptimizerRun(),  
 |                                   Elements,  
 |                                   period,  
 |                                   period.Start() <= latestcampaignhorizonend 
 |                                   and not period.IsHistorical(),  
 |                                   period.StartDate() ) ;  
 |       
 |       
 |      start := maxvalue(  Number::Random( -windowsizenrperiods, periods.Size() - 1 ), 0 ); // give equal probability to first period by picking negative numbers also  
 |      end := minvalue(  start + windowsizenrperiods, periods.Size() - 1 );  
 |      earlieststart := guard(  periods.Element( start ).StartDate(), Date::MaxDate() );  
 |      lateststart := guard( periods.Element( end ).StartDate(), Date::MinDate() ); 
 |    *] 
 |    InterfaceProperties { Accessibility: 'Module' } 
 |  } 
 |  
  |