Create Responding Applications

Applications for decision support have two characteristics:

  • A lot of information for the user

  • The search for an optimal solution may take a long time

You can design a responding application which responds to user interaction, even during long-running searches for an optimal solution.

Assign two sessions for the application:

  • Data session: allows interaction with the user; only solves small mathematical programming problems.

  • Solver session: solves the Operations Research problem; may involve solving one or more mathematical programming problems.

AIMMS PRO platform is designed so that these two sessions can communicate with each other.

To adapt an optimization application to become a responding optimization application requires several stages of development tasks:

  1. Structure: Separate the search for an optimal solution as a separate solver session.

  2. Development: Make sure that you can read the solution at your own convenience, and work on the application-independent from an AIMMS PRO system.

  3. Finishing: Add progress status messages, ensure that intermediate solutions are saved, and add a way to feed new data to the solver session.

Tasks required in these stages are discussed below in more detail with links to further help.

Separating sessions

The first step is that we are able to

  1. adapt our application such that the data and solver session are separated,

  2. connect to an AIMMS PRO system,

  3. publish our application on that AIMMS PRO system, and

  4. test it by launching the application.

This is described in detail at: Deploy an Application on AIMMS PRO .

Delegate and develop

The AIMMS IDE is used to develop applications, but the applications are deployed on AIMMS PRO. In the article develop multi-platform applications we describe how to model for the combination.

Responding client side

To make an application responding, we should not wait for the solver session to complete. When an AIMMS WebUI application is waiting for a long-running procedure, this is indicated to the user by having a veil is drawn over the screen and showing a busy indicator. By not waiting for the solver session, we avoid this veil. More about this in remove veil

User-specified load

The user may be surprised/overwhelmed when the results computed in the solver session come immediately in. To handle the results from the solver session at the convenience of the user, see load results upon request

Progress information

The solver session can send messages to the data session to keep the user informed of the progress. How to send and receive such messages is discussed in share progress information

Passing intermediate solutions

Intermediate solutions found can be shared efficiently between the solver and data session using AIMMS cases. These cases are stored using AIMMS PRO storage. Further details are in share intermediate solutions

Interrupting the solver session

When the solver session is running too long or doesn’t make sufficient progress, we’d like to stop it. The data session can interrupt the solver session.

Passing new data to the solver session

Data changes can be sent to the solver session, for instance, to send more or less progress information to the data session. See share data changes