Initializing help system before first use

Data Model

The following UML diagram outlines the relationships the XPRSmipsolenum has with some other data entities.


mseuml.png

Figure 5.1:

Starting from the top left the diagram shows the XPRSprob referenced by the XPRSmipsolenum in the top middle. The XPRSmipsolenum references the XPRSprob only for the duration of the enumeration-run routines XPRS_mse_minim, XPRS_mse_maxim and XPRS_mse_opt. The XPRSmipsolenum sets certain controls on the XPRSprob, registers an internal callback to receive solutions found during the enumeration and calls the relevant optimization function to execute the enumeration.

Moving to the top right the diagram shows the XPRSmipsolpool referenced by the XPRSmipsolenum. The XPRSmipsolenum references the XPRSmipsolpool only for the duration of the enumeration-run routines (in the same way as the XPRSprob).

While running the enumeration the XPRSmipsolenum maintains storage of additional information for each solution found that cannot be stored by the XPRSmipsolpool. The additional information is the MIP objective value (MIPObject) of the solution, any user-defined objective function value (ModObject) for the solution and a diversity-metric (Diversity) for the solution that measures how different the solution is with respect to the other solutions in storage. As indicated by the dashed line in the diagram, the solution ID is used to link the information stored separately in the XPRSmipsolenum and the XPRSmipsolpool.

Since a parallel storage of solution information is required the XPRSmipsolenum marshals the storage of solutions to the XPRSmipsolpool. To do this the XPRSmipsolenum registers an internal callback with the XPRSmipsolpool to track when solutions are deleted by the user from the XPRSmipsolpool. It is also necessary that the XPRSmipsolenum loads the solutions found during the enumeration directly into the XPRSmipsolpool overriding the automatic loading of solutions from the XPRSprob to XPRSmipsolpool in the situation where the user has attached the XPRSprob to the XPRSmipsolpool prior to the enumeration run.

Once the enumeration run terminates the MIP solutions are stored in the XPRSmipsolpool and the additional information for the solutions is stored in the XPRSmipsolenum. At this point the solution information is linked only by the solution ID.