Inter-Scenario Data Access
You can also initialize your data structures with values from external scenarios using the mminsight.scenariodata I/O driver with a standard Mosel initializations-from block. For example, the following model initializes the array "Distances" from an array called "CityDrivingDistances" in a scenario "USDrivingDistances" in an app named "DrivingDistancesModel"
model RoutePlanner uses "mmxprs" ! Load the Xpress Optimizer uses "mminsight" ! Load the Insight interface ! Input data - stored in Insight scenario !@insight.manage input public declarations Cities: set of string TrafficLevels: array(Cities,Cities) of real end-declarations ! Result data - stored in Insight scenario !@insight.manage result public declarations routetaken: array(Cities,Cities) of mpvar end-declarations ! Data structures used internally in the model !@insight.manage ignore declarations Distances: array(Cities,Cities) of real end-declarations ! Procedure to build and solve optimization problem procedure runproblem ! Populate 'Distances' array if insightgetmode <> INSIGHT_MODE_NONE then ! Populate 'Distances' array from the remote scenario initializations from "mminsight.scenariodata:/DrivingDistancesModel/USDrivingDistances" Distances as "CityDrivingDistances" end-initializations else ! Model is running outside of Insight, so populate driving distances from local file initializations from "/Users/me/myfiles/distances.dat" Distances end-initializations end-if ! Perform optimization buildproblem optimizeproblem end-procedure !@insight.execmodes.LOAD public procedure doload loaddata end-procedure !@insight.execmodes.RUN public procedure dorun insightpopulate runproblem end-procedure !@insight.execmodes.NONE public procedure doloadandrun loaddata runproblem end-procedure insightdispatch end-model
For clarity, the implementation of the loaddata, buildproblem and optimizeproblem procedures have been omitted from the example.