During the solution process you should make calls to various callback functions on a regular basis. These functions allow AIMMS to
The function PassProgressInfo can be called by the solver to pass algorithmic progress to AIMMS on particular points during the solution process that are indicated by various progress related options. In this way the solver can provide AIMMS with information such as the best objective function value found thus far, the number of iterations etc. This progress information is then used by AIMMS to update the Progress Window.
The function PassPhaseInfo informs AIMMS about the current solution phase of the underlying algorithm. A typical example is a linear programming solver that starts with a presolve phase and then enters the Simplex phase. The information thus provided is also used for updating the Progress Window.
Before a solve request, AIMMS can call the function SetCallbackMoments to inform the solver at which points during the solution process AIMMS should get control to run a dedicated callback procedure written in the AIMMS language. To actually give AIMMS the possibility to execute these callback procedures the solver should call the function RunCallback.
During the solution process, the execution of the AIMMS program itself is stopped. This means also that AIMMS cannot check its Windows message queue for any messages regarding screen updating, focus changes, etc. Because of this, AIMMS seems to be in a non-responding state. During any of the callback function described above AIMMS automatically takes some time to handle pending messages. To assure that AIMMS remains reasonably responsive, you can make regular calls to the function ProcessEvents. Of course, any of these callbacks will have a small negative effect on the solution time. Therefore you must try to find a good balance between speed and user friendliness.
The function ProcessEvents also checks whether the user has requested a solver interrupt (usually by pressing the key combination Ctrl-Shift-S). To deal with such an interrupt you must check the return value of this function and, if requested, exit the solution algorithm as soon as possible.