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:

XPRBaddcutarrterm
Add multiple linear terms to a cut.
XPRBaddcuts
Add cuts to a problem.
XPRBaddcutterm
Add a term to a cut.
XPRBdelcut
Delete a cut definition.
XPRBdelcutterm
Delete a term from a cut.
XPRBgetcutid
Get the classification or identification number of a cut.
XPRBgetcutrhs
Get the RHS value of a cut.
XPRBgetcuttype
Get the type of a cut.
XPRBnewcut
Create a new cut.
XPRBnewcutarrsum
Create a sum cut with individual coefficients (i ci xi).
XPRBnewcutprec
Create a precedence cut (v1+dur v2).
XPRBnewcutsum
Create a sum cut (i xi).
XPRBprintcut
Print out a cut.
XPRBsetcutid
Set the classification or identification number of a cut.
XPRBsetcutmode
Set the cut mode.
XPRBsetcutterm
Set a cut term.
XPRBsetcuttype
Set the type of a cut.