Initializing help system before first use

insightgetmode

insightgetmode


Purpose
Query the Execution Mode in which Xpress Insight is running the model.
Synopsis
function insightgetmode:string
Return value
The Execution Mode, as specified in the App. This can be a user-defined value, or can be one of these pre-defined standard values:
INSIGHT_MODE_LOAD
When an Xpress Insight scenario is being loaded
INSIGHT_MODE_RUN
When an Xpress Insight scenario is being run
INSIGHT_MODE_NONE
When the model is being executed outside of Xpress Insight
Example
case insightgetmode of
 INSIGHT_MODE_LOAD: do
   ! Scenario is being 'loaded' through Xpress Insight
   ! Call user function to initialize input data and then terminate
    loaddata
   exit(0)
  end-do
  INSIGHT_MODE_RUN: do
    ! Scenario is being 'run' through Xpress Insight
    ! Populate with Insight scenario data and continue model run
    insightpopulate
  end-do
  'MY_CUSTOM_EXECUTION_MODE': do
    ! This would be an execution mode defined with an @insight.execmode
    ! annotation, to indicate some custom behavior
    insightpopulate
    ! Now take whatever custom action is appropriate...
  end-do
  else
    ! Model is being run outside of Xpress Insight
    ! Call user function to initialize input data and continue model run
    loaddata
end-case
Example of the basic flow of an Insight model, calling loaddata to populate the input data entities when the scenario is loaded or the model is run from outside of Insight, and insightpopulate to populate them when scenario is run within Insight.
Further information
1. It's recommended that you use insightdispatch to call annotated procedures for each execution mode, rather than using a cast statement with insightgetmode
2. This function can be used as a conditional test to determine which parts of the model should be executed. In general, in INSIGHT_MODE_LOAD (or other user-defined execution modes intended to denote that initial data is being loaded) your model should initialize its input data and then exit. In INSIGHT_MODE_RUN (or user-defined execution modes intended to denote the model should be executed) it should call insightpopulate to populate their data structures and then construct and solve the optimization model. And in INSIGHT_MODE_NONE it should both initialize its input data and construct and solve the optimization, to allow the model developer to execute the model outside of Insight.