Note:this routine 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 routine may be called by the names h02ddf or nagf_mip_handle_solve_minlp.
3Description
h02ddf 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.
h02ddf 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 routines in the NAG optimization modelling suite. First, the problem handle is initialized, typically by calling e04raf. Then some of the components of the model need to be defined by calling one or more of the following routines based on the component type:
When the nonlinear objective function is specified using e04rgf, 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 e04rkf.
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 e04rgf and e04rkf, 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 h02ddf. When the handle is no longer needed, e04rzf 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 3.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 e04zmfande04zpf 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 e04znf can be called to retrieve the current value of any option.
The optional parameter Task 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
h02ddf 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 h02bkf 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: – Type (c_ptr)Input
On entry: the handle to the problem. It needs to be initialized (e.g., by e04raf) and to hold a problem formulation compatible with h02ddf. It must not be changed between calls to the NAG optimization modelling suite.
2: – Subroutine, supplied by the NAG Library or the user.External Procedure
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., e04refore04rff was called to define a linear or quadratic objective function), objfun will never be called by h02ddf and objfun may be the dummy routine h02ddv. (h02ddv is included in the NAG Library.)
On entry: , the current number of decision variables in the model.
2: – Real (Kind=nag_wp) arrayInput
On entry: the vector of variable values at which the objective function is to be evaluated.
3: – Real (Kind=nag_wp)Output
On exit: the value of the objective function at .
4: – IntegerInput/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 or (the same will happen if fx is Infinity or NaN); otherwise, the solver will proceed normally.
5: – Integer arrayUser Workspace
6: – Real (Kind=nag_wp) arrayUser Workspace
7: – Type (c_ptr)User Workspace
objfun is called with the arguments iuser, ruser and cpuser as supplied to h02ddf. You should use the arrays iuser and ruser, and the data handle cpuser to supply information to objfun.
objfun must either be a module subprogram USEd by, or declared as EXTERNAL in, the (sub)program from which h02ddf is called. Arguments denoted as Input must not be changed by this procedure.
3: – Subroutine, supplied by the NAG Library or the user.External Procedure
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., e04refore04rff was called to define a linear or quadratic objective function), objgrd will never be called by h02ddf and objgrd may be the dummy subroutine h02ddw. (h02ddw is included in the NAG Library.)
On entry: , the current number of decision variables in the model.
2: – Real (Kind=nag_wp) arrayInput
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 e04rgf.
4: – Real (Kind=nag_wp) arrayInput/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 e04rgf. will store the gradient element
, where .
5: – IntegerInput/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 or (the same will happen if fdx contains Infinity, NaN, or unassigned elements); otherwise, computations will continue.
6: – Integer arrayUser Workspace
7: – Real (Kind=nag_wp) arrayUser Workspace
8: – Type (c_ptr)User Workspace
objgrd is called with the arguments iuser, ruser and cpuser as supplied to h02ddf. You should use the arrays iuser and ruser, and the data handle cpuser to supply information to objgrd.
objgrd must either be a module subprogram USEd by, or declared as EXTERNAL in, the (sub)program from which h02ddf is called. Arguments denoted as Input must not be changed by this procedure.
4: – Subroutine, supplied by the NAG Library or the user.External Procedure
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 h02ddf and confun may be the dummy subroutine h02ddx. (h02ddx is included in the NAG Library.)
On entry: , the current number of decision variables in the model.
2: – Real (Kind=nag_wp) arrayInput
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 e04rkf.
4: – Real (Kind=nag_wp) arrayOutput
On exit: the values of the nonlinear constraint functions at .
5: – IntegerInput/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 or (the same will happen if gx contains Infinity or NaN); otherwise, the solver will proceed normally.
6: – Integer arrayUser Workspace
7: – Real (Kind=nag_wp) arrayUser Workspace
8: – Type (c_ptr)User Workspace
confun is called with the arguments iuser, ruser and cpuser as supplied to h02ddf. You should use the arrays iuser and ruser, and the data handle cpuser to supply information to confun.
confun must either be a module subprogram USEd by, or declared as EXTERNAL in, the (sub)program from which h02ddf is called. Arguments denoted as Input must not be changed by this procedure.
5: – Subroutine, supplied by the NAG Library or the user.External Procedure
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., e04rkf was never called with the same handle or it was called with ncnln ), congrd will never be called by h02ddf and congrd may be the dummy subroutine h02ddy. (h02ddy is included in the NAG Library.)
On entry: , the current number of decision variables in the model.
2: – Real (Kind=nag_wp) arrayInput
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 e04rkf.
4: – Real (Kind=nag_wp) arrayInput/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 e04rkf. will be the gradient
, where and .
5: – IntegerInput/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 or (the same will happen if gdx contains Infinity, NaN, or unassigned elements); otherwise, computations will continue.
6: – Integer arrayUser Workspace
7: – Real (Kind=nag_wp) arrayUser Workspace
8: – Type (c_ptr)User Workspace
congrd is called with the arguments iuser, ruser and cpuser as supplied to h02ddf. You should use the arrays iuser and ruser, and the data handle cpuser to supply information to congrd.
congrd must either be a module subprogram USEd by, or declared as EXTERNAL in, the (sub)program from which h02ddf is called. Arguments denoted as Input must not be changed by this procedure.
6: – Subroutine, supplied by the NAG Library or the user.External Procedure
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 MISQP Monitor Frequency (the default is , monit is not called).
monit may be the dummy subroutine h02ddu included in the NAG Library.
On entry: , the current number of decision variables in the model.
2: – Real (Kind=nag_wp) arrayInput
On entry: , the values of the decision variables at the current iteration.
3: – IntegerInput/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 ; otherwise, computations will continue.
4: – Real (Kind=nag_wp) arrayInput
On entry: error measures and various indicators at the end of the current iteration as described in rinfo.
5: – Real (Kind=nag_wp) arrayInput
On entry: solver statistics at the end of the current iteration as described in stats.
6: – Integer arrayUser Workspace
7: – Real (Kind=nag_wp) arrayUser Workspace
8: – Type (c_ptr)User Workspace
monit is called with the arguments iuser, ruser and cpuser as supplied to h02ddf. You should use the arrays iuser and ruser, and the data handle cpuser to supply information to monit.
monit must either be a module subprogram USEd by, or declared as EXTERNAL in, the (sub)program from which h02ddf is called. Arguments denoted as Input must not be changed by this procedure.
7: – IntegerInput
On entry: , the current number of decision variables in the model.
8: – Real (Kind=nag_wp) arrayInput/Output
On entry: , the initial estimates of the variables .
On exit: the final values of the variables .
9: – Real (Kind=nag_wp) arrayOutput
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: – Real (Kind=nag_wp) arrayOutput
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: – Integer arrayUser Workspace
12: – Real (Kind=nag_wp) arrayUser Workspace
13: – Type (c_ptr)User Workspace
iuser, ruser and cpuser are not used by h02ddf, but are passed directly to objfun, objgrd, confun, congrd and monit and may be used to pass information to these routines. If you do not need to reference cpuser, it should be initialized to c_null_ptr.
14: – IntegerInput/Output
On entry: ifail must be set to , or to set behaviour on detection of an error; these values have no effect when no error is detected.
A value of causes the printing of an error message and program execution will be halted; otherwise program execution continues. A value of means that an error message is printed while a value of means that it is not.
If halting is not appropriate, the value or is recommended. If message printing is undesirable, then the value is recommended. Otherwise, the value is recommended since useful values can be provided in some output arguments even when on exit. When the value or is used it is essential to test the value of ifail on exit.
On exit: unless the routine detects an error or a warning has been flagged (see Section 6).
6Error Indicators and Warnings
If on entry or , explanatory error messages are output on the current error message unit (as defined by x04aaf).
Errors or warnings detected by the routine:
Note: in some cases h02ddf may return useful information.
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.
The problem is already being solved.
This solver does not support the model defined in the handle.
The information supplied does not match with that previously stored. On entry, must match that given during initialization of the handle, i.e., .
The dummy confun routine was called but the problem requires these values. Please provide a proper confun routine.
The dummy congrd routine was called but the problem requires these derivatives. Please provide a proper congrd routine.
The dummy objfun routine was called but the problem requires these values. Please provide a proper objfun routine.
The dummy objgrd routine was called but the problem requires these derivatives. Please provide a proper objgrd routine.
On entry, there are no binary or integer variables.
Termination with zero integer trust region for integer variables; try a different starting value. Optional parameter .;
User requested termination during a monitoring step. inform was set to a negative value in monit.
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.
Maximum number of iterations exceeded.
The MISQP Iteration Limit 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.
The solver terminated after the maximum time allowed was exhausted.
Maximum number of seconds exceeded. Use optional parameter Time Limit to change the limit.
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 .;
The optimization failed due to numerical difficulties. Set optional parameter for more information.;
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.
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.
Termination at an infeasible iterate; if the problem is feasible, try a different starting value.
The solver detected an infeasible problem.
An unexpected error has been triggered by this routine. Please
contact NAG.
See Section 7 in the Introduction to the NAG Library FL Interface for further information.
Your licence key may have expired or may not have been installed correctly.
See Section 8 in the Introduction to the NAG Library FL Interface for further information.
Dynamic memory allocation failed.
See Section 9 in the Introduction to the NAG Library FL Interface for further information.
7Accuracy
The accuracy of the solution is determined by optional parameter MISQP Stop Tolerance.
8Parallelism and Performance
Background information to multithreading can be found in the Multithreading documentation.
h02ddf 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 routine. 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 Print File. Optional parameters Print Level, Print Solution and Print Options 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 e04zpf. 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 Print File 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 e04rcf; 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 e04ucf/e04uca) 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 h02ddf define choices in the problem specification or the algorithm logic. In order to reduce the number of formal arguments of h02ddf 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 e04zmf anytime between the initialization of the handle by e04raf 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 x02ajf).
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 MISQP Stop Tolerance.
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 h02ddf. Setting the option too low might lead to .
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 routine monit.
If zero, the monitor routine 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 MISQP Scale Objective Bound.
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 MISQP Stop Tolerance.
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 MISQP Node Selection.
Constraint:
.
Print File
Default
If , the
unit number
for the primary output of the solver. If , the primary output is completely turned off independently of other settings. The default value is the advisory message unit number as defined by x04abf at the time of the optional parameters initialization, e.g., at the initialization of the handle. The following information is output to the unit:
–a listing of optional parameters if set by Print Options;
–problem statistics, the iteration log and the final status from the solver as set by Print Level;
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, Task 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 error message.
Constraint: .
Verify Derivatives
Default
This parameter specifies whether the routine should perform numerical checks on the consistency of the user-supplied gradient functions objgrd and congrd. If any discrepancies are found, 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.