[ library(eplex) | 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.

The ColumnSpecification list can optionally start with a special element
'obj':Coeff, in which case the coefficient is the objective coefficient
for the column (otherwise zero). This can be optionally followed by two
entries of the form 'lo':Lwb,'hi':Upb, which specify initial lower and
upper bound on the column variable (otherwise unbounded). 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.