datastructures for NLP management
In SCIP, the NLP is defined as follows:
min const + obj * x + <x, Qx> + f(x) lhs <= const + A * x <= rhs lhs <= const + A * x + <x, Qx> + f(x) <= rhs lb <= x <= ub
where the linear rows and variable bounds are managed by the LP and the nonlinear rows are managed by the NLP.
The row activities are defined as activity = A * x + const for a linear row and as activity = f(x) + <x, Qx> + A * x + const for a nonlinear row. The activities must therefore be in the range of [lhs,rhs].
The main datastructures for storing an NLP are the nonlinear rows. A nonlinear row can live on its own (if it was created by a separator), or as relaxation of a constraint. Thus, it has a nuses-counter, and is deleted, if not needed any more. In difference to columns of an LP, nonlinear rows are defined with respect SCIP variables.
Definition in file struct_nlp.h.
#include "scip/def.h"
#include "scip/type_nlp.h"
#include "scip/type_var.h"
#include "nlpi/type_nlpi.h"
#include "nlpi/type_expr.h"