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