{ "cells": [ { "cell_type": "markdown", "id": "0bbc6dd5", "metadata": {}, "source": [ "\n", "*This notebook contains material from [CBE60499](https://ndcbe.github.io/CBE60499);\n", "content is available [on Github](git@github.com:ndcbe/CBE60499.git).*\n" ] }, { "cell_type": "markdown", "id": "e0d652d6", "metadata": {}, "source": [ "\n", "< [4.1 Convexity Revisited](https://ndcbe.github.io/CBE60499/04.01-Convexity.html) | [Contents](toc.html) | [Tag Index](tag_index.html) | [4.3 Analysis of KKT Conditions](https://ndcbe.github.io/CBE60499/04.03-KKT-Multipliers.html) >
"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 1,
"link": "[4.2 Local Optimality Conditions](https://ndcbe.github.io/CBE60499/04.02-Local-Optimality.html#4.2-Local-Optimality-Conditions)",
"section": "4.2 Local Optimality Conditions"
}
},
"source": [
"# 4.2 Local Optimality Conditions"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 1,
"link": "[4.2 Local Optimality Conditions](https://ndcbe.github.io/CBE60499/04.02-Local-Optimality.html#4.2-Local-Optimality-Conditions)",
"section": "4.2 Local Optimality Conditions"
}
},
"source": [
"**Reference** Section 4.2 in Biegler (2010)"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 2,
"link": "[4.2.1 Unconstrained Optimality Conditions](https://ndcbe.github.io/CBE60499/04.02-Local-Optimality.html#4.2.1-Unconstrained-Optimality-Conditions)",
"section": "4.2.1 Unconstrained Optimality Conditions"
}
},
"source": [
"## 4.2.1 Unconstrained Optimality Conditions"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 2,
"link": "[4.2.1 Unconstrained Optimality Conditions](https://ndcbe.github.io/CBE60499/04.02-Local-Optimality.html#4.2.1-Unconstrained-Optimality-Conditions)",
"section": "4.2.1 Unconstrained Optimality Conditions"
}
},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 2,
"link": "[4.2.2 Karush-Kuhn-Tucker (KKT) Necessary Conditions](https://ndcbe.github.io/CBE60499/04.02-Local-Optimality.html#4.2.2-Karush-Kuhn-Tucker-(KKT)-Necessary-Conditions)",
"section": "4.2.2 Karush-Kuhn-Tucker (KKT) Necessary Conditions"
}
},
"source": [
"## 4.2.2 Karush-Kuhn-Tucker (KKT) Necessary Conditions"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 2,
"link": "[4.2.2 Karush-Kuhn-Tucker (KKT) Necessary Conditions](https://ndcbe.github.io/CBE60499/04.02-Local-Optimality.html#4.2.2-Karush-Kuhn-Tucker-(KKT)-Necessary-Conditions)",
"section": "4.2.2 Karush-Kuhn-Tucker (KKT) Necessary Conditions"
}
},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 2,
"link": "[4.2.2 Karush-Kuhn-Tucker (KKT) Necessary Conditions](https://ndcbe.github.io/CBE60499/04.02-Local-Optimality.html#4.2.2-Karush-Kuhn-Tucker-(KKT)-Necessary-Conditions)",
"section": "4.2.2 Karush-Kuhn-Tucker (KKT) Necessary Conditions"
}
},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 2,
"link": "[4.2.3 Kinematic Interpretation via Example](https://ndcbe.github.io/CBE60499/04.02-Local-Optimality.html#4.2.3-Kinematic-Interpretation-via-Example)",
"section": "4.2.3 Kinematic Interpretation via Example"
}
},
"source": [
"## 4.2.3 Kinematic Interpretation via Example\n",
"\n",
"Consider the following two dimensional optimization problem:\n",
"\n",
"$$\n",
"\\begin{align} \\min_{x_1,x_2} \\quad & f(x) := x_1^2 - 4 x_1 + \\frac{3}{2} x_2^2 -7x_2 + x_1 x_2 + 9 - \\mathrm{ln}(x_1) - \\mathrm{ln}(x_2) \\\\\n",
"\\mathrm{s.t.} \\quad & g(x) := 4 - x_1 x_2 \\leq 0 \\\\\n",
" & h(x) := 2 x_1 - x_2 = 0\n",
"\\end{align}\n",
"$$"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"nbpages": {
"level": 2,
"link": "[4.2.3 Kinematic Interpretation via Example](https://ndcbe.github.io/CBE60499/04.02-Local-Optimality.html#4.2.3-Kinematic-Interpretation-via-Example)",
"section": "4.2.3 Kinematic Interpretation via Example"
}
},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.cm as cm\n",
"import matplotlib.pyplot as plt\n",
"from pyomo.environ import *"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[4.2.3.1 Define Function for Visualization](https://ndcbe.github.io/CBE60499/04.02-Local-Optimality.html#4.2.3.1-Define-Function-for-Visualization)",
"section": "4.2.3.1 Define Function for Visualization"
}
},
"source": [
"### 4.2.3.1 Define Function for Visualization"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"nbpages": {
"level": 3,
"link": "[4.2.3.1 Define Function for Visualization](https://ndcbe.github.io/CBE60499/04.02-Local-Optimality.html#4.2.3.1-Define-Function-for-Visualization)",
"section": "4.2.3.1 Define Function for Visualization"
}
},
"outputs": [],
"source": [
"## Objective function\n",
"def f(x):\n",
" return x[0]**2 - 4*x[0] + 1.5*x[1]**2 - 7*x[1] + x[0]*x[1] + 9 - np.log(x[0]) - np.log(x[1])\n",
"\n",
"## Gradient of objective f(x)\n",
"def df(x):\n",
" return np.array((2*x[0] - 4 + x[1] - 1/x[0], 3*x[1] - 7 + x[0] - 1/x[1]))\n",
"\n",
"## Gradient of inequality constraint g(x)\n",
"def dg(x):\n",
" return np.array((-x[1], -x[0]))\n",
"\n",
"## Gradient of equality constraint h(x)\n",
"def dh(x):\n",
" return np.array([2, -1])\n",
"\n",
"## Function that plots contour of objective, solution, and optionally g(x) <= 0 and h(x) = 0\n",
"def visualize(xsln,plot_g,plot_h):\n",
" ## Create contour plot\n",
" \n",
" n1 = 101\n",
" n2 = 101\n",
" x1eval = np.linspace(0.05,10,n1)\n",
" x2eval = np.linspace(0.05,10,n2)\n",
" \n",
" X, Y = np.meshgrid(x1eval, x2eval)\n",
" \n",
" Z = np.zeros([n2,n1])\n",
" \n",
" for i in range(0,n1):\n",
" for j in range(0,n2):\n",
" Z[j,i] = f((X[j,i], Y[j,i]))\n",
" \n",
" fig, ax = plt.subplots()\n",
" CS = ax.contour(X, Y, Z)\n",
" ax.clabel(CS, inline=1, fontsize=10)\n",
" \n",
" ## Plot g(x) <= 0\n",
" if(plot_g):\n",
" g_x2 = np.zeros(n1)\n",
" for i in range(0,n1):\n",
" # Inverted g(x) = 0 to calculate x2 explicitly from x1\n",
" g_x2[i] = 4 / x1eval[i]\n",
" \n",
" plt.plot(x1eval,g_x2,color=\"blue\",linestyle=\"-.\",label=\"$g(x) \\leq 0$\")\n",
" \n",
" ## Plot h(x) = 0\n",
" if(plot_h):\n",
" h_x2 = 2*x1eval\n",
" plt.plot(x1eval,h_x2,color=\"red\",linestyle=\"--\",label=\"$h(x) = 0$\")\n",
" \n",
" ## Plot solution\n",
" plt.scatter(xsln[0],xsln[1],marker=\"*\",color=\"black\",label=\"$x^{*}$\")\n",
" \n",
" ## Adjust x and y limits\n",
" plt.xlim([-1,10])\n",
" plt.ylim([-1,10])\n",
" \n",
" ## Add legend\n",
" plt.legend()\n",
" \n",
"## Function that draws gradient of f(x) and optionally g(x) and h(x)\n",
"def draw_gradients(x,with_g,with_h):\n",
" dh_x = dh(x)\n",
" \n",
" ## Draw gradient of f(x) [objective]\n",
" df_x = df(x)\n",
" plt.arrow(x[0],x[1],df_x[0],df_x[1],color=\"black\",width=0.1)\n",
" \n",
" ## Draw gradient of g(x) [inequality]\n",
" if(with_g):\n",
" dg_x = dg(x)\n",
" plt.arrow(x[0],x[1],dg_x[0],dg_x[1],color=\"blue\",width=0.1)\n",
" \n",
" ## Draw gradient of h(x) [equality]\n",
" if(with_h):\n",
" dh_x = dh(x)\n",
" plt.arrow(x[0],x[1],dh_x[0],dh_x[1],color=\"red\",width=0.1)\n",
" \n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[4.2.3.2 Define function to solve optimization problem with Pyomo](https://ndcbe.github.io/CBE60499/04.02-Local-Optimality.html#4.2.3.2-Define-function-to-solve-optimization-problem-with-Pyomo)",
"section": "4.2.3.2 Define function to solve optimization problem with Pyomo"
}
},
"source": [
"### 4.2.3.2 Define function to solve optimization problem with Pyomo"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"nbpages": {
"level": 3,
"link": "[4.2.3.2 Define function to solve optimization problem with Pyomo](https://ndcbe.github.io/CBE60499/04.02-Local-Optimality.html#4.2.3.2-Define-function-to-solve-optimization-problem-with-Pyomo)",
"section": "4.2.3.2 Define function to solve optimization problem with Pyomo"
}
},
"outputs": [],
"source": [
"def solve_opt(consider_g,consider_h):\n",
" \n",
" ## Create concrete Pyomo model\n",
" m = ConcreteModel()\n",
" \n",
" ## Declare variables with initial values\n",
" m.x1 = Var(bounds=(0,100),initialize=10)\n",
" m.x2 = Var(bounds=(0,100),initialize=10)\n",
" \n",
" ## Declare objective\n",
" m.OBJ = Objective(expr=m.x1**2 - 4*m.x1 + 1.5*m.x2**2 - 7*m.x2 + m.x1 * m.x2 + 9 - log(m.x1) - log(m.x2), sense = minimize)\n",
" \n",
" if(consider_g):\n",
" ## Add inequality constraint\n",
" m.con1 = Constraint(expr=4 - m.x1*m.x2 <= 0)\n",
" \n",
" if(consider_h):\n",
" ## Add equality constraint\n",
" m.con2 = Constraint(expr=2*m.x1 - m.x2 == 0)\n",
" \n",
" ## Specify IPOPT as solver\n",
" solver = SolverFactory('ipopt')\n",
"\n",
" ## Solve the model\n",
" results = solver.solve(m, tee = True)\n",
" \n",
" ## Return the solution\n",
" return [value(m.x1),value(m.x2)]\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[4.2.3.3 Take 1: Unconstrained](https://ndcbe.github.io/CBE60499/04.02-Local-Optimality.html#4.2.3.3-Take-1:-Unconstrained)",
"section": "4.2.3.3 Take 1: Unconstrained"
}
},
"source": [
"### 4.2.3.3 Take 1: Unconstrained"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"nbpages": {
"level": 3,
"link": "[4.2.3.3 Take 1: Unconstrained](https://ndcbe.github.io/CBE60499/04.02-Local-Optimality.html#4.2.3.3-Take-1:-Unconstrained)",
"section": "4.2.3.3 Take 1: Unconstrained"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Ipopt 3.12.10: \n",
"\n",
"******************************************************************************\n",
"This program contains Ipopt, a library for large-scale nonlinear optimization.\n",
" Ipopt is released as open source code under the Eclipse Public License (EPL).\n",
" For more information visit http://projects.coin-or.org/Ipopt\n",
"******************************************************************************\n",
"\n",
"This is Ipopt version 3.12.10, running with linear solver mumps.\n",
"NOTE: Other linear solvers might be more efficient (see Ipopt documentation).\n",
"\n",
"Number of nonzeros in equality constraint Jacobian...: 0\n",
"Number of nonzeros in inequality constraint Jacobian.: 0\n",
"Number of nonzeros in Lagrangian Hessian.............: 3\n",
"\n",
"Total number of variables............................: 2\n",
" variables with only lower bounds: 0\n",
" variables with lower and upper bounds: 2\n",
" variables with only upper bounds: 0\n",
"Total number of equality constraints.................: 0\n",
"Total number of inequality constraints...............: 0\n",
" inequality constraints with only lower bounds: 0\n",
" inequality constraints with lower and upper bounds: 0\n",
" inequality constraints with only upper bounds: 0\n",
"\n",
"iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n",
" 0 2.4439483e+02 0.00e+00 3.29e+01 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n",
" 1 -8.0094510e-01 0.00e+00 4.03e-01 -1.0 8.53e+00 - 9.05e-01 1.00e+00f 1\n",
" 2 -8.7120418e-01 0.00e+00 2.51e-03 -1.0 1.31e-01 - 1.00e+00 1.00e+00f 1\n",
" 3 -8.7421973e-01 0.00e+00 5.46e-04 -2.5 3.76e-02 - 1.00e+00 1.00e+00f 1\n",
" 4 -8.7422408e-01 0.00e+00 1.29e-06 -3.8 1.78e-03 - 1.00e+00 1.00e+00f 1\n",
" 5 -8.7422408e-01 0.00e+00 6.93e-10 -5.7 4.12e-05 - 1.00e+00 1.00e+00f 1\n",
" 6 -8.7422408e-01 0.00e+00 9.45e-14 -8.6 4.81e-07 - 1.00e+00 1.00e+00f 1\n",
"\n",
"Number of Iterations....: 6\n",
"\n",
" (scaled) (unscaled)\n",
"Objective...............: -8.7422408318635370e-01 -8.7422408318635370e-01\n",
"Dual infeasibility......: 9.4500693109869893e-14 9.4500693109869893e-14\n",
"Constraint violation....: 0.0000000000000000e+00 0.0000000000000000e+00\n",
"Complementarity.........: 2.5065634500861016e-09 2.5065634500861016e-09\n",
"Overall NLP error.......: 2.5065634500861016e-09 2.5065634500861016e-09\n",
"\n",
"\n",
"Number of objective function evaluations = 7\n",
"Number of objective gradient evaluations = 7\n",
"Number of equality constraint evaluations = 0\n",
"Number of inequality constraint evaluations = 0\n",
"Number of equality constraint Jacobian evaluations = 0\n",
"Number of inequality constraint Jacobian evaluations = 0\n",
"Number of Lagrangian Hessian evaluations = 6\n",
"Total CPU secs in IPOPT (w/o function evaluations) = 0.010\n",
"Total CPU secs in NLP function evaluations = 0.000\n",
"\n",
"EXIT: Optimal Solution Found.\n",
"\b"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}