NAG CL Interface
e04tcc (handle_​disable)

Settings help

CL Name Style:


1 Purpose

e04tcc is a part of the NAG optimization modelling suite and allows you to disable various components of an existing model.

2 Specification

#include <nag.h>
void  e04tcc (void *handle, const char *comp, Integer lidx, const Integer idx[], NagError *fail)
The function may be called by the names: e04tcc or nag_opt_handle_disable.

3 Description

e04tcc and e04tbc form a pair of functions which allow you to quickly remove parts of the model and add them back. This is particularly useful when a sequence of similar problems needs to be solved, to identify how a particular constraint or variable affects the solution, or to switch between previously defined constraints which are somewhat related to each other.
After the model has been fully or partially built by calling functions of the NAG optimization modelling suite, e04tcc may be used to disable some components (variables or constraints) from the model. To identify the part of the model to be disabled, the component type needs to be specified in comp together with the appropriate component indices, such as variable or linear constraint numbers, in an index set idx. e04tbc may be used to bring them back (to enable them). Note that a disabled component may still be edited but would not be automatically re-enabled; a disabled component can only be enabled by calling e04tbc. By default, all newly created components of the model are enabled. Calling this function on disabled components is not an error but has no effect.
In general, disabled components are still present in the model with respect to the numbering of the variables and constraints (e.g., disabling a variable will not renumber the remaining variables) but the solver will ignore them and work internally with a smaller model formulation. The solver will communicate with you (e.g., return results) in arrays matching the full size of the model and the elements corresponding to the disabled components will be set to NaN, which can be tested for via a call to x07abc. The effect of disabling components is described in detail as follows:
Decision variables
As a rule, a disabled variable behaves as if the existing parts of the model were defined without the variable in the first place. Matching elements in all other model components are ignored. In particular, the following applies:
  • elements in the linear or quadratic objective function corresponding to the disabled variables are ignored, as if they were set to 0;
  • the same applies to the linear and quadratic constraints as well as to the matrix inequalities, however, note that this can generate infeasible constraints (for instance, −2x+y−1 with disabled x and y is interpreted as −20−1 and thus would be infeasible);
  • the box bounds of the disabled variables are ignored;
  • if a disabled variable is present in a cone constraint and the cone constraint becomes invalid (e.g., the length of the cone is just one or the first cone variable is disabled), the whole constraint is disabled as well;
  • any callbacks for nonlinear function evaluation will have on input the full x vector, however, all disabled variables are set to NaN and the matching elements in the returned derivatives are not referenced.
An alternative approach is to fix the variable to a predefined value by changing its simple bounds using e04tdc instead of disabling it.
Linear constraints, Quadratic constraints, Second-order cones, Matrix inequalities
Disabled constraints do not restrict the feasible set, they are eliminated before the model is presented to the solver. As the constraints are not renumbered, the position for Lagrangian multipliers (u, uc, ua) is unchanged and NaNs are returned in place of disabled constraints.
Nonlinear constraints
The disabled nonlinear constraints do not affect the feasible set and their Lagrangian multipliers are returned as NaNs in their expected location. The values of the nonlinear constraints and their partial derivatives are passed to the solver via callbacks, such as, objfun and objgrd. The size of all array arguments in the callbacks remain the same, irrespective of the number of disabled constraints. On exit from the callback any elements in these arrays corresponding to the disabled constraints are not referenced.
Nonlinear residuals
The disabled residuals in the nonlinear least squares objective function rj2(x) are skipped in the sum and their values are not referenced.
See Section 4.1 in the E04 Chapter Introduction for more details about the NAG optimization modelling suite.

4 References

None.

5 Arguments

1: handle void * Input
On entry: the handle to the problem. It needs to be initialized (e.g., by e04rac) and must not be changed between calls to the NAG optimization modelling suite.
2: comp const char * Input
On entry: the type of the component of the model to be disabled. comp is case insensitive.
comp=X, VAR or VARIABLE
Decision variables x.
comp=LC or LINEAR CONSTRAINT
Linear constraints (see e04rjc).
comp=QC or QUADRATIC CONSTRAINT
Quadratic constraints (see e04rsc and e04rtc).
comp=NLC or NONLINEAR CONSTRAINT
Nonlinear constraints (see e04rkc).
comp=CN or CONE
Quadratic or rotated quadratic cones (see e04rbc).
comp=MI or MATRIX INEQUALITY
Matrix inequality constraints (see e04rnc).
comp=NLS or RESIDUAL
Nonlinear residuals ri(x) in the nonlinear least squares objective function (see e04rmc).
Constraint: comp=X, VAR, VARIABLE, LC, LINEAR CONSTRAINT, QC, QUADRATIC CONSTRAINT, NLC, NONLINEAR CONSTRAINT, CN, CONE, MI, MATRIX INEQUALITY, NLS or RESIDUAL.
3: lidx Integer Input
On entry: the number of elements in the index set.
Constraint: lidx1.
4: idx[lidx] const Integer Input
On entry: the index set of components comp to be disabled. The elements may be supplied in any order.
Constraint: 1idx[i-1]M, for i=1,2,,lidx , where M is the total number of the given components (e.g., decision variables) in the problem.
5: fail NagError * Input/Output
The NAG error argument (see Section 7 in the Introduction to the NAG Library CL Interface).

6 Error Indicators and Warnings

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 value had an illegal value.
NE_DELETED
On entry, comp=value and idx[i-1]=value.
This component has been deleted.
This error can only occur when trying to enable a cone constraint that has been deleted by setting its size to 0 with e04rbc.
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_INDICES
On entry, comp=value, i=value, idx[i-1]=value and M=value.
Constraint: 1idx[i-1]M.
NE_INT
On entry, lidx=value.
Constraint: lidx1.
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_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.
NE_STR_UNKNOWN
On entry, comp=value.
Constraint: comp=X, LC, QC, NLC, CN, MI or NLS.

7 Accuracy

Not applicable.

8 Parallelism and Performance

Background information to multithreading can be found in the Multithreading documentation.
e04tcc is threaded by NAG for parallel execution in multithreaded implementations of the NAG Library.
Please consult the X06 Chapter Introduction for information on how to control and interrogate the OpenMP environment used within this function. Please also consult the Users' Note for your implementation for any additional implementation-specific information.

9 Further Comments

None.

10 Example

This example shows how to use the NAG optimization modelling suite to edit a nonlinear least squares problem. In particular, outlier data is disabled in the NAG handle without having to redefine the full problem.
We use e04ggc to fit a nonlinear least squares problem of the form
minimize xp i=1 30 (f(ti,x)-yi)2  
where p=5, x=(a,b,c,d,ω) and f(t)=at2+bt+c+dsin(ωt) to some simulated data {(ti,yi)}.
Thirty data points were simulated using (a=0.3,b=1.0,c=0.01,d=0.2,ω=5.0) with ti uniformly spread in [-1.0,1.0] and yi=f(ti,x)+εi where εi is random noise. In addition two data points, y10 and y20, were modified to simulate the presence of outlier data.
We show how to solve three variants of the same problem:

10.1 Program Text

Program Text (e04tcce.c)

10.2 Program Data

Program Data (e04tcce.d)

10.3 Program Results

Program Results (e04tcce.r)