nlp

The pyomo.contrib.pynumero.interfaces.nlp module includes abstract classes to represent nonlinear programming problems. There are two classes that provide different representations for the NLP.

The first interface (NLP) presents the NLP in the following form (where all equality and inequality constraints are combined)

\[\begin{split}\min\ & f(x) \\ s.t.\ & g_L <= g(x) <= g_U \\ & x_L <= x <= x_U\end{split}\]

where: - \(x \in R^{n_x}\) are the primal variables, - \(x_L \in R^{n_x}\) are the lower bounds of the primal variables, - \(x_U \in R^{n_x}\) are the upper bounds of the primal variables, - \(g: R^{n_x} \rightarrow R^{n_c}\) are constraints (equality and inequality)

The second interface (ExtendedNLP) extends the definition above and presents the NLP in the following form where the equality and inequality constraints are separated.

\[\begin{split}\min\ & f(x) \\ s.t.\ & h(x) = 0 \\ & q_L <= q(x) <= q_U \\ & x_L <= x <= x_U\end{split}\]

where: - \(x \in R^{n_x}\) are the primal variables, - \(x_L \in R^{n_x}\) are the lower bounds of the primal variables, - \(x_U \in R^{n_x}\) are the upper bounds of the primal variables, - \(h: R^{n_x} \rightarrow R^{n_eq}\) are the equality constraints - \(q: R^{n_x} \rightarrow R^{n_ineq}\) are the inequality constraints

Note: In the case of the ExtendedNLP, it is generally assumed that both the NLP and the ExtendedNLP interfaces are supported and consistent (ExtendedNLP inherits from NLP). For example, a user should be able to call set_duals or set_duals_eq and set_duals_ineq, or mix-and-match between evaluate_jacobian or evaluate_jacobian_eq and evaluate_jacobian_ineq.

Contents

Classes

ExtendedNLP()

This interface extends the NLP interface to support a presentation of the problem that separates equality and inequality constraints

NLP()