| Quintiq file version 2.0 | 
| #parent: #root | 
| Method Start () as stream[JSON] | 
| { | 
|   Description: | 
|   [* | 
|     Start of the preprocessing step of the optimization run.  | 
|     The actual start of the run happens in `StartAfterPreprocessing`. | 
|   *] | 
|   TextBody: | 
|   [* | 
|     this.CheckStart(); | 
|      | 
|     this.MDSIDRun( this.MDSID() );  | 
|      | 
|      | 
|     time := OS::PrecisionCounter(); | 
|     this.StartedOnPrecision( time / OS::PrecisionCounterFrequency() ); | 
|      | 
|     start_link := this.LinkStart(); | 
|     start_link.Sync(); | 
|      | 
|     traverse( this, Channel, channel ) | 
|     { | 
|       channel.AnalyzeGraph(); | 
|     } | 
|      | 
|     this.RequestedOn( DateTime::Now() ); | 
|      | 
|     result := null( stream[JSON] ); | 
|     if( this.IsRunControllerEnabled() ) | 
|     { | 
|       result := this.CheckOptimizerRunController(); | 
|     } | 
|     else | 
|     { | 
|       result := this.StartAfterPreprocessing(); | 
|     } | 
|     return result; | 
|   *] | 
| } |