Note:this function usesoptional parametersto define choices in the problem specification and in the details of the algorithm. If you wish to use default settings for all of the optional parameters, you need only read Sections 1 to 10 of this document. If, however, you wish to reset some or all of the settings please refer to Section 11 for a detailed description of the algorithm and to Section 12 for a detailed description of the specification of the optional parameters.
The function may be called by the names: h02ddc or nag_mip_handle_solve_minlp.
3Description
h02ddc solves Mixed Integer Nonlinear Programming (MINLP) problems using a modified Sequential Quadratic Programming (SQP) method. The problem is assumed to be stated in the following general form:
(1)
where
is the number of decision variables, of which are continuous and are integer or binary,
is the number of the nonlinear constraints and , and are -dimensional vectors,
is the number of the quadratic constraints,
is the number of the linear constraints and is a by matrix, and are -dimensional vectors,
there are box constraints and and are -dimensional vectors.
h02ddc serves as a solver for problems stored as a handle. The handle points to an internal data structure which defines the problem and serves as a means of communication for functions in the NAG optimization modelling suite. First, the problem handle is initialized, typically by calling e04rac. Then some of the components of the model need to be defined by calling one or more of the following functions based on the component type:
When the nonlinear objective function is specified using e04rgc, objfun and objgrd will be used to compute values and gradients of the objective function. Similarly, confun and congrd will be used to compute values and gradients of the nonlinear constraint functions specified by e04rkc.
No assumptions are made regarding except that it is twice continuously differentiable with respect to continuous elements of . It is not assumed that integer variables are relaxable. In other words, problem functions are evaluated only at integer points.
Partial derivatives of and are not required for the integer variables. They can hence be omitted entirely when specifying the sparsity pattern of the derivatives in calls to e04rgc and e04rkc, respectively. Gradients with respect to integer variables are approximated by difference formulae and those provided by the user will be ignored.
Once the problem is fully described, the handle may be passed to the solver h02ddc. When the handle is no longer needed, e04rzc should be called to destroy it and deallocate the memory held within. There are other ways that the problem model can be defined and/or updated, see Section 4.1 in the E04 Chapter Introduction for more details about the NAG optimization modelling suite.
The algorithm behaviour can be modified by various optional parameters (see Section 12) which can be set by e04zmcande04zpc anytime between the initialization of the handle and a call to the solver. Once the solver has finished, options or the model may be modified for the next solve. The solver may be called repeatedly with various starting points and/or optional parameters. Option getter e04znc can be called to retrieve the current value of any option.
The optional parameter may be used to switch the problem to maximization.
Several options may have a significant impact on the performance of the solver. Even if the defaults were chosen to suit the majority of problems, it is recommended that you experiment in order to find the most suitable set of options for a particular problem, see Sections 11 and 12 for further details.
3.1Alternative solvers
h02ddc is a generic solver which can solve a great variety of integer problems, however, a dedicated solver might work better in the following case.
If is linear,
, and is absent, (1) is a mixed integer linear program (MILP) and h02bkc is recommended.
4References
Exler O, Lehmann T and Schittkowski K (2013) A comparative study of SQP-type algorithms for nonlinear and nonconvex mixed-integer optimization Mathematical Programming Computation4 383–412
Mann A (1986) GAMS/MINOS: Three examples Department of Operations Research Technical Report Stanford University
Powell M J D (1983) On the quadratic programming algorithm of Goldfarb and Idnani Report DAMTP 1983/Na 19 University of Cambridge, Cambridge
Yuan Y-x and Sun W (2006) Optimization Theory and Methods Springer–Verlag
5Arguments
1: – void *Input
On entry: the handle to the problem. It needs to be initialized (e.g., by e04rac) and to hold a problem formulation compatible with h02ddc. It must not be changed between calls to the NAG optimization modelling suite.
2: – function, supplied by the userExternal Function
objfun must calculate the value of the nonlinear objective function at a specified value of the -element vector of variables. If there is no nonlinear objective (e.g., e04recore04rfc was called to define a linear or quadratic objective function), objfun will never be called by h02ddc and may be NULLFN.
On entry: , the current number of decision variables in the model.
2: – const doubleInput
On entry: the vector of variable values at which the objective function is to be evaluated.
3: – double *Output
On exit: the value of the objective function at .
4: – Integer *Input/Output
On entry: a non-negative value.
On exit: must be set to a value describing the action to be taken by the solver on return from objfun. Specifically, if the value is negative, then the value of fx will be discarded and the solver will terminate immediately with NE_FAILED_START or NE_USER_NAN (the same will happen if fx is Infinity or NaN); otherwise, the solver will proceed normally.
5: – Nag_Comm *
Pointer to structure of type Nag_Comm; the following members are relevant to objfun.
user – double *
iuser – Integer *
p – Pointer
The type Pointer will be void *. Before calling h02ddc you may allocate memory and initialize these pointers with various quantities for use by objfun when called from h02ddc (see Section 3.1.1 in the Introduction to the NAG Library CL Interface).
3: – function, supplied by the userExternal Function
objgrd must calculate the values of the nonlinear objective function gradients at a specified value of the -element vector of variables. If there is no nonlinear objective (e.g., e04recore04rfc was called to define a linear or quadratic objective function), objgrd will never be called by h02ddc and may be NULLFN.
On entry: , the current number of decision variables in the model.
2: – const doubleInput
On entry: the vector of variable values at which the objective function gradient is to be evaluated.
3: – IntegerInput
On entry: the number of nonzero elements in the sparse gradient vector of the objective function, as was set in a previous call to e04rgc.
4: – doubleInput/Output
On entry: the elements should only be assigned and not referenced.
On exit: the values of the nonzero elements in the sparse gradient vector of the objective function, in the order specified by idxfd in a previous call to e04rgc. will store the gradient element
, where .
5: – Integer *Input/Output
On entry: a non-negative value.
On exit: must be set to a value describing the action to be taken by the solver on return from objgrd. Specifically, if the value is negative the solution of the current problem will terminate immediately with NE_FAILED_START or NE_USER_NAN (the same will happen if fdx contains Infinity, NaN, or unassigned elements); otherwise, computations will continue.
6: – Nag_Comm *
Pointer to structure of type Nag_Comm; the following members are relevant to objgrd.
user – double *
iuser – Integer *
p – Pointer
The type Pointer will be void *. Before calling h02ddc you may allocate memory and initialize these pointers with various quantities for use by objgrd when called from h02ddc (see Section 3.1.1 in the Introduction to the NAG Library CL Interface).
4: – function, supplied by the userExternal Function
confun must calculate the values of the -element vector of nonlinear constraint functions at a specified value of the -element vector of variables. If no nonlinear constraints were registered in this handle, confun will never be called by h02ddc and may be specified as NULLFN.
On entry: , the current number of decision variables in the model.
2: – const doubleInput
On entry: the vector of variable values at which the constraint functions are to be evaluated.
3: – IntegerInput
On entry: , the number of nonlinear constraints, as specified in an earlier call to e04rkc.
4: – doubleOutput
On exit: the values of the nonlinear constraint functions at .
5: – Integer *Input/Output
On entry: a non-negative value.
On exit: must be set to a value describing the action to be taken by the solver on return from confun. Specifically, if the value is negative, then the value of gx will be discarded and the solver will terminate immediately with NE_FAILED_START or NE_USER_NAN (the same will happen if gx contains Infinity or NaN); otherwise, the solver will proceed normally.
6: – Nag_Comm *
Pointer to structure of type Nag_Comm; the following members are relevant to confun.
user – double *
iuser – Integer *
p – Pointer
The type Pointer will be void *. Before calling h02ddc you may allocate memory and initialize these pointers with various quantities for use by confun when called from h02ddc (see Section 3.1.1 in the Introduction to the NAG Library CL Interface).
5: – function, supplied by the userExternal Function
congrd must calculate the nonzero values of the sparse Jacobian of the nonlinear constraint functions at a specified value of the -element vector of variables. If there are no nonlinear constraints (e.g., e04rkc was never called with the same handle or it was called with ncnln ), congrd will never be called by h02ddc and may be specified as NULLFN.
On entry: , the current number of decision variables in the model.
2: – const doubleInput
On entry: the vector of variable values at which the Jacobian of the constraint functions is to be evaluated.
3: – IntegerInput
On entry: is the number of nonzero elements in the sparse Jacobian of the constraint functions, as was set in a previous call to e04rkc.
4: – doubleInput/Output
On entry: the elements should only be assigned and not referenced.
On exit: the nonzero values of the Jacobian of the nonlinear constraints, in the order specified by irowgd and icolgd in an earlier call to e04rkc. will be the gradient
, where and .
5: – Integer *Input/Output
On entry: a non-negative value.
On exit: must be set to a value describing the action to be taken by the solver on return from congrd. Specifically, if the value is negative the solution of the current problem will terminate immediately with NE_FAILED_START or NE_USER_NAN (the same will happen if gdx contains Infinity, NaN, or unassigned elements); otherwise, computations will continue.
6: – Nag_Comm *
Pointer to structure of type Nag_Comm; the following members are relevant to congrd.
user – double *
iuser – Integer *
p – Pointer
The type Pointer will be void *. Before calling h02ddc you may allocate memory and initialize these pointers with various quantities for use by congrd when called from h02ddc (see Section 3.1.1 in the Introduction to the NAG Library CL Interface).
6: – function, supplied by the userExternal Function
monit is provided to enable you to monitor the progress of the optimization and optionally to terminate the solver early if necessary. It is invoked at the end of every th major iteration where is given by the (the default is , monit is not called).
On entry: , the current number of decision variables in the model.
2: – const doubleInput
On entry: , the values of the decision variables at the current iteration.
3: – Integer *Input/Output
On entry: a non-negative value.
On exit: must be set to a value describing the action to be taken by the solver on return from monit. Specifically, if the value is negative the solution of the current problem will terminate immediately with NE_USER_STOP; otherwise, computations will continue.
4: – const doubleInput
On entry: error measures and various indicators at the end of the current iteration as described in rinfo.
5: – const doubleInput
On entry: solver statistics at the end of the current iteration as described in stats.
6: – Nag_Comm *
Pointer to structure of type Nag_Comm; the following members are relevant to monit.
user – double *
iuser – Integer *
p – Pointer
The type Pointer will be void *. Before calling h02ddc you may allocate memory and initialize these pointers with various quantities for use by monit when called from h02ddc (see Section 3.1.1 in the Introduction to the NAG Library CL Interface).
7: – IntegerInput
On entry: , the current number of decision variables in the model.
8: – doubleInput/Output
On entry: , the initial estimates of the variables .
On exit: the final values of the variables .
9: – doubleOutput
On exit: error measures and various indicators at the end of the final iteration as given in the table below:
Objective function value .
–
Reserved for future use.
10: – doubleOutput
On exit: solver statistics at the end of the final iteration as given in the table below:
Number of function evaluations.
–
Reserved for future use.
Number of gradient evaluations.
Number of calls to the QP solver.
Reserved for future use.
Number of branch-and-bound nodes.
Total time spent in solver (including user-supplied function calls).
Total time spent evaluating objective function.
Total time spent evaluating objective gradient.
Total time spent evaluating constraint functions.
Total time spent evaluating constraint Jacobian.
Total number of inner iterations.
Total number of iterations.
–
Reserved for future use.
11: – Nag_Comm *
The NAG communication argument (see Section 3.1.1 in the Introduction to the NAG Library CL Interface).
12: – NagError *Input/Output
The NAG error argument (see Section 7 in the Introduction to the NAG Library CL Interface).
6Error 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 had an illegal value.
NE_DERIV_ERRORS
User-provided constraint gradient is likely to be incorrect.
This error indicates that the user-supplied gradient vector gdx has entries that do not match with a finite-differences approximation of it.
User-provided objective gradient is likely to be incorrect.
This error indicates that the user-supplied gradient vector fdx has entries that do not match with a finite-differences approximation of it.
NE_FAILED_START
The current starting point is unusable.
Either inform was set to a negative value within the user-supplied functions objfun, objgrd, confun or congrd, or the values returned contain Infinity, NaN, or unassigned elements.
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_INFEASIBLE
Termination at an infeasible iterate; if the problem is feasible, try a different starting value.
The solver detected an infeasible problem.
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_IMPROVEMENT
More than the maximum number of feasible steps without improvement in the objective function. If the maximum number of feasible steps is small, say less than , try increasing it. Optional parameter .;
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_NULL_ARGUMENT
The problem requires the confun values. Please provide a proper confun function.
The problem requires the congrd derivatives. Please provide a proper congrd function.
The problem requires the objfun values. Please provide a proper objfun function.
The problem requires the objgrd derivatives. Please provide a proper objgrd function.
NE_NUM_DIFFICULTIES
The optimization failed due to numerical difficulties. Set optional parameter for more information.;
NE_PHASE
The problem is already being solved.
NE_REF_MATCH
The information supplied does not match with that previously stored. On entry, must match that given during initialization of the handle, i.e., .
NE_SETUP_ERROR
This solver does not support the model defined in the handle.
NE_TIME_LIMIT
The solver terminated after the maximum time allowed was exhausted.
Maximum number of seconds exceeded. Use optional parameter to change the limit.
NE_TOO_MANY_ITER
Maximum number of iterations exceeded.
The limit was exceeded before
a solution with the requested accuracy could be found. Check the iteration log to be sure that progress was being made. If so, rerun the problem after increasing this optional parameter.
NE_USER_NAN
Invalid number detected in user-supplied function.
Either inform was set to a negative value within the user-supplied functions objfun, objgrd, confun or congrd, or the values returned contain Infinity, NaN, or unassigned elements.
NE_USER_STOP
User requested termination during a monitoring step. inform was set to a negative value in monit.
NE_ZERO_COEFF
Termination with zero integer trust region for integer variables; try a different starting value. Optional parameter .;
NE_ZERO_VARS
On entry, there are no binary or integer variables.
7Accuracy
The accuracy of the solution is determined by optional parameter .
8Parallelism and Performance
Background information to multithreading can be found in the Multithreading documentation.
h02ddc makes calls to BLAS and/or LAPACK routines, which may be threaded within the vendor library used by this implementation. Consult the documentation for the vendor library for further information.
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.
9Further Comments
9.1Description of the Printed Output
The solver can print information to give an overview of the problem and of the progress of the computation. The output may be sent to two independent streams (files) which are set by optional parameters . Optional parameters , and determine the exposed level of detail. This allows, for example, a detailed log file to be generated while the condensed information is displayed on the screen.
By default (, ), the following sections are printed to the standard output:
Header
Optional parameters list (if )
Problem statistics
Verification of derivatives (if )
Major iteration log
Summary
Solution (if )
Header
The header is a message indicating the start of the solver. It should look like:
The list shows all options of the solver, each displayed on one line. The output contains the option name, its current value and an indicator for how it was set. The options unchanged from the default setting are noted by ‘d’, options you set are noted by ‘U’, and options reset by the solver are noted by ‘S’. Note that the output format is compatible with the file format expected by e04zpc. The output might look as follows:
Begin of Options
Print File = 6 * d
Print Level = 2 * U
Print Options = Yes * U
Print Solution = All * U
Infinite Bound Size = 1.00000E+20 * d
Task = Minimize * d
Stats Time = Yes * U
Time Limit = 1.00000E+06 * d
Verify Derivatives = Yes * U
...
Misqp Improved Bounds = No * d
Misqp Integer Trust Radius = 1.00000E+01 * d
Misqp Iteration Limit = 500 * d
Misqp Maximum Restarts = 2 * d
Misqp Modify Hessian = Yes * d
Misqp Monitor Frequency = 1 * U
Misqp Node Selection = Depth First * d
Misqp Non Monotone = 10 * d
...
End of Options
Problem statistics
If , statistics on the problem are printed. It should look as follows:
Problem Statistics
No of variables 8
integer 4
inc. binary 4
free (unconstrained) 0
bounded 8
No of lin. constraints 5
No of nln. constraints 2
Objective function Nonlinear
Note: the list is showing that all four integer variables in the problem are binary..
Verification of derivatives
If , then the user-supplied nonlinear objective gradient and constraint Jacobian are individually verified. Identified discrepancies will be indicated with BAD?. The output might look as follows:
Verification of the objective gradients
Col X DX Gradient Approximation Test Itns
1 1.00E+00 2.43E-07 1.20000000E+01 1.20000000E+01 OK 1
2 1.00E+00 1.98E-07 2.00000000E+01 2.00000000E+01 OK 1
3 1.00E+00 1.54E-07 2.00000000E+01 2.00000000E+01 OK 1
All 4 objective gradients out of the 4
set in cols 1 through 8 seem to be ok.
The largest relative error was 4.61E-11 in element 1
Verification of the constraint gradients
Col X DX Row Gradient Approximation Test Itns
1 1.00E+00 2.65E-06 1 8.00000000E+00 8.00000000E+00 OK 3
2 1.00E+00 2.65E-06 1 9.00000000E+00 9.00000000E+00 OK 3
3 1.00E+00 2.65E-06 1 1.10000000E+01 1.20000000E+01 BAD? 3 Linear or odd?
4 1.00E+00 2.65E-06 1 7.00000000E+00 7.00000000E+00 OK 3
There seem to be 1 incorrect constraint gradients out of the 8
set in cols 1 through 8
The largest relative error was 8.33E-02 in row 1, column 3
Major Iteration Log
This section describes the output to unit if
. One line of information is output every major iteration. Note that the printed objective function value may be scaled if . The output might look as follows:
Output in the following order:
IT - iteration number
F - objective function value
MCV - maximum constraint violation
SIGMA - penalty parameter
IL - number inner loops
DMAXC - maximum norm of continuous step D_C
D1B - 1-norm of binary step DELTA_B
DMAXI - maximum norm of integer step D_I
IT F MCV SIGMA IL DMAXC D1B DMAXI
-----------------------------------------------------------------------
1 0.10000D+01 0.10D+01 0.10D+04 1 0.10D-02 0.20D+01 0.00D+00
2 0.13846D+00 0.15D-15 0.10D+04 1 0.67D-03 0.10D+01 0.00D+00
3 0.16239D+00 0.11D-37 0.10D+04 1 0.67D-03 0.20D+01 0.00D+00
...
Minor Iteration Log
If , further information for every minor iteration will be printed.
Summary
Once the solver finishes, a detailed summary is produced:
-------------------------------------------------------------------------------
Status: converged, an optimal solution was found
-------------------------------------------------------------------------------
Objective function value at solution: 2.92500E+00
Number of function evaluations: 118
Number of gradient evaluations: 22
Number of calls of QP solver: 35
Number of B&B nodes: 183
Is starts with a status line of the overall result, followed by the final objective value. If , it will additionally report objective and constraint function calls, the QP solver calls, and the number of branch-and-bound nodes. Optionally, if or , some statistics on timings is displayed. It might look as follows:
Timing:
Total time spent 0.19 sec
Total time in objective function 0.00 sec ( 1.5%)
Total time in objective gradient 0.00 sec ( 0.5%)
Total time in constraint functions 0.00 sec ( 2.6%)
Total time in constraint Jacobian 0.00 sec ( 0.0%)
Solution
If , the values of the primal variables x are printed. Information about the gradient of the variables is also available for continuous variables. The rightmost label indicates the integrality of the variable as specified by e04rcc; with I indicating an (non-binary) integer and B a binary variable. It might look as follows:
Primal variables:
idx Lower bound Value Upper bound Gradient
1 0.00000E+00 3.75000E-01 1.00000E+06 1.95000E+00
2 0.00000E+00 5.25000E-01 1.00000E+06 9.75000E+00
3 0.00000E+00 1.00000E+00 1.00000E+00 NaN I
4 0.00000E+00 1.00000E+00 1.00000E+00 NaN B
5 0.00000E+00 1.00000E+00 1.00000E+00 NaN B
10Example
Select a portfolio of at most assets from available with expected return , is fully invested and that minimizes
where
is a vector of proportions of selected assets
is an indicator variable that describes if an asset is in or out
Internally, all constraints in (1), except bound constraints, are rearranged into the forms below:
with equality constraints in a total of constraint functions.
The method seeks to minimize the exact penalty function:
(2)
where is adapted by the algorithm and is an -dimensional vector given by:
Successive quadratic approximations are applied under the assumption that integer variables have a smooth influence on the model functions, that is function values do not change drastically when incrementing or decrementing an integer value. In practice this requires integer variables to be ordinal not categorical. The algorithm is stabilised by a trust region method including Yuan's second order corrections, see Yuan and Sun (2006). The Hessian of the Lagrangian function is approximated by BFGS (see Section 11.4 in e04ucc) updates subject to the continuous and integer variables.
The mixed-integer quadratic programming subproblems of the SQP-trust region method are solved by a branch and cut method with continuous subproblem solutions obtained by the primal-dual method of Goldfarb and Idnani, see Powell (1983). Different strategies are available for selecting a branching variable:
Maximal fractional branching. Select an integer variable from the relaxed subproblem solution with largest distance from next integer value
Minimal fractional branching. Select an integer variable from the relaxed subproblem solution with smallest distance from next integer value
and a node from where branching, that is the generation of two new subproblems, begins:
Best of two. The optimal objective function values of the two child nodes are compared and the node with a lower value is chosen
Best of all. Select an integer variable from the relaxed subproblem solution with the smallest distance from the next integer value
Depth first. Select a child node whenever possible.
This implementation is based on the algorithm MISQP as described in Exler et al. (2013).
12Optional Parameters
Several optional parameters in h02ddc define choices in the problem specification or the algorithm logic. In order to reduce the number of formal arguments of h02ddc these optional parameters have associated default values that are appropriate for most problems. Therefore, you need only specify those optional parameters whose values are to be different from their default values.
The remainder of this section can be skipped if you wish to use the default values for all optional parameters.
The optional parameters can be changed by calling e04zmc anytime between the initialization of the handle by e04rac and the call to the solver. Modification of the arguments during intermediate monitoring stops is not allowed. Once the solver finishes, the optional parameters can be altered again for the next solve.
For each option, we give a summary line, a description of the optional parameter and details of constraints.
The summary line contains:
the keywords;
a parameter value,
where the letters , and denote options that take character, integer and real values respectively.
the default value, where the symbol is a generic notation for machine precision (see X02AJC).
All options accept the value to return single options to their default states.
Keywords and character values are case and white space insensitive.
Defaults
This special keyword may be used to reset all optional parameters to their default values. Any value given with this keyword will be ignored.
Infinite Bound Size
Default
This defines the ‘infinite’ bound in the definition of the problem constraints. Any upper bound greater than or equal to will
be regarded as (and similarly any lower bound less than or equal to will be regarded as ). Note that a modification of this optional parameter does not influence constraints which have already been defined; only the constraints formulated after the change will be affected.
Constraint: .
MISQP Branching Rule
Default
This option specifies the branching rule for branch-and-bound search.
Maximum fractional branching.
Minimum fractional branching.
MISQP Continuous Trust Radius
Default
This parameter sets the initial continuous trust region radius, ; the initial trial step for the SQP approximation must satisfy .
Constraint:
.
MISQP Descent
Default
This sets the initial descent parameter, .
Larger values of allow penalty parameter to increase faster, which can lead to faster convergence.
Constraint:
.
MISQP Descent Factor
Default
This parameter defines the factor for decreasing the internal descent parameter, , between iterations.
Constraint:
.
MISQP Feasible Steps
Default
This parameter defines the maximum number of feasible steps without improvements.
Feasibility is measured by , where is defined by the optional parameter .
Constraint:
.
MISQP Improved Bounds
Default
When , this option specifies whether to calculate improved bounds.
Constraint:
or .
MISQP Integer Trust Radius
Default
This parameter sets the initial integer trust region radius, ; the initial trial step for the SQP approximation must satisfy .
Constraint:
.
MISQP Iteration Limit
Default
This parameter sets the maximum number of iterations to be performed by h02ddc. Setting the option too low might lead to NE_TOO_MANY_ITER.
Constraint:
.
MISQP Maximum Restarts
Default
This parameter defines the maximum number of restarts that allow the mixed integer SQP algorithm to return to a better solution.
Setting a value higher than the default might lead to better results at the expense of function evaluations.
Constraint:
.
MISQP Modify Hessian
Default
This option specifies whether to modify the Hessian approximation in an attempt to get more accurate search directions. Calculation time is increased when the number of integer variables is large.
Constraint:
or .
MISQP Monitor Frequency
Default
This parameter specifies the frequency on which to call the monitor function monit.
If zero, the monitor function will not be called.
Constraint: .
MISQP Node Selection
Default
This option specifies the node selection strategy for branch-and-bound search.
Large tree search; this method is the slowest as it solves all subproblem QPs independently.
Uses warm starts and less memory.
Uses more warm starts. If warm starts are applied, they can speed up the solution of mixed integer subproblems significantly when solving almost identical QPs.
MISQP Non Monotone
Default
This parameter defines the maximum number of successive iterations considered for the non-monotone trust region algorithm, allowing the penalty function to increase.
Constraint:
.
MISQP Penalty
Default
This sets the initial penalty parameter, .
Constraint:
.
MISQP Penalty Factor
Default
This parameter defines the factor for increasing the internal penalty parameter, , when the trust regions cannot be enlarged at a trial step.
Constraint:
.
MISQP QP Accuracy
Default
This parameter defines the termination tolerance of the relaxed quadratic program subproblems.
Constraint:
.
MISQP Scale Continuous Vars
Default
This option specifies whether to internally scale continuous variable values.
Constraint:
or .
MISQP Scale Objective
Default
This option specifies whether to internally scale objective function values greater than .
Constraint:
or .
MISQP Scale Objective Bound
Default
When , absolute objective function values greater than this parameter are internally scaled.
Constraint:
.
MISQP Stop Tolerance
Default
This parameter sets the requested accuracy for determining feasible points during iterations and for halting the method when the predicted improvement in objective function is less than .
Constraint:
.
MISQP Subproblem Max Nodes
Default
This parameter defines the maximum number of branch-and-bound steps for solving the mixed integer quadratic problems.
Constraint:
.
MISQP Warm Starts
Default
This parameter defines the maximum number of warm starts within the mixed integer QP solver. See .
Constraint:
.
Print File
Default
(See Section 3.1.1 in the Introduction to the NAG Library CL Interface for further information on NAG data types.)
If , the
Nag_FileID number (as returned from x04acc, stdout as the default)
for the primary output of the solver. If , the primary output is completely turned off independently of other settings. The following information is output to the unit:
–a listing of optional parameters if set by ;
–problem statistics, the iteration log and the final status from the solver as set by ;
–the solution if set by .
Constraint: .
Print Level
Default
This parameter defines how detailed information should be printed by the solver to the primary output.
Output
No output from the solver
Only the final status and the objective value
Problem statistics, one line per iteration showing the progress of the solution with respect to the convergence measures, final status and statistics
, ,
As level and additionally inner iteration log with further details.
Constraint:
.
Print Options
Default
If , a listing of optional parameters will be printed to the primary output.
Constraint: or .
Print Solution
Default
If , the final values of the solution vector are printed on the primary and secondary outputs.
Constraint: or .
Stats Time
Default
This parameter allows you to turn on timings of various parts of the algorithm to give a better overview of where most of the time is spent. This might be helpful for a choice of different solving approaches. It is possible to choose between CPU and wall clock time. Choice is equivalent to .
Constraint: , , or .
Task
Default
This parameter specifies the required direction of the optimization. If , the objective function (if set) is ignored and the algorithm stops as soon as a feasible point is found. If no objective function is set, reverts to automatically.
Constraint: , or .
Time Limit
Default
This parameter specifies a limit in seconds that the solver can use to solve one problem. If during the convergence check this limit is exceeded, the solver will terminate with NE_TIME_LIMIT error message.
Constraint: .
Verify Derivatives
Default
This parameter specifies whether the function should perform numerical checks on the consistency of the user-supplied gradient functions objgrd and congrd. If any discrepancies are found, NE_DERIV_ERRORS is returned.
It is recommended that such checks are enabled when first developing the formulation of the problem, however, the verification process results in a significant increase in the number of the function evaluations and thus it shouldn't be used in production code.