Initializing help system before first use

Working with cuts in BCL

This chapter describes an extension to BCL that enables the user to define cuts in a similar way to constraints. Although cuts are just additional constraints, they are treated differently by BCL. To start with, they are defined as a separate type (XPRBcut instead of XPRBctr). Besides the type, the following differences between the representation and use of constraints and cuts in BCL may be observed:

  • Cuts cannot be non-binding or ranged.
  • Cuts are not stored with the problem, this is up to the user.
  • Cuts have no names, but they have got an integer indicating their classification or identification number.
  • Function XPRBdelcut deletes the cut definition in BCL, but does not influence the problem in Xpress Optimizer if the cut has already been added to it.
  • Cuts are added to the problem while it is being solved without having to regenerate the matrix; they can only be added to the matrix (using function XPRBaddcuts) in one of the callback functions of the Xpress Optimizer cut manager (see the `Xpress Optimizer Reference Manual'). Furthermore, they can only be defined on variables that are already contained in the matrix.

The following functions are available in BCL for handling cuts:

Add multiple linear terms to a cut.
Add cuts to a problem.
Add a term to a cut.
Delete a cut definition.
Delete a term from a cut.
Get the classification or identification number of a cut.
Get the RHS value of a cut.
Get the type of a cut.
Create a new cut.
Create a sum cut with individual coefficients (i ci xi).
Create a precedence cut (v1+dur v2).
Create a sum cut (i xi).
Print out a cut.
Set the classification or identification number of a cut.
Set the cut mode.
Set a cut term.
Set the type of a cut.