Reference
Contents
Index
MPCC.AbstractMPCCModelMPCC.MPCCCountersMPCC.MPCCModelMetaMPCC.NLMPCCLinearOperators.reset!LinearOperators.reset!MPCC.complementarity_constrainedMPCC.consGMPCC.consG!MPCC.consG_linMPCC.consG_lin!MPCC.consG_nlnMPCC.consG_nln!MPCC.consHMPCC.consH!MPCC.consH_linMPCC.consH_lin!MPCC.consH_nlnMPCC.consH_nln!MPCC.decrement_cc!MPCC.hGprodMPCC.hGprod!MPCC.hHprodMPCC.hHprod!MPCC.hessGMPCC.hessG_coordMPCC.hessG_coord!MPCC.hessG_opMPCC.hessG_op!MPCC.hessG_structureMPCC.hessG_structure!MPCC.hessHMPCC.hessH_coordMPCC.hessH_coord!MPCC.hessH_opMPCC.hessH_op!MPCC.hessH_structureMPCC.hessH_structure!MPCC.increment_cc!MPCC.jG_op!MPCC.jGprodMPCC.jGprod!MPCC.jGprodlinMPCC.jGprodlin!MPCC.jGprodnlnMPCC.jGprodnln!MPCC.jGtprodMPCC.jGtprod!MPCC.jGtprodlinMPCC.jGtprodlin!MPCC.jGtprodnlnMPCC.jGtprodnln!MPCC.jH_op!MPCC.jHprodMPCC.jHprod!MPCC.jHprodlinMPCC.jHprodlin!MPCC.jHprodnlnMPCC.jHprodnln!MPCC.jHtprodMPCC.jHtprod!MPCC.jHtprodlinMPCC.jHtprodlin!MPCC.jHtprodnlnMPCC.jHtprodnln!MPCC.jacGMPCC.jacG_coordMPCC.jacG_coord!MPCC.jacG_lin_coordMPCC.jacG_lin_coord!MPCC.jacG_lin_opMPCC.jacG_lin_op!MPCC.jacG_lin_structureMPCC.jacG_lin_structure!MPCC.jacG_nln_coordMPCC.jacG_nln_coord!MPCC.jacG_nln_opMPCC.jacG_nln_op!MPCC.jacG_nln_structureMPCC.jacG_nln_structure!MPCC.jacG_opMPCC.jacG_structureMPCC.jacG_structure!MPCC.jacHMPCC.jacH_coordMPCC.jacH_coord!MPCC.jacH_lin_coordMPCC.jacH_lin_coord!MPCC.jacH_lin_opMPCC.jacH_lin_op!MPCC.jacH_lin_structureMPCC.jacH_lin_structure!MPCC.jacH_nln_coordMPCC.jacH_nln_coord!MPCC.jacH_nln_opMPCC.jacH_nln_op!MPCC.jacH_nln_structureMPCC.jacH_nln_structure!MPCC.jacH_opMPCC.jacH_structureMPCC.jacH_structure!MPCC.neval_consGMPCC.neval_consG_linMPCC.neval_consG_nlnMPCC.neval_consHMPCC.neval_consH_linMPCC.neval_consH_nlnMPCC.neval_hGprodMPCC.neval_hHprodMPCC.neval_hessGMPCC.neval_hessHMPCC.neval_jGprodMPCC.neval_jGprod_linMPCC.neval_jGprod_nlnMPCC.neval_jGtprodMPCC.neval_jGtprod_linMPCC.neval_jGtprod_nlnMPCC.neval_jHprodMPCC.neval_jHprod_linMPCC.neval_jHprod_nlnMPCC.neval_jHtprodMPCC.neval_jHtprod_linMPCC.neval_jHtprod_nlnMPCC.neval_jacGMPCC.neval_jacG_linMPCC.neval_jacG_nlnMPCC.neval_jacHMPCC.neval_jacH_linMPCC.neval_jacH_nlnMPCC.violMPCC.violMPCC.viol!
MPCC.AbstractMPCCModel — Type
Base type for an optimization model with degenerate constraints.
min f(x)
l <= x <= u
lb <= c(x) <= ub
0 <= G(x) _|_ H(x) >= 0MPCC.MPCCCounters — Type
MPCCCounters
Initialization: MPCCCounters()
MPCC.MPCCModelMeta — Type
A composite type that represents the main features of the optimization problem
optimize obj(x) subject to lvar ≤ x ≤ uvar lcon ≤ cons(x) ≤ ucon lcc ≤ G(x) | H(x) >= ucc
where x is an nvar-dimensional vector, obj is the real-valued objective function, cons is the vector-valued constraint function, optimize is either "minimize" or "maximize".
Here, lvar, uvar, lcon and ucon are vectors. Some of their components may be infinite to indicate that the corresponding bound or general constraint is not present.
MPCC.NLMPCC — Type
Convert an MPCCModel to an NLPModels as follows. Definit le type NLMPCC : min f(x) s.t. l <= x <= u lcon(tb) <= cnl(x) <= ucon
with
cnl(x) := c(x),G(x),H(x),G(x).*H(x)
LinearOperators.reset! — Method
reset!(nlp)Reset evaluation count in nlp
LinearOperators.reset! — Method
reset!(counters)Reset evaluation counters
MPCC.complementarity_constrained — Method
complementarity_constrained(nlp)
complementarity_constrained(meta)Returns whether the problem's constraints are all inequalities. Unconstrained problems return true.
MPCC.consG! — Method
c = consG(nlp, x, c)Evaluate the constraints of consG at x in place.
MPCC.consG — Method
c = consG(nlp, x, c)Evaluate the constraints of consG at x.
MPCC.consG_lin! — Function
c = consG_lin!(nlp, x, c)Evaluate the linear constraints at x in place.
MPCC.consG_lin — Method
c = consG_lin(nlp, x, c)Evaluate the linear constraints at x.
MPCC.consG_nln! — Function
c = consG_nln!(nlp, x, c)Evaluate the nonlinear constraints at x in place.
MPCC.consG_nln — Method
c = consG_nln(nlp, x, c)Evaluate the nonlinear constraints at x.
MPCC.consH! — Method
c = consH(nlp, x, c)Evaluate the constraints of consH at x in place.
MPCC.consH — Method
c = consH(nlp, x, c)Evaluate the constraints of consH at x.
MPCC.consH_lin! — Function
c = consH_lin!(nlp, x, c)Evaluate the linear constraints at x in place.
MPCC.consH_lin — Method
c = consH_lin(nlp, x, c)Evaluate the linear constraints at x.
MPCC.consH_nln! — Function
c = consH_nln!(nlp, x, c)Evaluate the nonlinear constraints at x in place.
MPCC.consH_nln — Method
c = consH_nln(nlp, x, c)Evaluate the nonlinear constraints at x.
MPCC.decrement_cc! — Method
decrement!(nlp, s)Decrement counter s of problem nlp.
MPCC.hGprod! — Function
Hv = hGprod!(nlp, x, y, v, Hv)Evaluate the product of the Lagrangian Hessian at (x,y) with the vector v in place.
MPCC.hGprod — Method
Hv = hGprod(nlp, x, y, v)Evaluate the product of the Lagrangian Hessian at (x,y) with the vector v.
MPCC.hHprod! — Function
Hv = hHprod!(nlp, x, y, v, Hv)Evaluate the product of the Lagrangian Hessian at (x,y) with the vector v in place.
MPCC.hHprod — Method
Hv = hHprod(nlp, x, y, v)Evaluate the product of the Lagrangian Hessian at (x,y) with the vector v.
MPCC.hessG — Method
Hx = hessG(nlp, x, y)Evaluate the Lagrangian Hessian at (x,y) as a sparse matrix. A Symmetric object wrapping the lower triangle is returned.
MPCC.hessG_coord! — Function
vals = hessG_coord!(nlp, x, y, vals)Evaluate the Lagrangian Hessian at (x,y) in sparse coordinate format, overwriting vals. Only the lower triangle is returned.
MPCC.hessG_coord — Method
vals = hessG_coord(nlp, x, y)Evaluate the Lagrangian Hessian at (x,y) in sparse coordinate format. Only the lower triangle is returned.
MPCC.hessG_op! — Method
H = hessG_op!(nlp, x, y, Hv)Return the Lagrangian Hessian at (x,y) with objective function scaled by obj_weight as a linear operator, and storing the result on Hv. The resulting object may be used as if it were a matrix, e.g., w = H * v. The vector Hv is used as preallocated storage for the operation.
MPCC.hessG_op — Method
H = hessG_op(nlp, x, y)Return the Lagrangian Hessian at (x,y) as a linear operator. The resulting object may be used as if it were a matrix, e.g., H * v.
MPCC.hessG_structure! — Function
hessG_structure!(nlp, rows, cols)Return the structure of the Lagrangian Hessian in sparse coordinate format in place.
MPCC.hessG_structure — Method
(rows,cols) = hessG_structure(nlp)Return the structure of the Lagrangian Hessian in sparse coordinate format.
MPCC.hessH — Method
Hx = hessH(nlp, x, y)Evaluate the Lagrangian Hessian at (x,y) as a sparse matrix. A Symmetric object wrapping the lower triangle is returned.
MPCC.hessH_coord! — Function
vals = hessH_coord!(nlp, x, y, vals)Evaluate the Lagrangian Hessian at (x,y) in sparse coordinate format, overwriting vals. Only the lower triangle is returned.
MPCC.hessH_coord — Method
vals = hessH_coord(nlp, x, y)Evaluate the Lagrangian Hessian at (x,y) in sparse coordinate format. Only the lower triangle is returned.
MPCC.hessH_op! — Method
H = hessH_op!(nlp, x, y, Hv)Return the Lagrangian Hessian at (x,y) with objective function scaled by obj_weight as a linear operator, and storing the result on Hv. The resulting object may be used as if it were a matrix, e.g., w = H * v. The vector Hv is used as preallocated storage for the operation.
MPCC.hessH_op — Method
H = hessH_op(nlp, x, y)Return the Lagrangian Hessian at (x,y) as a linear operator. The resulting object may be used as if it were a matrix, e.g., H * v.
MPCC.hessH_structure! — Function
hessH_structure!(nlp, rows, cols)Return the structure of the Lagrangian Hessian in sparse coordinate format in place.
MPCC.hessH_structure — Method
(rows,cols) = hessH_structure(nlp)Return the structure of the Lagrangian Hessian in sparse coordinate format.
MPCC.increment_cc! — Method
increment_cc!(nlp, s)Increment counter s of problem nlp.
MPCC.jG_op! — Method
J = jG_op!(nlp, x, Jv, Jtv)Return the Jacobian at x as a linear operator. The resulting object may be used as if it were a matrix, e.g., J * v or J' * v. The values Jv and Jtv are used as preallocated storage for the operations.
MPCC.jGprod! — Method
Jv = jGprod!(nlp, x, v, Jv)Evaluate $J(x)v$, the Jacobian-vector product at x in place.
MPCC.jGprod — Method
Jv = jGprod(nlp, x, v)Evaluate $J(x)v$, the Jacobian-vector product at x.
MPCC.jGprodlin! — Function
Jv = jGprodlin!(nlp, x, v, Jv)Evaluate $J(x)v$, the linear Jacobian-vector product at x in place.
MPCC.jGprodlin — Method
Jv = jGprodlin(nlp, x, v)Evaluate $J(x)v$, the linear Jacobian-vector product at x.
MPCC.jGprodnln! — Function
Jv = jGprodnln!(nlp, x, v, Jv)Evaluate $J(x)v$, the nonlinear Jacobian-vector product at x in place.
MPCC.jGprodnln — Method
Jv = jGprodnln(nlp, x, v)Evaluate $J(x)v$, the nonlinear Jacobian-vector product at x.
MPCC.jGtprod! — Method
Jtv = jGtprod!(nlp, x, v, Jtv)Evaluate $J(x)^Tv$, the transposed-Jacobian-vector product at x in place. If the problem has linear and nonlinear constraints, this function allocates.
MPCC.jGtprod — Method
Jtv = jGtprod(nlp, x, v)Evaluate $J(x)^Tv$, the transposed-Jacobian-vector product at x.
MPCC.jGtprodlin! — Function
Jtv = jGtprodlin!(nlp, x, v, Jtv)Evaluate $J(x)^Tv$, the linear transposed-Jacobian-vector product at x in place.
MPCC.jGtprodlin — Method
Jtv = jGtprodlin(nlp, x, v)Evaluate $J(x)^Tv$, the linear transposed-Jacobian-vector product at x.
MPCC.jGtprodnln! — Function
Jtv = jGtprodnln!(nlp, x, v, Jtv)Evaluate $J(x)^Tv$, the nonlinear transposed-Jacobian-vector product at x in place.
MPCC.jGtprodnln — Method
Jtv = jGtprodnln(nlp, x, v)Evaluate $J(x)^Tv$, the nonlinear transposed-Jacobian-vector product at x.
MPCC.jH_op! — Method
J = jH_op!(nlp, x, Jv, Jtv)Return the Jacobian at x as a linear operator. The resulting object may be used as if it were a matrix, e.g., J * v or J' * v. The values Jv and Jtv are used as preallocated storage for the operations.
MPCC.jHprod! — Method
Jv = jHprod!(nlp, x, v, Jv)Evaluate $J(x)v$, the Jacobian-vector product at x in place.
MPCC.jHprod — Method
Jv = jHprod(nlp, x, v)Evaluate $J(x)v$, the Jacobian-vector product at x.
MPCC.jHprodlin! — Function
Jv = jHprodlin!(nlp, x, v, Jv)Evaluate $J(x)v$, the linear Jacobian-vector product at x in place.
MPCC.jHprodlin — Method
Jv = jHprodlin(nlp, x, v)Evaluate $J(x)v$, the linear Jacobian-vector product at x.
MPCC.jHprodnln! — Function
Jv = jHprodnln!(nlp, x, v, Jv)Evaluate $J(x)v$, the nonlinear Jacobian-vector product at x in place.
MPCC.jHprodnln — Method
Jv = jHprodnln(nlp, x, v)Evaluate $J(x)v$, the nonlinear Jacobian-vector product at x.
MPCC.jHtprod! — Method
Jtv = jHtprod!(nlp, x, v, Jtv)Evaluate $J(x)^Tv$, the transposed-Jacobian-vector product at x in place. If the problem has linear and nonlinear constraints, this function allocates.
MPCC.jHtprod — Method
Jtv = jHtprod(nlp, x, v)Evaluate $J(x)^Tv$, the transposed-Jacobian-vector product at x.
MPCC.jHtprodlin! — Function
Jtv = jHtprodlin!(nlp, x, v, Jtv)Evaluate $J(x)^Tv$, the linear transposed-Jacobian-vector product at x in place.
MPCC.jHtprodlin — Method
Jtv = jHtprodlin(nlp, x, v)Evaluate $J(x)^Tv$, the linear transposed-Jacobian-vector product at x.
MPCC.jHtprodnln! — Function
Jtv = jHtprodnln!(nlp, x, v, Jtv)Evaluate $J(x)^Tv$, the nonlinear transposed-Jacobian-vector product at x in place.
MPCC.jHtprodnln — Method
Jtv = jHtprodnln(nlp, x, v)Evaluate $J(x)^Tv$, the nonlinear transposed-Jacobian-vector product at x.
MPCC.jacG_coord! — Method
vals = jacG_coord!(nlp, x, vals)Evaluate $J(x)$, the constraints Jacobian at x in sparse coordinate format, rewriting vals.
MPCC.jacG_coord — Method
vals = jacG_coord(nlp, x)Evaluate $J(x)$, the constraints Jacobian at x in sparse coordinate format.
MPCC.jacG_lin_coord! — Function
vals = jacG_lin_coord!(nlp, x, vals)Evaluate $J(x)$, the linear constraints Jacobian at x in sparse coordinate format, overwriting vals.
MPCC.jacG_lin_coord — Method
vals = jacG_lin_coord(nlp, x)Evaluate $J(x)$, the linear constraints Jacobian at x in sparse coordinate format.
MPCC.jacG_lin_op! — Method
J = jacG_lin_op!(nlp, x, Jv, Jtv)Return the linear Jacobian at x as a linear operator. The resulting object may be used as if it were a matrix, e.g., J * v or J' * v. The values Jv and Jtv are used as preallocated storage for the operations.
MPCC.jacG_lin_op — Method
J = jacG_lin_op(nlp, x)Return the linear Jacobian at x as a linear operator. The resulting object may be used as if it were a matrix, e.g., J * v or J' * v.
MPCC.jacG_lin_structure! — Function
jacG_lin_structure!(nlp, rows, cols)Return the structure of the linear constraints Jacobian in sparse coordinate format in place.
MPCC.jacG_lin_structure — Method
(rows,cols) = jacG_lin_structure(nlp)Return the structure of the linear constraints Jacobian in sparse coordinate format.
MPCC.jacG_nln_coord! — Function
vals = jacG_nln_coord!(nlp, x, vals)Evaluate $J(x)$, the nonlinear constraints Jacobian at x in sparse coordinate format, overwriting vals.
MPCC.jacG_nln_coord — Method
vals = jacG_nln_coord(nlp, x)Evaluate $J(x)$, the nonlinear constraints Jacobian at x in sparse coordinate format.
MPCC.jacG_nln_op! — Method
J = jacG_nln_op!(nlp, x, Jv, Jtv)Return the nonlinear Jacobian at x as a linear operator. The resulting object may be used as if it were a matrix, e.g., J * v or J' * v. The values Jv and Jtv are used as preallocated storage for the operations.
MPCC.jacG_nln_op — Method
J = jacG_nln_op(nlp, x)Return the nonlinear Jacobian at x as a linear operator. The resulting object may be used as if it were a matrix, e.g., J * v or J' * v.
MPCC.jacG_nln_structure! — Function
jacG_nln_structure!(nlp, rows, cols)Return the structure of the nonlinear constraints Jacobian in sparse coordinate format in place.
MPCC.jacG_nln_structure — Method
(rows,cols) = jacG_nln_structure(nlp)Return the structure of the nonlinear constraints Jacobian in sparse coordinate format.
MPCC.jacG_op — Method
J = jacG_op(nlp, x)Return the Jacobian at x as a linear operator. The resulting object may be used as if it were a matrix, e.g., J * v or J' * v.
MPCC.jacG_structure! — Method
jacG_structure!(nlp, rows, cols)Return the structure of the constraints Jacobian in sparse coordinate format in place.
MPCC.jacG_structure — Method
(rows,cols) = jacG_structure(nlp)Return the structure of the constraints Jacobian in sparse coordinate format.
MPCC.jacH_coord! — Method
vals = jacH_coord!(nlp, x, vals)Evaluate $J(x)$, the constraints Jacobian at x in sparse coordinate format, rewriting vals.
MPCC.jacH_coord — Method
vals = jacH_coord(nlp, x)Evaluate $J(x)$, the constraints Jacobian at x in sparse coordinate format.
MPCC.jacH_lin_coord! — Function
vals = jacH_lin_coord!(nlp, x, vals)Evaluate $J(x)$, the linear constraints Jacobian at x in sparse coordinate format, overwriting vals.
MPCC.jacH_lin_coord — Method
vals = jacH_lin_coord(nlp, x)Evaluate $J(x)$, the linear constraints Jacobian at x in sparse coordinate format.
MPCC.jacH_lin_op! — Method
J = jacH_lin_op!(nlp, x, Jv, Jtv)Return the linear Jacobian at x as a linear operator. The resulting object may be used as if it were a matrix, e.g., J * v or J' * v. The values Jv and Jtv are used as preallocated storage for the operations.
MPCC.jacH_lin_op — Method
J = jacH_lin_op(nlp, x)Return the linear Jacobian at x as a linear operator. The resulting object may be used as if it were a matrix, e.g., J * v or J' * v.
MPCC.jacH_lin_structure! — Function
jacH_lin_structure!(nlp, rows, cols)Return the structure of the linear constraints Jacobian in sparse coordinate format in place.
MPCC.jacH_lin_structure — Method
(rows,cols) = jacH_lin_structure(nlp)Return the structure of the linear constraints Jacobian in sparse coordinate format.
MPCC.jacH_nln_coord! — Function
vals = jacH_nln_coord!(nlp, x, vals)Evaluate $J(x)$, the nonlinear constraints Jacobian at x in sparse coordinate format, overwriting vals.
MPCC.jacH_nln_coord — Method
vals = jacH_nln_coord(nlp, x)Evaluate $J(x)$, the nonlinear constraints Jacobian at x in sparse coordinate format.
MPCC.jacH_nln_op! — Method
J = jacH_nln_op!(nlp, x, Jv, Jtv)Return the nonlinear Jacobian at x as a linear operator. The resulting object may be used as if it were a matrix, e.g., J * v or J' * v. The values Jv and Jtv are used as preallocated storage for the operations.
MPCC.jacH_nln_op — Method
J = jacH_nln_op(nlp, x)Return the nonlinear Jacobian at x as a linear operator. The resulting object may be used as if it were a matrix, e.g., J * v or J' * v.
MPCC.jacH_nln_structure! — Function
jacH_nln_structure!(nlp, rows, cols)Return the structure of the nonlinear constraints Jacobian in sparse coordinate format in place.
MPCC.jacH_nln_structure — Method
(rows,cols) = jacH_nln_structure(nlp)Return the structure of the nonlinear constraints Jacobian in sparse coordinate format.
MPCC.jacH_op — Method
J = jacH_op(nlp, x)Return the Jacobian at x as a linear operator. The resulting object may be used as if it were a matrix, e.g., J * v or J' * v.
MPCC.jacH_structure! — Method
jacH_structure!(nlp, rows, cols)Return the structure of the constraints Jacobian in sparse coordinate format in place.
MPCC.jacH_structure — Method
(rows,cols) = jacH_structure(nlp)Return the structure of the constraints Jacobian in sparse coordinate format.
MPCC.neval_consG — Method
neval_consG(nlp)Get the number of consG evaluations.
MPCC.neval_consG_lin — Method
neval_consG_lin(nlp)Get the number of consG evaluations.
MPCC.neval_consG_nln — Method
neval_consG_nln(nlp)Get the number of consG evaluations.
MPCC.neval_consH — Method
neval_consH(nlp)Get the number of consH evaluations.
MPCC.neval_consH_lin — Method
neval_consH_lin(nlp)Get the number of consH evaluations.
MPCC.neval_consH_nln — Method
neval_consH_nln(nlp)Get the number of consH evaluations.
MPCC.neval_hGprod — Method
neval_hGprod(nlp)Get the number of hGprod evaluations.
MPCC.neval_hHprod — Method
neval_hHprod(nlp)Get the number of hHprod evaluations.
MPCC.neval_hessG — Method
neval_hessG(nlp)Get the number of hessG evaluations.
MPCC.neval_hessH — Method
neval_hessH(nlp)Get the number of hessH evaluations.
MPCC.neval_jGprod — Method
neval_jGprod(nlp)Get the number of jGprod evaluations.
MPCC.neval_jGprod_lin — Method
neval_jGprod_lin(nlp)Get the number of jGprod evaluations.
MPCC.neval_jGprod_nln — Method
neval_jGprod_nln(nlp)Get the number of jGprod evaluations.
MPCC.neval_jGtprod — Method
neval_jGtprod(nlp)Get the number of jGtprod evaluations.
MPCC.neval_jGtprod_lin — Method
neval_jGtprod_lin(nlp)Get the number of jGtprod evaluations.
MPCC.neval_jGtprod_nln — Method
neval_jGtprod_nln(nlp)Get the number of jGtprod evaluations.
MPCC.neval_jHprod — Method
neval_jHprod(nlp)Get the number of jHprod evaluations.
MPCC.neval_jHprod_lin — Method
neval_jHprod_lin(nlp)Get the number of jHprod evaluations.
MPCC.neval_jHprod_nln — Method
neval_jHprod_nln(nlp)Get the number of jHprod evaluations.
MPCC.neval_jHtprod — Method
neval_jHtprod(nlp)Get the number of jHtprod evaluations.
MPCC.neval_jHtprod_lin — Method
neval_jHtprod_lin(nlp)Get the number of jHtprod evaluations.
MPCC.neval_jHtprod_nln — Method
neval_jHtprod_nln(nlp)Get the number of jHtprod evaluations.
MPCC.neval_jacG — Method
neval_jacG(nlp)Get the number of jacG evaluations.
MPCC.neval_jacG_lin — Method
neval_jacG_lin(nlp)Get the number of jacG evaluations.
MPCC.neval_jacG_nln — Method
neval_jacG_nln(nlp)Get the number of jacG evaluations.
MPCC.neval_jacH — Method
neval_jacH(nlp)Get the number of jacH evaluations.
MPCC.neval_jacH_lin — Method
neval_jacH_lin(nlp)Get the number of jacH evaluations.
MPCC.neval_jacH_nln — Method
neval_jacH_nln(nlp)Get the number of jacH evaluations.
MPCC.viol! — Method
c = viol!(nlp, x, c)
Return the vector of the constraints
lx <= x <= ux
lc <= c(x) <= uc,
lccG <= G(x),
lccH <= H(x),
G(x) .* H(x) <= 0