PSQP: SQP variable metric method for general nonlinear programming problems.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public, | parameter | :: | psqp_wp | = | wp |
export the working precision |
objective function interface
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(psqp_class), | intent(inout) | :: | me | |||
| integer | :: | nf |
the number of variables |
|||
| real(kind=wp) | :: | x(nf) |
a vector of variables |
|||
| real(kind=wp) | :: | ff |
the value of the objective function |
gradient of the objective function interface
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(psqp_class), | intent(inout) | :: | me | |||
| integer | :: | nf |
the number of variables |
|||
| real(kind=wp) | :: | x(nf) |
a vector of variables |
|||
| real(kind=wp) | :: | gf(nf) |
the gradient of the objective function |
constraint function interface
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(psqp_class), | intent(inout) | :: | me | |||
| integer | :: | nf |
the number of variables |
|||
| integer | :: | kc |
the index of the constraint function |
|||
| real(kind=wp) | :: | x(nf) |
a vector of variables |
|||
| real(kind=wp) | :: | fc |
the value of the constraint function |
gradient of the constraint function interface
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(psqp_class), | intent(inout) | :: | me | |||
| integer | :: | nf |
the number of variables |
|||
| integer | :: | kc |
the index of the constraint function |
|||
| real(kind=wp) | :: | x(nf) |
a vector of variables and |
|||
| real(kind=wp) | :: | gc(nf) |
the gradient of the constraint function |
Report function to call once per iteration to report the solution.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(psqp_class), | intent(inout) | :: | me | |||
| integer, | intent(in) | :: | iter |
Iteration number |
||
| real(kind=wp), | intent(in), | dimension(:) | :: | x |
optimization variables |
|
| real(kind=wp), | intent(in) | :: | j |
Objective function value |
||
| real(kind=wp), | intent(in), | dimension(:) | :: | f |
Constraint functions |
The main PSQP class to use.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public | :: | nres | = | 0 |
number of restarts. |
|
| integer, | public | :: | ndec | = | 0 |
number of matrix decomposition. |
|
| integer, | public | :: | nrem | = | 0 |
number of constraint deletions. |
|
| integer, | public | :: | nadd | = | 0 |
number of constraint additions. |
|
| integer, | public | :: | nit | = | 0 |
number of iterations. |
|
| integer, | public | :: | nfv | = | 0 |
number of function evaluations. |
|
| integer, | public | :: | nfg | = | 0 |
number of gradient evaluations. |
|
| integer, | public | :: | nfh | = | 0 |
number of hessian evaluations. |
|
| integer, | private | :: | mtyp | = | 0 | ||
| integer, | private | :: | mode | = | 0 | ||
| integer, | private | :: | mes1 | = | 0 | ||
| integer, | private | :: | mes2 | = | 0 | ||
| real(kind=wp), | private | :: | rl | = | 0.0_wp | ||
| real(kind=wp), | private | :: | fl | = | 0.0_wp | ||
| real(kind=wp), | private | :: | ru | = | 0.0_wp | ||
| real(kind=wp), | private | :: | fu | = | 0.0_wp | ||
| real(kind=wp), | private | :: | ri | = | 0.0_wp | ||
| real(kind=wp), | private | :: | fi | = | 0.0_wp | ||
| procedure(obj_func), | private, | pointer | :: | obj | => | null() |
objective function |
| procedure(dobj_func), | private, | pointer | :: | dobj | => | null() |
gradient of the objective function |
| procedure(con_func), | private, | pointer | :: | con | => | null() |
constraint function |
| procedure(dcon_func), | private, | pointer | :: | dcon | => | null() |
gradient of the constraint function |
| procedure(report_f), | private, | pointer | :: | report | => | null() |
iteration report function |
| procedure, public :: psqpn | |
| procedure, public :: psqp | |
| procedure, private :: compute_obj_and_dobj | |
| procedure, private :: dual_range_space_quad_prog | |
| procedure, private :: ops_after_constr_deletion | |
| procedure, private :: compute_con_and_dcon | |
| procedure, private :: extended_line_search |
easy to use subroutine for general nonlinear programming problems.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(psqp_class), | intent(inout) | :: | me | |||
| integer, | intent(in) | :: | nf |
number of variables |
||
| integer, | intent(in) | :: | nb |
choice of simple bounds. |
||
| integer, | intent(in) | :: | nc |
number of general nonlinear constraints. |
||
| real(kind=wp), | intent(inout), | dimension(nf) | :: | x |
x(nf) vector of variables. |
|
| integer, | intent(in), | dimension(nf) | :: | bound_type |
ix(nf) vector containing types of bounds. |
|
| real(kind=wp), | intent(in), | dimension(nf) | :: | xl |
xl(nf) vector containing lower bounds for variables. |
|
| real(kind=wp), | intent(in), | dimension(nf) | :: | xu |
xu(nf) vector containing upper bounds for variables. |
|
| real(kind=wp), | intent(out), | dimension(nc+1) | :: | cf |
cf(nc+1) vector containing values of the constraint functions. |
|
| integer, | intent(in), | dimension(nc) | :: | constraint_type |
ic(nc) vector containing types of constraints: |
|
| real(kind=wp), | intent(in), | dimension(nc) | :: | cl |
cl(nc) vector containing lower bounds for constraint functions. |
|
| real(kind=wp), | intent(in), | dimension(nc) | :: | cu |
cu(nc) vector containing upper bounds for constraint functions. |
|
| integer, | intent(in), | dimension(6) | :: | ipar |
integer paremeters: |
|
| real(kind=wp), | intent(in), | dimension(5) | :: | rpar |
real parameters: |
|
| real(kind=wp), | intent(out) | :: | f |
value of the objective function. |
||
| real(kind=wp), | intent(out) | :: | gmax |
maximum partial derivative of the lagrangian function. |
||
| real(kind=wp), | intent(out) | :: | cmax |
maximum constraint violation. |
||
| integer, | intent(in) | :: | iprnt |
print specification: |
||
| integer, | intent(out) | :: | iterm |
variable that indicates the cause of termination. |
||
| procedure(obj_func) | :: | obj |
computation of the value of the objective function |
|||
| procedure(dobj_func) | :: | dobj |
computation of the gradient of the objective function |
|||
| procedure(con_func) | :: | con |
computation of the value of the constraint function |
|||
| procedure(dcon_func) | :: | dcon |
computation of the gradient of the constraint function |
|||
| procedure(report_f), | optional | :: | report |
iteration report function. Note: this is independent of |
recursive quadratic programming method with the bfgs variable metric update for general nonlinear programming problems.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(psqp_class), | intent(inout) | :: | me | |||
| integer | :: | nf |
number of variables. |
|||
| integer | :: | nb |
choice of simple bounds. |
|||
| integer | :: | nc |
number of linear constraints. |
|||
| real(kind=wp) | :: | x(*) |
x(nf) vector of variables. |
|||
| integer, | intent(inout) | :: | ix(*) |
ix(nf) vector containing types of bounds. |
||
| real(kind=wp) | :: | xl(*) |
xl(nf) vector containing lower bounds for variables. |
|||
| real(kind=wp) | :: | xu(*) |
xu(nf) vector containing upper bounds for variables. |
|||
| real(kind=wp) | :: | cf(*) |
cf(nc+1) vector containing values of the constraint functions. |
|||
| integer, | intent(inout) | :: | ic(*) |
ic(nc) vector containing types of constraints. |
||
| real(kind=wp) | :: | cl(*) |
cl(nc) vector containing lower bounds for constraint functions. |
|||
| real(kind=wp) | :: | cu(*) |
cu(nc) vector containing upper bounds for constraint functions. |
|||
| real(kind=wp) | :: | cg(*) |
cg(nf*nc) matrix whose columns are normals of the linear constraints. |
|||
| real(kind=wp) | :: | cfo(*) |
cfo(nc) vector containing saved values of the constraint functions. |
|||
| real(kind=wp) | :: | cfd(*) |
cfd(nc) vector containing increments of the constraint functions. |
|||
| real(kind=wp) | :: | gc(*) |
gc(nf) gradient of the selected constraint function. |
|||
| integer | :: | ica(*) |
ica(nf) vector containing indices of active constraints. |
|||
| real(kind=wp) | :: | cr(*) |
cr(nf*(nf+1)/2) triangular decomposition of kernel of the orthogonal projection. |
|||
| real(kind=wp) | :: | cz(*) |
cz(nf) vector of lagrange multipliers. |
|||
| real(kind=wp) | :: | cp(*) | ||||
| real(kind=wp) | :: | gf(*) |
gf(nf) gradient of the model function. |
|||
| real(kind=wp) | :: | g(*) |
g(nf) gradient of the objective function. |
|||
| real(kind=wp) | :: | h(*) |
h(nf*(nf+1)/2) triangular decomposition or inversion of the hessian matrix approximation. |
|||
| real(kind=wp) | :: | s(*) |
s(nf) direction vector. |
|||
| real(kind=wp) | :: | xo(*) |
xo(nf) vectors of variables difference. |
|||
| real(kind=wp) | :: | go(*) |
go(nf) gradients difference. |
|||
| real(kind=wp) | :: | xmax |
maximum stepsize. |
|||
| real(kind=wp) | :: | tolx |
tolerance for change of variables. |
|||
| real(kind=wp) | :: | tolc |
tolerance for constraint violations. |
|||
| real(kind=wp) | :: | tolg |
tolerance for the gradient of the lagrangian function. |
|||
| real(kind=wp) | :: | rpf |
penalty coefficient. |
|||
| real(kind=wp) | :: | cmax |
maximum constraint violation. |
|||
| real(kind=wp) | :: | gmax |
maximum partial derivative of the lagrangian function. |
|||
| real(kind=wp) | :: | f |
value of the objective function. |
|||
| integer | :: | mit |
maximum number of iterations. |
|||
| integer | :: | mfv |
maximum number of function evaluations. |
|||
| integer | :: | met |
variable metric update used. |
|||
| integer | :: | mec |
correction if the negative curvature occurs. |
|||
| integer | :: | iprnt |
print specification. |
|||
| integer | :: | iterm |
variable that indicates the cause of termination. |
computation of the value and the gradient of the constraint function.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(psqp_class), | intent(inout) | :: | me | |||
| integer | :: | nf |
number of variables. |
|||
| integer | :: | nc |
number of constraints. |
|||
| real(kind=wp) | :: | x(nf) |
x(nf) vector of variables. |
|||
| real(kind=wp) | :: | fc |
value of the selected constraint function. |
|||
| real(kind=wp) | :: | cf(*) |
cf(nc) vector containing values of constraint functions. |
|||
| real(kind=wp) | :: | cl(*) |
cl(nc) vector containing lower bounds for constraint functions. |
|||
| real(kind=wp) | :: | cu(*) |
cu(nc) vector containing upper bounds for constraint functions. |
|||
| integer | :: | ic(*) |
ic(nc) vector containing types of constraints. |
|||
| real(kind=wp) | :: | gc(nf) |
gc(nf) gradient of the selected constraint function. |
|||
| real(kind=wp) | :: | cg(*) |
cg(nf*nc) matrix whose columns are gradients of constraint functions. |
|||
| real(kind=wp) | :: | cmax |
maximum constraint violation. |
|||
| integer | :: | kd |
degree of required derivatives. |
|||
| integer | :: | ld |
degree of previously computed derivatives. |
computation of the value and the gradient of the objective function.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(psqp_class), | intent(inout) | :: | me | |||
| integer, | intent(in) | :: | nf |
number of variables. |
||
| real(kind=wp), | intent(in) | :: | x(nf) |
x(nf) vector of variables. |
||
| real(kind=wp), | intent(out) | :: | gf(nf) |
gf(nf) gradient of the model function. |
||
| real(kind=wp), | intent(out) | :: | g(nf) |
g(nf) gradient of the objective function. |
||
| real(kind=wp), | intent(out) | :: | ff |
value of the model function. |
||
| real(kind=wp), | intent(out) | :: | f |
value of the objective function. |
||
| integer, | intent(in) | :: | kd |
degree of required derivatives. |
||
| integer, | intent(inout) | :: | ld |
degree of previously computed derivatives. |
||
| integer, | intent(in) | :: | iext |
type of extremum. |
dual range space quadratic programming method.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(psqp_class), | intent(inout) | :: | me | |||
| integer | :: | nf |
number of variables. |
|||
| integer | :: | nc |
number of linear constraints. |
|||
| real(kind=wp) | :: | x(*) |
x(nf) vector of variables. |
|||
| integer | :: | ix(*) |
ix(nf) vector containing types of bounds. |
|||
| real(kind=wp) | :: | xl(*) |
xl(nf) vector containing lower bounds for variables. |
|||
| real(kind=wp) | :: | xu(*) |
xu(nf) vector containing upper bounds for variables. |
|||
| real(kind=wp) | :: | cf(*) |
cf(nf) vector containing values of the constraint functions. |
|||
| real(kind=wp) | :: | cfd(*) |
cfd(nc) vector containing increments of the constraint functions. |
|||
| integer | :: | ic(*) |
ic(nc) vector containing types of constraints. |
|||
| integer | :: | ica(*) |
ica(nf) vector containing indices of active constraints. |
|||
| real(kind=wp) | :: | cl(*) |
cl(nc) vector containing lower bounds for constraint functions. |
|||
| real(kind=wp) | :: | cu(*) |
cu(nc) vector containing upper bounds for constraint functions. |
|||
| real(kind=wp) | :: | cg(*) |
cg(nf*nc) matrix whose columns are normals of the linear constraints. |
|||
| real(kind=wp) | :: | cr(*) |
cr(nf*(nf+1)/2) triangular decomposition of kernel of the orthogonal projection. |
|||
| real(kind=wp) | :: | cz(*) |
cz(nf) vector of lagrange multipliers. |
|||
| real(kind=wp) | :: | g(*) |
g(nf) gradient of the lagrangian function. |
|||
| real(kind=wp) | :: | go(*) |
go(nf) saved gradient of the objective function. |
|||
| real(kind=wp) | :: | h(*) |
h(nf*(nf+1)/2) triangular decomposition or inversion of the hessian matrix approximation. |
|||
| real(kind=wp) | :: | s(*) |
s(nf) direction vector. |
|||
| integer | :: | mfp |
type of feasible point. |
|||
| integer | :: | kbf |
specification of simple bounds. |
|||
| integer | :: | kbc |
specification of linear constraints. |
|||
| integer | :: | idecf |
decomposition indicator. |
|||
| real(kind=wp) | :: | eta2 |
tolerance for positive definiteness of the hessian matrix. |
|||
| real(kind=wp) | :: | eta9 |
maximum for real numbers. |
|||
| real(kind=wp) | :: | eps7 |
tolerance for linear independence of constraints. |
|||
| real(kind=wp) | :: | eps9 |
tolerance for activity of constraints. |
|||
| real(kind=wp) | :: | umax |
maximum absolute value of a negative lagrange multiplier. |
|||
| real(kind=wp) | :: | gmax |
maximum absolute value of a partial derivative. |
|||
| integer | :: | n |
dimension of the manifold defined by active constraints. |
|||
| integer | :: | iterq |
type of feasible point. |
triangular decomposition of kernel of the general projection is updated after constraint addition.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer | :: | nf |
declared number of variables. |
|||
| integer | :: | n |
actual number of variables. |
|||
| integer | :: | ica(*) |
ica(nf) vector containing indices of active constraints. |
|||
| real(kind=wp) | :: | cg(*) |
cg(nf*nc) matrix whose columns are normals of the linear constraints. |
|||
| real(kind=wp) | :: | cr(*) |
cr(nf*(nf+1)/2) triangular decomposition of kernel of the orthogonal projection. |
|||
| real(kind=wp) | :: | h(*) |
h(nf*(nf+1)/2) triangular decomposition or inversion of the hessian matrix approximation. |
|||
| real(kind=wp) | :: | s(*) |
s(nf) auxiliary vector. |
|||
| real(kind=wp) | :: | g(*) |
g(nf) vector used in the dual range space quadratic programming method. |
|||
| real(kind=wp) | :: | eps7 |
tolerance for linear independence of constraints. |
|||
| real(kind=wp) | :: | gmax |
maximum absolute value of a partial derivative. |
|||
| real(kind=wp) | :: | umax |
maximum absolute value of a negative lagrange multiplier. |
|||
| integer | :: | idecf |
decomposition indicator. |
|||
| integer | :: | inew |
index of the new active constraint. |
|||
| integer | :: | nadd |
number of constraint additions. |
|||
| integer | :: | ier |
error indicator. |
|||
| integer | :: | job |
specification of computation. output vector g is not or is computed in case when n<=0 if job=0 or job=1 respectively. |
determination of the new active linear constraint.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer | :: | nf |
number of variables. |
|||
| integer | :: | nc |
number of constraints. |
|||
| real(kind=wp) | :: | cf(*) |
cf(nc) vector containing values of the constraint functions. |
|||
| real(kind=wp) | :: | cfd(*) |
cfd(nc) vector containing increments of the constraint functions. |
|||
| integer | :: | ic(*) |
ic(nc) vector containing types of constraints. |
|||
| real(kind=wp) | :: | cl(*) |
cl(nc) vector containing lower bounds for constraint functions. |
|||
| real(kind=wp) | :: | cu(*) |
cu(nc) vector containing upper bounds for constraint functions. |
|||
| real(kind=wp) | :: | cg(*) |
cg(nf*nc) matrix whose columns are normals of the linear constraints. |
|||
| real(kind=wp) | :: | s(*) |
s(nf) direction vector. |
|||
| real(kind=wp) | :: | eps9 |
tolerance for active constraints. |
|||
| real(kind=wp) | :: | par |
auxiliary variable. |
|||
| integer | :: | kbc |
specification of linear constraints. |
|||
| integer | :: | inew |
index of the new active constraint. |
|||
| integer | :: | knew |
signum of the new active normal. |
determination of the new active simple bound.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer | :: | nf |
declared number of variables. |
|||
| integer | :: | ix(*) |
ix(nf) vector containing types of bounds. |
|||
| real(kind=wp) | :: | xo(*) |
xo(nf) saved vector of variables. |
|||
| real(kind=wp) | :: | xl(*) |
xl(nf) vector containing lower bounds for variables. |
|||
| real(kind=wp) | :: | xu(*) |
xu(nf) vector containing upper bounds for variables. |
|||
| real(kind=wp) | :: | s(*) |
s(nf) direction vector. |
|||
| integer | :: | kbf |
specification of simple bounds. |
|||
| integer | :: | inew |
index of the new active constraint. |
|||
| integer | :: | knew |
signum of the new normal. |
|||
| real(kind=wp) | :: | eps9 |
tolerance for active constraints. |
|||
| real(kind=wp) | :: | par |
auxiliary variable. |
test on activity of a given simple bound.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | x(*) |
x(nf) vector of variables. |
||
| integer, | intent(inout) | :: | ix(*) |
ix(nf) vector containing types of bounds. |
||
| real(kind=wp), | intent(in) | :: | xl(*) |
xl(nf) vector containing lower bounds for variables. |
||
| real(kind=wp), | intent(in) | :: | xu(*) |
xu(nf) vector containing upper bounds for variables. |
||
| real(kind=wp), | intent(in) | :: | eps9 |
tolerance for active constraints. |
||
| integer, | intent(in) | :: | i |
index of tested simple bound. |
transformation of the incompatible quadratic programming subproblem.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer | :: | nc |
number of current linear constraints. |
|||
| real(kind=wp) | :: | cf(*) |
cf(nf) vector containing values of the constraint functions. |
|||
| integer | :: | ic(nc) |
ic(nc) vector containing types of constraints. |
|||
| real(kind=wp) | :: | cl(*) |
cl(nc) vector containing lower bounds for constraint functions. |
|||
| real(kind=wp) | :: | cu(*) |
cu(nc) vector containing upper bounds for constraint functions. |
|||
| integer | :: | kbc |
specification of linear constraints. |
operations after constraint deletion.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(psqp_class), | intent(inout) | :: | me | |||
| integer | :: | nf |
declared number of variables. |
|||
| integer | :: | nc |
number of constraints. |
|||
| integer | :: | ix(*) |
ix(nf) vector containing types of bounds. |
|||
| integer | :: | ia(*) |
ia(na) vector containing types of deviations. |
|||
| integer | :: | iaa(*) |
iaa(nf+1) vector containing indices of active functions. |
|||
| real(kind=wp) | :: | ar(*) |
ar((nf+1)*(nf+2)/2) triangular decomposition of kernel of the orthogonal projection. |
|||
| integer | :: | ic(*) |
ic(nc) vector containing types of constraints. |
|||
| real(kind=wp) | :: | s(*) |
s(nf+1) auxiliary vector. |
|||
| integer | :: | n |
actual number of variables. |
|||
| integer | :: | iold |
index of the old active constraint. |
|||
| integer | :: | krem |
auxiliary variable. |
|||
| integer | :: | ier |
error indicator. |
triangular decomposition of kernel of the orthogonal projection is updated after constraint deletion.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer | :: | nf |
declared number of variables. |
|||
| integer | :: | ica(*) |
ica(nf) vector containing indices of active constraints. |
|||
| real(kind=wp) | :: | cr(*) |
cr(nf*(nf+1)/2) triangular decomposition of kernel of the orthogonal projection. |
|||
| real(kind=wp) | :: | g(*) |
g(nf) auxiliary vector. |
|||
| integer | :: | n |
actual number of variables. |
|||
| integer | :: | iold |
index of the old active constraint. |
|||
| integer | :: | krem |
auxiliary variable. |
|||
| integer | :: | ier |
error indicator. |
extrapolation or interpolation for line search without directional derivatives.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp) | :: | ro |
initial value of the stepsize parameter. |
|||
| real(kind=wp) | :: | rl |
lower value of the stepsize parameter. |
|||
| real(kind=wp) | :: | ru |
upper value of the stepsize parameter. |
|||
| real(kind=wp) | :: | ri |
inner value of the stepsize parameter. |
|||
| real(kind=wp) | :: | fo |
value of the objective function for r=ro. |
|||
| real(kind=wp) | :: | fl |
value of the objective function for r=rl. |
|||
| real(kind=wp) | :: | fu |
value of the objective function for r=ru. |
|||
| real(kind=wp) | :: | fi |
value of the objective function for r=ri. |
|||
| real(kind=wp) | :: | po |
initial value of the directional derivative. |
|||
| real(kind=wp) | :: | r |
value of the stepsize parameter obtained. |
|||
| integer | :: | mode |
mode of line search. |
|||
| integer | :: | mtyp |
method selection |
|||
| integer | :: | merr |
error indicator. merr=0 for normal return. |
computation of value of the augmented lagrangian function.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | nf |
number of variables. |
||
| integer, | intent(in) | :: | n |
dimension of the constraint null space. |
||
| integer, | intent(in) | :: | nc |
number of constraints. |
||
| real(kind=wp), | intent(in) | :: | cf(*) |
cf(nc+1) vector containing values of the constraints. |
||
| integer, | intent(in) | :: | ic(*) |
ic(nc) vector containing types of constraints. |
||
| integer, | intent(in) | :: | ica(*) |
ica(nf) vector containing indices of active constraints. |
||
| real(kind=wp), | intent(in) | :: | cl(*) |
cl(nc) vector containing lower bounds for constraint functions. |
||
| real(kind=wp), | intent(in) | :: | cu(*) |
cu(nc) vector containing upper bounds for constraint functions. |
||
| real(kind=wp), | intent(in) | :: | cz(*) |
cz(nc) vector of lagrange multipliers. |
||
| real(kind=wp), | intent(in) | :: | rpf |
penalty coefficient. |
||
| real(kind=wp), | intent(out) | :: | fc |
value of the penalty term. |
||
| real(kind=wp), | intent(out) | :: | f |
value of the penalty function. |
computation of the new penalty parameters.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | nf |
declared number of variables. |
||
| integer, | intent(in) | :: | n |
actual number of variables. |
||
| integer, | intent(in) | :: | nc |
number of constraints. |
||
| integer, | intent(in) | :: | ica(*) |
vector containing indices of active constraints. |
||
| real(kind=wp), | intent(in) | :: | cz(*) |
vector of lagrange multipliers. |
||
| real(kind=wp), | intent(inout) | :: | cp(*) |
vector containing penalty parameters. |
extended line search without directional derivatives.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(psqp_class), | intent(inout) | :: | me | |||
| real(kind=wp) | :: | r |
value of the stepsize parameter. |
|||
| real(kind=wp) | :: | ro |
initial value of the stepsize parameter. |
|||
| real(kind=wp) | :: | rp |
previous value of the stepsize parameter. |
|||
| real(kind=wp) | :: | f |
value of the objective function. |
|||
| real(kind=wp) | :: | fo |
initial value of the objective function. |
|||
| real(kind=wp) | :: | fp |
previous value of the objective function. |
|||
| real(kind=wp) | :: | po |
initial value of the directional derivative. |
|||
| real(kind=wp) | :: | pp |
previous value of the directional derivative. |
|||
| real(kind=wp) | :: | fmin |
lower bound for value of the objective function. |
|||
| real(kind=wp) | :: | fmax |
upper bound for value of the objective function. |
|||
| real(kind=wp) | :: | rmin |
minimum value of the stepsize parameter |
|||
| real(kind=wp) | :: | rmax |
maximum value of the stepsize parameter |
|||
| real(kind=wp) | :: | tols |
termination tolerance for line search (in test on the change of the function value). |
|||
| integer | :: | kd |
degree of required dervatives. |
|||
| integer | :: | ld |
degree of previously computed derivatives. |
|||
| integer | :: | nit |
actual number of iterations. |
|||
| integer | :: | kit |
number of the iteration after last restart. |
|||
| integer | :: | nred |
actual number of extrapolations or interpolations. |
|||
| integer | :: | mred |
maximum number of extrapolations or interpolations. |
|||
| integer | :: | maxst |
maximum stepsize indicator. maxst=0 or maxst=1 if maximum stepsize was not or was reached. |
|||
| integer | :: | iest |
lower bound specification. iest=0 or iest=1 if lower bound is not or is given. |
|||
| integer | :: | inits |
choice of the initial stepsize. |
|||
| integer | :: | iters |
termination indicator. |
|||
| integer | :: | kters |
termination selection. |
|||
| integer | :: | mes |
method selection. |
|||
| integer | :: | isys |
control parameter. |
variable metric update of a dense symmetric positive definite matrix using the factorization b=ldtrans(l).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer | :: | n |
actual number of variables. |
|||
| real(kind=wp) | :: | h(*) |
h(m) factorization b=ldtrans(l) of a positive definite approximation of the hessian matrix. |
|||
| real(kind=wp) | :: | g(*) |
g(nf) gradient of the objective function. |
|||
| real(kind=wp) | :: | s(*) |
s(nf) auxiliary vector. |
|||
| real(kind=wp) | :: | xo(*) |
xo(nf) vectors of variables difference. |
|||
| real(kind=wp) | :: | go(*) |
go(nf) gradients difference. |
|||
| real(kind=wp) | :: | r |
value of the stepsize parameter. |
|||
| real(kind=wp) | :: | po |
old value of the directional derivative. |
|||
| integer | :: | nit |
actual number of iterations. |
|||
| integer | :: | kit |
number of the iteration after last restart. |
|||
| integer | :: | iterh |
termination indicator. |
|||
| integer | :: | met | ||||
| integer | :: | met1 |
selection of self scaling. |
|||
| integer | :: | mec |
correction if the negative curvature occurs. |
dual range space quadratic programming method for minimax approximation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | nf |
declared number of variables. |
||
| integer, | intent(inout) | :: | n |
actual number of variables. |
||
| real(kind=wp) | :: | x(*) |
x(nf) vector of variables. |
|||
| real(kind=wp) | :: | xo(*) |
xo(nf) saved vector of variables. |
|||
| integer, | intent(in) | :: | ica(*) |
ica(nf) vector containing indices of active constraints. |
||
| real(kind=wp) | :: | cg(*) |
cg(nf*nc) matrix whose columns are normals of the linear constraints. |
|||
| real(kind=wp) | :: | cz(*) |
cz(nf) vector of lagrange multipliers. |
|||
| real(kind=wp) | :: | g(*) |
g(nf) gradient of the lagrangian function. |
|||
| real(kind=wp) | :: | go(*) |
go(nf) saved gradient of the lagrangian function. |
|||
| real(kind=wp) | :: | r |
value of the stepsize parameter. |
|||
| real(kind=wp) | :: | f |
new value of the objective function. |
|||
| real(kind=wp) | :: | fo |
old value of the objective function. |
|||
| real(kind=wp) | :: | p |
new value of the directional derivative. |
|||
| real(kind=wp) | :: | po |
old value of the directional derivative. |
|||
| real(kind=wp) | :: | cmax |
value of the constraint violation. |
|||
| real(kind=wp) | :: | cmaxo |
saved value of the constraint violation. |
|||
| real(kind=wp), | intent(out) | :: | dmax |
maximum relative difference of variables. |
||
| integer | :: | kd | ||||
| integer | :: | ld | ||||
| integer | :: | iters |
termination indicator for steplength determination. iters=0 for zero step. |