| Quintiq file version 2.0 | 
| #parent: #root | 
| Method ReRunOptimizerWithShrinkingHorizon ( | 
|   Boolean issmartplan, | 
|   ProductInStockingPointInPeriodPlannings smartplanpispips, | 
|   Boolean overridemanualplanning, | 
|   Period_MP periodstart, | 
|   Period_MP periodend, | 
|   Boolean isUsingSelectedUnit, | 
|   Units units, | 
|   Process_MP process | 
| ) | 
| { | 
|   Description: 'Method used to call the optimizer with a shrinking horizon approach' | 
|   TextBody: | 
|   [* | 
|     // method to rerun optimizer with changed period | 
|      | 
|     run := this.GetLastAlgorithmRun();  | 
|     firstperiod := this.StartOfPlanningPeriod(); | 
|     lastperiod := this.LastPlanningPeriod(); | 
|      | 
|     // If this is not a frozen run, then generate the sales demand and select the next periods in the window | 
|     if( not run.IsFrozenRun() ) | 
|     { | 
|       // Move the horizon forward one period | 
|       firstperiod := periodstart.NextPlanningPeriod(); | 
|       lastperiod :=  periodend.NextPlanningPeriod(); | 
|        | 
|       // If there is no next period, we cannot move to the next period | 
|       if( isnull( firstperiod ) ) | 
|       { | 
|         firstperiod := periodstart; | 
|       } | 
|       if( isnull( lastperiod ) ) | 
|       { | 
|         lastperiod := periodend; | 
|       } | 
|        | 
|       // Generate sales demand realizations if this is an inventory optimization run | 
|       if( run.IsInventoryOptimizationRun() ) | 
|       { | 
|         firstperiod.GenerateSalesDemandRealizations(); | 
|       } | 
|     } | 
|      | 
|     // reset all relations to algorithm run: | 
|     /* not stored on run anymore Potentially making (legacy) inventory optimization broken. Note scope is rebuilt in lib opt approach in which case the following is not needed.   | 
|     run.OperationInOptimizerRun( relflush );  | 
|     run.PeriodInOptimizerRun( relflush ); | 
|     run.PISPInOptimizerRun( relflush ); | 
|     run.PISPIPInOptimizerRun( relflush ); | 
|     run.ProductInTripInOptimizerRun( relflush ); | 
|     run.PTOperationInOptimizerRun( relflush ); | 
|     run.SPIPInOptimizerRun( relflush ); | 
|     run.TripInOptimizerRun( relflush); | 
|     run.UnitInOptimizerRun( relflush ); | 
|     run.UnitPeriodInOptimizerRun( relflush ); | 
|     run.LeafSalesDemandInPeriod( relflush ); | 
|     */ | 
|     this.RunCapacityPlanningAlgorithm( run,  | 
|                                        smartplanpispips, | 
|                                        firstperiod, | 
|                                        lastperiod, | 
|                                        units,  | 
|                                        process, | 
|                                        this.LastUsedOptimizerPuzzle()  ); | 
|   *] | 
|   InterfaceProperties { Accessibility: 'Module' } | 
| } |