[ 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.