After the
handle has been initialized (e.g.,
e04rac has been called),
e04rkc may be used to define the nonlinear constraints
of the problem. If the nonlinear constraints have already been defined, they will be overwritten and their Hessians (or the Hessian of the Lagrangian) will be removed. If
e04rkc is called with
, existing nonlinear constraints are removed and no new ones are added. This will typically be used for nonlinear programming problems (NLP) of the kind:
where
is the number of the decision variables
,
is the number of the nonlinear constraints (in
(1)(b)) and
,
and
are
-dimensional vectors.
Note that upper and lower bounds are specified for all the constraints. This form allows full generality in specifying various types of constraint. In particular, the th constraint may be defined as an equality by setting . If certain bounds are not present, the associated elements or may be set to special values that are treated as or . See the description of the optional parameter which is common among all solvers in the suite. Its value is denoted as further in this text. Note that the bounds are interpreted based on its value at the time of calling this function and any later alterations to will not affect these constraints.
Since each nonlinear constraint is most likely to involve a small subset of the decision variables, the partial derivatives of the constraint functions with respect to those variables are best expressed as a sparse Jacobian matrix of
rows and
columns. The row and column positions of all the nonzero derivatives must be registered with the handle through
e04rkc. The values of the nonlinear constraint functions and their nonzero gradients at particular points in the decision variable space will be communicated to the NLP solver by user-supplied functions (e.g.,
confun and
congrd for
e04stc).
An individual set of bounds can be also modified by
e04tdc. Note that it is also possible to temporarily disable and enable individual constraints in the model by calling
e04tcc and
e04tbc, respectively.
See
Section 4.1 in the
E04 Chapter Introduction for more details about the
NAG optimization modelling suite.
None.
- NE_ALLOC_FAIL
-
Dynamic memory allocation failed.
See
Section 3.1.2 in the Introduction to the
NAG Library CL Interface for further information.
- NE_BAD_PARAM
-
On entry, argument had an illegal value.
- NE_BOUND
-
On entry, , , .
Constraint: .
On entry, , and .
Constraint: .
On entry, , , .
Constraint: .
- NE_HANDLE
-
The supplied
handle does not define a valid handle to the data structure for the
NAG optimization modelling suite. It has not been properly initialized or it has been corrupted.
- NE_INT
-
On entry, .
Constraint: .
On entry, .
Constraint: .
- NE_INTERNAL_ERROR
-
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact
NAG for assistance.
See
Section 7.5 in the Introduction to the
NAG Library CL Interface for further information.
- NE_INVALID_CS
-
On entry, , and .
Constraint: .
On entry, , and .
Constraint: .
On entry, more than one element of structural Jacobian matrix has row index and column index .
Constraint: each element of structural Jacobian matrix must have a unique row and column index.
- NE_NO_LICENCE
-
Your licence key may have expired or may not have been installed correctly.
See
Section 8 in the Introduction to the
NAG Library CL Interface for further information.
- NE_PHASE
-
The problem cannot be modified right now, the solver is running.
Not applicable.
Background information to multithreading can be found in the
Multithreading documentation.
Internal changes have been made to this function as follows:
- At Mark 27.1: Previously, it was not possible to modify the nonlinear constraints once they were set or to edit the model once a solver had been called. These limitations have been removed and the associated error codes were removed.
For details of all known issues which have been reported for the
NAG Library please refer to the
Known Issues.