[ library(eplex) | The ECLiPSe Libraries | Reference Manual | Alphabetic Index ]
# lp_add_columns(+Handle, +Columns)

Add new variables as columns to the external solver's matrix.
*Handle*
- Handle to a solver state
*Columns*
- A list of Variable:ColumnSpecification pairs.

## Description

Add new variables as columns to the external solver's matrix. This
allows non-zero coefficients for the objective and existing constraints
to be specified for these variables.

Each column is specified as a Variable:ColumnSpecification pair.
Variable is the variable that is being added to the problem, and
ColumnSpecification is the specification for the non-zero coefficients
for the column representing the variable in the external solver matrix:
this is a list of Index:Coefficient pairs. Where index is the index of an
existing constraint (obtained when the constraint was added using
lp_add_constraints/4), and coefficient is its coefficient. Index
can also be the atom 'obj', in which case the coefficient is the objective
coefficient for the column. If the objective coefficient is specified,
it must be the first element in the ColumnSpecification list. Each
constraint coefficient should only occur once. Any index not specified
is given a zero value.

Note that lp_add_columns/2 essentially modifies the problem represented
by Handle. This is not compatible with the view of the problem as a
compound constraint, and therefore, lp_add_columns/2 can only be used
for problems that are not eplex instances, and/or have no trigger
conditions for triggering the external solver.

### Exceptions

*(4) instantiation fault *
- Handle or Columns are uninstantiated.
*(5) type error *
- A Variable in Columns is already a problem variable for problem represented by Handle.
*(40) stale object handle *
- Handle not valid: solver state had been destroyed by cleanup
*(abort) *
- Handle is an eplex instance problem, or trigger conditions have been specified.