Quintiq file version 2.0
|
#parent: #root
|
MethodOverride DoExecuteReactive (Algorithm algorithm, LibOpt_Task task) as stream[JSON]
|
{
|
TextBody:
|
[*
|
// Start measuring the framework-solve duration at POA's entry point in the LibOpt framework.
|
poa := algorithm->( algorithm )
|
{
|
poa := algorithm.astype( POAAlgorithm );
|
LibOpt_AlgorithmStopwatch::Start( poa, LibOpt_SnapshotAlgorithm::FrameworkSolve() );
|
return poa;
|
}
|
//the `poa` variable is reset by the strategy methods to facilitate remote execution on another server
|
//the local `poa` from above is passed as a copy to the remote server and the solutions found by the strategy
|
//are available on the remote server. That is why a new `POAAlgorithm` is passed back from the remote server.
|
//the new `poa` variable set below contains the solutions found by the strategy.
|
if( this.ExecuteStrategyRemote() )
|
{
|
poa := this.ExecuteStrategyReactive( poa->Annotate( ReactiveAnnotation::Remote( true ) ) );
|
}
|
else
|
{
|
poa := this.ExecuteStrategyReactive( poa );
|
}
|
result := poa->LibOpt_SuboptimizerPOA::FinalizePOA()
|
->|this->DoHandleResultCall( poa, task );
|
|
return result;
|
*]
|
}
|