<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://optimization.cbe.cornell.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Btantisujjatham</id>
	<title>Cornell University Computational Optimization Open Textbook - Optimization Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://optimization.cbe.cornell.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Btantisujjatham"/>
	<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Special:Contributions/Btantisujjatham"/>
	<updated>2026-04-30T21:39:25Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Sequential_quadratic_programming&amp;diff=6667</id>
		<title>Sequential quadratic programming</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Sequential_quadratic_programming&amp;diff=6667"/>
		<updated>2022-04-01T15:42:32Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This web page is a duplicate of https://optimization.mccormick.northwestern.edu/index.php/Sequential_quadratic_programming&lt;br /&gt;
&lt;br /&gt;
Authored by: Ben Goodman (ChE 345 Spring 2016) &amp;lt;br/&amp;gt;&lt;br /&gt;
Steward: Dajun Yue and Fenqi You&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Sequential quadratic programming (SQP) is a class of algorithms for solving non-linear optimization problems (NLP) in the real world. It is powerful enough for real problems because it can handle any degree of non-linearity including non-linearity in the constraints. The main disadvantage is that the method incorporates several derivatives, which likely need to be worked analytically in advance of iterating to a solution, so SQP becomes quite cumbersome for large problems with many variables or constraints. The method dates back to 1963 and was developed and refined in the 1970&#039;s .[1] SQP combines two fundamental algorithms for solving non-linear optimization problems: an active set method and Newton’s method, both of which are explained briefly below. Previous exposure to the component methods as well as to Lagrangian multipliers and Karush-Kuhn-Tucker (KKT) conditions is helpful in understanding SQP. The abstracted, general problem below will be used for the remainder of this page to explain and discuss SQP:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \text{min f(x)} &amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \text{s.t. h(x) = 0} &amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \text{and g(x)} \le 0 &amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
with f(x), h(x), and g(x) each potentially non-linear. &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is potentially a vector of many variables for the optimization, in which case h(x) and g(x) are systems.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Background: Prerequisite Methods=&lt;br /&gt;
==Karush-Kuhn-Tucker (KKT) Conditions and the Lagrangian Function==&lt;br /&gt;
The Lagrangian function combines all the information about the problem into one function using Lagrangian multipliers &amp;lt;math&amp;gt;\lambda&amp;lt;/math&amp;gt; for equality constraints and &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt; for inequality constraints:&lt;br /&gt;
&amp;lt;math&amp;gt;L(x,\lambda,\mu)&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\text{ = f(x) +}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\sum_i&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\lambda_i h_i(x)+&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\sum_i&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\mu_i g_i(x)&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
A single function can be optimized by finding critical points where the gradient is zero. This procedure now includes &amp;lt;math&amp;gt;\lambda&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt; as variables (which are vectors for multi-constraint NLP). The system formed from this gradient is given the label KKT conditions: &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\nabla L =&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\begin{bmatrix} \frac{dL}{dx} \\ \frac{dL}{d\lambda} \\ \frac{dL}{d\mu} \end{bmatrix} =&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{bmatrix} \nabla f + \lambda \nabla h + \mu \nabla g^* \\ h \\ g^* \end{bmatrix} &amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;=0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
The second KKT condition is merely feasibility; h(x) were constrained to zero in the original NLP. The third KKT condition is a bit trickier in that only the set of active inequality constraints need satisfy this equality, the active set being denoted by &amp;lt;math&amp;gt;g^*&amp;lt;/math&amp;gt;. Inequality constraints that are nowhere near the optimal solution are inconsequential, but constraints that actively participate in determining the optimal solution will be at their limit of zero, and thus the third KKT condition holds. Ultimately, the Lagrangian multipliers describe the change in the objective function with respect to a change in a constraint, so &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt; is zero for inactive constraints, so those inactive constraints can be considered removed from the Lagrangian function before the gradient is even taken. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==The Active Set Method and its Limitations==&lt;br /&gt;
The active set method solves the KKT conditions using guess and check to find critical points. Guessing that every inequality constraints is inactive is conventionally the first step. After solving the remaining system for &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, feasibility can be checked. If any constraints are violated, they should be considered active in the next iteration, and if any multipliers are found to be negative, their constraints should be considered inactive in the next iteration. Efficient convergence and potentially large systems of equations are of some concern, but the main limitation of the active set method is that many of the derivative expressions in the KKT conditions could still be highly non-linear and thus difficult to solve. Indeed, only quadratic problems seem reasonable to tackle with the active set method because the KKT conditions are linear. Sequential Quadratic Programming addresses this key limitation by incorporating a means of handling highly non-linear functions: Newton&#039;s Method.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Newton&#039;s Method==&lt;br /&gt;
The main idea behind Newton&#039;s Method is to improve a guess in proportion to how quickly the function is changing at the guess and inversely proportional to how the function is accelerating at the guess. Walking through a few extreme scenarios makes this approach more intuitive: a long, steep incline in a function will not be close to a critical point, so the improvement should be large, and a shallow incline that is rapidly expiring is likely to be near a critical point, so the improvement should be small. The iterations converge to critical values of any function &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; with improvement steps that follow the form below: &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;x_{k+1} =&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt; x_k - &amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\frac{\nabla f}{\nabla^2 f} &amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
The negative sign is important. Near minimums, a positive gradient should decrease the guess and vice versa, and the divergence is positive. Near maximums, a positive gradient should increase the guess and vice versa, but the divergence is negative. This sign convention also prevents the algorithm from escaping a single convex or concave region; the improvement will reverse direction if it overshoots. This is an important consideration in non-convex problems with multiple local maximums and minimums. Newton&#039;s method will find the critical point closest to the original guess. Incorporating Newton&#039;s Method into the active set method will transform the iteration above into a matrix equation. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=The SQP Algorithm=   &lt;br /&gt;
Critical points of the objective function will also be critical points of the Lagrangian function and vice versa because the Lagrangian function is equal to the objective function at a KKT point; all constraints are either equal to zero or inactive. The algorithm is thus simply iterating Newton&#039;s method to find critical points of the Lagrangian function. Since the Lagrangian multipliers are additional variables, the iteration forms a system:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{bmatrix} x_{k+1} \\ \lambda_{k+1} \\ \mu_{k+1} \end{bmatrix} =&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{bmatrix} x_{k} \\ \lambda_{k} \\ \mu_{k} \end{bmatrix} -&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt; (\nabla^2 L_k)^{-1} \nabla L_k&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recall: &amp;lt;math&amp;gt;\nabla L =&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\begin{bmatrix} \frac{dL}{dx} \\ \frac{dL}{d\lambda} \\ \frac{dL}{d\mu} \end{bmatrix} =&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{bmatrix} \nabla f + \lambda \nabla h + \mu \nabla g^* \\ h \\ g^* \end{bmatrix} &amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Then &amp;lt;math&amp;gt;\nabla^2 L = &amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\begin{bmatrix} \nabla_{xx}^2 L &amp;amp; \nabla h &amp;amp; \nabla g \\ \nabla h &amp;amp; 0 &amp;amp; 0 \\ \nabla g &amp;amp; 0 &amp;amp; 0 \end{bmatrix} &amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Unlike the active set method, the need to ever solve a system of non-linear equations has been entirely eliminated in SQP, no matter how non-linear the objective and constraints. Theoretically, If the derivative expressions above can be formulated analytically then coded, software could iterate very quickly because the system doesn&#039;t change. In practice, however, it is likely that the divergence will not be an invertible matrix because variables are likely to be linearly bound from above and below. The improvement direction &amp;quot;p&amp;quot; for the Newton&#039;s Method iterations is thus typically found in a more indirect fashion: with a quadratic minimization sub-problem that is solved using quadratic algorithms. The subproblem is derived as follows:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; p = \frac{\nabla L}{\nabla^2 L} = \frac{(\nabla L)p}{(\nabla^2 L)p}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Since p is an incremental change to the objective function, this equation then resembles a two-term Taylor Series for the derivative of the objective function, which shows that a Taylor expansion with the increment p as a variable is equivalent to a Newton iteration. Decomposing the different equations within this system and cutting the second order term in half to match Taylor Series concepts, a minimization sub-problem can be obtained. This problem is quadratic and thus must be solved with non-linear methods, which once again introduces the need to solve a non-linear problem into the algorithm, but this predictable sub-problem with one variable is much easier to tackle than the parent problem. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\text{min(p)   } f_k(x) + \nabla f_k^T p + \frac{1}{2}p^T\nabla_{xx}^2L_k p&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\text{s.t.     }  \nabla h_k p + h_k = 0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\text{ and     } \nabla g_k p + g_k = 0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Example Problem==&lt;br /&gt;
[[File:Wiki_Inspection.jpg|frame|Figure 1: Solution of Example Problem by Inspection.&amp;lt;span style=&amp;quot;font-size: 12pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \text{ Max Z = sin(u)cos(v) + cos(u)sin(v)}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \text{ s.t.  } 0 \le \text{(u+v)} \le \pi&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \text{       } u = v^3 &amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example problem was chosen for being highly non linear but also easy to solve by inspection as a reference. The objective function Z is a trigonometric identity: &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \text{ sin(u)cos(v) + cos(u)sin(v) = sin(u+v)}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
The first constraint then just restricts the feasible zone to the first half of a period of the sine function, making the problem convex. The maximum of the sine function within this region occurs at &amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt;, as shown in Figure 1. The last constraint then makes the problem easy to solve algebraically: &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; u + v = \frac{\pi}{2}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; u = v^3 &amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;v^3 + v = \frac{\pi}{2}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;v = 0.883&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u = v^3 = 0.688&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Now, the problem will be solved using the sequential quadratic programming algorithm. The Lagrangian funtion with its gradient and divergence are as follows: &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; L = sin(u)cos(v) + cos(u)sin(v) + \lambda_1 (u - v^3) + \mu_1 ( -u - v) + \mu_2 (u + v - \pi)&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\nabla L =&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\begin{bmatrix} \frac{dL}{du} \\ \frac{dL}{dv} \\ \frac{dL}{d\lambda_1} \\ \frac{dL}{d\mu_1} \\ \frac{dL}{d\mu_2} \end{bmatrix} =&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{bmatrix} cos(v)cos(u) - sin(u)sin(v) + \lambda_1 - \mu_1 + \mu_2 \\ cos(v)cos(u) - sin(u)sin(v) - 3\lambda_1v^2 - \mu_1 + \mu_2 \\ u - v^3 \\ -u - v \\ u + v - \pi \end{bmatrix} &amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\nabla^2 L = &amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\begin{bmatrix} -Z &amp;amp; -Z &amp;amp; 1 &amp;amp; -1 &amp;amp; 1 \\ -Z &amp;amp; -(Z + 6\lambda_1v) &amp;amp; -3v^2 &amp;amp; -1 &amp;amp; 1 \\ 1 &amp;amp; -3v^2 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 \\ -1 &amp;amp; -1 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 \\ 1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 \end{bmatrix} &amp;lt;/math&amp;gt; &lt;br /&gt;
with &amp;lt;math&amp;gt;Z = sin(u)cos(v) + cos(u)sin(v)&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Code_for_Wiki2.JPG|frame|Figure 2: MATLAB program for performing sequential Newton steps on quadratic subproblem.&amp;lt;span style=&amp;quot;font-size: 12pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
The first important limitation in using SQP is now apparent: the divergence matrix is not invertible because it is not full rank. We will switch to the quadratic minimization sub-problem above, but even with this alternate framework, the gradient of the constraints must be full rank. This can be handled for now by artificially constraining the problem a bit further so that the derivatives of the inequality constraints are not linearly dependent. This can be accomplished through a small modification to the &amp;lt;math&amp;gt;\mu_2&amp;lt;/math&amp;gt; constraint. &amp;lt;br/&amp;gt;&lt;br /&gt;
If      &amp;lt;math&amp;gt; u + v \le \pi&amp;lt;/math&amp;gt;,         then it is also true that        &amp;lt;math&amp;gt; u + v + exp(-7u) \le \pi&amp;lt;/math&amp;gt;   &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
The addition to the left-hand-side is relatively close to zero for the range of possible values of &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, so the feasible region has not changed much. This complication is certainly annoying, however, for a problem that&#039;s easily solved by inspection. It illustrates that SQP is truly best for problems with highly non-linear objectives and constraints. Now, the problem is ready to be solved. The MATLAB code in figure two was implemented, using the function fmincon to solve the minimization subproblems. fmincon is itself an SQP piece of software. In each step, the incumbent guess is plugged into the gradient, hessian, and constraint arrays, which then become parameters for the minimization problem. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
SQP is powerful enough to be used in commercial software but also burdened by some intricacy. In addition to the complication from needing full-rank constraint gradients, the divergence matrix can be very difficult or laborious to assemble analytically. Commercial SQP packages include checks for the feasibility of the sub-problem in order to account for rank deficiencies. In addition to fmincon, SNOPT and FILTERSQP are two other commercial SQP packages, and each uses a different non-linear method to solve the quadratic subproblem.[1] [https://optimization.mccormick.northwestern.edu/index.php/Line_search_methods Line search methods] and [https://optimization.mccormick.northwestern.edu/index.php/Trust-region_methods trust-region methods] are trusted options for this step, and sub-gradient methods have also been proposed. The other common modification to SQP (ubiquitous to commercial packages) is to invoke [https://optimization.mccormick.northwestern.edu/index.php/Quasi-Newton_methods quasi-Newton methods] in order to avoid computing the Hessian entirely. SQP is thus very much a family of algorithms rather than a stand-alone tool for optimization. At its core, it is a method for turning large, very non-linear problems into a sequence of small quadratic problems to reduce the computational expense of the problem.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
[1] Nocedal, J. and Wright, S. Numerical Optimization, 2nd. ed., Ch. 18. Springer, 2006. &amp;lt;br/&amp;gt;&lt;br /&gt;
[2] You, Fengqi. Lecture Notes, Chemical Engineering 345 Optimization. Northwestern University, 2015. &amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Code_for_Wiki2.JPG&amp;diff=6666</id>
		<title>File:Code for Wiki2.JPG</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Code_for_Wiki2.JPG&amp;diff=6666"/>
		<updated>2022-04-01T15:42:14Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Branch_and_cut_for_MINLP&amp;diff=6665</id>
		<title>Branch and cut for MINLP</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Branch_and_cut_for_MINLP&amp;diff=6665"/>
		<updated>2022-04-01T15:41:12Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This web page is a duplicate of https://optimization.mccormick.northwestern.edu/index.php/Branch_and_cut_for_MINLP&lt;br /&gt;
&lt;br /&gt;
Author: Pear Dhiantravan (ChE 345 Spring 2015) &lt;br /&gt;
&lt;br /&gt;
Stewards: Dajun Yue, Fengqi You &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Branch and Cut is a method for solving Mixed Integer Non Linear Programming (MINLP) models. There are variations on the exact steps of the algorithm, but the original method developed by Ioannis Akrotirianakis, Istvan Maros, and Berc Rustem in 2000 utilizes the general organization of the Branch and Bound method with the iterative nature of the Outer Approximation.&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; The addition of Gomory mixed integer cuts as an alternative to branching improves the efficiency of the overall branch and bound algorithm by reducing the number of nodes and Non-Linear Programming (NLP) problems required to solve the MINLP.&lt;br /&gt;
&lt;br /&gt;
=Introduction= &lt;br /&gt;
The organization of general design problems into programming models allows for the defining and finding of their (global) optimal solution. MINLP models represent problems as a sets of continuous variables with binary integer variables. The continuous variables are restricted to defined constraints, and the binary variables represent whether or not a design choice is made. &lt;br /&gt;
&lt;br /&gt;
===History=== &lt;br /&gt;
[[File:B&amp;amp;C_minlp.JPG|500px|thumb|Branch and Bound with Gomory Cuts and the iterative nature of Outer Approximations &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Mixed integer programming problems were explored most generally in the later half of the 1900s. Ignacio Grossmann published many papers on mixed integer linear programing problems and their solutions and applications in the late 1980s through the 1990s. In those decades, research was focused largely on improving the [https://optimization.mccormick.northwestern.edu/index.php/Branch_and_bound_%28BB%29 Branch and Bound] method to achieve greater time efficiency. The branch and bound method was developed by A.H. Land and A.G. Doig in 1960 to solve linear integer problems,&amp;lt;sup&amp;gt;3,1&amp;lt;/sup&amp;gt; and expanded in 1965 by R.J. Dakin to incorporate nonlinear integer problem solutions. &amp;lt;sup&amp;gt;4,1&amp;lt;/sup&amp;gt; Branch and bound seemed to be a robust method, however the time required to solve increases exponentially as the number of variables increases.&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; In the 1950s and 60s, Ralph Gomory developed a different method using cutting planes to solve integer problems. Gomory Cuts were quicker to solve but gave less reliable solutions. The exploration of incorporating Gomory cuts into the branch and bound method gained popularity when solutions showed greater efficacy upon combination of these methods. The joint algorithm is called Branch and Cut. &lt;br /&gt;
&lt;br /&gt;
In the early 2000s, Akrotirianakis, Maros, and Rustem built on the findings of their predecessors to expand the application of the branch and cut method to non linear programs. More research surfaced on broader applications of this method, and with this grew the development of computational programs such as CPLEX and XPRESS-MP to run and solve these problems using given iterative solution methods.&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Applications=== &lt;br /&gt;
Mixed integer non linear programming models can cover a wide variety of engineering and design problems with discrete variable values. &lt;br /&gt;
&lt;br /&gt;
The Branch and Cut method is well-known for its long-time use in solving the [https://optimization.mccormick.northwestern.edu/index.php/Traveling_salesman_problems Traveling Salesman Problem].&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt; In 1991, Padberg and Rinaldi developed a solution to large-scale symmetric traveling salesman problems using the branch and cut method.&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt; MINLP problems involving scheduling, network design (including facility locating), and a variety of simplified biological models can be solved using the branch and cut algorithm given integer-valued variables.&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=Formulation= &lt;br /&gt;
Given that &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;h(x)&amp;lt;/math&amp;gt; are convex and continuously differentiable, a general MINLP problem solvable by the Branch and Cut method can be formulated as follows: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;min Z(x,y)&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;=&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;C^T y&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;+ f(x)&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;s.t.&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;g(x) + By \leqslant 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;     h(x) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;     x \in X, y \in {0,1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Algorithm=&lt;br /&gt;
The Branch and Cut algorithm closely follows that of the Outer Approximation for MINLP, but incorporates Gomory cuts in order to decrease the search space of the problem. &lt;br /&gt;
&lt;br /&gt;
The algorithm presented here is the method developed by Akrotirianakis, Maros, and Rustem [1a]. Variations on this method are described below. &lt;br /&gt;
&lt;br /&gt;
===Initialization: Value of the Search Tree Root=== &lt;br /&gt;
 0. Upper bound = inf, Lower bound = -inf&lt;br /&gt;
&lt;br /&gt;
 1. Initialize &amp;lt;math&amp;gt;y^0&amp;lt;/math&amp;gt;&lt;br /&gt;
The Branch and Cut method begins with an initialization of the binary variables &amp;lt;math&amp;gt;(y)&amp;lt;/math&amp;gt; by defining each with a finite starting value 0 or 1. &lt;br /&gt;
Otherwise, the initialization may be achieved by solving a relaxed NLP setting &amp;lt;math&amp;gt;0\leqslant y \leqslant 1&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 2. Solve NLP using &amp;lt;math&amp;gt;y^0&amp;lt;/math&amp;gt; &lt;br /&gt;
    &#039;&#039;&#039;if&#039;&#039;&#039; NLP is feasible &lt;br /&gt;
       &amp;amp;rarr; solve &amp;lt;math&amp;gt;Z(x^0, y^0)&amp;lt;/math&amp;gt;. This yields a new &#039;&#039;&#039;upper bound&#039;&#039;&#039; to the original problem. Move to step 3 &lt;br /&gt;
    &#039;&#039;&#039;else&#039;&#039;&#039; NLP is not feasible &lt;br /&gt;
       &amp;amp;rarr; if an initial set of values for &amp;lt;math&amp;gt;y^0&amp;lt;/math&amp;gt; was chosen, choose a new &amp;lt;math&amp;gt;(y^0)&amp;lt;/math&amp;gt;. &lt;br /&gt;
         Repeat 1 and 2 until a feasible solution is obtained. Move to step 3. &lt;br /&gt;
&lt;br /&gt;
The NLP should result in an initial feasible solution &amp;lt;math&amp;gt;x^0&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;y^0&amp;lt;/math&amp;gt; in which &amp;lt;math&amp;gt;Z(x^0, y^0)&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\leq \infty&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Otherwise, if the relaxed NLP is infeasible, then the MINLP problem is infeasible.&lt;br /&gt;
&lt;br /&gt;
 3. Solve MILP&lt;br /&gt;
&lt;br /&gt;
Using &amp;lt;math&amp;gt;x^0&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;y^0&amp;lt;/math&amp;gt; obtained from the NLP, solve the linearized objective and constraints according to the following equations: &lt;br /&gt;
    &lt;br /&gt;
&amp;lt;math&amp;gt;min&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; &lt;br /&gt;
    &lt;br /&gt;
&amp;lt;math&amp;gt;s.t.&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;a \leqslant UB^0 &amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f(x^0,y^0) +&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\nabla\ f(x^0,y^0)^T&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\binom{x-x^0}{y-y^0} &amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\leqslant&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; &lt;br /&gt;
    &lt;br /&gt;
&amp;lt;math&amp;gt;g(x^0,y^0) +&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\nabla\ g(x^0,y^0)^T&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\binom{x-x^0}{y-y^0} &amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\leqslant&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;0&amp;lt;/math&amp;gt;  &lt;br /&gt;
    &lt;br /&gt;
&amp;lt;math&amp;gt;y \in&amp;lt;/math&amp;gt; {0,1}&lt;br /&gt;
&lt;br /&gt;
The solution to the MILP will yield a new set of &amp;lt;math&amp;gt;(x)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(y)&amp;lt;/math&amp;gt;. Call these the new &amp;lt;math&amp;gt;(x^0)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(y^0)&amp;lt;/math&amp;gt;; this is the &#039;&#039;&#039;root&#039;&#039;&#039; of the branch and bound search tree.&lt;br /&gt;
&lt;br /&gt;
===Solve Nodes===&lt;br /&gt;
 4. Select an unsolved node &lt;br /&gt;
    &#039;&#039;&#039;If&#039;&#039;&#039; no nodes are left, &lt;br /&gt;
       &#039;&#039;&#039;then&#039;&#039;&#039; the problem is solved and &amp;lt;math&amp;gt;Z(x^j, y^j)&amp;lt;/math&amp;gt; is the optimal solution. &lt;br /&gt;
&lt;br /&gt;
 5. Solve MILP (formulation below) &lt;br /&gt;
    &#039;&#039;&#039;If&#039;&#039;&#039; all &amp;lt;math&amp;gt;y^k&amp;lt;/math&amp;gt; = {0,1} &lt;br /&gt;
       This node is the new incumbent &lt;br /&gt;
       &#039;&#039;&#039;and&#039;&#039;&#039; Z obtained from this set of &amp;lt;math&amp;gt;x^k&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;y^k&amp;lt;/math&amp;gt; is the current optimal solution. &lt;br /&gt;
       &#039;&#039;&#039;and&#039;&#039;&#039; add linearizations of the objective and constraints &lt;br /&gt;
          using &amp;lt;math&amp;gt;x^k&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;y^k&amp;lt;/math&amp;gt; to each unsolved node according to the equation below. &lt;br /&gt;
          Go to step 6. &lt;br /&gt;
    &#039;&#039;&#039;Else&#039;&#039;&#039; a &amp;lt;math&amp;gt;y^k&amp;lt;/math&amp;gt; &amp;amp;notin; {0,1} &lt;br /&gt;
        Go to step 7. &lt;br /&gt;
&lt;br /&gt;
Solve the corresponding MILP of the problem using the previous feasible solution &amp;lt;math&amp;gt;(x^j, y^j)&amp;lt;/math&amp;gt; in the following form:   &lt;br /&gt;
&lt;br /&gt;
For the first node (excluding the root), &amp;lt;math&amp;gt;(x^j, y^j)&amp;lt;/math&amp;gt; will be &amp;lt;math&amp;gt;(x^0, y^0)&amp;lt;/math&amp;gt;, etc. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;min&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;s.t.&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;a \leqslant UB^j &amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f(x^j,y^j) +&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\nabla\ f(x^j,y^j)^T&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\binom{x-x^j}{y-y^j} &amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\leqslant&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;g(x^j,y^j) +&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\nabla\ g(x^j,y^j)^T&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\binom{x-x^j}{y-y^j} &amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\leqslant&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;0&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\forall j \in T&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; is the set containing all indices of the solution tree in which the NLP for &amp;lt;math&amp;gt;y^j&amp;lt;/math&amp;gt; is feasible. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;g(x^i,y^i) +&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\nabla\ g(x^i,y^i)^T&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\binom{x-x^i}{y-y^i} &amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\leqslant&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;0&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\forall i \in S&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; is the set containing all indices of the solution tree in which the NLP for &amp;lt;math&amp;gt;y^i&amp;lt;/math&amp;gt; is infeasible. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Gamma x + \Gamma y \leqslant \epsilon&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This constraint represents the Gomory cuts generated as the algorithm runs. This line decreases the feasible region of the original problem. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;y \in&amp;lt;/math&amp;gt; {0,1}&lt;br /&gt;
&lt;br /&gt;
The solution to this MILP will yield a new set &amp;lt;math&amp;gt;(x^k)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(y^k)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 6. Solve relaxed NLP &lt;br /&gt;
    Using the MILP solution &amp;lt;math&amp;gt;y^k&amp;lt;/math&amp;gt; &lt;br /&gt;
    This should result in a new solution &amp;lt;math&amp;gt;x^j&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;y^j = y^k&amp;lt;/math&amp;gt;. &lt;br /&gt;
    &#039;&#039;&#039;If&#039;&#039;&#039; NLP&amp;lt;math&amp;gt;(y^j)&amp;lt;/math&amp;gt; is feasible &lt;br /&gt;
       &amp;amp;rarr; solve &amp;lt;math&amp;gt;Z(x^j, y^j)&amp;lt;/math&amp;gt;. &lt;br /&gt;
       &#039;&#039;&#039;If&#039;&#039;&#039; &amp;lt;math&amp;gt;Z(x^j, y^j)&amp;lt;/math&amp;gt; is less than the previous upper bound &lt;br /&gt;
          &#039;&#039;&#039;then&#039;&#039;&#039; this yields a new &#039;&#039;&#039;upper bound&#039;&#039;&#039; &amp;lt;math&amp;gt;UB^j&amp;lt;/math&amp;gt; to the original problem. &lt;br /&gt;
          Fathom all unsolved nodes that do not satisfy this bound. &lt;br /&gt;
          Return to step 4 &lt;br /&gt;
       &#039;&#039;&#039;Else&#039;&#039;&#039; retain the old upper bound. &lt;br /&gt;
          Return to step 4 &lt;br /&gt;
    &#039;&#039;&#039;Else&#039;&#039;&#039; NLP&amp;lt;math&amp;gt;(y^j)&amp;lt;/math&amp;gt; is not feasible &lt;br /&gt;
       &amp;amp;rarr; Fathom node. &lt;br /&gt;
       Return to step 4&lt;br /&gt;
&lt;br /&gt;
===Cutting vs Branching=== &lt;br /&gt;
When the solution to the linear relaxation in Step 5 contains fractional values on binary variables &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, either a cutting plane should be generated to exclude that solution or branching can be done at that node to constrain the fractional variable to its binary values 0 or 1. &lt;br /&gt;
&lt;br /&gt;
 7. Calculate &amp;quot;skip factor&amp;quot; &lt;br /&gt;
    &#039;&#039;&#039;If&#039;&#039;&#039; a cut is to be performed, go to step 8. &lt;br /&gt;
    &#039;&#039;&#039;Else&#039;&#039;&#039; the cut is to be skipped, go to step 9. &lt;br /&gt;
&lt;br /&gt;
The decision whether or not to perform a Gomory cut is based on a &amp;quot;skip factor&amp;quot; &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; which is calculated throughout the enumeration of the tree. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;S =&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;min[S_{max}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\dfrac{t + wcd \log_{10} p}{t f}]&amp;lt;/math&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
where t = number of integer nodes solved &lt;br /&gt;
&lt;br /&gt;
S_{max}, c, w = positive constant parameter  &lt;br /&gt;
&lt;br /&gt;
p = number of binary variables y &lt;br /&gt;
&lt;br /&gt;
f = number of violated binary variables in &amp;lt;math&amp;gt;y^k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Gomory Cuts=== &lt;br /&gt;
 8. Generate an inequality to exclude the fractional variable solution &lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;Equation 3. for gomory mixed integer cuts&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add these cuts to the constraints of the original problem. &lt;br /&gt;
&lt;br /&gt;
Return to step 5&lt;br /&gt;
&lt;br /&gt;
===Branching=== &lt;br /&gt;
 9. Constrain the/a variable in &amp;lt;math&amp;gt;y^k&amp;lt;/math&amp;gt; to branch off of. &lt;br /&gt;
&lt;br /&gt;
One branch will set &amp;lt;math&amp;gt;y^k = 0&amp;lt;/math&amp;gt; and the other &amp;lt;math&amp;gt;y^k = 1&amp;lt;/math&amp;gt;, creating two new nodes. Return to step 5, following one of these nodes.&lt;br /&gt;
&lt;br /&gt;
=Variations= &lt;br /&gt;
A variation on the Branch and Cut method presented by Sven Leyffer in 2013 utilizes cuts for every fractional solution and branches only when solutions are still fractional after multiple cuts. &amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt; Thus, the algorithm is the same until step 7, where cuts are always chosen to eliminate solutions where &amp;lt;math&amp;gt;y^k&amp;lt;/math&amp;gt; &amp;amp;notin; {0,1}. The inequality generated to produce this cut is added to the constraints of the original problem. &lt;br /&gt;
&lt;br /&gt;
=Conclusion= &lt;br /&gt;
The general Branch and Cut algorithm follows a scheme which grows exponentially as variables are added to the original design problem. The addition of Gomory Cuts allows bounds to be tightened, reducing the number of feasible nodes to be tested and allowing the solver to converge on the optimal solution with less iterations. However, the formation of inequalities to generate these cuts take time and may slow down the actual resolution of the MINLP problem. The larger the problem, the more useful the cuts can be.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
# I. Akrotirianakis, I. Maros, and B. Rustem. An Outer Approximation Based Branch and Cut Algorithm for convex 0-1 MINLP Problems. &#039;&#039;Optimization Methods and Software.&#039;&#039; 21:47, 2001 https://www.doc.ic.ac.uk/research/technicalreports/2000/DTR00-6.pdf&lt;br /&gt;
# S. Leyffer and J. Linderoth. Introduction to Integer Nonlinear Optimization, Nonlinear Branch-and-Cut, Theoretical and Computational Challenges. &#039;&#039;Argonne National Laboratory.&#039;&#039; 2007. http://science.energy.gov/~/media/ascr/pdf/workshops-conferences/mathtalks/Leyffer.pdf&lt;br /&gt;
# A. H. Land and A. G. Doig. An Automatic method of solving discrete programming problems. &#039;&#039;Econometrica,&#039;&#039; 28:497 520, 1960. &lt;br /&gt;
# R. J. Dakin. A tree search algorithm for mixed integer probramming problems. &#039;&#039;Computer Journal,&#039;&#039; 8:250 255, 1965. &lt;br /&gt;
# S. Albert. Solving Mixed Integer Linear Programs Using Branch and Cut Algorithm. &#039;&#039;Masters of Mathematics, North Carolina State University.&#039;&#039; 2006. http://www4.ncsu.edu/~kksivara/masters-thesis/shon-thesis.pdf (good for milp) &lt;br /&gt;
# J. E. Mitchell. Branch-and-Cut Algorithms for Combinatorial Optimization Problems. &#039;&#039;Mathematical Sciences,&#039;&#039; 1999. http://homepages.rpi.edu/~mitchj/papers/bc_hao.pdf &lt;br /&gt;
# M. Padberg and G. Rinaldi. A Branch-and-Cut Algorithm for the Resolution of Large-Scale Symmetric Traveling Salesman Problems. &#039;&#039;SIAM Rev,&#039;&#039; 33(1), 60-100, 1991. http://epubs.siam.org/doi/abs/10.1137/1033004?journalCode=siread&lt;br /&gt;
# S. Leyffer. Mixed-Integer Nonlinear Optimization: Applications, Algorithms, and Computation III. &#039;&#039;Graduate School, Universite catholique de Louvain.&#039;&#039; 2013. https://wiki.mcs.anl.gov/leyffer/images/4/42/Socn-3.pdf&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Generalized_Benders_decomposition_(GBD)&amp;diff=6662</id>
		<title>Generalized Benders decomposition (GBD)</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Generalized_Benders_decomposition_(GBD)&amp;diff=6662"/>
		<updated>2022-04-01T15:38:04Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This web page is a duplicate of https://optimization.mccormick.northwestern.edu/index.php/Generalized_Benders_decomposition_(GBD)&lt;br /&gt;
&lt;br /&gt;
Authors: Yuanxi Zhao (ChE 345 Spring 2015) &amp;lt;br&amp;gt;&lt;br /&gt;
Steward: Dajun Yue, Fengqi You&amp;lt;br&amp;gt;&lt;br /&gt;
Date Presented: May 22, 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generalized Benders Decomposition is a procedure to solve certain types of NLP and MINLP problems. The use of this procedure has been recently suggested as a tool for solving process design problems. While analyzing the solution of nonconvex problems through different implementations of the GBD, it is demonstrated that in certain cases only local minima may be found, whereas in other cases not even convergence to local optima can be achieved.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
J.F. Benders devised an approach for exploiting the structure of mathematical programming problems with complicating variables (variables which, when temporarily fixed, render the remaining optimization problem considerably more tractable).The algorithm he proposed for finding the optimal value of this vector employs a cutting-plane approach for building up adequate representations of (i) the extremal value of the linear program as a function of the parameterizing vector and (ii) the set of values of the parameterizing vector for which the linear program is feasible. Linear programming duality theory was employed to derive the natural families of cuts characterizing these representations, and the parameterized linear program itself is used to generate what are usually deepest cuts for building up the representations. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Geoffrion (1972) generalized the approach proposed by Benders (1962) to a broader class of optimization problems in which the parametrized subproblem need no longer be a linear program. Nonlinear convex duality theory is employed to derive the natural families of cuts corresponding to those in Bender&#039;s case.&lt;br /&gt;
&lt;br /&gt;
=Model Formulation=&lt;br /&gt;
===Target problem===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;min_{x,y}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;s.t.&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;g(x) \leq 0 &amp;lt;/math&amp;gt;             &amp;lt;math&amp;gt;(1)&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;x\in X&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;y\in Y&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
under the following assumptions:&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt; X \subset R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;Y \subset R&amp;lt;/math&amp;gt; are compact. &amp;lt;br&amp;gt;&lt;br /&gt;
# For all &amp;lt;math&amp;gt; y\in Y&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; are convex on &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
# For &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; fixed to any feasible &amp;lt;math&amp;gt; y\in Y&amp;lt;/math&amp;gt;, the problem satisfies Slater&#039;s condition.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following problem is equivalent to above and is called its projection on &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;min_y&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt; v(y)&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;s.t. &amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;v(y)=&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;min_{x \in X}f(x,y)&amp;lt;/math&amp;gt;  &amp;lt;math&amp;gt;s.t.&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;  g(x,y) \leq 0&amp;lt;/math&amp;gt;           &amp;lt;math&amp;gt; (2)&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;y\in Y\cap V&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt; =&amp;lt;/math&amp;gt;{&amp;lt;math&amp;gt;y: g(x,y)\leq 0 &amp;lt;/math&amp;gt; for some &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\in&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt;}.&amp;lt;br&amp;gt;&lt;br /&gt;
For problems where &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; is a convex set, and the functions &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;g(x,y)&amp;lt;/math&amp;gt; are convex with respect to the variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, Geooffrion (1972) proposed a decomposition of (2) based on the following two problems:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Primal problem===&lt;br /&gt;
&amp;lt;math&amp;gt;min_x&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;f(x,\bar{y})&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;s.t. &amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;g(x,\bar{y})\leq 0&amp;lt;/math&amp;gt;         &amp;lt;math&amp;gt;(3)&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;x\in X&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;\bar{y}&amp;lt;/math&amp;gt; is an arbitrary but fixed point in &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Master problem===&lt;br /&gt;
&amp;lt;math&amp;gt;min_{y\in Y}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;[&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;max&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;_{u\geq 0}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;[min_{x\in X}&amp;lt;/math&amp;gt;{&amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;+u^T&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;g(x,y)&amp;lt;/math&amp;gt;}&amp;lt;math&amp;gt;]]&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;s.t.&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;min_{\lambda}&amp;lt;/math&amp;gt;{&amp;lt;math&amp;gt;{\lambda}^T&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;g(x,y)&amp;lt;/math&amp;gt;}&amp;lt;math&amp;gt;\leq 0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\forall&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;{\lambda}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\in&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;{\Lambda}&amp;lt;/math&amp;gt;     &amp;lt;math&amp;gt;    (4)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;{\Lambda}=&amp;lt;/math&amp;gt;{&amp;lt;math&amp;gt;{\lambda}\geq 0;&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\sum_i&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;{\lambda}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;_i=1&amp;lt;/math&amp;gt;} &amp;lt;math&amp;gt;and&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;y&amp;gt;\in Y&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;x\in X&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;u\geq 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Some Remark===&lt;br /&gt;
&lt;br /&gt;
Before any further analysis, it is appropriate to point out that the master problem is equivalent to the projection (2), only when &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; is a convex set, and the functions &amp;lt;math&amp;gt;f(x,y),g(x,y)&amp;lt;/math&amp;gt;are convex with respect to &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;. This is so because the dual of &amp;lt;math&amp;gt;v(y)&amp;lt;/math&amp;gt;, as defined in (2), was invoked in arriving at the Master problem. Therefore, when &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; is not a convex set and/or convexity of the functions &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;g(x,y)&amp;lt;/math&amp;gt; in the variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;does not hold, a dual gap may exist between &amp;lt;math&amp;gt;v(y)&amp;lt;/math&amp;gt; and its dual. In these cases, since by the weak duality theorem, the solution of &amp;lt;math&amp;gt;v(y)&amp;lt;/math&amp;gt; is always greater than or equal to the solution of its dual, the master problem can only provide a lower bound on the optimum, i.e.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;v(y)=&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;min_{x\in X}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt; f(x,y)&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;   s.t.&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;g(x,y)\leq 0&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;v(y)&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\geq&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt; max&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;_{u\geq 0}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;[min_{x\in X}&amp;lt;/math&amp;gt;{&amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;+ u^T g(x,y)&amp;lt;/math&amp;gt;}&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\Rightarrow&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;min_{y\in Y\cap V}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;v(y)\geq&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;min_{y\in Y\cap V}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;[max&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;_{u\geq 0}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;[min_{x\in X}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;+u^T g(x,y)&amp;lt;/math&amp;gt;}&amp;lt;math&amp;gt;]]&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;min_{y\in Y\cap V}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;v(y)&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;=min_{y\in Y}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;[max&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;_{u\geq 0}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;[min_{x\in X}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;+u^T g(x,y)&amp;lt;/math&amp;gt;}&amp;lt;math&amp;gt;]]&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;s.t.&amp;lt;/math&amp;gt;  &amp;lt;math&amp;gt;min_{x\in X}&amp;lt;/math&amp;gt;{&amp;lt;math&amp;gt;{\lambda}^T g(x,y)&amp;lt;/math&amp;gt;}&amp;lt;math&amp;gt;\leq 0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\forall&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;{\lambda}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\in&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;{\Lambda}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solution approaches=&lt;br /&gt;
===Algorithm flowchart===&lt;br /&gt;
[[File:Algorithm.png|800px|Algorithm flowchart]]&lt;br /&gt;
===Computational implementation===&lt;br /&gt;
The master problem can be rewritten as&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;min_{y_0=y} y_0&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;s.t.&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;L^*(y,u)&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;=min_{x\in X}&amp;lt;/math&amp;gt;{&amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;+u^Tg(x,y)&amp;lt;/math&amp;gt;}&amp;lt;math&amp;gt;\leq y_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;all&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;u\geq 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L_*(y,{\lambda})&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;=min_{x\in X}&amp;lt;/math&amp;gt;{&amp;lt;math&amp;gt;{\lambda}^Tg(x,y)&amp;lt;/math&amp;gt;}&amp;lt;math&amp;gt;\leq 0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;all&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;{\lambda}\in {\Lambda}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Geoffrion (1972) suggests to solve a relaxed version of this problem in which all but a few constraints are ignored. Since constraints are continuously added to the master, the optimal values of this problem form a monotone nonedecreasing sequence. When &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;g(x,y)&amp;lt;/math&amp;gt; are convex in &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; and certain conditions hold, the lowest solution of the primal and the global solution of the master [as defined from above] will approach one another and will thus provide the global optimum of the overall problem within a prespecified tolerance. As analyzed earlier, when convexity in &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; does not hold, dual gaps may prevent these two values from approaching each other. Nevertheless the global solution of the relaxed master will still provide a valid lower bound on the global optimum of the overall problem. The resulting computational procedure is the following: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1.&#039;&#039;&#039; Let a point &amp;lt;math&amp;gt;\bar y&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;Y\cap V&amp;lt;/math&amp;gt; be known. Solve the primal problem and obtain the optimal solution &amp;lt;math&amp;gt;x^*&amp;lt;/math&amp;gt;, and the optimal multiplier vector &amp;lt;math&amp;gt;u^*&amp;lt;/math&amp;gt;. Put the counters &amp;lt;math&amp;gt;K^f=1&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;K^i=0&amp;lt;/math&amp;gt;. Set &amp;lt;math&amp;gt;U=f(x^*,\bar y)&amp;lt;/math&amp;gt;, select a tolerance &amp;lt;math&amp;gt;\varepsilon &amp;gt; 0&amp;lt;/math&amp;gt; and put &amp;lt;math&amp;gt;u^{(1)}=u^*&amp;lt;/math&amp;gt;. Finally, determine the function &amp;lt;math&amp;gt;L^*(y,u^{(1)})&amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2.&#039;&#039;&#039; Solve globally the current relaxed master problem:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;min_{y_0=y}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;y_0&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;s.t.&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;L^*&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;(y,&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;u^{(k_1)})&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\leq y_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k_1=1,\dots&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;K^f&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L_*&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;(y,&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;{\lambda}^{(k_2)})&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\leq 0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k_2=1,\dots&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;K^i&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3.&#039;&#039;&#039; Solve globally the primal problem using &amp;lt;math&amp;gt;\bar {y}=\hat {y}&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 3a.&#039;&#039;&#039; &#039;&#039;Primal is feasible&#039;&#039;. If &amp;lt;math&amp;gt;v(\bar{y})&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\leq \hat{y_0}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;+\epsilon&amp;lt;/math&amp;gt; terminate. Otherwise, determine the optimal multiplier vector&amp;lt;math&amp;gt; u^*&amp;lt;/math&amp;gt;,increase &amp;lt;math&amp;gt;K^f&amp;lt;/math&amp;gt; by one, set &amp;lt;math&amp;gt;u^{(k^f)}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;=u^*&amp;lt;/math&amp;gt;.Additionally, if &amp;lt;math&amp;gt;u(\bar{y})&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;&amp;lt;U&amp;lt;/math&amp;gt;,put &amp;lt;math&amp;gt;U=v(\bar{y})&amp;lt;/math&amp;gt;. Finally, determine the function &amp;lt;math&amp;gt;L^*(y&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;,u^{(k^f)})&amp;lt;/math&amp;gt; and return to Step 2.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 3b.&#039;&#039;&#039; &#039;&#039;Primal is infeasible&#039;&#039;. Determine a set of values of &amp;lt;math&amp;gt;{\lambda}^*&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\in {\Lambda}&amp;lt;/math&amp;gt; which satisfy&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;min_{x \in X}&amp;lt;/math&amp;gt;{&amp;lt;math&amp;gt;{\lambda}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;^{*T}g(x,y)&amp;lt;/math&amp;gt;}&amp;lt;math&amp;gt;&amp;gt;0&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Increase &amp;lt;math&amp;gt;K^i&amp;lt;/math&amp;gt;by one, put &amp;lt;math&amp;gt;{\lambda}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;^{(K^i)}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;={\lambda}^*&amp;lt;/math&amp;gt; and determine the function &amp;lt;math&amp;gt;L*(y,&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;{\lambda}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;^{(K^i)}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;)&amp;lt;/math&amp;gt;. Return to Step 2.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When referring to &amp;quot;solutions&amp;quot; of nonconvex optimization problems it is sometimes understood that these may be locally, rather than globally, optimal points. In the above computational procedure it is necessary that the master be solved globally. When problems are jointly convex in &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, the master is convex and globality is then achieved. Global solutions of the primal are also needed if convexity of X and/or convexity of &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; and/or &amp;lt;math&amp;gt;g(x,y)&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;does not hold. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Determination of lambda*===&lt;br /&gt;
The determination of &amp;lt;math&amp;gt;{\lambda}^*&amp;lt;/math&amp;gt; in Step 3b can be done by any Phase I algorithm. In particular Floudas et al (1989) proposed to solve the following problem: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;min_{\alpha,x}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;{\alpha}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;s.t.&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;g(x,\bar{y})&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;-{\alpha}\underline{1}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\leq 0&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;x\in X&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;,{\alpha}\in R&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;\underline{1}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;=(1,1,&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\dots&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;,1)^T&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Since the primal problem is infeasible, it is already known that the solution of this problem is positive. Once this problem is solved and a stationary point &amp;lt;math&amp;gt;x^*&amp;lt;/math&amp;gt; is obtained, the following necessary Kuhn-Tucker conditions are satisfied:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;1-\sum_i&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\lambda_i^*&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;=0&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\lambda^{*T}\triangledown_x&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;g(x^*,\bar{y})=0&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\lambda_i^*&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;[g_i(x^*,\bar y)&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;-\alpha]=0&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;,\forall_i&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\lambda_i&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\leq 0&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;,\forall_i&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From them it is concluded that by solving the problem the condition &amp;lt;math&amp;gt;\lambda^*&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\in\Lambda&amp;lt;/math&amp;gt; is satisfied. Note that in this step it is not imperative to achieve globality.&lt;br /&gt;
&lt;br /&gt;
===Explicit determination of L===&lt;br /&gt;
In most cases, the function &amp;lt;math&amp;gt;L^*&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;L_*&amp;lt;/math&amp;gt; are implicitly defined. One case in which these functions can be obtained in explicit form is when the global minimum over &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; can be obtained independently of &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;. i.e. when Property (P) is satisfied. Two examples in which this property is satisfied arise when the functions &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;g(x,y)&amp;lt;/math&amp;gt; are separable in &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, and in the variable factor programming case.&amp;lt;br&amp;gt;&lt;br /&gt;
Once Property (P) holds, evalution of &amp;lt;math&amp;gt;L^*(y,u^*)&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;,L_*(y,u^*)&amp;lt;/math&amp;gt; simply requires that the minima in the master problem be global. This is the so called L-Dual-Adequacy property, which upon satisfaction of Property (P) can be achieved only if a global search of the solution of both &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;min_{x\in X}&amp;lt;/math&amp;gt;{&amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;+u^{*T}g(x,y)&amp;lt;/math&amp;gt;} &amp;lt;math&amp;gt;and&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;min_{x\in X}&amp;lt;/math&amp;gt;{&amp;lt;math&amp;gt;\lambda^{*T}&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;g(x,y)&amp;lt;/math&amp;gt;}&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
is conducted.&amp;lt;br&amp;gt;&lt;br /&gt;
Another case in which these functions can be obtained in explicit form is when Property (P&#039;) is satisfied, i.e. when the globally optimal solution of the primal, &amp;lt;math&amp;gt;x^*&amp;lt;/math&amp;gt;, is also the solution of the minimization of the problems defined in the master problem. This is guaranteed when &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;g(x,y)&amp;lt;/math&amp;gt; are convex and separable in x.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Property (P&#039;) is simply assumed, then this implementation of Generalized Benders Decomposition may only be used, without guarantees, to identify candidates for local, but not global minima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above discussion does not mean that Properties (P) and/or (P&#039;) must always hold. Other procedures may exist in which the Master problem can be solved without using these requirements.&lt;br /&gt;
&lt;br /&gt;
===Advantages and Disadvantages of the algorithm===&lt;br /&gt;
The GBD method is similar in nature to the Outer-Approximation method. The difference arises in the definition of the MILP master problem (M-MIP). In the GBD method only active inequalities are considered and the set is &amp;lt;math&amp;gt;x\in X&amp;lt;/math&amp;gt; is disregarded. In particular, assume an outer approximation given at a given point &amp;lt;math&amp;gt;(x^k,y^k)&amp;lt;/math&amp;gt; , where for a fixed &amp;lt;math&amp;gt;y^k&amp;lt;/math&amp;gt; the point &amp;lt;math&amp;gt;x^k&amp;lt;/math&amp;gt; corresponds to the optimal solution to the problem. Making use of the Karush-Kuhn-Tucker conditions and eliminating the continuous variables x, the inequalities can be reduced to Lagrangrian cut projected in the y-space. This can be interpreted as a surrogate constraint because it is obtained as a linear combination of these. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the case where there is no feasible solution to the problem, if the point &amp;lt;math&amp;gt;x^k&amp;lt;/math&amp;gt; is obtained from the feasibility subproblem (NLPF), the feasibility cut projected in y can be obtained using a similar procedure. In this way, the problem (M-MIP) reduces to a problem projected in the y-space. Since the master problem can be derived from the master problem of the Outer-Approximation algorithm in the context of problem. GBD can be regarded as a particular case of the Outer Approximation algorithm. In fact the following property, holds between the two methods:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Property 1.&#039;&#039;&#039; &#039;&#039;Given the same set of K subproblems, the lower bound predicated by the relaxed master problem (RM-OA) is greater or equal to the one predicted by the relaxed master problem (RM-GBD).&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above proof follows from the fact that the Lagrangian and feasibility cuts, &amp;lt;math&amp;gt;(LC^k)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(FC^k)&amp;lt;/math&amp;gt;, are surrogates of the outer approximations &amp;lt;math&amp;gt;(OA^k)&amp;lt;/math&amp;gt;. Given the fact that the lower bounds of GBD are generally weaker, this method commonly requires a large number of cycles or major iterations. As the number of 0-1 variables increases this differences become more pronounced. This is to be expected since only one new cut is generated per iteration. Therefore, user-supplied constraints must often be added to the master problem to strengthen the bounds. As for the OA algorithm, the trade-off is that while is generally predicts stronger lower bounds than GBD, the computational cost for solving the master problem (M-OA) is greater since the number of constraints added per iteration is equal to the number of nonlinear constraints plus the nonlinear objective. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following convergence property applies to the GBD method:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Property 2.&#039;&#039;&#039; &#039;&#039;If problem (PI) has zero integrality gap, the GBD algorithm converges in one iteration once the optimal is found.&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above property implies that the only case one can expect the GBD method to terminate in one iteration, is when the initial discrete vector is the optimum, and when the objective value of the NLP relaxation of problem (P1) is the same as the objective of the optimal mixed-integer solution. Given the relationship of GBD with the OA algorithm, Property 2 is also inherited by the OA method.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One further property that relates the OA and GBD algorithms is the following:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Property 3.&#039;&#039;&#039; &#039;&#039;The cut obtained from performing one Benders iteration on the MILP master (RM-OA) is equivalent to the cut obtained from the GBD algorithm.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By making use of this property, instead of solving the MILP (RM-OA) to optimality, for instance by LP-based brand and bound, one can generate a GBD cut by simply performing one Benders iteration on the MILP. This property will prove to be useful when deriving a logic-based version of the GBD algorithm. With the above in mind, the advantages and disadvantages of GBD can thus be summarized as below: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advantages:&#039;&#039;&#039; Geoffrion (1972) generalized Benders approach to a broader class of programs in which the parameterized subproblem need no longer be a linear program. Nonlinear convex duality theory was employed to derive the quivalent masster problem. In GBD, the algorithm alternates between the solution of relaxed master problems and convex nonlinear subproblems. It is a helpful tool for solving process design problems. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disadvantages:&#039;&#039;&#039; Some restrictions regarding the convexity and other properties of the function involved were identified. Also, it is found that in certain cases only local minima may be found, whereas in other cases not even convergence to local optima can be achieved. These suggests that the procedure should be used with caution, especially when global optimality is being sought. More specifically, it is demonstrated that the implementation of the procedure guarantees globality when certain properties are satisfied (primal convexity, global solution of the master, Property (P) and L-Dual-Ade-quacy).&lt;br /&gt;
&lt;br /&gt;
=Application=&lt;br /&gt;
Generalized Benders decomposition has been applied to a variety of problems that were modeled as mixed integer linear programming (MDLP) or mixed integer nonlinear programming (MINLP) problems. Geoffrion and Graves (1974) were among the first to use the algorithm to solve an MILP model for the design industrial distribution systems. Noonan and Giglio (1977) used Benders decomposition coupled with a successive linearization procedure to solve a nonlinear multiperiod mix integer model for planning the expansion of electric power generation networks. Rouhani et aL (1985) used GBD to solve an MINLP model for reactive source planning in power systems. Floudas and Ciric (1989) applied GBD to their MINLP formulation for heat exchanger network synthesis. EL-Halwagi and Manouthiosakis (1989) developed an MINLP model for the design and analysis of mass exchange networks and suggested the use of GBD for its solution. Sahinidis and Grossman (1990) applied the algorithm to the problem of scheduling multiproduct parallel production lines by solving the corresponding large scale MINLP model. The technique has also been used for solving nonconvex nonlinear programming (NLP) and MINLP problems: Geoffrion (1971) applied it to the variable factor programming problem and Floudas et aL (1989) suggested a Benders-based procedure for searching for the global optimum of nonconvex problems.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unfortunately, Benders decomposition has not been uniformly successful in all its application Florial et aL (1976) have noticed that the algorithm often converged very slowly when applied to their MILP model for scheduling the movement of railway engines. Bazaraa and Sherali (1980) observed that a large number of iterations were needed to solve their MILP model for quadratic assignment problems of realistic size. Sahinidis et aL (1989) have found brand and bound to be significantly faster than Benders decomposition for the solution of their multiperiod MILP for long range planning in the chemicla industries. Finally, with respect to the application of GBD to nonconvex problems, in contrast to Geoffrion (1972) and Floudas et aL (1989), Sahinidis and Grossmann (1989) have encountered cases where the application of this technique to their MINLP model for the planning of chemical processes fail to produce the global optima of these problems.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
#Geoffrion, A. M., Elements of Large-Scale Mathematical Programming, Management Science, Vol. 16, No. 11, 1970.&lt;br /&gt;
#BENDERS, J. F., Partitioning Procedures for Solving ~lixed-Variables Programming Problems, Numerische Mathematik, Vol. 4, 1962.&lt;br /&gt;
#WILSON, R. Programming Variable Factors, Management Science, VoI. 13, No. 1, 1966.&lt;br /&gt;
#Balas, E., Duality in Discrete Programming: IV. Applications, CarnegieMellon University, Graduate School of Industrial Administration, Report No. 145, 1968.&lt;br /&gt;
#Meyer, R., The Validity of a Family of Optimization Methods, SIAM Journal on Control, Vol. 8, No. I, 1970.&lt;br /&gt;
#Dantzic, G. B., Linear Programming and Extensions, Princeton University Press, Princeton, New Jersey, 1963.&lt;br /&gt;
#Geoffriosi, A. M., Primal Resource-Directive Approaches for Optimizing Nonlinear Decomposable Systems, Operations Research, Vol. 18, No. 3, 1970.&lt;br /&gt;
#Hogan, W., Application of a General Convergence Theory for Outer Approximation Algorithms, University of California at Los Angeles, Western Management Science Institute, Working Paper No. 174, 1971.&lt;br /&gt;
#Eaves, B. C., and Zangwill, W. I., Generalized Cutting Plane Algorithms, SIAM Journal on Control, Vol. 9, No. 4, 1971.&lt;br /&gt;
#Geoffrion, A. M., A New Global Optimization Technique for Gaseous Diffusion Plant Operation and Capital Investment, University of California at Los Angeles, Graduate School of Business Administration, Discussion Paper, 1970.&lt;br /&gt;
#Geoffrion A. M., Duality in Nonlinear Programming: £1 Simplified Application-Oriented Development, SIAM Review, Vol. 13, No. 1, 1971.&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Nonconvex_generalized_disjunctive_programming_(GDP)&amp;diff=6661</id>
		<title>Nonconvex generalized disjunctive programming (GDP)</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Nonconvex_generalized_disjunctive_programming_(GDP)&amp;diff=6661"/>
		<updated>2022-04-01T15:37:24Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This web page is a duplicate of https://optimization.mccormick.northwestern.edu/index.php/Nonconvex_Generalized_disjunctive_programming_(GDP)&lt;br /&gt;
&lt;br /&gt;
Author: Kaiwen Li (ChE345 Spring 2015) &amp;lt;br/&amp;gt;&lt;br /&gt;
Steward: Prof.Fengqi You, Dajun Yue&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
=Introduction=&lt;br /&gt;
General disjunctive programming, GDP, is an alternative approach to represent the formulation of traditional Mixed-Integer Nonlinear Programming, solving discrete/continuous optimization problems. By using algebraic constraints, disjunctions and logic propositions, Boolean and continuous variables are involved in the GDP formulation. The formulation process of GDP problem are more intuitive, and the underlying logic structure of the problem can be kept, so that solution can be found more efficiently. GDP has been successfully applied to Process Design and Planning and Scheduling areas.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
However, funtions in GDP problem sometimes could be nonconvex. Due to nonconvexites, conventional MINLP algorithms are often trapped in suboptimal solutions. Thus, solutions to nonconvex GDP has been receiving increasing attention.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Algorithm= &lt;br /&gt;
In the GDP formulation, some functions might be nonconvex, which will lead to a nonconvex GDP problem. Traditional algorithms for MINLP such as Generalized Benders Decomposition (GBD), or Outer Approximation (OA) will fail to provide a global optimum because the solution of the NLP subproblem can be only a local optimum, while the cuts in master problem may not be valid either. Therefore, in order to get a global optimum, we need to introduce special algorithm for nonconvex GBD problems.&amp;lt;br/&amp;gt;&lt;br /&gt;
Most of the methods rely on spatial branch and bound method.&lt;br /&gt;
&lt;br /&gt;
==Motivation==&lt;br /&gt;
In order to find the best design and operation of a system in many problems in engineering, a set of algebraic expressions are used to reduce the problem with continuous and discrete variables. Normally theses problems lead to Mixed-Integer Nonlinear Programming (MINLP). However, in order to represent the behavior of physical, chemical, biological, financial or social systems accurately, nonlinear expressions are often used and leads to a MINLP with a nonconvex solution space. Instead of reaching a global optimal, this may give rise to local solutions that are suboptimal. Meanwhile, most algorithms for nonconvex problems are just particular implementation of the spatial branch and bound framework. Therefore, in order to find the global optimum of a large-scaled nonconvex MINLP models in reasonable computational time, Grossmann and others proposed nonconvex generalized disjunctive programming method.&lt;br /&gt;
&lt;br /&gt;
==General Formulation for GDP==&lt;br /&gt;
Consider the following Generalized Disjunctive Programming problem, which includes Boolean variables, disjunctions and logic propositions:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;min Z&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;=&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\sum_{k\in K} c_k&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;+ f(x)&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
s.t. &amp;lt;math&amp;gt;r(x)\le 0&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\bigvee_{j\in J_k}&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\begin{bmatrix} Y_{jk} \\ g_{jk}(x) \le 0 \\ c_k = \gamma_{jk} \end{bmatrix}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt; k\in K&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\Omega(Y) = True &amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;0 \le x \le U&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;x \in R^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt; c_k \in R^1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt; Y_{jk} \in {true, false}&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where, &amp;lt;math&amp;gt;f:R^n \rightarrow R^1&amp;lt;/math&amp;gt; is a function of the continuous variables x in the objective function, &amp;lt;math&amp;gt;g:R^n \rightarrow R^1&amp;lt;/math&amp;gt; bolongs to the set of global constraints, the disjuctions &amp;lt;math&amp;gt; k\in K&amp;lt;/math&amp;gt; are composed of a number of terms &amp;lt;math&amp;gt; j\in J_k&amp;lt;/math&amp;gt;, which is connected by the OR operator. &amp;lt;math&amp;gt;Y_{jk}&amp;lt;/math&amp;gt; is a Boolean varibale, &amp;lt;math&amp;gt;g_{jk}(x) \le 0&amp;lt;/math&amp;gt; is a set of inequalities, and &amp;lt;math&amp;gt;c_k&amp;lt;/math&amp;gt; is a cost variable. When &amp;lt;math&amp;gt;Y_{jk}&amp;lt;/math&amp;gt; is true, &amp;lt;math&amp;gt;g_{jk}(x) \le 0&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;c_k&amp;lt;/math&amp;gt; are enforced.Also, &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;represents continuous variables, with lower and upper bounds.Each term in the disjunctions gives rise to a nonempty feasible region which is generally nonconvex. Also, &amp;lt;math&amp;gt;\Omega(Y) = True &amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt; are logic propositions for the Boolean variables.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Overall Procedure==&lt;br /&gt;
The following flowchart(Fig.1) shows the overall procedure of the proposed two-level branch and bound algorithm.&lt;br /&gt;
[[File:Flowchart01_KL.png|600px]]&amp;lt;br/&amp;gt;&lt;br /&gt;
First, introduce convex underestimators in the non-convex GDP problem (P), and construct the underestimating problem (R). This convex GDP problem is then reformulated as the convex NLP problem (CRP) by using the convex hull relaxation of each disjunction, which generates valid lower bound. Initial upper bound is obtained in step 0, by sloving P-MIP problem. It is a MINLP reformulation of the nonconvex GDP by a standard MINLP method. Then, use upper bound for bound contraction to reduce the feasible region, which is solved as a Bound Contraction Problem (BCP) in step 1. Next in step 2, discrete branch and bound method is applied at the first level to slove problem (CRP). After fixing all Boolean variables, solve the corresponding nonconvex NLP problems for a upper bound by using spatial branch and bound at the second level. Then, problem (CRP) is solved with fixed discrete choice in step 3.&lt;br /&gt;
&lt;br /&gt;
==Detailed Formulation and Models==&lt;br /&gt;
===Convex Relaxation of GDP===&lt;br /&gt;
The following reformulation shows the introduction of valid convex underestimating functions to change Problem (P) into a convex GDP problem.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;min Z^R&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;=&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\sum_{k\in K} c_k&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;+ \bar{f}(x)&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
s.t. &amp;lt;math&amp;gt;\bar{r}(x)\le 0&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\bigvee_{j\in J_k}&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\begin{bmatrix} Y_{jk} \\ \bar{g}_{jk}(x) \le 0 \\ c_k = \gamma_{jk} \end{bmatrix}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt; k\in K&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\Omega(Y) = True &amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;0 \le x \le U&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;,&amp;lt;math&amp;gt;c_k \ge 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;x \in R^n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;c_k \in R^1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt; Y_{jk} \in \{ true, false\} &amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
where &amp;lt;math&amp;gt;\bar{f}&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;\bar{r}&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;\bar{g}&amp;lt;/math&amp;gt; are valid convex underestimators so that &amp;lt;math&amp;gt;\bar{f}(x) \le f(x)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\bar{r}(x) \le 0&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;\bar{g}(x) \le 0&amp;lt;/math&amp;gt; are satisfied if &amp;lt;math&amp;gt;r(x) \le 0&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;g(x) \le 0&amp;lt;/math&amp;gt; (see fig.2)&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Fig02_KL.png|450px]]&amp;lt;br/&amp;gt;&lt;br /&gt;
Considering problem (R) is a convex GDP, by replacing each disjunction by its convex hull we can relax problem (R), which generates the folloing convex NLP model:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;min Z^L&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;=&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\sum_{k\in K}\sum_{j\in J_k} \gamma_{jk}\lambda_{jk} + \bar{f}(x)&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
s.t. &amp;lt;math&amp;gt;\bar{r}(x)\le 0&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; x = \sum_{j \in J_k} \nu_{jk}, \sum_{j \in J_k} \lambda_{jk} = 1,  k\in K&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; 0 \le \nu_{jk} \le \lambda_{jk}U_{jk}, j \in J_k, k\in K&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \lambda_{jk}\bar{g}_{jk}(\nu_{jk}/\lambda_{jk}) \le 0, j \in J_k, k\in K&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; A\lambda \le a &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;0 \le x, \nu_{jk} \le U, 0 \le \lambda_{jk} \le 1, j \in J_k, k\in K, (CRP)&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
where &amp;lt;math&amp;gt;\nu_{jk}&amp;lt;/math&amp;gt; is the disaggregated continuous variable for the  &amp;lt;math&amp;gt;j &amp;lt;/math&amp;gt;th term in the  &amp;lt;math&amp;gt;k &amp;lt;/math&amp;gt;th disjunction and  &amp;lt;math&amp;gt;\lambda_{jk}&amp;lt;/math&amp;gt; is the corresponding multiplier for each term &amp;lt;math&amp;gt;j \in J_k&amp;lt;/math&amp;gt; in a given disjunction &amp;lt;math&amp;gt;k\in K&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Given the problem (R) yields a lower bound, the problem (CRP) is a relaxation of problem (R).&lt;br /&gt;
&lt;br /&gt;
===Global Upper Bound Subproblem===&lt;br /&gt;
This is step is to obtain a valid upper bound for problem (P) based on MINLP reformulation of (P) using big-M formulation.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;min Z = \sum_{k\in K}\sum_{j\in J_k} \gamma_{jk}y_{jk} + f(x)&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
s.t. &amp;lt;math&amp;gt;r(x)\le 0&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;g_{jk}(x) \le M_jk(1-y_jk), j \in J_k, k\in K&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; x = \sum_{j \in J_k} y_{jk}= 1,  k\in K&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; Ay \le a &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;0 \le x \le U, y_{jk} \in \{0,1\}, j \in J_k, k\in K, (P-MIP)&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
where &amp;lt;math&amp;gt;M_jk&amp;lt;/math&amp;gt; is the big-M parameter, which provides a valid upper bound to the violation of &amp;lt;math&amp;gt;g_jk \le 0&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt; is an upper bound to &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Bound Contraction Procedure===&lt;br /&gt;
The bound contraction scheme is designed to tighten the lower and upper bound of a given continuous variable &amp;lt;math&amp;gt;x_i&amp;lt;/math&amp;gt;, which will eliminate the nonoptimal subregions and accelerate the search. This will greatly reduce the difference between lower and upper bounds of the objective function and save computational work.&amp;lt;br/&amp;gt;&lt;br /&gt;
The contraction scheme is shown by the following NLP problem:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;min/max   &amp;lt;/math&amp;gt;  &amp;lt;math&amp;gt;x_i  &amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
s.t. &amp;lt;math&amp;gt;\sum_{k\in K}\sum_{j\in J_k} \gamma_{jk}\lambda_{jk} + \bar{f}(x)r(x)\le GUB&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\bar{r}(x) \le 0 &amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; x = \sum_{j \in J_k}\nu_{jk}, \sum_{j \in J_k}\lambda_{jk}= 1,  k\in K&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; 0 \le \nu_{jk} \le \lambda_{jk}U_{jk},j \in J_K, k \in K&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \lambda_{jk}\bar{g}_{jk}(\nu_{jk}/\lambda_{jk}) \le 0, j \in J_k, k\in K&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; Ay \le a &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;0 \le \nu^{jk} \le U, 0 \le \lambda_{jk} \le 1, j \in J_k, k\in K, (BCP)&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
As is shown in the following Fig.3, if the solution point &amp;lt;math&amp;gt;x_i&amp;lt;/math&amp;gt; of problem (CRP) does not lie at its bound, then we solve the NLP problem (CRP) and update the upper and lower bounds based on the relative distance from the solution to each bound of to decide the direction of bound contraction. Bound contraction is applied to only the continuous variables. Not much reduction will be made if the contraction is not successful, and then move to next variable.&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Fig03_KL.png|300px]]&amp;lt;br/&amp;gt;&lt;br /&gt;
===Branch and Bound on Boolean Variables===&lt;br /&gt;
This step is where branch and bound method is applied in the space of the terms of the disjunctions by solving the relaxed convex NLP problem (CRP) at each node. The rule is to select the variable &amp;lt;math&amp;gt;\lambda_{jk}&amp;lt;/math&amp;gt; with the largest fractional value in the solution. By creating two child nodes with &amp;lt;math&amp;gt;\lambda_{jk}=1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\lambda_{jk}=0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;Y_{jk}&amp;lt;/math&amp;gt; is fixed in problem (R) respectively. The nodes number should be finite due to finite Boolean variables and the global lower bound increases monotonically. &amp;lt;br/&amp;gt;&lt;br /&gt;
Upper bound needs to be updated when there is a gap between the solution of this problem and the original nonconvex GDP problem (P). When the feasible solution to problem (R) is obtained and the gap between nonconvex term and convex underestimator in problem (P) and problem (R) is nonzero, all Boolean variables should be fixed and Spatial Branch and Bound Method should be introduced.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Spatial Branch and Bound Method===&lt;br /&gt;
Since there is a specific wiki page introducing this method, there is no need to discuss the detailed algorithm here. In this case, by solving problem (CRP), the nonconvex term with the max gap is chosen. Then, choose the middle point of the variable bound as the branching point. Lastly, select the node with lowest objective value. The current node will be fathomed if the lowest objective value of the node is greater than GUB.&lt;br /&gt;
==Advantages and Disadvantages==&lt;br /&gt;
===Advantages===&lt;br /&gt;
Many application shows that tighter lower bounds can be obtained in bilinear and concave problems by applying basic Nonconvex GDP steps, which often leads to a significant reduction of the numbers of nodes in Spatial Branch and Bound method. This is a direct indication of achieving tightening bounds.&amp;lt;br/&amp;gt;&lt;br /&gt;
Meanwhile, GDPs are often reformulated as an MINLP, which enables us to take advantages of the existing MINLP solvers.&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
The main problem about this method is that the question how to efficiently implement the strong relaxations within a spatial branch and bound framework in a large scale system still cannot be answered.&lt;br /&gt;
&lt;br /&gt;
=Applications and Examples=&lt;br /&gt;
==Application: Solution Algorithm for nonconvex GDP problems==&lt;br /&gt;
===Step 0 Heuristic Search (Nonconvex MINLP)===&lt;br /&gt;
Use MINLP solvers (such as DICOPT++) to solve the nonconvex problem (P-MIP), and set GUB as the best upper bound and let &amp;lt;math&amp;gt;(Y^*,x*)&amp;lt;/math&amp;gt; be the solution.&amp;lt;br/&amp;gt;&lt;br /&gt;
===Step 1 Bound Contraction (Convex NLP)===&lt;br /&gt;
# Initialize the Relative Distance from &amp;lt;math&amp;gt;x^*_i&amp;lt;/math&amp;gt; to each bound&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;RDL_i = \frac{x^*_i - x^L_i}{x^U_i - x^L_i}, RDU_i = \frac{x^U_i - x^*_i}{x^U_i - x^L_i}&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
# Increase iteration, solve problem (BCP)&amp;lt;br/&amp;gt;&lt;br /&gt;
Update bound and continue with &amp;lt;math&amp;gt;x^*_i&amp;lt;/math&amp;gt; when contraction is greater than &amp;lt;math&amp;gt;SP_M&amp;lt;/math&amp;gt;. Otherwise select next x.&amp;lt;br/&amp;gt;&lt;br /&gt;
# Return to 2 and repeat until max iteration.&amp;lt;br/&amp;gt;&lt;br /&gt;
===Step 2 Branch and Bound on Discrete Variables (Convex NLP)===&lt;br /&gt;
# set tolerance &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; for difference in &amp;lt;math&amp;gt;Z^L&amp;lt;/math&amp;gt; and GUB. Set &amp;lt;math&amp;gt;\varepsilon&amp;lt;/math&amp;gt; for max gap.&lt;br /&gt;
# Solve problem (CRP) to obtain lower bound &amp;lt;math&amp;gt;Z^L&amp;lt;/math&amp;gt;. Update lowest lower bound as GLB.&lt;br /&gt;
# Fathom, go to step 3 or Branch on the node.&lt;br /&gt;
===Step 3 Spatial Branch and Bound (Convex NLP)===&lt;br /&gt;
# Fix all &amp;lt;math&amp;gt;\lambda_{jk}&amp;lt;/math&amp;gt; according to solution from step 2&lt;br /&gt;
# Solve problem (CRP) until no open node with &amp;lt;math&amp;gt;Z^L \le GUB - \alpha&amp;lt;/math&amp;gt;&lt;br /&gt;
# Go to step 2&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
===Optimal structure for process system===&lt;br /&gt;
The system net work is shown in the following Fig4.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Fig04_KL.png|thumb|left|450px|Fig4. Superstructure of the process]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The formulation for this problem is shown as follows:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; min Z =-35P1A - 30P2B +10F1 + 8F2 + F4A + F4B + 4F5A + 4F5B + 2CF + 50CD&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;s.t.  F3A = 0.55F1 + 0.5F2&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;F3B = 0.45F1 + 0.5F2&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;P1A = F8A + F10A + F6A &amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;P1B = F8B + F10B + F6B &amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;P2A = F9A + F11A + F7A&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;P2B = F9B +F11B+F7B&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;F6A=E6F3A,F6B=F6F3B&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;F7A=E7F3A,F7B=E7F3B&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;E4+D5+D6+D7 = 1&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;P1A \ge 4.0P1B, P2B \ge 3.0P2A&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;P1A+P1B \le 15, P2A +P2B \le 18&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{bmatrix}&lt;br /&gt;
YF\\&lt;br /&gt;
F4A=E4F3A,F4B=E4F3B\\&lt;br /&gt;
2.5 \le F4A+F4B \le 25\\&lt;br /&gt;
F8A=0.85F4A, F8B=0.20F4B\\&lt;br /&gt;
F9A=0.15F4A,F9B=0.8F4B\\&lt;br /&gt;
CF=2&lt;br /&gt;
\end{bmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\or&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{bmatrix}&lt;br /&gt;
\lnot YF\\&lt;br /&gt;
F4A=F4B=0\\&lt;br /&gt;
F8A=F8B=0\\&lt;br /&gt;
F9A=F9B=0\\&lt;br /&gt;
E4=0\\&lt;br /&gt;
CF=0&lt;br /&gt;
\end{bmatrix}&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{bmatrix}&lt;br /&gt;
YD\\&lt;br /&gt;
F5A=E5F3A,F5B=E5F3B\\&lt;br /&gt;
2.5 \le F5A+F5B \le 25\\&lt;br /&gt;
F10A=0.975F5A, F10B=0.050F5B\\&lt;br /&gt;
F11A=0.025F5A,F11B=0.950F5B\\&lt;br /&gt;
CD=25&lt;br /&gt;
\end{bmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\or&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{bmatrix}&lt;br /&gt;
\lnot YD\\&lt;br /&gt;
F5A=F5B=0\\&lt;br /&gt;
F10A=F10B=0\\&lt;br /&gt;
F11A=F11B=0\\&lt;br /&gt;
E5=0\\&lt;br /&gt;
CD=0&lt;br /&gt;
\end{bmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;0 \le CF,CD; F1,F2 \le 25; 0 \le E4,E5,E6,E7 \le 1;&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;Y\in \{true,false\}&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
The optimal solution is -510.08, and &amp;lt;math&amp;gt; F1^* = 8, F2^* = 25, P1^* = 15, P2^* = 18, E^* = (0.108,0.758,0,0.134)&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;Y^*=(true,true)&amp;lt;/math&amp;gt;, shown as the following Fig5.&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Fig05_KL.png|thumb|left|450px|Fig5. Optimal Solution]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is the detailed explanation of the method applied in this example. Bilinear terms are replaced by continuous variables and linear underestimators and overestimators are introduced to construct the relaxed convex GDP problem (R). In step 0, which is mentioned above, DICOPT++ finds the trivial solution of &amp;lt;math&amp;gt;0.0&amp;lt;/math&amp;gt; ath first NLP. By solving 14 LP subproblems in step 1, the bound is reduced &amp;lt;math&amp;gt;54.17%&amp;lt;/math&amp;gt; for continuous variables. In step 2, discrete branch and bound on problem (CRP) reaches a feasible solution to the relaxed GDP at the third node, where &amp;lt;math&amp;gt;Y^L=(1,1)&amp;lt;/math&amp;gt; and objective function of &amp;lt;math&amp;gt;-661.56&amp;lt;/math&amp;gt;. When switches to Spatial Branch and Bound in step 3, &amp;lt;math&amp;gt;Y^F=(1,1)&amp;lt;/math&amp;gt; is fixed. Then after 27 nodes and gap being reduced, upper bound is found to be &amp;lt;math&amp;gt;-510.08&amp;lt;/math&amp;gt;. Using the upper bound to update GUB value in step 2, a cut to exclude &amp;lt;math&amp;gt;Y = (true,true)&amp;lt;/math&amp;gt; is added to the previous node and the problem (CRP) is resolved, which leads to a infeasible solution. Then by closing current node and backtrack, two more nodes are searched and fathomed by the GUB.&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
For nonconvex generalized disjunctive programming, specified algorithm can provide a global optimum more efficiently by tightening the lower bound and reduce nodes in Spatial Branch and Bound step, compared with conventional MINLP and GBD algorithms. This method address the increasing need in applications in engineering and other area, where nonlinearity and nonconvexity are essential due to the problem nature.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
# Lee, Sangbum, and Ignacio E. Grossmann. &amp;quot;New algorithms for nonlinear generalized disjunctive programming.&amp;quot; Computers &amp;amp; Chemical Engineering 24.9 (2000): 2125-2141.&lt;br /&gt;
# Lee, Sangbum, and Ignacio E. Grossmann. &amp;quot;A global optimization algorithm for nonconvex generalized disjunctive programming and applications to process systems.&amp;quot; Computers &amp;amp; Chemical Engineering 25.11 (2001): 1675-1697.&lt;br /&gt;
# Lee, Sangbum, and Ignacio E. Grossmann. &amp;quot;Global optimization of nonlinear generalized disjunctive programming with bilinear equality constraints: applications to process networks.&amp;quot; Computers &amp;amp; chemical engineering 27.11 (2003): 1557-1575.&lt;br /&gt;
# Grossmann, Ignacio E., and Juan P. Ruiz. &amp;quot;Generalized Disjunctive Programming: A framework for formulation and alternative algorithms for MINLP optimization.&amp;quot; Mixed Integer Nonlinear Programming. Springer New York, 2012. 93-115.&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Extended_cutting_plane_(ECP)&amp;diff=6660</id>
		<title>Extended cutting plane (ECP)</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Extended_cutting_plane_(ECP)&amp;diff=6660"/>
		<updated>2022-04-01T15:36:22Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This web page is a duplicate of https://optimization.mccormick.northwestern.edu/index.php/Extended_cutting_plane_(ECP)&lt;br /&gt;
&lt;br /&gt;
Authors: Kyung Je Lee (ChE 345 Spring 2015)&lt;br /&gt;
Stewards: Dajun Yue, Fengqi You&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
===Background===&lt;br /&gt;
&#039;&#039;&#039;Extended Cutting Plane&#039;&#039;&#039; is an optimization method suggested by Westerlund and Petersson in 1996 to solve Mixed-Integer NonLinear Programming (MINLP) problems&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;[1]&amp;lt;/span&amp;gt;. ECP can be thought as an extension of Kelley&#039;s cutting plane method, which uses iterative Newton&#039;s method to refine feasible area and ultimately solve a problem within tolerable error. Therefore, ECP method does not require solving Non-Linear Programming(NLP) while Branch and Bound(BB) and Outer Approximation(OA) do require NLP solution for an upper bound. However, ECP generally requires more iterations. Although cutting plane method is criticized for its slow convergence, ECP is more efficient in cases where evaluation of non linear functions are time costly. For example, in optimization of a dynamic separation process done by Stefan Emet and Tapio Westerlund, ECP was 100 times faster than BB and 10 times faster than OA in solving the MINLP&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;[2]&amp;lt;/span&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
===Comparison with outer approximation===&lt;br /&gt;
ECP is closely related to OA in that it uses first differential approximation to cut the plane. The difference is that OA solves a NLP problem for its upper bound while ECP only uses solution of MILP in each iteration. This means that OA is more efficient in main iteration loops. This advantage of OA is more prominent in strongly non-linear MINLP problems that are mainly consisted of continuous variables. However, in pure integer non-linear programming problems, OA method does not have any advantage over ECP. Although it takes less iterations for OA to converge, solving NLP problem in each iteration incur more computation work than solving MILP because MILP has only one additional linear constraints in each iteration.&lt;br /&gt;
&lt;br /&gt;
===Formulation of MINLP problem===&lt;br /&gt;
&lt;br /&gt;
A general MINLP can be formulated as the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \min_{x,y}  Z=C_x^T x + C_y^T y &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;s.t. \quad g(x,y) \leq 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where, cx and cy are vectors with constants, x is a vector of continuous variables, y is a vector with discrete variables&lt;br /&gt;
and g(x, y) is a vector with continuous convex functions, all defined on a set.&lt;br /&gt;
&lt;br /&gt;
==ECP algorithm==&lt;br /&gt;
Since g(x,y) is a convex function set and continuously differentiable it follows that&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; g_i(x^k,y^k) + \left( \frac{\partial g_i}{\partial x}\right)_{x^k,y^k} (x-x^k) + \left( \frac{\partial g_i}{\partial y}\right)_{x^k,y^k} (y-y^k) \leq g_i(x,y)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also, if,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; max(g_i(x^k,y^k)) \leq 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then for all i&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; g_i(x^k,y^k) \leq 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Using these properties, ECP algorithm is as follows:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 0.&#039;&#039;&#039; Set k=1. Leave out all nonlinear constraints and set up an MILP problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1.&#039;&#039;&#039; Solve the MILP problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2.&#039;&#039;&#039; Check if the solution satisfies nonlinear constraints. If all constraints are satisfied, in other words, if &amp;lt;math&amp;gt; g_i(x^k,y^k) \leq 0&amp;lt;/math&amp;gt; is true for all i, &amp;lt;math&amp;gt;(x^k, y^k)&amp;lt;/math&amp;gt; is a global optimum.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3&#039;&#039;&#039; If any of the constraints are not satisfied, add a constraint for most violated constraint, g&lt;br /&gt;
::&amp;lt;math&amp;gt; g_i(x^k,y^k) + \left( \frac{\partial g_i}{\partial x}\right)_{x^k,y^k} (x-x^k) + \left( \frac{\partial g_i}{\partial y}\right)_{x^k,y^k} (y-y^k)\leq 0 &amp;lt;/math&amp;gt; &lt;br /&gt;
::set k= k+1 and go to Step 1.&lt;br /&gt;
&lt;br /&gt;
== Example == &lt;br /&gt;
&amp;lt;math&amp;gt; \min z = -x_1-x_2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; s.t. \quad g1(x_1,x_2) = 0.15(x_1-8)^2 + 0.1 (x_2-6)^2+0.025e^{x_1}x_2^{-2}-5 \leq 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; g2(x_1,x_2) = 1/x_1 + 1/x_2- x_1^{0.5}x_2^{0.5}+4 \leq 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; 2x_1-3x_2-2 \leq 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; 1\leq x_1 \leq 20,\quad 1\leq x_2\leq 20, \quad x_1\in \R \quad x_2 \in \N&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First MILP can be set-up by leaving out non-linear constraint &amp;lt;math&amp;gt; g_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt; g_2&amp;lt;/math&amp;gt;&lt;br /&gt;
[[File:ECP.PNG|350px|thumb|right|Visualization of how ECP is used to solve MINLP&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&amp;lt;math&amp;gt; \min z = -x_1-x_2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; s.t. \quad2x_1-3x_2-2 \leq 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; 1\leq x_1 \leq 20,\quad 1\leq x_2\leq 20 &amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; x_1\in \R \quad x_2 \in \N &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first iteration gives &amp;lt;math&amp;gt;x_1^1 = 20, x_2^1=20 &amp;lt;/math&amp;gt;.&lt;br /&gt;
This leads to &amp;lt;math&amp;gt;g_1(x_1^1,x_2^1)=30359, \quad g_2(x_1^1,x_2^1)= -15.9 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A new constraint is introduced for the second iteration with the most violated nonlinear constraint &amp;lt;math&amp;gt;g_1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \min z = -x_1-x_2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; s.t. \quad g_1(x_1^1,x_2^1)+\triangledown g_1(x_1^1,x_2^1)^T(x-x_1^1,x-x_2^1) \leq 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; 2x_1-3x_2-2 \leq 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; 1\leq x_1 \leq 20,\quad 1\leq x_2\leq 20 &amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; x_1\in \R \quad x_2 \in \N &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Same procedure can be taken for consequent iterations, and with 17 iterations, ECP gives answer of &amp;lt;math&amp;gt;x_1^1 = 8.9, x_2^1=12 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Non-smooth Functions==&lt;br /&gt;
In non-smooth functions, ECP algorithm can be generalized by relaxing continuous differentiability. Therefore, the only change in the algorithm is that subgradients are used instead of gradients. Subgradient of convex function &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; at point&amp;lt;math&amp;gt;z_0&amp;lt;/math&amp;gt; is any vector &amp;lt;math&amp;gt;\xi&amp;lt;/math&amp;gt; that satifies&lt;br /&gt;
&amp;lt;math&amp;gt;h(z_0) + \xi(z-z_0) \leq h(z)&amp;lt;/math&amp;gt; &amp;lt;sup&amp;gt; 3 &amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
ECP is an extension of cutting plane(CP) method that is used to solve NLP problems. The application of cutting plane to MINLP is rather straight forward and the strength of ECP lies in that it is simple and robust. Therefore, it is suitable for solving large MINLP problems with moderate degree of non-linearity and complex system that require extensive computational work. ECP only requires one additional constraint to improve one solution for MILP problem at each iteration whereas both NLP and MILP problems are solved in other MINLP methods. However, since there is only one adjustment made at a time, it has slow convergence to solution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
1. Tapio Westerlund, Frank Pettersson, An extended cutting plane method for solving convex MINLP problems, Computers &amp;amp; Chemical Engineering, Volume 19, Supplement 1, 11–14 June 1995, Pages 131-136, ISSN 0098-1354, http://dx.doi.org/10.1016/0098-1354(95)87027-X.&lt;br /&gt;
&lt;br /&gt;
2. Stefan Emet and Tapio Westerlund. 2008. Solving a dynamic separation problem using MINLP techniques. Appl. Numer. Math. 58, 4 (April 2008), 395-406. DOI=10.1016/j.apnum.2007.01.023 http://dx.doi.org/10.1016/j.apnum.2007.01.023&lt;br /&gt;
&lt;br /&gt;
3.Tapio Westerlund, Hans Skrifvars, Iiro Harjunkoski, Ray Pörn, An extended cutting plane method for a class of non-convex MINLP problems, Computers &amp;amp; Chemical Engineering, Volume 22, Issue 3, 28 February 1998, Pages 357-365, ISSN 0098-1354, http://dx.doi.org/10.1016/S0098-1354(97)00000-8.&lt;br /&gt;
(http://www.sciencedirect.com/science/article/pii/S0098135497000008)&lt;br /&gt;
&lt;br /&gt;
4. An extended supporting hyperplane algorithm for convex  MINLP problems http://blogs.abo.fi/ose/files/2014/10/ose2014_kronqvist.pdf&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Classical_robust_optimization&amp;diff=6659</id>
		<title>Classical robust optimization</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Classical_robust_optimization&amp;diff=6659"/>
		<updated>2022-04-01T15:35:47Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This web page is a duplicate of https://optimization.mccormick.northwestern.edu/index.php/Classical_robust_optimization&lt;br /&gt;
&lt;br /&gt;
Author Names: Andre Ramirez-Cedeno &amp;lt;br/&amp;gt;&lt;br /&gt;
Steward: Fengqi You, Dajun Yue &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction and History==&lt;br /&gt;
Robust optimization is a subset of optimization theory that deals with a certain measure of robustness vs uncertainty. This balance of robustness and uncertainty is represented as variability in the parameters of the problem at hand and or its solution [1]. In robust optimization, the modeler aims to find decisions that are optimal for the worst-case realization of the uncertainties within a given set [2]. Robust optimization dates back to the beginning of modern decision theory in the 1950’s. It became a discipline of its own in the 1970’s with paralleled development in other technological fields. &lt;br /&gt;
&lt;br /&gt;
===Uncertainty===&lt;br /&gt;
Sources of uncertainty could be due to at least three different conditions [3].&amp;lt;br/&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;1. Ignorance&#039;&#039;&#039; - such as not knowing exactly how much oil is in a reserve &amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2. Noise&#039;&#039;&#039; - such as measurement errors, or incomplete data &amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3. Events that have not yet occurred&#039;&#039;&#039; - such as future product demand &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===What is Robustness?===&lt;br /&gt;
&lt;br /&gt;
Robustness refers to the ability of a system to cope with errors during an execution. It can also be defined as the ability of an algorithm to continue operating despite abnormalities in calculations. Most algorithms try to find a balance between robustness and efficiency/execution time [4].&lt;br /&gt;
&lt;br /&gt;
==Applications==&lt;br /&gt;
&lt;br /&gt;
Robust Optimization has traditionally been applied in statistics, but is now applied in; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. Operations research &amp;lt;br/&amp;gt;&lt;br /&gt;
2. Control theory &amp;lt;br/&amp;gt;&lt;br /&gt;
3. Finance and Portfolio management &amp;lt;br/&amp;gt;&lt;br /&gt;
4. Logistics &amp;lt;br/&amp;gt;&lt;br /&gt;
5. Manufacturing engineering &amp;lt;br/&amp;gt;&lt;br /&gt;
6. Chemical engineering (Oil field developing) &amp;lt;br/&amp;gt;&lt;br /&gt;
7. Medicine &amp;lt;br/&amp;gt;&lt;br /&gt;
8. Computer science &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In engineering problems, these formulations often take the name of &amp;quot;Robust Design Optimization&amp;quot; or &amp;quot;Reliability Based Design Optimization&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Simple Mathematical Example==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align}&lt;br /&gt;
\text{Max} &amp;amp; ~~ 5X + 2Y\\&lt;br /&gt;
\text{s.t} &amp;amp; ~~ cX + dY \le 15 \\&lt;br /&gt;
&amp;amp; ~~ X \le 0 \\&lt;br /&gt;
&amp;amp; ~~ Y \le 0\\&lt;br /&gt;
&amp;amp; ~~ \forall c,d \\&lt;br /&gt;
\end{align}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This problem is a simple example of a robust optimization problem. The last clause; “for all (c,d) ϵ P” makes it a robust optimization problem because it implies that for a pair (X,Y) to be acceptable, the constraint cX + dY &amp;lt;= 15 must be satisfied for all values of (c,d) including the worst (c,d) pair that maximized the value of cX + dY for the given values of (x,y). For this example, P is simplified to a finite set meaning that for each (c,d) within the set, there is a constraint cX + dY &amp;lt;= 15.&lt;br /&gt;
&lt;br /&gt;
==Engineering Design Example== &lt;br /&gt;
===Rolls-Royce [5]===&lt;br /&gt;
&lt;br /&gt;
Robust design allows variation in the design process and the consideration of the appropriate selection of the nominal design point. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1:&#039;&#039;&#039; Define – Understand what is important to the client and formulate problem in engineering language. Choose design concepts with variation in mind. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Characterize – Generate measurable “critical to quality” (CTQ’s) criteria. For each CTQ, understand the possible sources of variation and measure the effects of variation. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Optimize – For each CTQ, choose a strategy to reduce the effects of variation. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4:&#039;&#039;&#039; Verify – Use knowledge of variation from previous steps to determine its effects in construction and design plan.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Variance Transmission equation is given by: &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;math&amp;gt; \sigma_Y^2 &amp;lt;/math&amp;gt; =  &amp;lt;math&amp;gt; \sigma_{X1}^2 \left ( \frac{dY}{dX1} \right )^2 + \sigma_{X2}^2 \left ( \frac{dY}{dX2} \right )^2 + \cdots + \sigma_{Xn}^2 \left ( \frac{dY}{dXn} \right )^2&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Rolls_Royce_robust_design.png]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] Wikipedia page for Robust Optimization &amp;lt;br/&amp;gt;&lt;br /&gt;
[2] http://www.robustopt.com/references/Robust%20Optimization%20Made%20Easy%20with%20ROME.pdf &amp;lt;br/&amp;gt;&lt;br /&gt;
[3] J. Rosenhead. Robustness analysis: keeping your options open. In J. Rosenhead, editor, Rational analysis for a problematic world: problem structuring methods for complexity, uncertainty and conflict, pages 193–218, Chichester, UK, 1989. John Wiley &amp;amp; Sons. &amp;lt;br/&amp;gt;&lt;br /&gt;
[4] http://www.stanford.edu/~bakerjw/Publications/Baker%20et%20al%20(2008)%20Robustness,%20Structural%20Safety.pdf &amp;lt;br/&amp;gt;&lt;br /&gt;
[5] http://web.stanford.edu/group/uq/events/optimization/2011/3-rollsroyce.pdf&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Dynamic_optimization&amp;diff=6658</id>
		<title>Dynamic optimization</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Dynamic_optimization&amp;diff=6658"/>
		<updated>2022-04-01T15:35:15Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This web page is a duplicate of https://optimization.mccormick.northwestern.edu/index.php/Dynamic_optimization&lt;br /&gt;
&lt;br /&gt;
Authors: Hanyu Shi (ChE 345 Spring 2014)&lt;br /&gt;
&lt;br /&gt;
Steward: Dajun Yue, Fengqi You&lt;br /&gt;
&lt;br /&gt;
Date Presented: Apr. 10, 2014&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Authors: Issac Newton, Albert Einstein (ChE 345 Spring 2014)&lt;br /&gt;
&lt;br /&gt;
Steward: Dajun Yue, Fengqi You&lt;br /&gt;
&lt;br /&gt;
Date Presented: Apr. 10, 2014&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
In this work, we will focus on the “at the same time” or direct transcription approach which allow a simultaneous method for the dynamic optimization problem. In particular, we formulate the dynamic optimization model with orthogonal collocation methods. These methods can also be regarded as a special class of implicit Runge–Kutta (IRK) methods. We apply the concepts and properties of IRK methods to the differential equations directly. With locating potential break points appropriately, this approach can model large-scale optimization formulations with the property of maintaining accurate state and control profiles. We mainly follows Biegler&#039;s work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==General Dynamic Optimization Problem==&lt;br /&gt;
&lt;br /&gt;
Differential algebraic equations in process engineering often have following characteristics: first,large-scale models – not easily scaled; second, sparse but no regular structure; third, direct linear solvers widely used; last, coarse-grained decomposition of linear algebra.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:shy 345 wiki fig 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Figure 2. Dynamic optimization approach&lt;br /&gt;
&lt;br /&gt;
There are several approaches can be applied to solve the dynamic optimization problems, which are shown in Figure 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Differential equations can usually be used to express conservation Laws, such as mass, energy, momentum.  Algebraic equations can usually be used to express constitutive equations, equilibrium, such as physical properties, hydraulics, rate laws. Algebraic equations usually have semi-explicit form and assume to be index one i.e., algebraic variables can be solved uniquely by algebraic equations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dynamic Optimization Problem has the following general form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\begin{array}{l}&lt;br /&gt;
\min \;\Phi \left( {z\left( t \right),y\left( t \right),u\left( t \right),p,{t_f}} \right)\\&lt;br /&gt;
s.t.\;\;\frac{{dz\left( t \right)}}{{dt}} = f\left( {z\left( t \right),y\left( t \right),u\left( t \right),p} \right)\\&lt;br /&gt;
g\left( {z\left( t \right),y\left( t \right),u\left( t \right),p} \right) = 0\\&lt;br /&gt;
{z^0} = z\left( 0 \right)\\&lt;br /&gt;
{z^l} \le z\left( t \right) \le {z^u}\\&lt;br /&gt;
{y^l} \le y\left( t \right) \le {y^u}\\&lt;br /&gt;
{u^l} \le u\left( t \right) \le {u^u}\\&lt;br /&gt;
{p^l} \le p \le {p^u}&lt;br /&gt;
\end{array}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
￼￼￼&amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, time&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt;, differential variables y, algebraic variables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_f&amp;lt;/math&amp;gt;  , final time&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, control variables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;, time independent parameters&lt;br /&gt;
&lt;br /&gt;
(This follows Biegler&#039;s slides ）&lt;br /&gt;
&lt;br /&gt;
==Derivation of Collocation Methods==&lt;br /&gt;
We first consider the differential algebraic system shown as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\begin{array}{l}&lt;br /&gt;
\frac{{dz}}{{dt}} = f\left( {z\left( t \right),y\left( t \right),u\left( t \right),p} \right),\;z\left( 0 \right) = {z_0}\\&lt;br /&gt;
g\left( {z\left( t \right),y\left( t \right),u\left( t \right),p} \right) = 0&lt;br /&gt;
\end{array}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;     （1）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The simultaneous approach requires discretizing of the state variables &amp;lt;math&amp;gt; z\left( t \right) &amp;lt;/math&amp;gt;, output variables &amp;lt;math&amp;gt; y\left( t \right) &amp;lt;/math&amp;gt; and manipulate variables &amp;lt;math&amp;gt; u\left( t \right) &amp;lt;/math&amp;gt;. We require the following properties to yield an efficient NLP formulation:&lt;br /&gt;
&lt;br /&gt;
1)	The explicit ODE discretization holds little computational advantage because Since the nonlinear program requires an iterative solution of the KKT conditions.&lt;br /&gt;
&lt;br /&gt;
2)	A single step approach which is self-starting and does not rely on smooth profiles that extend over previous time steps is preferred, because the NLP formulation needs to deal with discontinuities in control profiles.&lt;br /&gt;
&lt;br /&gt;
3)	The high-order implicit discretization provides accurate profiles with relatively few finite elements. As a result, the number of finite elements need not be excessively large, particularly for problems with many states and controls.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:shy 345 wiki fig 01.png]]&lt;br /&gt;
&lt;br /&gt;
Figure 1: Polynomial approximation for state profile across a finite element.&lt;br /&gt;
&lt;br /&gt;
==Polynomial Representation for ODE Solutions==&lt;br /&gt;
&lt;br /&gt;
We consider the following ODE:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\frac{{dz}}{{dt}} = f\left( {z\left( t \right),t} \right),\;z\left( 0 \right) = {z_0}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;    (2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
to apply the collocation method, we need to solve the differential equation (2) at certain points. For the state variable, we consider a polynomial approximation of order &amp;lt;math&amp;gt;K+1&amp;lt;/math&amp;gt;  (i.e., degree ≤ &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; ) over a single finite element, as shown in the above figure. This polynomial, denoted by &amp;lt;math&amp;gt;{z^K}(t)&amp;lt;/math&amp;gt;, can be represented in a number of equivalent ways, including the power series representation shown in equation (3), the Newton divided difference approximation, or B-splines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\frac{{dz}}{{dt}} = f\left( {z\left( t \right),t} \right),\;z\left( 0 \right) = {z_0}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;    (3)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We apply representations based on Lagrange interpolation polynomials to generate the NLP formulation, because the polynomial coefficients and the profiles have the same variable bounds. Here we select &amp;lt;math&amp;gt;K+1       &amp;lt;/math&amp;gt; interpolation points in element i and represent the state in a given element &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; as&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\begin{array}{l}&lt;br /&gt;
\left. {\begin{array}{*{20}{c}}&lt;br /&gt;
{t = {t_{i - 1}} + {h_i} \cdot \tau ,}\\&lt;br /&gt;
{{z^K}\left( t \right) = \sum\limits_{j = 0}^K {{l_j}\left( \tau  \right) \cdot {z_{ij}},} }&lt;br /&gt;
\end{array}} \right\}t \in \left[ {{t_{i - 1}},{t_i}} \right],\tau  \in \left[ {0,1} \right],\\&lt;br /&gt;
where\;{l_j}\left( \tau  \right) = \prod\limits_{k = 0, \ne j}^K {\frac{{\left( {\tau  - {\tau _k}} \right)}}{{\left( {{\tau _j} - {\tau _k}} \right)}}} ,&lt;br /&gt;
\end{array}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;   （4）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; {\tau _0} = 0,\;{\tau _i} &amp;lt; {\tau _{i + 1}},\;j = 0,...,K -  1 &amp;lt;/math&amp;gt;， and hi is the length of element &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;. This polynomial representation has the desirable property that &amp;lt;math&amp;gt;{z^K}({t_{ij}}) = {z_{ij}}&amp;lt;/math&amp;gt;,  where &amp;lt;math&amp;gt;{t_{ij}} = {t_{i - 1}} + {\tau _j}{h_j}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use a Lagrange polynomial with K interpolation points to represent the time derivative of the state. This leads to the Runge–Kutta basis representation for ￼the differential state:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{z^K}\left( t \right) = {z_{i - 1}} + {h_i} \cdot \sum\limits_{j = 1}^K {{\Omega _j}\left( \tau  \right)}  \cdot {\dot z_{ij}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (5)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt; {z_{i - 1}} &amp;lt;/math&amp;gt; is a coefficient that represents the differential state at the beginning of element &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt; {\dot z_{ij}} &amp;lt;/math&amp;gt;represents the time derivative &amp;lt;math&amp;gt;\frac{{d{z^K}({t_{ij}})}}{{d\tau }}   &amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt; {\Omega _j}(\tau )  &amp;lt;/math&amp;gt; is a polynomial of order K satisfying&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{\Omega _j}\left( \tau  \right) = \int_0^\tau  {{l_j}(\tau &#039;)} d\tau &#039;,t \in \left[ {{t_{i - 1}},{t_i}} \right],\tau  \in \left[ {0,1} \right]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (6)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We substitute the polynomial into equation (1) to calculate the polynomial coefficients, which is an approximation of the DAE. This results in the following collocation equations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{z^K}\left( t \right) = {z_{i - 1}} + {h_i} \cdot \sum\limits_{j = 1}^K {{\Omega _j}\left( \tau  \right)}  \cdot {\dot z_{ij}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (7)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
with &amp;lt;math&amp;gt; {z^k}({t_i} - 1) &amp;lt;/math&amp;gt; calculated separately. For the polynomial representations (4) and (5),  we normalize time over the element, write the state profile as a function of τ , and apply &amp;lt;math&amp;gt; \frac{{d{z^K}}}{{d\tau }} = {h_i}\frac{{d{z^K}}}{{dt}}  &amp;lt;/math&amp;gt; easily. For the Lagrange polynomial (4), the collocation equations ￼￼become&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\sum\limits_{j = 0}^K {{z_{ij}} \cdot \frac{{d{l_j}\left( {{\tau _k}} \right)}}{{d\tau }}}  = {h_i} \cdot f\left( {{z_{ik}},{t_{ik}}} \right),\;k = 1,...,K&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
while the collocation equations for the Runge–Kutta basis are given by&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{\dot z_{ik}} = f\left( {{z_{ik}},{t_{ik}}} \right)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (9)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{z_{ik}} = {z_{i - 1}} + {h_i} \cdot \sum\limits_{j = 1}^K {{\Omega _j}\left( \tau  \right)}  \cdot {\dot z_{ij}},\;k = 1,...,K&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (10)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
with &amp;lt;math&amp;gt;  {z_i} - 1 &amp;lt;/math&amp;gt;determined from the previous element &amp;lt;math&amp;gt;  i-1 &amp;lt;/math&amp;gt; or from the initial condition on the ODE.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&lt;br /&gt;
An example is given here to demonstrate the application of the collocation method. &lt;br /&gt;
&lt;br /&gt;
A differential equation is given as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\frac{{dz}}{{dt}} = {z^2} - 2 \cdot z + 1,\;z\left( 0 \right) =  - 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (11)&lt;br /&gt;
&lt;br /&gt;
With   t \in \left[ {0,1} \right], The analytic solution of this differential equation is &amp;lt;math&amp;gt;z\left( t \right) = \frac{{4 \cdot t - 3}}{{4 \cdot t + 1}}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lagrange interpolation and collocation method is applied to this differential equation respectively. And  the number of collocation points in each finite element is 3. The number of finite elements is   N  , and the length of the finite element is   1/N  . The following equations is given then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\sum\limits_{j = 0}^3 {{z_{ij}}\frac{{d{l_j}\left( {{\tau _k}} \right)}}{{d\tau }}}  = h\left( {z_{ik}^2 - 2 \cdot {z_{ik}} + 1} \right),\;k = 1,...,3,\;i = 1,...,N&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (12)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{z_{i + 1,0}} = \sum\limits_{j = 0}^0 {{l_j}\left( 1 \right)}  \cdot {z_{ij}},\;i = 1,...,N - 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (13)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{z_f} = \sum\limits_{j = 0}^K {{l_j}\left( 1 \right)}  \cdot {z_{Nj}},\;{z_{1,0}} = -3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (14)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With Radau collocation method, &amp;lt;math&amp;gt;  {\tau _0} = 0 &amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;  {\tau _1} = {\rm{0.155051}}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;  {\tau _2} = {\rm{0.644949}}&amp;lt;/math&amp;gt;   and &amp;lt;math&amp;gt;   {\tau _3} = 1 &amp;lt;/math&amp;gt;      can be obtained. The collocation equations are given as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\sum\limits_{j = 0}^3 {{z_j}\frac{{d{l_j}\left( {{\tau _k}} \right)}}{{d\tau }}}  = \left( {z_k^2 - 2 \cdot {z_k} + 1} \right),\;k = 1,...,3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (14)&lt;br /&gt;
&lt;br /&gt;
which can be formulated as:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\begin{array}{l}&lt;br /&gt;
{z_0} \cdot \left( { - 30 \cdot \tau _k^2 + 36 \cdot {\tau _k} - 9} \right) + {z_1} \cdot \left( {{\rm{46.7423}} \cdot \tau _k^2 - {\rm{51.2592}} \cdot {\tau _k} + {\rm{10.0488}}} \right)\\&lt;br /&gt;
 + {z_3} \cdot \left( { - {\rm{26.7423}} \cdot \tau _k^2 + {\rm{20.5925}} \cdot {\tau _k} - {\rm{ 1.38214}}} \right) + {z_3} \cdot \left( {10 \cdot \tau _k^2 - \frac{{16}}{3} \cdot {\tau _k} + \frac{1}{3}} \right)\\&lt;br /&gt;
 = \left( {z_k^2 - 2 \cdot {z_k} + 1} \right),\;k = 1,...,3&lt;br /&gt;
\end{array}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (15)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:shy 345 wiki fig 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Figure 3. Comparison of Radau collocation solution with exact solution&lt;br /&gt;
&lt;br /&gt;
The results are given as following by solving the above equations:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\left\{ {\begin{array}{*{20}{c}}&lt;br /&gt;
{{z_0} =  - 3}\\&lt;br /&gt;
{{z_1} =  - {\rm{1.65701}}}\\&lt;br /&gt;
{{z_2} = {\rm{0.032053}}}\\&lt;br /&gt;
{{z_3} = {\rm{0.207272}}}&lt;br /&gt;
\end{array}} \right.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (16)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As shown in Figure 3.2 the error  &amp;lt;math&amp;gt;\left\| {z\left( 1 \right) - {z^K}\left( 1 \right)} \right\|&amp;lt;/math&amp;gt;， is less than &amp;lt;math&amp;gt;10^-6&amp;lt;/math&amp;gt; for &amp;lt;math&amp;gt;N=5&amp;lt;/math&amp;gt;  and converges with &amp;lt;math&amp;gt;O(h^5)&amp;lt;/math&amp;gt;, which is consistent with the expected order &amp;lt;math&amp;gt;2K-1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(This example follows the work of Biegler and can be found in P293 of “ Nonlinear Programmng”.)&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this work, we mainly discussed simultaneous collocation approach for dynamic optimization problems, which formulated the differential equations to a set of algebraic equations. These direct transcription formulations depended on fully discretizing of the differential algebraic equations (DAE), which enabled us solve the simultaneous optimization problem without relying on embedded DAE solvers.  Because of this simultaneous formulation, we got the exact first and second order derivatives  through the optimization modeling system, and both structure and sparsity can be exploited.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
1. Biegler, Lorenz T. Nonlinear programming: concepts, algorithms, and applications to chemical processes. Vol. 10. SIAM, 2010.&lt;br /&gt;
&lt;br /&gt;
2. Chu, Yunfei, and Fengqi You. &amp;quot;Integration of scheduling and control with online closed-loop implementation: Fast computational strategy and large-scale global optimization algorithm.&amp;quot; Computers &amp;amp; Chemical Engineering 47 (2012): 248-268.&lt;br /&gt;
&lt;br /&gt;
3. http://en.wikipedia.org/wiki/Dynamic_programming&lt;br /&gt;
&lt;br /&gt;
4. http://en.wikipedia.org/wiki/Differential_algebraic_equation&lt;br /&gt;
&lt;br /&gt;
5. http://numero.cheme.cmu.edu/uploads/dynopt.pdf&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Dynamic_optimization&amp;diff=6656</id>
		<title>Dynamic optimization</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Dynamic_optimization&amp;diff=6656"/>
		<updated>2022-04-01T15:35:04Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This web page is a duplicate of https://optimization.mccormick.northwestern.edu/index.php/Dynamic_optimization&lt;br /&gt;
Authors: Hanyu Shi (ChE 345 Spring 2014)&lt;br /&gt;
&lt;br /&gt;
Steward: Dajun Yue, Fengqi You&lt;br /&gt;
&lt;br /&gt;
Date Presented: Apr. 10, 2014&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Authors: Issac Newton, Albert Einstein (ChE 345 Spring 2014)&lt;br /&gt;
&lt;br /&gt;
Steward: Dajun Yue, Fengqi You&lt;br /&gt;
&lt;br /&gt;
Date Presented: Apr. 10, 2014&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
In this work, we will focus on the “at the same time” or direct transcription approach which allow a simultaneous method for the dynamic optimization problem. In particular, we formulate the dynamic optimization model with orthogonal collocation methods. These methods can also be regarded as a special class of implicit Runge–Kutta (IRK) methods. We apply the concepts and properties of IRK methods to the differential equations directly. With locating potential break points appropriately, this approach can model large-scale optimization formulations with the property of maintaining accurate state and control profiles. We mainly follows Biegler&#039;s work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==General Dynamic Optimization Problem==&lt;br /&gt;
&lt;br /&gt;
Differential algebraic equations in process engineering often have following characteristics: first,large-scale models – not easily scaled; second, sparse but no regular structure; third, direct linear solvers widely used; last, coarse-grained decomposition of linear algebra.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:shy 345 wiki fig 02.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Figure 2. Dynamic optimization approach&lt;br /&gt;
&lt;br /&gt;
There are several approaches can be applied to solve the dynamic optimization problems, which are shown in Figure 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Differential equations can usually be used to express conservation Laws, such as mass, energy, momentum.  Algebraic equations can usually be used to express constitutive equations, equilibrium, such as physical properties, hydraulics, rate laws. Algebraic equations usually have semi-explicit form and assume to be index one i.e., algebraic variables can be solved uniquely by algebraic equations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dynamic Optimization Problem has the following general form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\begin{array}{l}&lt;br /&gt;
\min \;\Phi \left( {z\left( t \right),y\left( t \right),u\left( t \right),p,{t_f}} \right)\\&lt;br /&gt;
s.t.\;\;\frac{{dz\left( t \right)}}{{dt}} = f\left( {z\left( t \right),y\left( t \right),u\left( t \right),p} \right)\\&lt;br /&gt;
g\left( {z\left( t \right),y\left( t \right),u\left( t \right),p} \right) = 0\\&lt;br /&gt;
{z^0} = z\left( 0 \right)\\&lt;br /&gt;
{z^l} \le z\left( t \right) \le {z^u}\\&lt;br /&gt;
{y^l} \le y\left( t \right) \le {y^u}\\&lt;br /&gt;
{u^l} \le u\left( t \right) \le {u^u}\\&lt;br /&gt;
{p^l} \le p \le {p^u}&lt;br /&gt;
\end{array}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
￼￼￼&amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, time&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt;, differential variables y, algebraic variables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_f&amp;lt;/math&amp;gt;  , final time&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, control variables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;, time independent parameters&lt;br /&gt;
&lt;br /&gt;
(This follows Biegler&#039;s slides ）&lt;br /&gt;
&lt;br /&gt;
==Derivation of Collocation Methods==&lt;br /&gt;
We first consider the differential algebraic system shown as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\begin{array}{l}&lt;br /&gt;
\frac{{dz}}{{dt}} = f\left( {z\left( t \right),y\left( t \right),u\left( t \right),p} \right),\;z\left( 0 \right) = {z_0}\\&lt;br /&gt;
g\left( {z\left( t \right),y\left( t \right),u\left( t \right),p} \right) = 0&lt;br /&gt;
\end{array}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;     （1）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The simultaneous approach requires discretizing of the state variables &amp;lt;math&amp;gt; z\left( t \right) &amp;lt;/math&amp;gt;, output variables &amp;lt;math&amp;gt; y\left( t \right) &amp;lt;/math&amp;gt; and manipulate variables &amp;lt;math&amp;gt; u\left( t \right) &amp;lt;/math&amp;gt;. We require the following properties to yield an efficient NLP formulation:&lt;br /&gt;
&lt;br /&gt;
1)	The explicit ODE discretization holds little computational advantage because Since the nonlinear program requires an iterative solution of the KKT conditions.&lt;br /&gt;
&lt;br /&gt;
2)	A single step approach which is self-starting and does not rely on smooth profiles that extend over previous time steps is preferred, because the NLP formulation needs to deal with discontinuities in control profiles.&lt;br /&gt;
&lt;br /&gt;
3)	The high-order implicit discretization provides accurate profiles with relatively few finite elements. As a result, the number of finite elements need not be excessively large, particularly for problems with many states and controls.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:shy 345 wiki fig 01.png]]&lt;br /&gt;
&lt;br /&gt;
Figure 1: Polynomial approximation for state profile across a finite element.&lt;br /&gt;
&lt;br /&gt;
==Polynomial Representation for ODE Solutions==&lt;br /&gt;
&lt;br /&gt;
We consider the following ODE:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\frac{{dz}}{{dt}} = f\left( {z\left( t \right),t} \right),\;z\left( 0 \right) = {z_0}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;    (2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
to apply the collocation method, we need to solve the differential equation (2) at certain points. For the state variable, we consider a polynomial approximation of order &amp;lt;math&amp;gt;K+1&amp;lt;/math&amp;gt;  (i.e., degree ≤ &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; ) over a single finite element, as shown in the above figure. This polynomial, denoted by &amp;lt;math&amp;gt;{z^K}(t)&amp;lt;/math&amp;gt;, can be represented in a number of equivalent ways, including the power series representation shown in equation (3), the Newton divided difference approximation, or B-splines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\frac{{dz}}{{dt}} = f\left( {z\left( t \right),t} \right),\;z\left( 0 \right) = {z_0}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;    (3)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We apply representations based on Lagrange interpolation polynomials to generate the NLP formulation, because the polynomial coefficients and the profiles have the same variable bounds. Here we select &amp;lt;math&amp;gt;K+1       &amp;lt;/math&amp;gt; interpolation points in element i and represent the state in a given element &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; as&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\begin{array}{l}&lt;br /&gt;
\left. {\begin{array}{*{20}{c}}&lt;br /&gt;
{t = {t_{i - 1}} + {h_i} \cdot \tau ,}\\&lt;br /&gt;
{{z^K}\left( t \right) = \sum\limits_{j = 0}^K {{l_j}\left( \tau  \right) \cdot {z_{ij}},} }&lt;br /&gt;
\end{array}} \right\}t \in \left[ {{t_{i - 1}},{t_i}} \right],\tau  \in \left[ {0,1} \right],\\&lt;br /&gt;
where\;{l_j}\left( \tau  \right) = \prod\limits_{k = 0, \ne j}^K {\frac{{\left( {\tau  - {\tau _k}} \right)}}{{\left( {{\tau _j} - {\tau _k}} \right)}}} ,&lt;br /&gt;
\end{array}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;   （4）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; {\tau _0} = 0,\;{\tau _i} &amp;lt; {\tau _{i + 1}},\;j = 0,...,K -  1 &amp;lt;/math&amp;gt;， and hi is the length of element &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;. This polynomial representation has the desirable property that &amp;lt;math&amp;gt;{z^K}({t_{ij}}) = {z_{ij}}&amp;lt;/math&amp;gt;,  where &amp;lt;math&amp;gt;{t_{ij}} = {t_{i - 1}} + {\tau _j}{h_j}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use a Lagrange polynomial with K interpolation points to represent the time derivative of the state. This leads to the Runge–Kutta basis representation for ￼the differential state:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{z^K}\left( t \right) = {z_{i - 1}} + {h_i} \cdot \sum\limits_{j = 1}^K {{\Omega _j}\left( \tau  \right)}  \cdot {\dot z_{ij}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (5)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt; {z_{i - 1}} &amp;lt;/math&amp;gt; is a coefficient that represents the differential state at the beginning of element &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt; {\dot z_{ij}} &amp;lt;/math&amp;gt;represents the time derivative &amp;lt;math&amp;gt;\frac{{d{z^K}({t_{ij}})}}{{d\tau }}   &amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt; {\Omega _j}(\tau )  &amp;lt;/math&amp;gt; is a polynomial of order K satisfying&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{\Omega _j}\left( \tau  \right) = \int_0^\tau  {{l_j}(\tau &#039;)} d\tau &#039;,t \in \left[ {{t_{i - 1}},{t_i}} \right],\tau  \in \left[ {0,1} \right]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (6)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We substitute the polynomial into equation (1) to calculate the polynomial coefficients, which is an approximation of the DAE. This results in the following collocation equations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{z^K}\left( t \right) = {z_{i - 1}} + {h_i} \cdot \sum\limits_{j = 1}^K {{\Omega _j}\left( \tau  \right)}  \cdot {\dot z_{ij}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (7)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
with &amp;lt;math&amp;gt; {z^k}({t_i} - 1) &amp;lt;/math&amp;gt; calculated separately. For the polynomial representations (4) and (5),  we normalize time over the element, write the state profile as a function of τ , and apply &amp;lt;math&amp;gt; \frac{{d{z^K}}}{{d\tau }} = {h_i}\frac{{d{z^K}}}{{dt}}  &amp;lt;/math&amp;gt; easily. For the Lagrange polynomial (4), the collocation equations ￼￼become&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\sum\limits_{j = 0}^K {{z_{ij}} \cdot \frac{{d{l_j}\left( {{\tau _k}} \right)}}{{d\tau }}}  = {h_i} \cdot f\left( {{z_{ik}},{t_{ik}}} \right),\;k = 1,...,K&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
while the collocation equations for the Runge–Kutta basis are given by&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{\dot z_{ik}} = f\left( {{z_{ik}},{t_{ik}}} \right)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (9)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{z_{ik}} = {z_{i - 1}} + {h_i} \cdot \sum\limits_{j = 1}^K {{\Omega _j}\left( \tau  \right)}  \cdot {\dot z_{ij}},\;k = 1,...,K&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (10)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
with &amp;lt;math&amp;gt;  {z_i} - 1 &amp;lt;/math&amp;gt;determined from the previous element &amp;lt;math&amp;gt;  i-1 &amp;lt;/math&amp;gt; or from the initial condition on the ODE.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&lt;br /&gt;
An example is given here to demonstrate the application of the collocation method. &lt;br /&gt;
&lt;br /&gt;
A differential equation is given as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\frac{{dz}}{{dt}} = {z^2} - 2 \cdot z + 1,\;z\left( 0 \right) =  - 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (11)&lt;br /&gt;
&lt;br /&gt;
With   t \in \left[ {0,1} \right], The analytic solution of this differential equation is &amp;lt;math&amp;gt;z\left( t \right) = \frac{{4 \cdot t - 3}}{{4 \cdot t + 1}}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lagrange interpolation and collocation method is applied to this differential equation respectively. And  the number of collocation points in each finite element is 3. The number of finite elements is   N  , and the length of the finite element is   1/N  . The following equations is given then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\sum\limits_{j = 0}^3 {{z_{ij}}\frac{{d{l_j}\left( {{\tau _k}} \right)}}{{d\tau }}}  = h\left( {z_{ik}^2 - 2 \cdot {z_{ik}} + 1} \right),\;k = 1,...,3,\;i = 1,...,N&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (12)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{z_{i + 1,0}} = \sum\limits_{j = 0}^0 {{l_j}\left( 1 \right)}  \cdot {z_{ij}},\;i = 1,...,N - 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (13)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{z_f} = \sum\limits_{j = 0}^K {{l_j}\left( 1 \right)}  \cdot {z_{Nj}},\;{z_{1,0}} = -3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (14)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With Radau collocation method, &amp;lt;math&amp;gt;  {\tau _0} = 0 &amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;  {\tau _1} = {\rm{0.155051}}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;  {\tau _2} = {\rm{0.644949}}&amp;lt;/math&amp;gt;   and &amp;lt;math&amp;gt;   {\tau _3} = 1 &amp;lt;/math&amp;gt;      can be obtained. The collocation equations are given as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\sum\limits_{j = 0}^3 {{z_j}\frac{{d{l_j}\left( {{\tau _k}} \right)}}{{d\tau }}}  = \left( {z_k^2 - 2 \cdot {z_k} + 1} \right),\;k = 1,...,3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (14)&lt;br /&gt;
&lt;br /&gt;
which can be formulated as:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\begin{array}{l}&lt;br /&gt;
{z_0} \cdot \left( { - 30 \cdot \tau _k^2 + 36 \cdot {\tau _k} - 9} \right) + {z_1} \cdot \left( {{\rm{46.7423}} \cdot \tau _k^2 - {\rm{51.2592}} \cdot {\tau _k} + {\rm{10.0488}}} \right)\\&lt;br /&gt;
 + {z_3} \cdot \left( { - {\rm{26.7423}} \cdot \tau _k^2 + {\rm{20.5925}} \cdot {\tau _k} - {\rm{ 1.38214}}} \right) + {z_3} \cdot \left( {10 \cdot \tau _k^2 - \frac{{16}}{3} \cdot {\tau _k} + \frac{1}{3}} \right)\\&lt;br /&gt;
 = \left( {z_k^2 - 2 \cdot {z_k} + 1} \right),\;k = 1,...,3&lt;br /&gt;
\end{array}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (15)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:shy 345 wiki fig 03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Figure 3. Comparison of Radau collocation solution with exact solution&lt;br /&gt;
&lt;br /&gt;
The results are given as following by solving the above equations:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\left\{ {\begin{array}{*{20}{c}}&lt;br /&gt;
{{z_0} =  - 3}\\&lt;br /&gt;
{{z_1} =  - {\rm{1.65701}}}\\&lt;br /&gt;
{{z_2} = {\rm{0.032053}}}\\&lt;br /&gt;
{{z_3} = {\rm{0.207272}}}&lt;br /&gt;
\end{array}} \right.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;           (16)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As shown in Figure 3.2 the error  &amp;lt;math&amp;gt;\left\| {z\left( 1 \right) - {z^K}\left( 1 \right)} \right\|&amp;lt;/math&amp;gt;， is less than &amp;lt;math&amp;gt;10^-6&amp;lt;/math&amp;gt; for &amp;lt;math&amp;gt;N=5&amp;lt;/math&amp;gt;  and converges with &amp;lt;math&amp;gt;O(h^5)&amp;lt;/math&amp;gt;, which is consistent with the expected order &amp;lt;math&amp;gt;2K-1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(This example follows the work of Biegler and can be found in P293 of “ Nonlinear Programmng”.)&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this work, we mainly discussed simultaneous collocation approach for dynamic optimization problems, which formulated the differential equations to a set of algebraic equations. These direct transcription formulations depended on fully discretizing of the differential algebraic equations (DAE), which enabled us solve the simultaneous optimization problem without relying on embedded DAE solvers.  Because of this simultaneous formulation, we got the exact first and second order derivatives  through the optimization modeling system, and both structure and sparsity can be exploited.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
1. Biegler, Lorenz T. Nonlinear programming: concepts, algorithms, and applications to chemical processes. Vol. 10. SIAM, 2010.&lt;br /&gt;
&lt;br /&gt;
2. Chu, Yunfei, and Fengqi You. &amp;quot;Integration of scheduling and control with online closed-loop implementation: Fast computational strategy and large-scale global optimization algorithm.&amp;quot; Computers &amp;amp; Chemical Engineering 47 (2012): 248-268.&lt;br /&gt;
&lt;br /&gt;
3. http://en.wikipedia.org/wiki/Dynamic_programming&lt;br /&gt;
&lt;br /&gt;
4. http://en.wikipedia.org/wiki/Differential_algebraic_equation&lt;br /&gt;
&lt;br /&gt;
5. http://numero.cheme.cmu.edu/uploads/dynopt.pdf&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Spatial_branch_and_bound_method&amp;diff=6655</id>
		<title>Spatial branch and bound method</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Spatial_branch_and_bound_method&amp;diff=6655"/>
		<updated>2022-04-01T15:33:47Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This web page is a duplicate of https://optimization.mccormick.northwestern.edu/index.php/Spatial_branch_and_bound_method&lt;br /&gt;
&lt;br /&gt;
Authors: Ellen Zhuang (ChE 345 Spring 2015)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Steward: Dajun Yue, Fengqi You&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Spatial branch-and-bound&#039;&#039;&#039; is a divide-and-conquer technique used to find the deterministic solution of global optimization problems.&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; It is a type of branch-and-bound method, which solves for the set of parameters that globally optimize the objective function, whether that be finding the minimum or maximum value of &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; or &amp;lt;math&amp;gt;-f(x)&amp;lt;/math&amp;gt;, respectively, where x exists over a set of candidate solutions in the feasible region of the problem. &lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Branch-and-bound is the systematic enumeration of possible solutions by iteratively searching the space of the problem. The problem’s candidate solutions form a rooted tree. The algorithm analyzes the nodes, or the subsets of the solution set. This step is known as &#039;&#039;branching&#039;&#039;. &#039;&#039;Bounding&#039;&#039; is the estimation of a lower and upper bound for the optimal solution at each node. The possible solution at each branch is checked against these bounds, and if it does not produce a better solution than the current best solution found, the solution is discarded in a step called &#039;&#039;pruning&#039;&#039;. This algorithm is repeated until the optimal solution is found. The method was first proposed by A. H. Land and A. G. Doig in 1960 for discrete programming, and its first applications were for discrete problems like the traveling salesman problem. &lt;br /&gt;
&lt;br /&gt;
Spatial branch-and-bound techniques solve mixed integer nonlinear programs (MINLP) with nonconvex terms. Unlike ordinary branch-and-bound methods for mixed integer linear programs (MILP), the spatial branch-and-bound method decomposes the nonlinear functions of the original problem symbolically and recursively with simple operators into simple functions.&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Comparison of branch-and-bound for MILP and spatial branch-and-bound for nonconvex MINLP.&lt;br /&gt;
! &lt;br /&gt;
! Branch-and-bound for MILP&lt;br /&gt;
! Spatial branch-and-bound for MINLP&lt;br /&gt;
|-&lt;br /&gt;
! Relaxation&lt;br /&gt;
| replace integer variables with bounded continuous variables to form LP || replace nonconvex terms with their convex envelopes to form convex (MI)NLP&lt;br /&gt;
|-&lt;br /&gt;
! Branching&lt;br /&gt;
| on integer variables&lt;br /&gt;
| on integer and continuous variables&lt;br /&gt;
|-&lt;br /&gt;
! Complexity&lt;br /&gt;
| NP-hard || NP-hard (but harder)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Spatial branch-and-bound is used to solve global optimization problems of the form:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;min  f(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;s.t.&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;g_i(x) \le 0&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt; i = 1,2,...,n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;     x \in S&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
where S is the set of candidate solutions and is a union of the subsets &amp;lt;math&amp;gt;S_j&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;j = 1,2,...,n&amp;lt;/math&amp;gt;. All functions &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;g_i(x)&amp;lt;/math&amp;gt; are at least continuously differentiable on some open set containing the subregion &amp;lt;math&amp;gt;S_j&amp;lt;/math&amp;gt; with bounds &amp;lt;math&amp;gt;s_j^L \le x \le s_j^U&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;s_j^L&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;s_j^U&amp;lt;/math&amp;gt; are the lower and upper bounds of &amp;lt;math&amp;gt;S_j&amp;lt;/math&amp;gt;, respectively. The feasible space of the problem is where &amp;lt;math&amp;gt;x \in S&amp;lt;/math&amp;gt;&lt;br /&gt;
and &amp;lt;math&amp;gt;g_i(x) \le 0&amp;lt;/math&amp;gt;. The goal is to find the point &amp;lt;math&amp;gt;x^*&amp;lt;/math&amp;gt; in the feasible region where &amp;lt;math&amp;gt;f^*(x) \le f(x) + \epsilon&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;\epsilon &amp;gt; 0&amp;lt;/math&amp;gt; is a given tolerance.&lt;br /&gt;
&lt;br /&gt;
== Algorithm ==&lt;br /&gt;
&lt;br /&gt;
The main algorithmic idea is to divide the problem into smaller subproblems by branching the variables into possible values, creating upper and lower bounds of the function in the certain domain, and finding sequences of approximate solutions which converge to the actual solution. The smaller subproblems are easier to solve than the original problem.&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convex relaxation is performed on the original nonconvex problem and underestimates the optimal value of the original function. The original problem is then allocated in the root node of the tree. With each iteration, the original problem is restricted , and the subregions are relaxed to make convex.&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; For each subregion, the lower and upper bounds of the optimal value of the objective function is found. If the bounds converge, then the global optimum value to the subregion is found. If the bounds do not meet the desired tolerance, the problem is partitioned into smaller subproblems (descendants) by dividing the feasible space of continuous variable (branching variable). The two subproblems are solved by recursive partitioning. If the subproblem does not have the global optimal solution, then it is pruned. The process is continued until the global optimum value of the original problem is found.&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Convergence Proof===&lt;br /&gt;
A branch and bound method using an exact selection rule will converge. Let M be the space of the sample. M is split at some iteration because it consists of an unqualified region that does not include candidate solutions that give the objective function more optimal solutions than the current incumbent solution. Thus, every qualified subregion of M&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt; contains the optimal solution.&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is noted that the spacial branch and bound algorithm does not guarantee convergence in a finite number of steps. The algorithm here uses the concept of ɛ-optimality instead of the usual idea of optimality. A solution x* is a global optimum if f(x*) &amp;lt; f(x) for x in the problem space. Because ɛ is positive, x&amp;lt;sup&amp;gt;ɛ&amp;lt;/sup&amp;gt; in the problem space is ɛ-globally optimal if the optimum is bounded by m ≤ f(x*) ≤ M where f(x&amp;lt;sup&amp;gt;ɛ&amp;lt;/sup&amp;gt;) is in [m,M] and M - m &amp;lt; ε. Finding the ε-global optimum solution ensures a finite termination than a usual global optimum solution.&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convergence is accelerated with fathoming. For each subregion, the lower bounding solution and the corresponding lower bounding objective function value are found. The region with the lowest objective function value is usually selected. An upper bound to the problem bounds the problem from above. It discards any region where the lower bound of the objective function exceeds the best upper bound. The discarded regions are fathomed.&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:sBBpic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
===Step 1: Initialization===&lt;br /&gt;
[[File:sBB_flowchart.png|500px|thumb|right|]]&lt;br /&gt;
&lt;br /&gt;
Initialize the subregions S&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; to a single region S encompassing the set of all variables and their ranges. Set the convergence tolerance, ɛ &amp;gt; 0, and the best solution &amp;lt;i&amp;gt;U&amp;lt;/i&amp;gt; = ∞ and the corresponding solution -∞ &amp;lt; x&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt; &amp;lt; ∞.&lt;br /&gt;
&lt;br /&gt;
===Step 2: Choice of Region===&lt;br /&gt;
&lt;br /&gt;
A subregion S&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; of the problem is chosen. &lt;br /&gt;
&lt;br /&gt;
Bound tightening may be performed during the first two steps. For the initialization step, optimization-based bounds tightening involves finding the smallest range of each variable subject to convex relaxation that will still make the problem feasible. This bounds tightening, however, is computationally expensive because 2n convex NLP or linear convex relation problems have to be solved, where n is the number of variables. For the second step, feasibility-based bounds tightening is performed at each region. Here, the variable bounds are tightened with the constraints of the original problem. This type of bounds tightening is computationally less expensive than the former. The spatial branch-and-bound algorithm will still converge without bound tightening, but it may make the process faster.&lt;br /&gt;
&lt;br /&gt;
===Step 3: Lower Bound===&lt;br /&gt;
&lt;br /&gt;
A convex relaxed problem of the original problem in the region chosen is formulated. The problem is reduced to standard form by linearizing the nonlinear terms. The nonlinear terms are replaced by added variables and constraints of type &amp;quot;added variable = nonlinear term&amp;quot;. The nonconvex terms are also replaced by convex under- and over- estimators such as convex envelopes. Convex relaxation guarantees a lower bound to the objective function value in that region. &lt;br /&gt;
&lt;br /&gt;
The new problem is solved to give an underestimation &amp;lt;i&amp;gt;l&amp;lt;/i&amp;gt; of the objective function with solution x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;&amp;lt;sup&amp;gt;L&amp;lt;/sup&amp;gt;. If &amp;lt;i&amp;gt;l&amp;lt;/i&amp;gt; &amp;gt; &amp;lt;i&amp;gt;U &amp;lt;/i&amp;gt;, the relaxed problem is infeasible and step 2 is repeated.&lt;br /&gt;
&lt;br /&gt;
===Step 4: Upper Bound===&lt;br /&gt;
&lt;br /&gt;
[[File:sBB.png|500px|thumb|right|Since the lower bound (LB) of S&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; is greater than the upper bound (UB) of S&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, which is the current best solution, so the solution in the region S&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; is infeasible and discarded.]]&lt;br /&gt;
&lt;br /&gt;
The original nonconvex problem in the selected region is solved to obtain a local optimum solution x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;&amp;lt;sup&amp;gt;U&amp;lt;/sup&amp;gt; with objective function &amp;lt;i&amp;gt; u &amp;lt;/i&amp;gt;. The subproblem can be solved numerically or by branching. If the spatial branch-and-bound algorithm has added variables, branching can be done on those. Convex relaxation is done, and the lower and upper bounds are found. These bounds are not dependent on the added variables. Branching can also be done on the original variables. The range of the original problem [x&amp;lt;sup&amp;gt;L&amp;lt;/sup&amp;gt;, x&amp;lt;sup&amp;gt;U&amp;lt;/sup&amp;gt;] is partitioned into [x&amp;lt;sup&amp;gt;L&amp;lt;/sup&amp;gt;, x&#039;] and [x&#039;, x&amp;lt;sup&amp;gt;U&amp;lt;/sup&amp;gt;]. The upper bounding problem is solved in each subregion.&lt;br /&gt;
&lt;br /&gt;
Algorithms that solve nonconvex NLPs are fragile and can fail even if a local optimum solution exists. If the function is unable to be solved, set &amp;lt;i&amp;gt; u&amp;lt;/i&amp;gt; = ∞ and -∞ &amp;lt; x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;&amp;lt;sup&amp;gt;U&amp;lt;/sup&amp;gt; &amp;lt; ∞.&lt;br /&gt;
&lt;br /&gt;
===Step 5: Pruning===&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;i&amp;gt; U &amp;lt;/i&amp;gt;&amp;gt; &amp;lt;i&amp;gt;u &amp;lt;/i&amp;gt;, set x&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt; = x&amp;lt;sup&amp;gt;U &amp;lt;/sup&amp;gt; and &amp;lt;i&amp;gt; U &amp;lt;/i&amp;gt; = &amp;lt;i&amp;gt; u &amp;lt;/i&amp;gt;. All the regions with lower bounds greater than &amp;lt;i&amp;gt; U &amp;lt;/i&amp;gt; are discarded.&lt;br /&gt;
&lt;br /&gt;
===Step 6: Check Region===&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;i&amp;gt;u &amp;lt;/i&amp;gt; - &amp;lt;i&amp;gt; l &amp;lt;/i&amp;gt; ≤ ɛ, then &amp;lt;i&amp;gt;u &amp;lt;/i&amp;gt; is a global minimum of the region, and the algorithm returns to step 2. If not, then the global minimum of the subregion is not found, and the algorithm proceeds to the next step.&lt;br /&gt;
&lt;br /&gt;
===Step 7: Branching===&lt;br /&gt;
&lt;br /&gt;
The region is split into sub-regions, and the algorithm returns to step 2.  There are several strategies for branching, and most consist of determining the set of variables on which to branch and the variables whose domain is sub-divided by the branching operation.&lt;br /&gt;
&lt;br /&gt;
==Example&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;==&lt;br /&gt;
[[File:sBBexample.png|200px|thumb|right|The global optimization problem min f(x) = 1/4 x + sin(x).&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;math&amp;gt;min&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;f(x) &amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;= 1/4 x + &amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;sin(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;s.t.&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;-3 \le x \le 6&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above NLP has two minima, one of which is global. Using the spatial branch-and-bound approach, the space of the problem is divided into subregions, within which the lower and upper bounds of the optimum is found. If the bounds are not within a given &amp;lt;math&amp;gt;\epsilon &amp;lt; 0&amp;lt;/math&amp;gt; tolerance (that is, the bounds are not sufficiently close), then the subregion is partitioned and the process is repeated. In this example, let &amp;lt;math&amp;gt;\epsilon = 0.15&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===First Iteration===&lt;br /&gt;
Consider the region that encompasses the entire range &amp;lt;math&amp;gt;-3 \le x \le 6&amp;lt;/math&amp;gt;. The objective function is underestimated with the convex underestimator &amp;lt;math&amp;gt;1/4 x - 1&amp;lt;/math&amp;gt;. To tighten the bounds, tangents to &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; are added: &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;-0.74x - 3.11&amp;lt;/math&amp;gt; at &amp;lt;math&amp;gt;x = -3&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;1.21x - 6.04&amp;lt;/math&amp;gt; at &amp;lt;math&amp;gt;x = 6&amp;lt;/math&amp;gt;. &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;The convex estimator is then &lt;br /&gt;
&amp;lt;math&amp;gt;f^c(x) = \{-0.74x - 3.11, 1/4 x - 1, 1.21x - 6.04\}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
The minimum of the convex problem is found to be &amp;lt;math&amp;gt;l = -1.53 &amp;lt;/math&amp;gt; at &amp;lt;math&amp;gt;x^L=-2.13&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Next, the upper bound of the problem is solved locally using Newton&#039;s method with &amp;lt;math&amp;gt;x = 6&amp;lt;/math&amp;gt; as the starting point. The upper bound is found to be &amp;lt;math&amp;gt;u = 0.147&amp;lt;/math&amp;gt; at &amp;lt;math&amp;gt;x^U = 4.46&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt; are not sufficiently close since &amp;lt;math&amp;gt;u - l = 1.67 &amp;gt;1 &amp;lt;/math&amp;gt;, so it is not certain that &amp;lt;math&amp;gt;x^U&amp;lt;/math&amp;gt; is a global optimum of the region.&lt;br /&gt;
&lt;br /&gt;
The region is partitioned into two subregions, using &amp;lt;math&amp;gt;x^U = 4.46&amp;lt;/math&amp;gt; as the branching point. The two unexamined regions are now &amp;lt;math&amp;gt;-3 \le x \le 4.46&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;4.46 \le x \le 6&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:sBBexample2.png|200px|thumb|center|The convex relaxation and lower bound of the first region examined.&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Second Iteration===&lt;br /&gt;
&lt;br /&gt;
Here, let &amp;lt;math&amp;gt;-3 \le x \le 4.46&amp;lt;/math&amp;gt; be the first region to be examined. The lower and upper bounds are found to be &amp;lt;math&amp;gt;l = -1.53&amp;lt;/math&amp;gt; (as before) and &amp;lt;math&amp;gt;u = -1.43&amp;lt;/math&amp;gt; at &amp;lt;math&amp;gt;x^U = -1.823&amp;lt;/math&amp;gt;. Now, &amp;lt;math&amp;gt;u - l = 0.11 &amp;lt; \epsilon&amp;lt;/math&amp;gt;, so &amp;lt;math&amp;gt;x^U = -1.823&amp;lt;/math&amp;gt; is accepted as the global optimum of the region analyzed. The best solution found thus far is now &amp;lt;math&amp;gt;x^* = -1.823&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;U = -1.42&amp;lt;/math&amp;gt;. Since a global optimum exists, the region does not need to be branched.&lt;br /&gt;
&lt;br /&gt;
[[File:sBBexample3.png|200px|thumb|center|The second iteration.&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Third Iteration===&lt;br /&gt;
&lt;br /&gt;
The region &amp;lt;math&amp;gt;4.46 \le x \le 6&amp;lt;/math&amp;gt; is examined. The lower and upper bounds are computed to be &amp;lt;math&amp;gt;l = 1.11&amp;lt;/math&amp;gt; at &amp;lt;math&amp;gt;x^L = 4.46&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u = 1.147&amp;lt;/math&amp;gt; at &amp;lt;math&amp;gt;x^U = 4.46&amp;lt;/math&amp;gt;. Since &amp;lt;math&amp;gt;u - l = 0.04 &amp;lt; \epsilon&amp;lt;/math&amp;gt;, the solution found is the optimum of the subregion, and branching is not necessary. The best solution found thus far does not need to be updated since &amp;lt;math&amp;gt;U &amp;lt; u&amp;lt;/math&amp;gt;, so this region is discarded. The algorithm converges at the global optimum &amp;lt;math&amp;gt;x^* = -1.823&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[File:sBBexample4.png|200px|thumb|center|The third iteration.&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
This example illustrates important features of the spatial branch-and-bound approach. First, the convex relaxation can be made tighter in each region. Second, in problems with multiple variables, the choice of the variable on which to branch is important. Third, the subregions are pruned when its lower bound is higher than the best solution found thus far.&lt;br /&gt;
&lt;br /&gt;
==Applications==&lt;br /&gt;
Spatial branch-and-bound is used to solve a number of problems, including&lt;br /&gt;
*&amp;lt;b&amp;gt;Pooling and Blending Problems:&amp;lt;/b&amp;gt; An example of a pooling/blending problem is the mixing of various types of crude oils with different qualities from different feeds. These streams are mixed in various pools. The parameters of the mixing are set to minimize cost while meeting quality requirement and quantity demand.&lt;br /&gt;
*&amp;lt;b&amp;gt;Euclidean Location Problems:&amp;lt;/b&amp;gt; An example of this problem is finding the geographical positions of a plant that minimizes transportation costs.&lt;br /&gt;
*&amp;lt;b&amp;gt;Kissing Number Problem:&amp;lt;/b&amp;gt; The objective of the kissing number problem is to find the maximum number of non-overlapping n-dimensional spheres in (n+1)-dimensional Euclidian space that can be arranged such that each is touching another. In 1-dimension, the kissing number is 2; in 2-dimension, 6; and in 3-dimension, 12.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
Accurate models of real problems often involve nonconvex terms in either the objective function or the constraints. Nonconvex problems are one of the hardest to solve. Since there are multiple local optima solutions, it is difficult to find which solution is the best. Global optimization approaches, such as spatial branch-and-bound, are used to solve such problems. Other algorithms have been derived from the original spatial branch-and-bound. Examples include branch-and-reduce, α branch-and-bound, symbolic reformulation, branch-and-contract, and reduced spatial branch-and-bound.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
#Liberti, Leo. &amp;quot;Introduction to global optimization.&amp;quot; Lecture of Ecole Polytechnique, Palaiseau F 91128 (2008): 12.&lt;br /&gt;
#Pozo, C., et al. &amp;quot;A spatial branch-and-bound framework for the global optimization of kinetic models of metabolic networks.&amp;quot; Industrial &amp;amp; Engineering Chemistry Research 50.9 (2010): 5225-5238.&lt;br /&gt;
#Stein, Oliver, Peter Kirst, and Paul Steuermann. &amp;quot;An Enhanced Spatial Branch-and-Bound Method in Global Optimization with Nonconvex Constraints.&amp;quot; (2013).&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Logarithmic_transformation&amp;diff=6654</id>
		<title>Logarithmic transformation</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Logarithmic_transformation&amp;diff=6654"/>
		<updated>2022-04-01T15:33:04Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This web page is a duplicate of https://optimization.mccormick.northwestern.edu/index.php/Logarithmic_transformation&lt;br /&gt;
&lt;br /&gt;
Author: Hassan Ali (ChE 345 Spring 2015)&lt;br /&gt;
&lt;br /&gt;
Steward: Dajun Yue, Fengqi You&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Logarithmic transformation&#039;&#039;&#039; is a method used to change geometric programs into their convex forms. A &#039;&#039;&#039;geometric program&#039;&#039;&#039;, or &#039;&#039;&#039;GP&#039;&#039;&#039;, is a type of global optimization problem that concerns minimizing a subject to constraint functions so as to allow one to solve unique non-linear programming problems. All geometric programs contain functions called posynomials that are inherently non-convex. Due to this fact, solving geometric problems can be computationally intensive and finding a global optimum solution is not guaranteed. However, by creating a logarithmic transformation for a problem, one can solve for the globally optimum solution quicker and easier. A logarithmic transformation is not the only transformation which allows. One can also use an exponential transformation to obtain the same result. A logarithmic transformation can also be used on signomial programs, which are an extension of geometric programs.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;1,2,3&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
&lt;br /&gt;
===Geometric Programming===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Geometric programming was first discussed in the early 1960&#039;s as a class of optimization problem that could be solved with geometric inequalities. Duffin and his colleagues went on to formulate basic theories of geometric programming and its applications in 1967 in their seminal textbook &#039;&#039;Geometric Programming Theory and Application&#039;&#039;.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; One of their insights into geometric programming was noticing that problems with highly non-linear constraints could be stated equivalently with a &#039;&#039;&#039;dual program&#039;&#039;&#039;. In other words, a global minimizing solution could be found by solving its corresponding dual maximization problem. This is because the dual constraints are linear. All one would need to do is change the geometric programming problem from its standard posynomial form into this &amp;quot;dual form&amp;quot; and solve using these now linear constraints.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; The answer could only be locally optimum as one was still dealing with &#039;&#039;&#039;non-linear programming (NLP)&#039;&#039;&#039; methods. &lt;br /&gt;
&lt;br /&gt;
A standard GP problem takes the following form&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \min ~f_0(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;s.t. ~~ f_i(x) \le 1, i = 1,...,m &amp;lt;/math&amp;gt;&lt;br /&gt;
:::&amp;lt;math&amp;gt;h_j(x)=1, j=1,...,M&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt; f_0,...,f_m&amp;lt;/math&amp;gt; are posynomials and &amp;lt;math&amp;gt; h_1,...,h_M&amp;lt;/math&amp;gt; are monomials, and the variables &#039;&#039;&#039;x&#039;&#039;&#039; are all positive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Posynomials===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Posynomials&#039;&#039;&#039; are functions that are non-linear and consist of a set of constants multiplied to a series of multiple variables multiplied together. Often these variables are raised to various powers. More specifically, they are functions of the form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f(x_1,x_2,...,x_n)=\sum_{k=1}^K c_kx_1^{a_{1k}}...x_n^{a_{nk}} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the variables &amp;lt;math&amp;gt; x_i &amp;lt;/math&amp;gt; and the coefficients &amp;lt;math&amp;gt; c_k &amp;lt;/math&amp;gt; are positive, real numbers, and all of the exponents &amp;lt;math&amp;gt; a_{ik} &amp;lt;/math&amp;gt; are real numbers.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Monomials&#039;&#039;&#039; are a specific case of posynomial where there is no set of terms but rather only one term and its constant. A posynomial is then simply a sum of monomials. An example of a monomial is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f(x_1,x_2)=400x_1^{3}x_2^{-2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and an example of a posynomial is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f(x_1,x_2)=4x_1^{2}x_2^{4}+x_1^{3}x_2^{5} &amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
A posynomial is therefore not of the form&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f(x_1,x_2)=x_1-x_2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as this is a linear function.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Geometric Programming Derivation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GP problems are not always given and sometimes must be derived.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt; Take the following example of a standard NLP problem&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \max ~x/y&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt; s.t. ~~2\le x\le 3&amp;lt;/math&amp;gt;&lt;br /&gt;
:::&amp;lt;math&amp;gt; ~x^2 + 3y/z\le \sqrt{y} &amp;lt;/math&amp;gt;&lt;br /&gt;
:::&amp;lt;math&amp;gt; ~x/y = z^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the variables &#039;&#039;&#039;x,y, and z&#039;&#039;&#039; are positive. The standard GP form of this problem would be&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \max ~x^{-y}&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt; s.t. ~~2x^-1\le 1, (1/3)x\le 1 &amp;lt;/math&amp;gt;&lt;br /&gt;
:::&amp;lt;math&amp;gt; ~x^{2}y^{-0.5} + 3y^{0.5}z^{-1}\le 1 &amp;lt;/math&amp;gt;&lt;br /&gt;
:::&amp;lt;math&amp;gt; ~xy^{-1}z^{-2} = 1 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A standard GP problem then minimizes a posynomial function while constraining it to posynomial inequality constraints and monomial equality constraints. Posynomials are positive functions and contain log convexity. This is an important facet as it allows standard GP problems to undergo log transformations.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Logarithmic Transformation==&lt;br /&gt;
&lt;br /&gt;
The Duffin &amp;quot;dual-program&amp;quot; method for solving GP problems is still in use but as logarithmic and exponential transformation methods were understood it became easier to simply use them to change the standard GP problem into a convex GP problem and solve using an interior point method. &#039;&#039;&#039;Interior point methods&#039;&#039;&#039; can solve GP problems very fast and robust as they require essentially no tuning of the parameters. Most importantly, the final solution obtained through this method is guaranteed to be the global optimum solution. Solving a standard GP problem is like solving an NLP problem. The only difference being that a GP problem is more constrained in its use of posynomials and monomials in its objective function and constraints. This makes standard GP problems more efficient to solve and they can be solved relatively quickly, but like NLP problems there is no guarantee the solution is globally optimum. In addition, an initial guess needs to be provided and parameters must be carefully chosen.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Logarithmic transformations are therefore very helpful as they transform the standard GP form into its convex form based on a logarithmic change of variables and a logarithmic transformation of the objective and constraint functions. So instead of minimizing the objective &amp;lt;math&amp;gt;f_0&amp;lt;/math&amp;gt;, the logarithm of &amp;lt;math&amp;gt;f_0&amp;lt;/math&amp;gt; is minimized. The variable &#039;&#039;&#039;x&#039;&#039;&#039; is replaced with the its logarithm &amp;lt;math&amp;gt;y = \log x&amp;lt;/math&amp;gt;. So now &amp;lt;math&amp;gt;x = e^y&amp;lt;/math&amp;gt;. The inequality constraint is now &amp;lt;math&amp;gt;\log f_i \le 0&amp;lt;/math&amp;gt; instead of &amp;lt;math&amp;gt;f_i \le 0&amp;lt;/math&amp;gt;  and the equality constraint is now  &amp;lt;math&amp;gt;\log h_j=0&amp;lt;/math&amp;gt; instead of &amp;lt;math&amp;gt;h_j=0&amp;lt;/math&amp;gt;.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Therefore the convex form of a GP problem is&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \min ~\log f_0(e^y)&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;s.t. ~~ \log f_i(e^y) \le 0, i = 1,...,m &amp;lt;/math&amp;gt;&lt;br /&gt;
:::&amp;lt;math&amp;gt;\log h_j(e^y)=0, j=1,...,M&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt; f_0,...,f_m&amp;lt;/math&amp;gt; are posynomials and &amp;lt;math&amp;gt; h_1,...,h_M&amp;lt;/math&amp;gt; are monomials, and the variables &#039;&#039;&#039;y&#039;&#039;&#039; are all positive. This reformulation can occur as long as the constants in the function are positive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Methods===&lt;br /&gt;
&lt;br /&gt;
[[File:Lse_plot.png|thumb|right|upright=1.7|The log-sum-exp function in &amp;lt;math&amp;gt;R^2&amp;lt;/math&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
To see the transformation clearer, more &#039;&#039;&#039;detailed steps&#039;&#039;&#039; can be shown. If the objective function is a &#039;&#039;&#039;monomial&#039;&#039;&#039; of the format&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f_0(x) = cx_1^{a_1}x_2^{a_2}...x_n^{a_n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then the new objective function will be a function of a new variable &#039;&#039;&#039;y&#039;&#039;&#039; where &amp;lt;math&amp;gt;y = \log x&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;x = e^y&amp;lt;/math&amp;gt;. It will also be a logarithm of the original objective function so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f(y) = \log f_0(e^y)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\log f_0(e^y) = \log c +a_1\log x_1 +...+ a_n\log x_n = \log c +a_1y_1 +...+ a_ny_n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which is an affine function of &#039;&#039;&#039;y&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If the above objective function was instead a monomial equality constraint such that &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;g(x) = cx_1^{a_1}x_2^{a_2}...x_n^{a_n}=1&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
then the new equality constraint would be equal to zero and be simplified to a linear equation of the form&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;-\log c = a_1y_1 +...+ a_ny_n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Any GP with only monomials reduces to a linear program after a logarithmic transformation. Checking for linearity in a monomial case will confirm if the transformation was done correctly.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the GP has &#039;&#039;&#039;posynomials&#039;&#039;&#039; the problem becomes more complex. The log of multiple terms cannot be simplified beyond its logarithm form. So if the objective function is &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f_0(x) = \sum_{n=1}^N c_nx_n^{a_n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;&#039;c&#039;&#039;&#039; &amp;gt; 0, then the new objective function will be &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f(y) = \log f_0(e^y)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\log f_0(e^y) = \log \left ( \sum_{n=1}^N e^{a_ny_n+b_n} \right ) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and where &amp;lt;math&amp;gt;b_n = \log c_n &amp;lt;/math&amp;gt; for &amp;lt;math&amp;gt;n = 1,...,N&amp;lt;/math&amp;gt;. The above can be written in a simpler form as &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\log f_0(e^y) = lse(Ay+b)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where A is an N by n matrix with rows &amp;lt;math&amp;gt;a_1,...,a_N&amp;lt;/math&amp;gt; and lse is the [https://inst.eecs.berkeley.edu/~ee127a/book/login/def_lse_fcn.html log-sum-exp function] which is convex.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The reason the logarithmic transformation is done when an &#039;&#039;&#039;exponential transformation&#039;&#039;&#039; can be done in less steps is that the exponential function might take in large values. This may create numerical problems as well as lead to complications in optimization programs. Taking a logarithm allows for the recovery of smaller values, which gives the logarithmic transformation a distinct advantage.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
A few objective functions and constraints are provided in this section as illustrative examples.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \min ~f_0(x_1,x_2)=4x_1^{2}x_2^{4}&amp;lt;/math&amp;gt;    &lt;br /&gt;
:&amp;lt;math&amp;gt;s.t. ~~ x_1 \ge 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
:::&amp;lt;math&amp;gt; x_2 \ge 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After a logarithmic transformation, this GP becomes:&lt;br /&gt;
:&amp;lt;math&amp;gt; \min ~f(y_1, y_2)= \log 4 + 2y_1 + 4y_2 &amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;s.t. ~~ y_1 \ge 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
:::&amp;lt;math&amp;gt; y_2 \ge 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \min ~f_0(x_1,x_2)=x_1^{2}x_2 + x_1x_2&amp;lt;/math&amp;gt;    &lt;br /&gt;
:&amp;lt;math&amp;gt;s.t. ~~ x_1^{2}x_2^{-2} \ge 1 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After a logarithmic transformation, this GP becomes:&lt;br /&gt;
:&amp;lt;math&amp;gt; \min ~f(y_1, y_2)= \log \left ( \sum_{n=1}^2 e^{a_ny_n} \right )  &amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;s.t. ~~ 2y_1 - 2y_2 \ge 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \min ~f_0(x_1,x_2)=16x_1^{2}x_2^{5}&amp;lt;/math&amp;gt;    &lt;br /&gt;
:&amp;lt;math&amp;gt;s.t. ~~ \frac{x_1}{x_2} = 1 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After a logarithmic transformation, this GP becomes:&lt;br /&gt;
:&amp;lt;math&amp;gt; \min ~f(y_1, y_2)= \log 16 + 2y_1 + 5y_2 &amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;s.t. ~~ y_1=y_2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To prove that the answers to the above examples are indeed convex, one could verify its convexity through a positive-definiteness test of the [http://en.wikipedia.org/wiki/Hessian_matrix/ Hessian]. The reformulations can also be tested in GAMS.&lt;br /&gt;
&lt;br /&gt;
==Feasibility Analysis==&lt;br /&gt;
&lt;br /&gt;
A standard GP problem can be infeasible i.e. the constraints are too &amp;quot;tight&amp;quot; and don&#039;t allow for a solution. Because the constraints from a standard GP problem hold over even when changed to its convex form via logarithmic transformation, an infeasible GP problem will always be infeasible regardless of convexity. This is why it is important to check for infeasibility prior to creating a linear transformation. This is done by undergoing a feasibility analysis and setting up the GP as follows:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \min ~s &amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;s.t. ~~f_i(x) \le s, i = 1,...,m&amp;lt;/math&amp;gt;&lt;br /&gt;
:::&amp;lt;math&amp;gt;g_i(x)=1, i=1,...,p&amp;lt;/math&amp;gt;&lt;br /&gt;
:::&amp;lt;math&amp;gt; s \ge 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As s nears a value of 1, the original problem nears feasibility. The final goal is to find a solution such that s=1 so that feasibility of the problem is confirmed.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Applications==&lt;br /&gt;
&lt;br /&gt;
Applications of geometric programming include: &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;LI&amp;gt;&#039;&#039;&#039;Electrical Engineering&#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;Power Control&lt;br /&gt;
&amp;lt;LI&amp;gt;Wire Sizing&lt;br /&gt;
&amp;lt;LI&amp;gt;Routing&lt;br /&gt;
&amp;lt;LI&amp;gt;Optimal doping profile in semiconductor device engineering&lt;br /&gt;
&amp;lt;LI&amp;gt;Digital circuit gate sizing&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;&#039;&#039;&#039;Chemical Engineering&#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;  &lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;Optimal reactor design&lt;br /&gt;
&amp;lt;LI&amp;gt;Mass Transfer Optimization&lt;br /&gt;
&amp;lt;LI&amp;gt;Kinetics&lt;br /&gt;
&amp;lt;LI&amp;gt;Maximizing reliability of reactors&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;Other&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;Transportation&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;Economic Models&lt;br /&gt;
&amp;lt;LI&amp;gt;Inventory Models&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A great example among these varied applications concerns optimal reactor design. The chemical systems within a reactor follow non convex kinetics equations. If one wanted to optimize a reactor for a given system with given reaction rates, one could do so easily with a logarithmic transformation. Take a reaction &#039;&#039;&#039;A + B to C&#039;&#039;&#039; with reaction rate &amp;lt;math&amp;gt;r = kC_AC_B&amp;lt;/math&amp;gt;. The logarithmic transformation that would allow one to obtain a convex relation is &amp;lt;math&amp;gt;r^*=\log k + c_A +c_B&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;c = \log C&amp;lt;/math&amp;gt;. With this new equation, you can optimize your reactor design for your given system.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
Geometric Programming is an application that can solve a varying degree of difficult optimization problems but due to the nature of their complexity, these problems cannot be solved easily. Solving geometric problems can be computationally intensive and finding a global optimum solution is not guaranteed. This is due to the fact that GPs involve posynomials and monomials which are by nature non-linear. However, by creating a &#039;&#039;&#039;logarithmic transformation&#039;&#039;&#039; for a problem, one can solve for the globally optimum solution quicker and easier because the GP is changed to its convex form. Logarithmic transformations offer an advantage over other transformations as it allows one to work with smaller values which are less problematic. Logarithmic transformations can be used wherever geometric programming is used which includes applications in chemical engineering and economics.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
# Chiang, M. (2005). &#039;&#039;Geometric Programming for Communication Systems&#039;&#039;, Publishers, Inc., ISBN 1-933019-09-3.&lt;br /&gt;
# Duffin, R.J.  (1970). &amp;quot;Linearizing Geometric Programs&amp;quot;, &#039;&#039;SIAM Review&#039;&#039; &#039;&#039;&#039;12&#039;&#039;&#039; (2).&lt;br /&gt;
# Biswal, K.K., Ohja, A.K. (2010). &amp;quot;Posynomial Geometric Programming Problems with Multiple Parameters&amp;quot;, &#039;&#039;Journal of Computing&#039;&#039; &#039;&#039;&#039;2&#039;&#039;&#039; (1).&lt;br /&gt;
# Duffin, R.J., Peterson, E.L., Zener, C.M. (1967). &#039;&#039;Geometric Programming Theory and Application&#039;&#039;, John Wiley &amp;amp; Sons Inc., ISBN 978-0471223702. &lt;br /&gt;
# Boyd, S., Hassibi, A., Kim, S.J., Vandenberghe, L. (2007). &amp;quot;A Tutorial on Geometric Programming&amp;quot;, &#039;&#039;Optim Eng&#039;&#039; &#039;&#039;&#039;8&#039;&#039;&#039;: 67-127.&lt;br /&gt;
# Calafiore, G.C., El Ghaoui, L. (2014). &#039;&#039;Optimization Models and Applications&#039;&#039;, Cambridge University Press., ISBN 978-1107050877.&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Matt4.png&amp;diff=6653</id>
		<title>File:Matt4.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Matt4.png&amp;diff=6653"/>
		<updated>2022-04-01T15:31:24Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Matt4&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Matt3.jpg&amp;diff=6652</id>
		<title>File:Matt3.jpg</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Matt3.jpg&amp;diff=6652"/>
		<updated>2022-04-01T15:31:18Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Matt3&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Matt2.jpg&amp;diff=6651</id>
		<title>File:Matt2.jpg</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Matt2.jpg&amp;diff=6651"/>
		<updated>2022-04-01T15:31:11Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Matt2&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Signomial_problems&amp;diff=6650</id>
		<title>Signomial problems</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Signomial_problems&amp;diff=6650"/>
		<updated>2022-04-01T15:30:53Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: Created page with &amp;quot;Author: Matthew Hantzmon (Che_345 Spring 2015)  =Introduction= Sigmoid problems are a class of optimization problems with the objective of maximizing the sum of multiple sigmo...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Matthew Hantzmon (Che_345 Spring 2015)&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Sigmoid problems are a class of optimization problems with the objective of maximizing the sum of multiple sigmoid functions. They are defined by their limits at negative and positive infinity. &lt;br /&gt;
Similar to the unit step function the function approaches 1 as it approaches infinity and approaches -1 as it approaches negative infinity. Sigmoid functions are shaped like an “S”, having both a convex and concave portion. The concave attributes will make solving the problems require a non-linear optimization, increasing computational burden. Though sigmoid problems are harder to solve than ordinary convex programs, they have many useful real-world applications which have encouraged their development. Sigmoid problems have become especially useful in the creation of artificial neural networks that simulate learning. The functionality of sigmoid problems allow in statistical models and other artificial learning.&lt;br /&gt;
&lt;br /&gt;
The S-shape of the individual sigmoid functions made them good representatives of economies of scale, or other situations where the supplier is facing a declining demand function and increased investment leads to a lower average cost to produce each good. Within the sigmoidal problem, the sigmoidal functions within the objective represent that initial increases in investment will increase profitability when there is excess demand at the current price. The inflection point in the sigmoidal functions represents the point where the marginal profit for producing another good becomes 0. At this point the decrease in marginal cost from investing in more production is matched by an equal decrease in willingness to pay by the marginal consumer. Past this point the function determines that increased investment will not increase profitability. These properties of the sigmoid functions allow them to be ideal representatives of situations where initial investment is profitable though a threshold is reached where no additional inputs will be profitable. Other situations that exhibit these characteristics and can be modeled with sigmoidal problems include election planning, lottery prize design, and bidding at an auction. Election planners always desire to find the locations where spending on advertising will have the greatest effect on election results. When designing a lotter, the company wants to design a prize value that encourages many people to buy tickets while still being net profitable for the lottery. At an auction, a bidder may not have enough capital to buy every item they may desire so it is important early on to not waste a disproportionate amount of money winning an item that is not important. A sigmoidal problem maximizing utility can help determine the threshold value to bid on each item. &lt;br /&gt;
&lt;br /&gt;
=Sigmoidal Functions=&lt;br /&gt;
[[File:matt4.png|thumb|right|350px|Figure 1: Logistic Sigmoid Function]]&lt;br /&gt;
Generally, a sigmoid function is any function having an “S” shape. One portion of the function will be convex while the other portion will be concave. The most common example of the sigmoid function is the logistic function shown in figure 1. However, the definition of sigmoidal functions is very broad: Any function that has real values, one inflection point and has a bell shaped first derivative function. With this definition, all logistic functions, the error function, the cumulative distribution function and many more can be considered sigmoidal functions and may be included in the objective function of a sigmoidal problem.&lt;br /&gt;
In figure 1, the coefficient 1/c is the temperature constant. As the value of c increases in the sigmoid function, the sigmoid function will approach the shape of a step function.&lt;br /&gt;
&lt;br /&gt;
=Sigmoidal Problems=&lt;br /&gt;
[[File:matt2.jpg|thumb|right|350px|Figure 2: &amp;quot;S&amp;quot; Shape Curve]]&lt;br /&gt;
In practice, sigmoid problems consist of an optimization where the objective function is the sum of a set of sigmoid functions. Each of the sigmoid functions only has one input variable that determines the output value. Unless a certain threshold of input value has been exceeded, usually the value of the sigmoid function will be very close to zero. As a result, the solution of a sigmoid problem will consist of all the function input values either being 0 or a number exceeding the sigmoid function threshold. This threshold is depicted as being near z in figure 2. When optimizing inputs to achieve a desired output, usually there is a scarcity of inputs that must be allocated optimally; otherwise there would be no cause for a problem. Thus, the solution of the optimization will exceed the threshold z in as many indexes as possible. Any indexes that were not able to reach z input usually would have an input of 0. This is because, below z total inputs, two functions each with one unit of input will always have a lower combined utility than one sigmoid function with two units of input. &lt;br /&gt;
&lt;br /&gt;
==Applications of Sigmoidal Problems==&lt;br /&gt;
These characteristics of sigmoidal problems make them very useful for certain types of optimizations. In presidential election planning, it is always important to spend campaign advertising dollars in a way which will have the largest impact on electoral count. Since the format of our election is winner-take-all in each state, the states that have the tightest poll results would be the states where the smallest change in poll numbers would most greatly change the overall electoral count. If a campaign team were trying to optimize their advertising spending they would want to create an objective that illustrated how their advertising would have an effect on each state. The campaign would only want to spend money on states that have a feasible change of voting in favor of their candidate. Money spend on states eventually lost is completely wasted. Sigmoidal functions will behave in the same way, only recommending to spend money in a state if they can pass the threshold of getting a majority of voters. They will predict that it is better to spend a lot of money on one state they have a good chance to influence than spend half each on two states where they may end up losing both.&lt;br /&gt;
&lt;br /&gt;
The same logic follows for why sigmoidal problems are useful for optimizing bidding within an auction. Utility is only gained when a desired item is won, so it is always important to set up a function that only calculates utility when the necessary bidding threshold has been passed. There is no use or utility gained from bidding half the value on every item, and sigmoidal functions would appropriately capture this fact. &lt;br /&gt;
&lt;br /&gt;
Sigmoid functions can be very useful in situations where utility gained is not continuous based on proportion but is more of a binary either/or result. They are not as extreme of a binary result as a step function, and the fact that they are fully differentiable makes them much more easily solved. However, since they have concave portions, their solution is not as simple as a linear program and may require software or approximations.&lt;br /&gt;
&lt;br /&gt;
Large arrays of sigmoid problems have also been combined to simulate an artificial neural networks. These neural networks are sets of sigmoid functions used to approximate interconnected neurons, which are very powerful in statistical modeling. The neural networks are created by the aggregation of sigmoidal functions using the back-propagation algorithm. The most common applications of the sigmoidal problems is the density problem. The density of a linear space with uniform convergence can be calculated for a compact set using Cybenko&#039;s approximation theorem.&lt;br /&gt;
&lt;br /&gt;
==Solving Sigmoidal Problems==&lt;br /&gt;
[[File:matt3.jpg|thumb|right|350px|Figure 3: Concave Envelope]]&lt;br /&gt;
As one of the properties of a sigmoid function is concave portions, simple simplex optimization will not suffice. As computation power has increased in recent decades, solutions of sigmoidal problems has become much more feasible using software available online. Though, solutions with the appropriate software are fairly straightforward and simple, these sorts of problems can be highly difficult to solve by hand. They can rarely be solved at all in the original format and frequently need several creative approximations to leave a problem that is computable by hand. &lt;br /&gt;
One method that allows simpler by-hand computation is the creation of a convex envelope. Depicted in figure 3, the concave envelope is an approximation of the sigmoidal function that adds a linear portion where the function had been previously convex. This addition, greatly simplifies the function’s computational difficulty. However, it must be noticed, that this approximation will only give an upper bound on the solution as it is including area that it not part of the original constraints. &lt;br /&gt;
Even with function simplification and approximation, usually there is a large set of functions to be optimized. Depending on the level of approximation, the solution found may not even contain a relevant level of accuracy. In general, software will be the method of choice when dealing with sigmoidal problems.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
1. J. Birge, F. Louveaux, Introduction to Stochastic Programming, Springer, 2011.&lt;br /&gt;
&lt;br /&gt;
2. Udell, Madeline, and Stephen Boyd. &amp;quot;Maximizing a Sum of Sigmoids.&amp;quot; Stanford University, May 2015. Web. May 2015. &amp;lt;http%3A%2F%2Fweb.stanford.edu%2F~udell%2Fdoc%2Fmax_sum_sigmoids&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
3. Srivastava, Vaibhav, and Francesco Bullo. &amp;quot;Knapsack Problems with Sigmoid Utilities.&amp;quot; Princeton, July 2013. Web. May 2015. &amp;lt;http%3A%2F%2Fwww.princeton.edu%2F~vaibhavs%2Fpapers%2F2012d-sb&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
4. Rojas, R. &amp;quot;Backpropagation.&amp;quot; SpringerReference (2011): n. pag. UBerlin. UBerlin. Web.&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:SBBpic.png&amp;diff=6649</id>
		<title>File:SBBpic.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:SBBpic.png&amp;diff=6649"/>
		<updated>2022-04-01T15:29:23Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SBBpic&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:SBBexample4.png&amp;diff=6648</id>
		<title>File:SBBexample4.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:SBBexample4.png&amp;diff=6648"/>
		<updated>2022-04-01T15:29:16Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SBBexample4&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:SBBexample3.png&amp;diff=6647</id>
		<title>File:SBBexample3.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:SBBexample3.png&amp;diff=6647"/>
		<updated>2022-04-01T15:29:08Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SBBexample3&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:SBBexample2.png&amp;diff=6646</id>
		<title>File:SBBexample2.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:SBBexample2.png&amp;diff=6646"/>
		<updated>2022-04-01T15:29:00Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SBBexample2&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:SBBexample.png&amp;diff=6645</id>
		<title>File:SBBexample.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:SBBexample.png&amp;diff=6645"/>
		<updated>2022-04-01T15:28:51Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SBBexample&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:SBB_flowchart.png&amp;diff=6644</id>
		<title>File:SBB flowchart.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:SBB_flowchart.png&amp;diff=6644"/>
		<updated>2022-04-01T15:28:44Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SBB flowchart&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:SBB.png&amp;diff=6643</id>
		<title>File:SBB.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:SBB.png&amp;diff=6643"/>
		<updated>2022-04-01T15:28:35Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SBB&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Spatial_branch_and_bound_method&amp;diff=6640</id>
		<title>Spatial branch and bound method</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Spatial_branch_and_bound_method&amp;diff=6640"/>
		<updated>2022-04-01T15:27:20Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: Created page with &amp;quot;Authors: Ellen Zhuang (ChE 345 Spring 2015) &amp;lt;br&amp;gt; Steward: Dajun Yue, Fengqi You &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; &amp;#039;&amp;#039;&amp;#039;Spatial branch-and-bound&amp;#039;&amp;#039;&amp;#039; is a divide-and-conquer technique used to find the det...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Authors: Ellen Zhuang (ChE 345 Spring 2015)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Steward: Dajun Yue, Fengqi You&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Spatial branch-and-bound&#039;&#039;&#039; is a divide-and-conquer technique used to find the deterministic solution of global optimization problems.&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; It is a type of branch-and-bound method, which solves for the set of parameters that globally optimize the objective function, whether that be finding the minimum or maximum value of &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; or &amp;lt;math&amp;gt;-f(x)&amp;lt;/math&amp;gt;, respectively, where x exists over a set of candidate solutions in the feasible region of the problem. &lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Branch-and-bound is the systematic enumeration of possible solutions by iteratively searching the space of the problem. The problem’s candidate solutions form a rooted tree. The algorithm analyzes the nodes, or the subsets of the solution set. This step is known as &#039;&#039;branching&#039;&#039;. &#039;&#039;Bounding&#039;&#039; is the estimation of a lower and upper bound for the optimal solution at each node. The possible solution at each branch is checked against these bounds, and if it does not produce a better solution than the current best solution found, the solution is discarded in a step called &#039;&#039;pruning&#039;&#039;. This algorithm is repeated until the optimal solution is found. The method was first proposed by A. H. Land and A. G. Doig in 1960 for discrete programming, and its first applications were for discrete problems like the traveling salesman problem. &lt;br /&gt;
&lt;br /&gt;
Spatial branch-and-bound techniques solve mixed integer nonlinear programs (MINLP) with nonconvex terms. Unlike ordinary branch-and-bound methods for mixed integer linear programs (MILP), the spatial branch-and-bound method decomposes the nonlinear functions of the original problem symbolically and recursively with simple operators into simple functions.&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Comparison of branch-and-bound for MILP and spatial branch-and-bound for nonconvex MINLP.&lt;br /&gt;
! &lt;br /&gt;
! Branch-and-bound for MILP&lt;br /&gt;
! Spatial branch-and-bound for MINLP&lt;br /&gt;
|-&lt;br /&gt;
! Relaxation&lt;br /&gt;
| replace integer variables with bounded continuous variables to form LP || replace nonconvex terms with their convex envelopes to form convex (MI)NLP&lt;br /&gt;
|-&lt;br /&gt;
! Branching&lt;br /&gt;
| on integer variables&lt;br /&gt;
| on integer and continuous variables&lt;br /&gt;
|-&lt;br /&gt;
! Complexity&lt;br /&gt;
| NP-hard || NP-hard (but harder)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Spatial branch-and-bound is used to solve global optimization problems of the form:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;min  f(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;s.t.&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;g_i(x) \le 0&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt; i = 1,2,...,n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;     x \in S&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
where S is the set of candidate solutions and is a union of the subsets &amp;lt;math&amp;gt;S_j&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;j = 1,2,...,n&amp;lt;/math&amp;gt;. All functions &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;g_i(x)&amp;lt;/math&amp;gt; are at least continuously differentiable on some open set containing the subregion &amp;lt;math&amp;gt;S_j&amp;lt;/math&amp;gt; with bounds &amp;lt;math&amp;gt;s_j^L \le x \le s_j^U&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;s_j^L&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;s_j^U&amp;lt;/math&amp;gt; are the lower and upper bounds of &amp;lt;math&amp;gt;S_j&amp;lt;/math&amp;gt;, respectively. The feasible space of the problem is where &amp;lt;math&amp;gt;x \in S&amp;lt;/math&amp;gt;&lt;br /&gt;
and &amp;lt;math&amp;gt;g_i(x) \le 0&amp;lt;/math&amp;gt;. The goal is to find the point &amp;lt;math&amp;gt;x^*&amp;lt;/math&amp;gt; in the feasible region where &amp;lt;math&amp;gt;f^*(x) \le f(x) + \epsilon&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;\epsilon &amp;gt; 0&amp;lt;/math&amp;gt; is a given tolerance.&lt;br /&gt;
&lt;br /&gt;
== Algorithm ==&lt;br /&gt;
&lt;br /&gt;
The main algorithmic idea is to divide the problem into smaller subproblems by branching the variables into possible values, creating upper and lower bounds of the function in the certain domain, and finding sequences of approximate solutions which converge to the actual solution. The smaller subproblems are easier to solve than the original problem.&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convex relaxation is performed on the original nonconvex problem and underestimates the optimal value of the original function. The original problem is then allocated in the root node of the tree. With each iteration, the original problem is restricted , and the subregions are relaxed to make convex.&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; For each subregion, the lower and upper bounds of the optimal value of the objective function is found. If the bounds converge, then the global optimum value to the subregion is found. If the bounds do not meet the desired tolerance, the problem is partitioned into smaller subproblems (descendants) by dividing the feasible space of continuous variable (branching variable). The two subproblems are solved by recursive partitioning. If the subproblem does not have the global optimal solution, then it is pruned. The process is continued until the global optimum value of the original problem is found.&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Convergence Proof===&lt;br /&gt;
A branch and bound method using an exact selection rule will converge. Let M be the space of the sample. M is split at some iteration because it consists of an unqualified region that does not include candidate solutions that give the objective function more optimal solutions than the current incumbent solution. Thus, every qualified subregion of M&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt; contains the optimal solution.&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is noted that the spacial branch and bound algorithm does not guarantee convergence in a finite number of steps. The algorithm here uses the concept of ɛ-optimality instead of the usual idea of optimality. A solution x* is a global optimum if f(x*) &amp;lt; f(x) for x in the problem space. Because ɛ is positive, x&amp;lt;sup&amp;gt;ɛ&amp;lt;/sup&amp;gt; in the problem space is ɛ-globally optimal if the optimum is bounded by m ≤ f(x*) ≤ M where f(x&amp;lt;sup&amp;gt;ɛ&amp;lt;/sup&amp;gt;) is in [m,M] and M - m &amp;lt; ε. Finding the ε-global optimum solution ensures a finite termination than a usual global optimum solution.&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convergence is accelerated with fathoming. For each subregion, the lower bounding solution and the corresponding lower bounding objective function value are found. The region with the lowest objective function value is usually selected. An upper bound to the problem bounds the problem from above. It discards any region where the lower bound of the objective function exceeds the best upper bound. The discarded regions are fathomed.&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:sBBpic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
===Step 1: Initialization===&lt;br /&gt;
[[File:sBB_flowchart.png|500px|thumb|right|]]&lt;br /&gt;
&lt;br /&gt;
Initialize the subregions S&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; to a single region S encompassing the set of all variables and their ranges. Set the convergence tolerance, ɛ &amp;gt; 0, and the best solution &amp;lt;i&amp;gt;U&amp;lt;/i&amp;gt; = ∞ and the corresponding solution -∞ &amp;lt; x&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt; &amp;lt; ∞.&lt;br /&gt;
&lt;br /&gt;
===Step 2: Choice of Region===&lt;br /&gt;
&lt;br /&gt;
A subregion S&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; of the problem is chosen. &lt;br /&gt;
&lt;br /&gt;
Bound tightening may be performed during the first two steps. For the initialization step, optimization-based bounds tightening involves finding the smallest range of each variable subject to convex relaxation that will still make the problem feasible. This bounds tightening, however, is computationally expensive because 2n convex NLP or linear convex relation problems have to be solved, where n is the number of variables. For the second step, feasibility-based bounds tightening is performed at each region. Here, the variable bounds are tightened with the constraints of the original problem. This type of bounds tightening is computationally less expensive than the former. The spatial branch-and-bound algorithm will still converge without bound tightening, but it may make the process faster.&lt;br /&gt;
&lt;br /&gt;
===Step 3: Lower Bound===&lt;br /&gt;
&lt;br /&gt;
A convex relaxed problem of the original problem in the region chosen is formulated. The problem is reduced to standard form by linearizing the nonlinear terms. The nonlinear terms are replaced by added variables and constraints of type &amp;quot;added variable = nonlinear term&amp;quot;. The nonconvex terms are also replaced by convex under- and over- estimators such as convex envelopes. Convex relaxation guarantees a lower bound to the objective function value in that region. &lt;br /&gt;
&lt;br /&gt;
The new problem is solved to give an underestimation &amp;lt;i&amp;gt;l&amp;lt;/i&amp;gt; of the objective function with solution x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;&amp;lt;sup&amp;gt;L&amp;lt;/sup&amp;gt;. If &amp;lt;i&amp;gt;l&amp;lt;/i&amp;gt; &amp;gt; &amp;lt;i&amp;gt;U &amp;lt;/i&amp;gt;, the relaxed problem is infeasible and step 2 is repeated.&lt;br /&gt;
&lt;br /&gt;
===Step 4: Upper Bound===&lt;br /&gt;
&lt;br /&gt;
[[File:sBB.png|500px|thumb|right|Since the lower bound (LB) of S&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; is greater than the upper bound (UB) of S&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, which is the current best solution, so the solution in the region S&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; is infeasible and discarded.]]&lt;br /&gt;
&lt;br /&gt;
The original nonconvex problem in the selected region is solved to obtain a local optimum solution x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;&amp;lt;sup&amp;gt;U&amp;lt;/sup&amp;gt; with objective function &amp;lt;i&amp;gt; u &amp;lt;/i&amp;gt;. The subproblem can be solved numerically or by branching. If the spatial branch-and-bound algorithm has added variables, branching can be done on those. Convex relaxation is done, and the lower and upper bounds are found. These bounds are not dependent on the added variables. Branching can also be done on the original variables. The range of the original problem [x&amp;lt;sup&amp;gt;L&amp;lt;/sup&amp;gt;, x&amp;lt;sup&amp;gt;U&amp;lt;/sup&amp;gt;] is partitioned into [x&amp;lt;sup&amp;gt;L&amp;lt;/sup&amp;gt;, x&#039;] and [x&#039;, x&amp;lt;sup&amp;gt;U&amp;lt;/sup&amp;gt;]. The upper bounding problem is solved in each subregion.&lt;br /&gt;
&lt;br /&gt;
Algorithms that solve nonconvex NLPs are fragile and can fail even if a local optimum solution exists. If the function is unable to be solved, set &amp;lt;i&amp;gt; u&amp;lt;/i&amp;gt; = ∞ and -∞ &amp;lt; x&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;&amp;lt;sup&amp;gt;U&amp;lt;/sup&amp;gt; &amp;lt; ∞.&lt;br /&gt;
&lt;br /&gt;
===Step 5: Pruning===&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;i&amp;gt; U &amp;lt;/i&amp;gt;&amp;gt; &amp;lt;i&amp;gt;u &amp;lt;/i&amp;gt;, set x&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt; = x&amp;lt;sup&amp;gt;U &amp;lt;/sup&amp;gt; and &amp;lt;i&amp;gt; U &amp;lt;/i&amp;gt; = &amp;lt;i&amp;gt; u &amp;lt;/i&amp;gt;. All the regions with lower bounds greater than &amp;lt;i&amp;gt; U &amp;lt;/i&amp;gt; are discarded.&lt;br /&gt;
&lt;br /&gt;
===Step 6: Check Region===&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;i&amp;gt;u &amp;lt;/i&amp;gt; - &amp;lt;i&amp;gt; l &amp;lt;/i&amp;gt; ≤ ɛ, then &amp;lt;i&amp;gt;u &amp;lt;/i&amp;gt; is a global minimum of the region, and the algorithm returns to step 2. If not, then the global minimum of the subregion is not found, and the algorithm proceeds to the next step.&lt;br /&gt;
&lt;br /&gt;
===Step 7: Branching===&lt;br /&gt;
&lt;br /&gt;
The region is split into sub-regions, and the algorithm returns to step 2.  There are several strategies for branching, and most consist of determining the set of variables on which to branch and the variables whose domain is sub-divided by the branching operation.&lt;br /&gt;
&lt;br /&gt;
==Example&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;==&lt;br /&gt;
[[File:sBBexample.png|200px|thumb|right|The global optimization problem min f(x) = 1/4 x + sin(x).&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;math&amp;gt;min&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;f(x) &amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;= 1/4 x + &amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;sin(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;s.t.&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;-3 \le x \le 6&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above NLP has two minima, one of which is global. Using the spatial branch-and-bound approach, the space of the problem is divided into subregions, within which the lower and upper bounds of the optimum is found. If the bounds are not within a given &amp;lt;math&amp;gt;\epsilon &amp;lt; 0&amp;lt;/math&amp;gt; tolerance (that is, the bounds are not sufficiently close), then the subregion is partitioned and the process is repeated. In this example, let &amp;lt;math&amp;gt;\epsilon = 0.15&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===First Iteration===&lt;br /&gt;
Consider the region that encompasses the entire range &amp;lt;math&amp;gt;-3 \le x \le 6&amp;lt;/math&amp;gt;. The objective function is underestimated with the convex underestimator &amp;lt;math&amp;gt;1/4 x - 1&amp;lt;/math&amp;gt;. To tighten the bounds, tangents to &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; are added: &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;-0.74x - 3.11&amp;lt;/math&amp;gt; at &amp;lt;math&amp;gt;x = -3&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;1.21x - 6.04&amp;lt;/math&amp;gt; at &amp;lt;math&amp;gt;x = 6&amp;lt;/math&amp;gt;. &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;The convex estimator is then &lt;br /&gt;
&amp;lt;math&amp;gt;f^c(x) = \{-0.74x - 3.11, 1/4 x - 1, 1.21x - 6.04\}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
The minimum of the convex problem is found to be &amp;lt;math&amp;gt;l = -1.53 &amp;lt;/math&amp;gt; at &amp;lt;math&amp;gt;x^L=-2.13&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Next, the upper bound of the problem is solved locally using Newton&#039;s method with &amp;lt;math&amp;gt;x = 6&amp;lt;/math&amp;gt; as the starting point. The upper bound is found to be &amp;lt;math&amp;gt;u = 0.147&amp;lt;/math&amp;gt; at &amp;lt;math&amp;gt;x^U = 4.46&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt; are not sufficiently close since &amp;lt;math&amp;gt;u - l = 1.67 &amp;gt;1 &amp;lt;/math&amp;gt;, so it is not certain that &amp;lt;math&amp;gt;x^U&amp;lt;/math&amp;gt; is a global optimum of the region.&lt;br /&gt;
&lt;br /&gt;
The region is partitioned into two subregions, using &amp;lt;math&amp;gt;x^U = 4.46&amp;lt;/math&amp;gt; as the branching point. The two unexamined regions are now &amp;lt;math&amp;gt;-3 \le x \le 4.46&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;4.46 \le x \le 6&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:sBBexample2.png|200px|thumb|center|The convex relaxation and lower bound of the first region examined.&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Second Iteration===&lt;br /&gt;
&lt;br /&gt;
Here, let &amp;lt;math&amp;gt;-3 \le x \le 4.46&amp;lt;/math&amp;gt; be the first region to be examined. The lower and upper bounds are found to be &amp;lt;math&amp;gt;l = -1.53&amp;lt;/math&amp;gt; (as before) and &amp;lt;math&amp;gt;u = -1.43&amp;lt;/math&amp;gt; at &amp;lt;math&amp;gt;x^U = -1.823&amp;lt;/math&amp;gt;. Now, &amp;lt;math&amp;gt;u - l = 0.11 &amp;lt; \epsilon&amp;lt;/math&amp;gt;, so &amp;lt;math&amp;gt;x^U = -1.823&amp;lt;/math&amp;gt; is accepted as the global optimum of the region analyzed. The best solution found thus far is now &amp;lt;math&amp;gt;x^* = -1.823&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;U = -1.42&amp;lt;/math&amp;gt;. Since a global optimum exists, the region does not need to be branched.&lt;br /&gt;
&lt;br /&gt;
[[File:sBBexample3.png|200px|thumb|center|The second iteration.&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Third Iteration===&lt;br /&gt;
&lt;br /&gt;
The region &amp;lt;math&amp;gt;4.46 \le x \le 6&amp;lt;/math&amp;gt; is examined. The lower and upper bounds are computed to be &amp;lt;math&amp;gt;l = 1.11&amp;lt;/math&amp;gt; at &amp;lt;math&amp;gt;x^L = 4.46&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u = 1.147&amp;lt;/math&amp;gt; at &amp;lt;math&amp;gt;x^U = 4.46&amp;lt;/math&amp;gt;. Since &amp;lt;math&amp;gt;u - l = 0.04 &amp;lt; \epsilon&amp;lt;/math&amp;gt;, the solution found is the optimum of the subregion, and branching is not necessary. The best solution found thus far does not need to be updated since &amp;lt;math&amp;gt;U &amp;lt; u&amp;lt;/math&amp;gt;, so this region is discarded. The algorithm converges at the global optimum &amp;lt;math&amp;gt;x^* = -1.823&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[File:sBBexample4.png|200px|thumb|center|The third iteration.&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
This example illustrates important features of the spatial branch-and-bound approach. First, the convex relaxation can be made tighter in each region. Second, in problems with multiple variables, the choice of the variable on which to branch is important. Third, the subregions are pruned when its lower bound is higher than the best solution found thus far.&lt;br /&gt;
&lt;br /&gt;
==Applications==&lt;br /&gt;
Spatial branch-and-bound is used to solve a number of problems, including&lt;br /&gt;
*&amp;lt;b&amp;gt;Pooling and Blending Problems:&amp;lt;/b&amp;gt; An example of a pooling/blending problem is the mixing of various types of crude oils with different qualities from different feeds. These streams are mixed in various pools. The parameters of the mixing are set to minimize cost while meeting quality requirement and quantity demand.&lt;br /&gt;
*&amp;lt;b&amp;gt;Euclidean Location Problems:&amp;lt;/b&amp;gt; An example of this problem is finding the geographical positions of a plant that minimizes transportation costs.&lt;br /&gt;
*&amp;lt;b&amp;gt;Kissing Number Problem:&amp;lt;/b&amp;gt; The objective of the kissing number problem is to find the maximum number of non-overlapping n-dimensional spheres in (n+1)-dimensional Euclidian space that can be arranged such that each is touching another. In 1-dimension, the kissing number is 2; in 2-dimension, 6; and in 3-dimension, 12.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
Accurate models of real problems often involve nonconvex terms in either the objective function or the constraints. Nonconvex problems are one of the hardest to solve. Since there are multiple local optima solutions, it is difficult to find which solution is the best. Global optimization approaches, such as spatial branch-and-bound, are used to solve such problems. Other algorithms have been derived from the original spatial branch-and-bound. Examples include branch-and-reduce, α branch-and-bound, symbolic reformulation, branch-and-contract, and reduced spatial branch-and-bound.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
#Liberti, Leo. &amp;quot;Introduction to global optimization.&amp;quot; Lecture of Ecole Polytechnique, Palaiseau F 91128 (2008): 12.&lt;br /&gt;
#Pozo, C., et al. &amp;quot;A spatial branch-and-bound framework for the global optimization of kinetic models of metabolic networks.&amp;quot; Industrial &amp;amp; Engineering Chemistry Research 50.9 (2010): 5225-5238.&lt;br /&gt;
#Stein, Oliver, Peter Kirst, and Paul Steuermann. &amp;quot;An Enhanced Spatial Branch-and-Bound Method in Global Optimization with Nonconvex Constraints.&amp;quot; (2013).&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Lse_plot.png&amp;diff=6637</id>
		<title>File:Lse plot.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Lse_plot.png&amp;diff=6637"/>
		<updated>2022-04-01T15:25:43Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lse plot&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Logarithmic_transformation&amp;diff=6636</id>
		<title>Logarithmic transformation</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Logarithmic_transformation&amp;diff=6636"/>
		<updated>2022-04-01T15:24:58Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: Created page with &amp;quot;Author: Hassan Ali (ChE 345 Spring 2015)  Steward: Dajun Yue, Fengqi You  &amp;#039;&amp;#039;&amp;#039;Logarithmic transformation&amp;#039;&amp;#039;&amp;#039; is a method used to change geometric programs into their convex form...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Hassan Ali (ChE 345 Spring 2015)&lt;br /&gt;
&lt;br /&gt;
Steward: Dajun Yue, Fengqi You&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Logarithmic transformation&#039;&#039;&#039; is a method used to change geometric programs into their convex forms. A &#039;&#039;&#039;geometric program&#039;&#039;&#039;, or &#039;&#039;&#039;GP&#039;&#039;&#039;, is a type of global optimization problem that concerns minimizing a subject to constraint functions so as to allow one to solve unique non-linear programming problems. All geometric programs contain functions called posynomials that are inherently non-convex. Due to this fact, solving geometric problems can be computationally intensive and finding a global optimum solution is not guaranteed. However, by creating a logarithmic transformation for a problem, one can solve for the globally optimum solution quicker and easier. A logarithmic transformation is not the only transformation which allows. One can also use an exponential transformation to obtain the same result. A logarithmic transformation can also be used on signomial programs, which are an extension of geometric programs.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;1,2,3&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
&lt;br /&gt;
===Geometric Programming===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Geometric programming was first discussed in the early 1960&#039;s as a class of optimization problem that could be solved with geometric inequalities. Duffin and his colleagues went on to formulate basic theories of geometric programming and its applications in 1967 in their seminal textbook &#039;&#039;Geometric Programming Theory and Application&#039;&#039;.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; One of their insights into geometric programming was noticing that problems with highly non-linear constraints could be stated equivalently with a &#039;&#039;&#039;dual program&#039;&#039;&#039;. In other words, a global minimizing solution could be found by solving its corresponding dual maximization problem. This is because the dual constraints are linear. All one would need to do is change the geometric programming problem from its standard posynomial form into this &amp;quot;dual form&amp;quot; and solve using these now linear constraints.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; The answer could only be locally optimum as one was still dealing with &#039;&#039;&#039;non-linear programming (NLP)&#039;&#039;&#039; methods. &lt;br /&gt;
&lt;br /&gt;
A standard GP problem takes the following form&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \min ~f_0(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;s.t. ~~ f_i(x) \le 1, i = 1,...,m &amp;lt;/math&amp;gt;&lt;br /&gt;
:::&amp;lt;math&amp;gt;h_j(x)=1, j=1,...,M&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt; f_0,...,f_m&amp;lt;/math&amp;gt; are posynomials and &amp;lt;math&amp;gt; h_1,...,h_M&amp;lt;/math&amp;gt; are monomials, and the variables &#039;&#039;&#039;x&#039;&#039;&#039; are all positive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Posynomials===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Posynomials&#039;&#039;&#039; are functions that are non-linear and consist of a set of constants multiplied to a series of multiple variables multiplied together. Often these variables are raised to various powers. More specifically, they are functions of the form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f(x_1,x_2,...,x_n)=\sum_{k=1}^K c_kx_1^{a_{1k}}...x_n^{a_{nk}} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the variables &amp;lt;math&amp;gt; x_i &amp;lt;/math&amp;gt; and the coefficients &amp;lt;math&amp;gt; c_k &amp;lt;/math&amp;gt; are positive, real numbers, and all of the exponents &amp;lt;math&amp;gt; a_{ik} &amp;lt;/math&amp;gt; are real numbers.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Monomials&#039;&#039;&#039; are a specific case of posynomial where there is no set of terms but rather only one term and its constant. A posynomial is then simply a sum of monomials. An example of a monomial is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f(x_1,x_2)=400x_1^{3}x_2^{-2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and an example of a posynomial is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f(x_1,x_2)=4x_1^{2}x_2^{4}+x_1^{3}x_2^{5} &amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
A posynomial is therefore not of the form&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f(x_1,x_2)=x_1-x_2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as this is a linear function.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Geometric Programming Derivation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GP problems are not always given and sometimes must be derived.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt; Take the following example of a standard NLP problem&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \max ~x/y&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt; s.t. ~~2\le x\le 3&amp;lt;/math&amp;gt;&lt;br /&gt;
:::&amp;lt;math&amp;gt; ~x^2 + 3y/z\le \sqrt{y} &amp;lt;/math&amp;gt;&lt;br /&gt;
:::&amp;lt;math&amp;gt; ~x/y = z^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the variables &#039;&#039;&#039;x,y, and z&#039;&#039;&#039; are positive. The standard GP form of this problem would be&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \max ~x^{-y}&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt; s.t. ~~2x^-1\le 1, (1/3)x\le 1 &amp;lt;/math&amp;gt;&lt;br /&gt;
:::&amp;lt;math&amp;gt; ~x^{2}y^{-0.5} + 3y^{0.5}z^{-1}\le 1 &amp;lt;/math&amp;gt;&lt;br /&gt;
:::&amp;lt;math&amp;gt; ~xy^{-1}z^{-2} = 1 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A standard GP problem then minimizes a posynomial function while constraining it to posynomial inequality constraints and monomial equality constraints. Posynomials are positive functions and contain log convexity. This is an important facet as it allows standard GP problems to undergo log transformations.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Logarithmic Transformation==&lt;br /&gt;
&lt;br /&gt;
The Duffin &amp;quot;dual-program&amp;quot; method for solving GP problems is still in use but as logarithmic and exponential transformation methods were understood it became easier to simply use them to change the standard GP problem into a convex GP problem and solve using an interior point method. &#039;&#039;&#039;Interior point methods&#039;&#039;&#039; can solve GP problems very fast and robust as they require essentially no tuning of the parameters. Most importantly, the final solution obtained through this method is guaranteed to be the global optimum solution. Solving a standard GP problem is like solving an NLP problem. The only difference being that a GP problem is more constrained in its use of posynomials and monomials in its objective function and constraints. This makes standard GP problems more efficient to solve and they can be solved relatively quickly, but like NLP problems there is no guarantee the solution is globally optimum. In addition, an initial guess needs to be provided and parameters must be carefully chosen.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Logarithmic transformations are therefore very helpful as they transform the standard GP form into its convex form based on a logarithmic change of variables and a logarithmic transformation of the objective and constraint functions. So instead of minimizing the objective &amp;lt;math&amp;gt;f_0&amp;lt;/math&amp;gt;, the logarithm of &amp;lt;math&amp;gt;f_0&amp;lt;/math&amp;gt; is minimized. The variable &#039;&#039;&#039;x&#039;&#039;&#039; is replaced with the its logarithm &amp;lt;math&amp;gt;y = \log x&amp;lt;/math&amp;gt;. So now &amp;lt;math&amp;gt;x = e^y&amp;lt;/math&amp;gt;. The inequality constraint is now &amp;lt;math&amp;gt;\log f_i \le 0&amp;lt;/math&amp;gt; instead of &amp;lt;math&amp;gt;f_i \le 0&amp;lt;/math&amp;gt;  and the equality constraint is now  &amp;lt;math&amp;gt;\log h_j=0&amp;lt;/math&amp;gt; instead of &amp;lt;math&amp;gt;h_j=0&amp;lt;/math&amp;gt;.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Therefore the convex form of a GP problem is&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \min ~\log f_0(e^y)&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;s.t. ~~ \log f_i(e^y) \le 0, i = 1,...,m &amp;lt;/math&amp;gt;&lt;br /&gt;
:::&amp;lt;math&amp;gt;\log h_j(e^y)=0, j=1,...,M&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt; f_0,...,f_m&amp;lt;/math&amp;gt; are posynomials and &amp;lt;math&amp;gt; h_1,...,h_M&amp;lt;/math&amp;gt; are monomials, and the variables &#039;&#039;&#039;y&#039;&#039;&#039; are all positive. This reformulation can occur as long as the constants in the function are positive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Methods===&lt;br /&gt;
&lt;br /&gt;
[[File:Lse_plot.png|thumb|right|upright=1.7|The log-sum-exp function in &amp;lt;math&amp;gt;R^2&amp;lt;/math&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
To see the transformation clearer, more &#039;&#039;&#039;detailed steps&#039;&#039;&#039; can be shown. If the objective function is a &#039;&#039;&#039;monomial&#039;&#039;&#039; of the format&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f_0(x) = cx_1^{a_1}x_2^{a_2}...x_n^{a_n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then the new objective function will be a function of a new variable &#039;&#039;&#039;y&#039;&#039;&#039; where &amp;lt;math&amp;gt;y = \log x&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;x = e^y&amp;lt;/math&amp;gt;. It will also be a logarithm of the original objective function so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f(y) = \log f_0(e^y)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\log f_0(e^y) = \log c +a_1\log x_1 +...+ a_n\log x_n = \log c +a_1y_1 +...+ a_ny_n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which is an affine function of &#039;&#039;&#039;y&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If the above objective function was instead a monomial equality constraint such that &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;g(x) = cx_1^{a_1}x_2^{a_2}...x_n^{a_n}=1&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
then the new equality constraint would be equal to zero and be simplified to a linear equation of the form&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;-\log c = a_1y_1 +...+ a_ny_n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Any GP with only monomials reduces to a linear program after a logarithmic transformation. Checking for linearity in a monomial case will confirm if the transformation was done correctly.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the GP has &#039;&#039;&#039;posynomials&#039;&#039;&#039; the problem becomes more complex. The log of multiple terms cannot be simplified beyond its logarithm form. So if the objective function is &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f_0(x) = \sum_{n=1}^N c_nx_n^{a_n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;&#039;c&#039;&#039;&#039; &amp;gt; 0, then the new objective function will be &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f(y) = \log f_0(e^y)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\log f_0(e^y) = \log \left ( \sum_{n=1}^N e^{a_ny_n+b_n} \right ) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and where &amp;lt;math&amp;gt;b_n = \log c_n &amp;lt;/math&amp;gt; for &amp;lt;math&amp;gt;n = 1,...,N&amp;lt;/math&amp;gt;. The above can be written in a simpler form as &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\log f_0(e^y) = lse(Ay+b)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where A is an N by n matrix with rows &amp;lt;math&amp;gt;a_1,...,a_N&amp;lt;/math&amp;gt; and lse is the [https://inst.eecs.berkeley.edu/~ee127a/book/login/def_lse_fcn.html log-sum-exp function] which is convex.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The reason the logarithmic transformation is done when an &#039;&#039;&#039;exponential transformation&#039;&#039;&#039; can be done in less steps is that the exponential function might take in large values. This may create numerical problems as well as lead to complications in optimization programs. Taking a logarithm allows for the recovery of smaller values, which gives the logarithmic transformation a distinct advantage.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
A few objective functions and constraints are provided in this section as illustrative examples.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \min ~f_0(x_1,x_2)=4x_1^{2}x_2^{4}&amp;lt;/math&amp;gt;    &lt;br /&gt;
:&amp;lt;math&amp;gt;s.t. ~~ x_1 \ge 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
:::&amp;lt;math&amp;gt; x_2 \ge 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After a logarithmic transformation, this GP becomes:&lt;br /&gt;
:&amp;lt;math&amp;gt; \min ~f(y_1, y_2)= \log 4 + 2y_1 + 4y_2 &amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;s.t. ~~ y_1 \ge 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
:::&amp;lt;math&amp;gt; y_2 \ge 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \min ~f_0(x_1,x_2)=x_1^{2}x_2 + x_1x_2&amp;lt;/math&amp;gt;    &lt;br /&gt;
:&amp;lt;math&amp;gt;s.t. ~~ x_1^{2}x_2^{-2} \ge 1 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After a logarithmic transformation, this GP becomes:&lt;br /&gt;
:&amp;lt;math&amp;gt; \min ~f(y_1, y_2)= \log \left ( \sum_{n=1}^2 e^{a_ny_n} \right )  &amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;s.t. ~~ 2y_1 - 2y_2 \ge 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EXAMPLE 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \min ~f_0(x_1,x_2)=16x_1^{2}x_2^{5}&amp;lt;/math&amp;gt;    &lt;br /&gt;
:&amp;lt;math&amp;gt;s.t. ~~ \frac{x_1}{x_2} = 1 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After a logarithmic transformation, this GP becomes:&lt;br /&gt;
:&amp;lt;math&amp;gt; \min ~f(y_1, y_2)= \log 16 + 2y_1 + 5y_2 &amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;s.t. ~~ y_1=y_2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To prove that the answers to the above examples are indeed convex, one could verify its convexity through a positive-definiteness test of the [http://en.wikipedia.org/wiki/Hessian_matrix/ Hessian]. The reformulations can also be tested in GAMS.&lt;br /&gt;
&lt;br /&gt;
==Feasibility Analysis==&lt;br /&gt;
&lt;br /&gt;
A standard GP problem can be infeasible i.e. the constraints are too &amp;quot;tight&amp;quot; and don&#039;t allow for a solution. Because the constraints from a standard GP problem hold over even when changed to its convex form via logarithmic transformation, an infeasible GP problem will always be infeasible regardless of convexity. This is why it is important to check for infeasibility prior to creating a linear transformation. This is done by undergoing a feasibility analysis and setting up the GP as follows:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \min ~s &amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;s.t. ~~f_i(x) \le s, i = 1,...,m&amp;lt;/math&amp;gt;&lt;br /&gt;
:::&amp;lt;math&amp;gt;g_i(x)=1, i=1,...,p&amp;lt;/math&amp;gt;&lt;br /&gt;
:::&amp;lt;math&amp;gt; s \ge 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As s nears a value of 1, the original problem nears feasibility. The final goal is to find a solution such that s=1 so that feasibility of the problem is confirmed.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Applications==&lt;br /&gt;
&lt;br /&gt;
Applications of geometric programming include: &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;LI&amp;gt;&#039;&#039;&#039;Electrical Engineering&#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;Power Control&lt;br /&gt;
&amp;lt;LI&amp;gt;Wire Sizing&lt;br /&gt;
&amp;lt;LI&amp;gt;Routing&lt;br /&gt;
&amp;lt;LI&amp;gt;Optimal doping profile in semiconductor device engineering&lt;br /&gt;
&amp;lt;LI&amp;gt;Digital circuit gate sizing&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;&#039;&#039;&#039;Chemical Engineering&#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;  &lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;Optimal reactor design&lt;br /&gt;
&amp;lt;LI&amp;gt;Mass Transfer Optimization&lt;br /&gt;
&amp;lt;LI&amp;gt;Kinetics&lt;br /&gt;
&amp;lt;LI&amp;gt;Maximizing reliability of reactors&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;Other&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;Transportation&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;Economic Models&lt;br /&gt;
&amp;lt;LI&amp;gt;Inventory Models&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A great example among these varied applications concerns optimal reactor design. The chemical systems within a reactor follow non convex kinetics equations. If one wanted to optimize a reactor for a given system with given reaction rates, one could do so easily with a logarithmic transformation. Take a reaction &#039;&#039;&#039;A + B to C&#039;&#039;&#039; with reaction rate &amp;lt;math&amp;gt;r = kC_AC_B&amp;lt;/math&amp;gt;. The logarithmic transformation that would allow one to obtain a convex relation is &amp;lt;math&amp;gt;r^*=\log k + c_A +c_B&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;c = \log C&amp;lt;/math&amp;gt;. With this new equation, you can optimize your reactor design for your given system.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
Geometric Programming is an application that can solve a varying degree of difficult optimization problems but due to the nature of their complexity, these problems cannot be solved easily. Solving geometric problems can be computationally intensive and finding a global optimum solution is not guaranteed. This is due to the fact that GPs involve posynomials and monomials which are by nature non-linear. However, by creating a &#039;&#039;&#039;logarithmic transformation&#039;&#039;&#039; for a problem, one can solve for the globally optimum solution quicker and easier because the GP is changed to its convex form. Logarithmic transformations offer an advantage over other transformations as it allows one to work with smaller values which are less problematic. Logarithmic transformations can be used wherever geometric programming is used which includes applications in chemical engineering and economics.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
# Chiang, M. (2005). &#039;&#039;Geometric Programming for Communication Systems&#039;&#039;, Publishers, Inc., ISBN 1-933019-09-3.&lt;br /&gt;
# Duffin, R.J.  (1970). &amp;quot;Linearizing Geometric Programs&amp;quot;, &#039;&#039;SIAM Review&#039;&#039; &#039;&#039;&#039;12&#039;&#039;&#039; (2).&lt;br /&gt;
# Biswal, K.K., Ohja, A.K. (2010). &amp;quot;Posynomial Geometric Programming Problems with Multiple Parameters&amp;quot;, &#039;&#039;Journal of Computing&#039;&#039; &#039;&#039;&#039;2&#039;&#039;&#039; (1).&lt;br /&gt;
# Duffin, R.J., Peterson, E.L., Zener, C.M. (1967). &#039;&#039;Geometric Programming Theory and Application&#039;&#039;, John Wiley &amp;amp; Sons Inc., ISBN 978-0471223702. &lt;br /&gt;
# Boyd, S., Hassibi, A., Kim, S.J., Vandenberghe, L. (2007). &amp;quot;A Tutorial on Geometric Programming&amp;quot;, &#039;&#039;Optim Eng&#039;&#039; &#039;&#039;&#039;8&#039;&#039;&#039;: 67-127.&lt;br /&gt;
# Calafiore, G.C., El Ghaoui, L. (2014). &#039;&#039;Optimization Models and Applications&#039;&#039;, Cambridge University Press., ISBN 978-1107050877.&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Example11.png&amp;diff=6635</id>
		<title>File:Example11.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Example11.png&amp;diff=6635"/>
		<updated>2022-04-01T15:24:16Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example11&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Example6_so.png&amp;diff=6634</id>
		<title>File:Example6 so.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Example6_so.png&amp;diff=6634"/>
		<updated>2022-04-01T15:23:50Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example6 so&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Example4_so.png&amp;diff=6633</id>
		<title>File:Example4 so.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Example4_so.png&amp;diff=6633"/>
		<updated>2022-04-01T15:23:41Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example4 so&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Subgradient_optimization&amp;diff=6632</id>
		<title>Subgradient optimization</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Subgradient_optimization&amp;diff=6632"/>
		<updated>2022-04-01T15:23:24Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This web page is a duplicate of https://optimization.mccormick.northwestern.edu/index.php/Subgradient_optimization&lt;br /&gt;
&lt;br /&gt;
Author Name: Aaron Anderson (ChE 345 Spring 2015) &amp;lt;br/&amp;gt;&lt;br /&gt;
Steward: Dajun Yue and Fengqi You&lt;br /&gt;
&lt;br /&gt;
[[File:Subderivative_illustration.png|right|thumb|A convex nondifferentiable function (blue) with red &amp;quot;subtangent&amp;quot; lines generalizing the derivative at the nondifferentiable point &#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;.]]&lt;br /&gt;
&#039;&#039;&#039;Subgradient Optimization&#039;&#039;&#039; (or &#039;&#039;&#039;Subgradient Method&#039;&#039;&#039;) is an iterative algorithm for minimizing convex functions, used predominantly in Nondifferentiable optimization for functions that are convex but nondifferentiable. It is often slower than Newton&#039;s Method when applied to convex differentiable functions, but can be used on convex nondifferentiable functions where Newton&#039;s Method will not converge. It was first developed by Naum Z. Shor in the Soviet Union in the 1960&#039;s. &lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The &#039;&#039;&#039;Subgradient&#039;&#039;&#039; (related to Subderivative and Subdifferential) of a function is a way of generalizing or approximating the derivative of a convex function at nondifferentiable points. The definition of a subgradient is as follows: &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; is a subgradient of &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; at &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; if, for all &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, the following is true: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Subgradient.png|200px|center]]&lt;br /&gt;
An example of the subgradient of a nondifferentiable convex function &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; can be seen below:&lt;br /&gt;
[[File:Subgradient2.png|600px|center]]&lt;br /&gt;
Where &amp;lt;math&amp;gt;g_1&amp;lt;/math&amp;gt; is a subgradient at point &amp;lt;math&amp;gt;x_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;g_2&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;g_3&amp;lt;/math&amp;gt; are subgradients at point &amp;lt;math&amp;gt;x_2&amp;lt;/math&amp;gt;. Notice that when the function is differentiable, such as at point &amp;lt;math&amp;gt;x_1&amp;lt;/math&amp;gt;, the subgradient, &amp;lt;math&amp;gt;g_1&amp;lt;/math&amp;gt;, just becomes the gradient to the function. Other important factors of the subgradient to note are that the subgradient gives a linear global underestimator of &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; and if &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; is convex, then there is at least one subgradient at every point in its domain. The set of all subgradients at a certain point is called the subdifferential, and is written as &amp;lt;math&amp;gt;\partial f(x_0)&amp;lt;/math&amp;gt; at point &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==The Subgradient Method==&lt;br /&gt;
Suppose &amp;lt;math&amp;gt;f:\mathbb{R}^n \to \mathbb{R}&amp;lt;/math&amp;gt; is a convex function with domain &amp;lt;math&amp;gt;\mathbb{R}^n&amp;lt;/math&amp;gt;. To minimize &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; the subgradient method uses the iteration: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Submethod1.png|center]]&lt;br /&gt;
Where &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; is the number of iterations, &amp;lt;math&amp;gt;x^{(k)}&amp;lt;/math&amp;gt; is the &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;th iterate, &amp;lt;math&amp;gt;g^{(x)}&amp;lt;/math&amp;gt; is &#039;&#039;any&#039;&#039; subgradient at &amp;lt;math&amp;gt;x^{(k)}&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;\alpha_k&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;(&amp;gt; 0)&amp;lt;/math&amp;gt; is the &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;th step size. Thus, at each iteration of the subgradient method, we take a step in the direction of a negative subgradient. As explained above, when &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; is differentiable, &amp;lt;math&amp;gt;g^{(k)}&amp;lt;/math&amp;gt; simply reduces to &amp;lt;math&amp;gt;\nabla&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;f(x^{(k)})&amp;lt;/math&amp;gt;. It is also important to note that the subgradient method is not a descent method in that the new iterate is not always the best iterate. Thus we need some way to keep track of the best solution found so far, &#039;&#039;i.e.&#039;&#039; the one with the smallest function value. We can do this by, after each step, setting &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:submethod2.png|200px|center]]&lt;br /&gt;
and setting &amp;lt;math&amp;gt;i_{\text{best}}^{(k)} = k&amp;lt;/math&amp;gt; if &amp;lt;math&amp;gt;x^{(k)}&amp;lt;/math&amp;gt; is the best (smallest) point found so far. Thus we have:&lt;br /&gt;
[[File:submethod3.png|237px|center]]&lt;br /&gt;
which gives the best objective value found in &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; iterations. Since this value is decreasing, it has a limit (which can be &amp;lt;math&amp;gt;-\infty&amp;lt;/math&amp;gt;). &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
An algorithm flowchart is provided below for the subgradient method: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:SMFlowsheet.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
===Step size===&lt;br /&gt;
Several different step size rules can be used:&lt;br /&gt;
*&#039;&#039;&#039;Constant step size&#039;&#039;&#039;: &amp;lt;math&amp;gt;\alpha_k = h&amp;lt;/math&amp;gt; independent of &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
*&#039;&#039;&#039;Constant step length&#039;&#039;&#039;: [[File:stepsize1.png]] This means that [[File:stepsize2.png]]&lt;br /&gt;
*&#039;&#039;&#039;Square summable but not summable&#039;&#039;&#039;: These step sizes satisfy &lt;br /&gt;
:[[File:stepsize3.png]] &lt;br /&gt;
:One typical example is [[File:stepsize4.png]] where &amp;lt;math&amp;gt;a&amp;gt;0&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;b\ge0&amp;lt;/math&amp;gt;.&lt;br /&gt;
*&#039;&#039;&#039;Nonsummable diminishing&#039;&#039;&#039;: These step sizes satisfy&lt;br /&gt;
:[[File:stepsize5.png]]&lt;br /&gt;
:One typical example is [[File:stepsize6.png]] where &amp;lt;math&amp;gt;a&amp;gt;0&amp;lt;/math&amp;gt;.&lt;br /&gt;
An important thing to note is that for all four of the rules given here, the step sizes are determined &amp;quot;off-line&amp;quot;, or before the method is iterated. Thus the step sizes do not depend on preceding iterations. This &amp;quot;off-line&amp;quot; property of subgradient methods differs from the &amp;quot;on-line&amp;quot; step size rules used for descent methods for differentiable functions where the step sizes do depend on preceding iterations.&lt;br /&gt;
&lt;br /&gt;
===Convergence Results===&lt;br /&gt;
There are different results on convergence for the subgradient method depending on the different step size rules applied. &lt;br /&gt;
For constant step size rules and constant step length rules the subgradient method is guaranteed to converge within some range of the optimal value. Thus:&lt;br /&gt;
[[File:convergence1.png|center]]&lt;br /&gt;
where &amp;lt;math&amp;gt;f^{*}&amp;lt;/math&amp;gt; is the optimal solution to the problem and &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt; is the aforementioned range of convergence. This means that the subgradient method finds a point within &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt; of the optimal solution &amp;lt;math&amp;gt;f^{*}&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt; is number that is a function of the step size parameter &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt;, and as &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; decreases the range of convergence &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt; also decreases, &#039;&#039;i.e.&#039;&#039; the solution of the subgradient method gets closer to &amp;lt;math&amp;gt;f^{*}&amp;lt;/math&amp;gt; with a smaller step size parameter &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt;.&lt;br /&gt;
For the diminishing step size rule and the square summable but not summable rule, the algorithm is guaranteed to converge to the optimal value or [[File:convergence2.png]] When the function &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; is differentiable the subgradient method with constant step size yields convergence to the optimal value, provided the parameter &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; is small enough.&lt;br /&gt;
&lt;br /&gt;
==Example: Piecewise linear minimization==&lt;br /&gt;
Suppose we wanted to minimize the following piecewise linear convex function using the subgradient method: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Example1.png|center]]&lt;br /&gt;
Since this is a linear programming problem finding a subgradient is simple: given &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; we can find an index &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; for which:&lt;br /&gt;
[[File:Example2_so.png|center]]&lt;br /&gt;
The subgradient in this case is &amp;lt;math&amp;gt;g=a_j&amp;lt;/math&amp;gt;. Thus the iterative update is then:&lt;br /&gt;
[[File:Example3_so.png|center]]&lt;br /&gt;
Where &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; is chosen such to satisfy [[File:Example4_so.png]]&lt;br /&gt;
In order to apply the subgradient method to this problem all that is needed is some way to calculate [[File:Example5.png]] and the ability to carry out the iterative update. Even if the problem is dense and very large (where standard linear programming might fail), if there is some efficient way to calculate &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; then the subgradient method is a reasonable choice for algorithm.&lt;br /&gt;
Consider a problem with &amp;lt;math&amp;gt;n=10&amp;lt;/math&amp;gt; variables and &amp;lt;math&amp;gt;m=100&amp;lt;/math&amp;gt; terms and with data &amp;lt;math&amp;gt;a_i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; generated from a normal distribution. We will consider all four of the step size rules mentioned above and will plot &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt; or the difference between the optimal solution and the subgradient solution as a function of &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, the nuber of iterations. &amp;lt;br/&amp;gt;&lt;br /&gt;
For the constant step size rule [[File:Example6_so.png]] for several values of &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; the following plot was obtained: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Example7.png]] &amp;lt;br/&amp;gt;&lt;br /&gt;
For the constant step length rule [[File:Example8.png]] for several values of &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; the following plot was obtained: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Example9.png]] &amp;lt;br/&amp;gt;&lt;br /&gt;
The above figures reveal a trade-off: a larger step size parameter &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; gives a faster convergence but in the end gives a larger range of suboptimality so it is important to determine an &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; that will converge close to the optimal solution without taking a very large number of iterations. &amp;lt;br/&amp;gt;&lt;br /&gt;
For the subgradient method using diminishing step size rules, both the nonsummable diminishing step size rule [[File:Example10.png]] (blue) and the square summable but not summable step size rule [[File:Example11.png]] (red) are plotted below for convergence: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Example12.png]] &amp;lt;br/&amp;gt;&lt;br /&gt;
This figure illustrates that both the nonsummable diminishing step size rule and the square summable but not summable step size rule show relatively fast and good convergence. The square summable but not summable step size rule shows less variation than the nonsummable diminishing step size rule but both show similar speed and convergence. &amp;lt;br/&amp;gt;&lt;br /&gt;
Overall, all four step size rules can be used to get good convergence, so it is important to try different values for &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; in the constant step size and length rules and different formulas for the nonsummable diminishing step size rule and the square summable but not summable step size rule in order to get good convergence in the smallest amount of iterations possible.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
The subgradient method is a very simple algorithm for minimizing convex nondifferentiable functions where newton&#039;s method and simple linear programming will not work. While the subgradient method has a disadvantage in that it can be much slower than interior-point methods such as Newton&#039;s method, it as the advantage of the memory requirement being often times much smaller than those of an interior-point or Newton method, which means it can be used for extremely large problems for which interior-point or Newton methods cannot be used. Morever, by combining the subgradient method with primal or dual decomposition techniques, it is sometimes possible to develop a simple distributed algorithm for a problem. The subgradient method is therefor an important method to know about for solving convex minimization problems that are nondifferentiable or very large.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
1. Akgul, M. &amp;quot;Topics in Relaxation and Ellipsoidal Methods&amp;quot;, volume 97 of Research Notes in Mathematics. Pitman, 1984. &amp;lt;br/&amp;gt;&lt;br /&gt;
2. Bazaraa, M. S., Sherali, H. D. &amp;quot;On the choice of step size in subgradient optimization.&amp;quot; European Journal of Operational Research 7.4, 1981 &amp;lt;br/&amp;gt;&lt;br /&gt;
3. Bertsekas, D. P. &amp;quot;Nonlinear Programming&amp;quot;, (2nd edition), Athena Scientific, Belmont, MA, 1999. &amp;lt;br/&amp;gt;&lt;br /&gt;
4. Goffin, J. L. &amp;quot;On convergence rates of subgradient optimization methods.&amp;quot; Mathematical Programming 13.1, 1977. &amp;lt;br/&amp;gt;&lt;br /&gt;
5. Shor, N. Z. &amp;quot;Minimization Methods for Non-differentiable Functions&amp;quot;. Springer Series in Computational Mathematics. Springer, 1985. &amp;lt;br/&amp;gt;&lt;br /&gt;
6. Shor, N. Z. &amp;quot;Nondifferentiable Optimization and Polynomial Problems&amp;quot;. Nonconvex Optimization and its Applications. Kluwer, 1998. &amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Convergence2.png&amp;diff=6631</id>
		<title>File:Convergence2.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Convergence2.png&amp;diff=6631"/>
		<updated>2022-04-01T15:22:39Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Convergence2&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Example8.png&amp;diff=6630</id>
		<title>File:Example8.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Example8.png&amp;diff=6630"/>
		<updated>2022-04-01T15:20:21Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example8&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Example5.png&amp;diff=6628</id>
		<title>File:Example5.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Example5.png&amp;diff=6628"/>
		<updated>2022-04-01T15:19:06Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example5&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Example10.png&amp;diff=6627</id>
		<title>File:Example10.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Example10.png&amp;diff=6627"/>
		<updated>2022-04-01T15:18:45Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example10&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Submethod3.png&amp;diff=6625</id>
		<title>File:Submethod3.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Submethod3.png&amp;diff=6625"/>
		<updated>2022-04-01T15:17:43Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Submethod3&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Submethod2.png&amp;diff=6624</id>
		<title>File:Submethod2.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Submethod2.png&amp;diff=6624"/>
		<updated>2022-04-01T15:17:35Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Submethod2&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Subgradient_optimization&amp;diff=6623</id>
		<title>Subgradient optimization</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Subgradient_optimization&amp;diff=6623"/>
		<updated>2022-04-01T15:15:20Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This web page is a duplicate of https://optimization.mccormick.northwestern.edu/index.php/Subgradient_optimization&lt;br /&gt;
&lt;br /&gt;
Author Name: Aaron Anderson (ChE 345 Spring 2015) &amp;lt;br/&amp;gt;&lt;br /&gt;
Steward: Dajun Yue and Fengqi You&lt;br /&gt;
&lt;br /&gt;
[[File:Subderivative_illustration.png|right|thumb|A convex nondifferentiable function (blue) with red &amp;quot;subtangent&amp;quot; lines generalizing the derivative at the nondifferentiable point &#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;.]]&lt;br /&gt;
&#039;&#039;&#039;Subgradient Optimization&#039;&#039;&#039; (or &#039;&#039;&#039;Subgradient Method&#039;&#039;&#039;) is an iterative algorithm for minimizing convex functions, used predominantly in Nondifferentiable optimization for functions that are convex but nondifferentiable. It is often slower than Newton&#039;s Method when applied to convex differentiable functions, but can be used on convex nondifferentiable functions where Newton&#039;s Method will not converge. It was first developed by Naum Z. Shor in the Soviet Union in the 1960&#039;s. &lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The &#039;&#039;&#039;Subgradient&#039;&#039;&#039; (related to Subderivative and Subdifferential) of a function is a way of generalizing or approximating the derivative of a convex function at nondifferentiable points. The definition of a subgradient is as follows: &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; is a subgradient of &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; at &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; if, for all &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, the following is true: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Subgradient.png|200px|center]]&lt;br /&gt;
An example of the subgradient of a nondifferentiable convex function &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; can be seen below:&lt;br /&gt;
[[File:Subgradient2.png|600px|center]]&lt;br /&gt;
Where &amp;lt;math&amp;gt;g_1&amp;lt;/math&amp;gt; is a subgradient at point &amp;lt;math&amp;gt;x_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;g_2&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;g_3&amp;lt;/math&amp;gt; are subgradients at point &amp;lt;math&amp;gt;x_2&amp;lt;/math&amp;gt;. Notice that when the function is differentiable, such as at point &amp;lt;math&amp;gt;x_1&amp;lt;/math&amp;gt;, the subgradient, &amp;lt;math&amp;gt;g_1&amp;lt;/math&amp;gt;, just becomes the gradient to the function. Other important factors of the subgradient to note are that the subgradient gives a linear global underestimator of &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; and if &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; is convex, then there is at least one subgradient at every point in its domain. The set of all subgradients at a certain point is called the subdifferential, and is written as &amp;lt;math&amp;gt;\partial f(x_0)&amp;lt;/math&amp;gt; at point &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==The Subgradient Method==&lt;br /&gt;
Suppose &amp;lt;math&amp;gt;f:\mathbb{R}^n \to \mathbb{R}&amp;lt;/math&amp;gt; is a convex function with domain &amp;lt;math&amp;gt;\mathbb{R}^n&amp;lt;/math&amp;gt;. To minimize &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; the subgradient method uses the iteration: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Submethod1.png|center]]&lt;br /&gt;
Where &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; is the number of iterations, &amp;lt;math&amp;gt;x^{(k)}&amp;lt;/math&amp;gt; is the &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;th iterate, &amp;lt;math&amp;gt;g^{(x)}&amp;lt;/math&amp;gt; is &#039;&#039;any&#039;&#039; subgradient at &amp;lt;math&amp;gt;x^{(k)}&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;\alpha_k&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;(&amp;gt; 0)&amp;lt;/math&amp;gt; is the &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;th step size. Thus, at each iteration of the subgradient method, we take a step in the direction of a negative subgradient. As explained above, when &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; is differentiable, &amp;lt;math&amp;gt;g^{(k)}&amp;lt;/math&amp;gt; simply reduces to &amp;lt;math&amp;gt;\nabla&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;f(x^{(k)})&amp;lt;/math&amp;gt;. It is also important to note that the subgradient method is not a descent method in that the new iterate is not always the best iterate. Thus we need some way to keep track of the best solution found so far, &#039;&#039;i.e.&#039;&#039; the one with the smallest function value. We can do this by, after each step, setting &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:submethod2.png|200px|center]]&lt;br /&gt;
and setting &amp;lt;math&amp;gt;i_{\text{best}}^{(k)} = k&amp;lt;/math&amp;gt; if &amp;lt;math&amp;gt;x^{(k)}&amp;lt;/math&amp;gt; is the best (smallest) point found so far. Thus we have:&lt;br /&gt;
[[File:submethod3.png|237px|center]]&lt;br /&gt;
which gives the best objective value found in &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; iterations. Since this value is decreasing, it has a limit (which can be &amp;lt;math&amp;gt;-\infty&amp;lt;/math&amp;gt;). &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
An algorithm flowchart is provided below for the subgradient method: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:SMFlowsheet.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
===Step size===&lt;br /&gt;
Several different step size rules can be used:&lt;br /&gt;
*&#039;&#039;&#039;Constant step size&#039;&#039;&#039;: &amp;lt;math&amp;gt;\alpha_k = h&amp;lt;/math&amp;gt; independent of &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
*&#039;&#039;&#039;Constant step length&#039;&#039;&#039;: [[File:stepsize1.png]] This means that [[File:stepsize2.png]]&lt;br /&gt;
*&#039;&#039;&#039;Square summable but not summable&#039;&#039;&#039;: These step sizes satisfy &lt;br /&gt;
:[[File:stepsize3.png]] &lt;br /&gt;
:One typical example is [[File:stepsize4.png]] where &amp;lt;math&amp;gt;a&amp;gt;0&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;b\ge0&amp;lt;/math&amp;gt;.&lt;br /&gt;
*&#039;&#039;&#039;Nonsummable diminishing&#039;&#039;&#039;: These step sizes satisfy&lt;br /&gt;
:[[File:stepsize5.png]]&lt;br /&gt;
:One typical example is [[File:stepsize6.png]] where &amp;lt;math&amp;gt;a&amp;gt;0&amp;lt;/math&amp;gt;.&lt;br /&gt;
An important thing to note is that for all four of the rules given here, the step sizes are determined &amp;quot;off-line&amp;quot;, or before the method is iterated. Thus the step sizes do not depend on preceding iterations. This &amp;quot;off-line&amp;quot; property of subgradient methods differs from the &amp;quot;on-line&amp;quot; step size rules used for descent methods for differentiable functions where the step sizes do depend on preceding iterations.&lt;br /&gt;
&lt;br /&gt;
===Convergence Results===&lt;br /&gt;
There are different results on convergence for the subgradient method depending on the different step size rules applied. &lt;br /&gt;
For constant step size rules and constant step length rules the subgradient method is guaranteed to converge within some range of the optimal value. Thus:&lt;br /&gt;
[[File:convergence1.png|center]]&lt;br /&gt;
where &amp;lt;math&amp;gt;f^{*}&amp;lt;/math&amp;gt; is the optimal solution to the problem and &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt; is the aforementioned range of convergence. This means that the subgradient method finds a point within &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt; of the optimal solution &amp;lt;math&amp;gt;f^{*}&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt; is number that is a function of the step size parameter &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt;, and as &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; decreases the range of convergence &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt; also decreases, &#039;&#039;i.e.&#039;&#039; the solution of the subgradient method gets closer to &amp;lt;math&amp;gt;f^{*}&amp;lt;/math&amp;gt; with a smaller step size parameter &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt;.&lt;br /&gt;
For the diminishing step size rule and the square summable but not summable rule, the algorithm is guaranteed to converge to the optimal value or [[File:convergence2.png]] When the function &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; is differentiable the subgradient method with constant step size yields convergence to the optimal value, provided the parameter &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; is small enough.&lt;br /&gt;
&lt;br /&gt;
==Example: Piecewise linear minimization==&lt;br /&gt;
Suppose we wanted to minimize the following piecewise linear convex function using the subgradient method: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Example1.png|center]]&lt;br /&gt;
Since this is a linear programming problem finding a subgradient is simple: given &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; we can find an index &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; for which:&lt;br /&gt;
[[File:Example2_so.png|center]]&lt;br /&gt;
The subgradient in this case is &amp;lt;math&amp;gt;g=a_j&amp;lt;/math&amp;gt;. Thus the iterative update is then:&lt;br /&gt;
[[File:Example3_so.png|center]]&lt;br /&gt;
Where &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; is chosen such to satisfy [[File:Example4_so.png]]&lt;br /&gt;
In order to apply the subgradient method to this problem all that is needed is some way to calculate [[File:Example5.png]] and the ability to carry out the iterative update. Even if the problem is dense and very large (where standard linear programming might fail), if there is some efficient way to calculate &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; then the subgradient method is a reasonable choice for algorithm.&lt;br /&gt;
Consider a problem with &amp;lt;math&amp;gt;n=10&amp;lt;/math&amp;gt; variables and &amp;lt;math&amp;gt;m=100&amp;lt;/math&amp;gt; terms and with data &amp;lt;math&amp;gt;a_i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; generated from a normal distribution. We will consider all four of the step size rules mentioned above and will plot &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt; or the difference between the optimal solution and the subgradient solution as a function of &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, the nuber of iterations. &amp;lt;br/&amp;gt;&lt;br /&gt;
For the constant step size rule [[File:Example6.png]] for several values of &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; the following plot was obtained: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Example7.png]] &amp;lt;br/&amp;gt;&lt;br /&gt;
For the constant step length rule [[File:Example8.png]] for several values of &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; the following plot was obtained: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Example9.png]] &amp;lt;br/&amp;gt;&lt;br /&gt;
The above figures reveal a trade-off: a larger step size parameter &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; gives a faster convergence but in the end gives a larger range of suboptimality so it is important to determine an &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; that will converge close to the optimal solution without taking a very large number of iterations. &amp;lt;br/&amp;gt;&lt;br /&gt;
For the subgradient method using diminishing step size rules, both the nonsummable diminishing step size rule [[File:Example10.png]] (blue) and the square summable but not summable step size rule [[File:Example11.png]] (red) are plotted below for convergence: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Example12.png]] &amp;lt;br/&amp;gt;&lt;br /&gt;
This figure illustrates that both the nonsummable diminishing step size rule and the square summable but not summable step size rule show relatively fast and good convergence. The square summable but not summable step size rule shows less variation than the nonsummable diminishing step size rule but both show similar speed and convergence. &amp;lt;br/&amp;gt;&lt;br /&gt;
Overall, all four step size rules can be used to get good convergence, so it is important to try different values for &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; in the constant step size and length rules and different formulas for the nonsummable diminishing step size rule and the square summable but not summable step size rule in order to get good convergence in the smallest amount of iterations possible.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
The subgradient method is a very simple algorithm for minimizing convex nondifferentiable functions where newton&#039;s method and simple linear programming will not work. While the subgradient method has a disadvantage in that it can be much slower than interior-point methods such as Newton&#039;s method, it as the advantage of the memory requirement being often times much smaller than those of an interior-point or Newton method, which means it can be used for extremely large problems for which interior-point or Newton methods cannot be used. Morever, by combining the subgradient method with primal or dual decomposition techniques, it is sometimes possible to develop a simple distributed algorithm for a problem. The subgradient method is therefor an important method to know about for solving convex minimization problems that are nondifferentiable or very large.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
1. Akgul, M. &amp;quot;Topics in Relaxation and Ellipsoidal Methods&amp;quot;, volume 97 of Research Notes in Mathematics. Pitman, 1984. &amp;lt;br/&amp;gt;&lt;br /&gt;
2. Bazaraa, M. S., Sherali, H. D. &amp;quot;On the choice of step size in subgradient optimization.&amp;quot; European Journal of Operational Research 7.4, 1981 &amp;lt;br/&amp;gt;&lt;br /&gt;
3. Bertsekas, D. P. &amp;quot;Nonlinear Programming&amp;quot;, (2nd edition), Athena Scientific, Belmont, MA, 1999. &amp;lt;br/&amp;gt;&lt;br /&gt;
4. Goffin, J. L. &amp;quot;On convergence rates of subgradient optimization methods.&amp;quot; Mathematical Programming 13.1, 1977. &amp;lt;br/&amp;gt;&lt;br /&gt;
5. Shor, N. Z. &amp;quot;Minimization Methods for Non-differentiable Functions&amp;quot;. Springer Series in Computational Mathematics. Springer, 1985. &amp;lt;br/&amp;gt;&lt;br /&gt;
6. Shor, N. Z. &amp;quot;Nondifferentiable Optimization and Polynomial Problems&amp;quot;. Nonconvex Optimization and its Applications. Kluwer, 1998. &amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Subgradient_optimization&amp;diff=6622</id>
		<title>Subgradient optimization</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Subgradient_optimization&amp;diff=6622"/>
		<updated>2022-04-01T15:15:02Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This web page is a duplicate of https://optimization.mccormick.northwestern.edu/index.php/Subgradient_optimization&lt;br /&gt;
&lt;br /&gt;
Author Name: Aaron Anderson (ChE 345 Spring 2015) &amp;lt;br/&amp;gt;&lt;br /&gt;
Steward: Dajun Yue and Fengqi You&lt;br /&gt;
&lt;br /&gt;
[[File:Subderivative_illustration.png|right|thumb|A convex nondifferentiable function (blue) with red &amp;quot;subtangent&amp;quot; lines generalizing the derivative at the nondifferentiable point &#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;.]]&lt;br /&gt;
&#039;&#039;&#039;Subgradient Optimization&#039;&#039;&#039; (or &#039;&#039;&#039;Subgradient Method&#039;&#039;&#039;) is an iterative algorithm for minimizing convex functions, used predominantly in Nondifferentiable optimization for functions that are convex but nondifferentiable. It is often slower than Newton&#039;s Method when applied to convex differentiable functions, but can be used on convex nondifferentiable functions where Newton&#039;s Method will not converge. It was first developed by Naum Z. Shor in the Soviet Union in the 1960&#039;s. &lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The &#039;&#039;&#039;Subgradient&#039;&#039;&#039; (related to Subderivative and Subdifferential) of a function is a way of generalizing or approximating the derivative of a convex function at nondifferentiable points. The definition of a subgradient is as follows: &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; is a subgradient of &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; at &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; if, for all &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, the following is true: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Subgradient.png|200px|center]]&lt;br /&gt;
An example of the subgradient of a nondifferentiable convex function &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; can be seen below:&lt;br /&gt;
[[File:Subgradient2.png|600px|center]]&lt;br /&gt;
Where &amp;lt;math&amp;gt;g_1&amp;lt;/math&amp;gt; is a subgradient at point &amp;lt;math&amp;gt;x_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;g_2&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;g_3&amp;lt;/math&amp;gt; are subgradients at point &amp;lt;math&amp;gt;x_2&amp;lt;/math&amp;gt;. Notice that when the function is differentiable, such as at point &amp;lt;math&amp;gt;x_1&amp;lt;/math&amp;gt;, the subgradient, &amp;lt;math&amp;gt;g_1&amp;lt;/math&amp;gt;, just becomes the gradient to the function. Other important factors of the subgradient to note are that the subgradient gives a linear global underestimator of &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; and if &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; is convex, then there is at least one subgradient at every point in its domain. The set of all subgradients at a certain point is called the subdifferential, and is written as &amp;lt;math&amp;gt;\partial f(x_0)&amp;lt;/math&amp;gt; at point &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==The Subgradient Method==&lt;br /&gt;
Suppose &amp;lt;math&amp;gt;f:\mathbb{R}^n \to \mathbb{R}&amp;lt;/math&amp;gt; is a convex function with domain &amp;lt;math&amp;gt;\mathbb{R}^n&amp;lt;/math&amp;gt;. To minimize &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; the subgradient method uses the iteration: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Submethod1.png|center]]&lt;br /&gt;
Where &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; is the number of iterations, &amp;lt;math&amp;gt;x^{(k)}&amp;lt;/math&amp;gt; is the &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;th iterate, &amp;lt;math&amp;gt;g^{(x)}&amp;lt;/math&amp;gt; is &#039;&#039;any&#039;&#039; subgradient at &amp;lt;math&amp;gt;x^{(k)}&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;\alpha_k&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;(&amp;gt; 0)&amp;lt;/math&amp;gt; is the &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;th step size. Thus, at each iteration of the subgradient method, we take a step in the direction of a negative subgradient. As explained above, when &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; is differentiable, &amp;lt;math&amp;gt;g^{(k)}&amp;lt;/math&amp;gt; simply reduces to &amp;lt;math&amp;gt;\nabla&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;f(x^{(k)})&amp;lt;/math&amp;gt;. It is also important to note that the subgradient method is not a descent method in that the new iterate is not always the best iterate. Thus we need some way to keep track of the best solution found so far, &#039;&#039;i.e.&#039;&#039; the one with the smallest function value. We can do this by, after each step, setting &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:submethod2.png|200px|center]]&lt;br /&gt;
and setting &amp;lt;math&amp;gt;i_{\text{best}}^{(k)} = k&amp;lt;/math&amp;gt; if &amp;lt;math&amp;gt;x^{(k)}&amp;lt;/math&amp;gt; is the best (smallest) point found so far. Thus we have:&lt;br /&gt;
[[File:submethod3.png|237px|center]]&lt;br /&gt;
which gives the best objective value found in &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; iterations. Since this value is decreasing, it has a limit (which can be &amp;lt;math&amp;gt;-\infty&amp;lt;/math&amp;gt;). &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
An algorithm flowchart is provided below for the subgradient method: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:SMFlowsheet.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
===Step size===&lt;br /&gt;
Several different step size rules can be used:&lt;br /&gt;
*&#039;&#039;&#039;Constant step size&#039;&#039;&#039;: &amp;lt;math&amp;gt;\alpha_k = h&amp;lt;/math&amp;gt; independent of &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
*&#039;&#039;&#039;Constant step length&#039;&#039;&#039;: [[File:stepsize1.png]] This means that [[File:stepsize2.png]]&lt;br /&gt;
*&#039;&#039;&#039;Square summable but not summable&#039;&#039;&#039;: These step sizes satisfy &lt;br /&gt;
:[[File:stepsize3.png]] &lt;br /&gt;
:One typical example is [[File:stepsize4.png]] where &amp;lt;math&amp;gt;a&amp;gt;0&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;b\ge0&amp;lt;/math&amp;gt;.&lt;br /&gt;
*&#039;&#039;&#039;Nonsummable diminishing&#039;&#039;&#039;: These step sizes satisfy&lt;br /&gt;
:[[File:stepsize5.png]]&lt;br /&gt;
:One typical example is [[File:stepsize6.png]] where &amp;lt;math&amp;gt;a&amp;gt;0&amp;lt;/math&amp;gt;.&lt;br /&gt;
An important thing to note is that for all four of the rules given here, the step sizes are determined &amp;quot;off-line&amp;quot;, or before the method is iterated. Thus the step sizes do not depend on preceding iterations. This &amp;quot;off-line&amp;quot; property of subgradient methods differs from the &amp;quot;on-line&amp;quot; step size rules used for descent methods for differentiable functions where the step sizes do depend on preceding iterations.&lt;br /&gt;
&lt;br /&gt;
===Convergence Results===&lt;br /&gt;
There are different results on convergence for the subgradient method depending on the different step size rules applied. &lt;br /&gt;
For constant step size rules and constant step length rules the subgradient method is guaranteed to converge within some range of the optimal value. Thus:&lt;br /&gt;
[[File:convergence1.png|center]]&lt;br /&gt;
where &amp;lt;math&amp;gt;f^{*}&amp;lt;/math&amp;gt; is the optimal solution to the problem and &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt; is the aforementioned range of convergence. This means that the subgradient method finds a point within &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt; of the optimal solution &amp;lt;math&amp;gt;f^{*}&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt; is number that is a function of the step size parameter &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt;, and as &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; decreases the range of convergence &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt; also decreases, &#039;&#039;i.e.&#039;&#039; the solution of the subgradient method gets closer to &amp;lt;math&amp;gt;f^{*}&amp;lt;/math&amp;gt; with a smaller step size parameter &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt;.&lt;br /&gt;
For the diminishing step size rule and the square summable but not summable rule, the algorithm is guaranteed to converge to the optimal value or [[File:convergence2.png]] When the function &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; is differentiable the subgradient method with constant step size yields convergence to the optimal value, provided the parameter &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; is small enough.&lt;br /&gt;
&lt;br /&gt;
==Example: Piecewise linear minimization==&lt;br /&gt;
Suppose we wanted to minimize the following piecewise linear convex function using the subgradient method: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Example1_so.png|center]]&lt;br /&gt;
Since this is a linear programming problem finding a subgradient is simple: given &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; we can find an index &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; for which:&lt;br /&gt;
[[File:Example2_so.png|center]]&lt;br /&gt;
The subgradient in this case is &amp;lt;math&amp;gt;g=a_j&amp;lt;/math&amp;gt;. Thus the iterative update is then:&lt;br /&gt;
[[File:Example3.png|center]]&lt;br /&gt;
Where &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; is chosen such to satisfy [[File:Example4.png]]&lt;br /&gt;
In order to apply the subgradient method to this problem all that is needed is some way to calculate [[File:Example5.png]] and the ability to carry out the iterative update. Even if the problem is dense and very large (where standard linear programming might fail), if there is some efficient way to calculate &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; then the subgradient method is a reasonable choice for algorithm.&lt;br /&gt;
Consider a problem with &amp;lt;math&amp;gt;n=10&amp;lt;/math&amp;gt; variables and &amp;lt;math&amp;gt;m=100&amp;lt;/math&amp;gt; terms and with data &amp;lt;math&amp;gt;a_i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; generated from a normal distribution. We will consider all four of the step size rules mentioned above and will plot &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt; or the difference between the optimal solution and the subgradient solution as a function of &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, the nuber of iterations. &amp;lt;br/&amp;gt;&lt;br /&gt;
For the constant step size rule [[File:Example6.png]] for several values of &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; the following plot was obtained: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Example7.png]] &amp;lt;br/&amp;gt;&lt;br /&gt;
For the constant step length rule [[File:Example8.png]] for several values of &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; the following plot was obtained: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Example9.png]] &amp;lt;br/&amp;gt;&lt;br /&gt;
The above figures reveal a trade-off: a larger step size parameter &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; gives a faster convergence but in the end gives a larger range of suboptimality so it is important to determine an &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; that will converge close to the optimal solution without taking a very large number of iterations. &amp;lt;br/&amp;gt;&lt;br /&gt;
For the subgradient method using diminishing step size rules, both the nonsummable diminishing step size rule [[File:Example10.png]] (blue) and the square summable but not summable step size rule [[File:Example11.png]] (red) are plotted below for convergence: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Example12.png]] &amp;lt;br/&amp;gt;&lt;br /&gt;
This figure illustrates that both the nonsummable diminishing step size rule and the square summable but not summable step size rule show relatively fast and good convergence. The square summable but not summable step size rule shows less variation than the nonsummable diminishing step size rule but both show similar speed and convergence. &amp;lt;br/&amp;gt;&lt;br /&gt;
Overall, all four step size rules can be used to get good convergence, so it is important to try different values for &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; in the constant step size and length rules and different formulas for the nonsummable diminishing step size rule and the square summable but not summable step size rule in order to get good convergence in the smallest amount of iterations possible.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
The subgradient method is a very simple algorithm for minimizing convex nondifferentiable functions where newton&#039;s method and simple linear programming will not work. While the subgradient method has a disadvantage in that it can be much slower than interior-point methods such as Newton&#039;s method, it as the advantage of the memory requirement being often times much smaller than those of an interior-point or Newton method, which means it can be used for extremely large problems for which interior-point or Newton methods cannot be used. Morever, by combining the subgradient method with primal or dual decomposition techniques, it is sometimes possible to develop a simple distributed algorithm for a problem. The subgradient method is therefor an important method to know about for solving convex minimization problems that are nondifferentiable or very large.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
1. Akgul, M. &amp;quot;Topics in Relaxation and Ellipsoidal Methods&amp;quot;, volume 97 of Research Notes in Mathematics. Pitman, 1984. &amp;lt;br/&amp;gt;&lt;br /&gt;
2. Bazaraa, M. S., Sherali, H. D. &amp;quot;On the choice of step size in subgradient optimization.&amp;quot; European Journal of Operational Research 7.4, 1981 &amp;lt;br/&amp;gt;&lt;br /&gt;
3. Bertsekas, D. P. &amp;quot;Nonlinear Programming&amp;quot;, (2nd edition), Athena Scientific, Belmont, MA, 1999. &amp;lt;br/&amp;gt;&lt;br /&gt;
4. Goffin, J. L. &amp;quot;On convergence rates of subgradient optimization methods.&amp;quot; Mathematical Programming 13.1, 1977. &amp;lt;br/&amp;gt;&lt;br /&gt;
5. Shor, N. Z. &amp;quot;Minimization Methods for Non-differentiable Functions&amp;quot;. Springer Series in Computational Mathematics. Springer, 1985. &amp;lt;br/&amp;gt;&lt;br /&gt;
6. Shor, N. Z. &amp;quot;Nondifferentiable Optimization and Polynomial Problems&amp;quot;. Nonconvex Optimization and its Applications. Kluwer, 1998. &amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Subgradient_optimization&amp;diff=6621</id>
		<title>Subgradient optimization</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Subgradient_optimization&amp;diff=6621"/>
		<updated>2022-04-01T15:14:45Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This web page is a duplicate of https://optimization.mccormick.northwestern.edu/index.php/Subgradient_optimization&lt;br /&gt;
&lt;br /&gt;
Author Name: Aaron Anderson (ChE 345 Spring 2015) &amp;lt;br/&amp;gt;&lt;br /&gt;
Steward: Dajun Yue and Fengqi You&lt;br /&gt;
&lt;br /&gt;
[[File:Subderivative_illustration.png|right|thumb|A convex nondifferentiable function (blue) with red &amp;quot;subtangent&amp;quot; lines generalizing the derivative at the nondifferentiable point &#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;.]]&lt;br /&gt;
&#039;&#039;&#039;Subgradient Optimization&#039;&#039;&#039; (or &#039;&#039;&#039;Subgradient Method&#039;&#039;&#039;) is an iterative algorithm for minimizing convex functions, used predominantly in Nondifferentiable optimization for functions that are convex but nondifferentiable. It is often slower than Newton&#039;s Method when applied to convex differentiable functions, but can be used on convex nondifferentiable functions where Newton&#039;s Method will not converge. It was first developed by Naum Z. Shor in the Soviet Union in the 1960&#039;s. &lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The &#039;&#039;&#039;Subgradient&#039;&#039;&#039; (related to Subderivative and Subdifferential) of a function is a way of generalizing or approximating the derivative of a convex function at nondifferentiable points. The definition of a subgradient is as follows: &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; is a subgradient of &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; at &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; if, for all &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, the following is true: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Subgradient.png|200px|center]]&lt;br /&gt;
An example of the subgradient of a nondifferentiable convex function &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; can be seen below:&lt;br /&gt;
[[File:Subgradient2.png|600px|center]]&lt;br /&gt;
Where &amp;lt;math&amp;gt;g_1&amp;lt;/math&amp;gt; is a subgradient at point &amp;lt;math&amp;gt;x_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;g_2&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;g_3&amp;lt;/math&amp;gt; are subgradients at point &amp;lt;math&amp;gt;x_2&amp;lt;/math&amp;gt;. Notice that when the function is differentiable, such as at point &amp;lt;math&amp;gt;x_1&amp;lt;/math&amp;gt;, the subgradient, &amp;lt;math&amp;gt;g_1&amp;lt;/math&amp;gt;, just becomes the gradient to the function. Other important factors of the subgradient to note are that the subgradient gives a linear global underestimator of &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; and if &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; is convex, then there is at least one subgradient at every point in its domain. The set of all subgradients at a certain point is called the subdifferential, and is written as &amp;lt;math&amp;gt;\partial f(x_0)&amp;lt;/math&amp;gt; at point &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==The Subgradient Method==&lt;br /&gt;
Suppose &amp;lt;math&amp;gt;f:\mathbb{R}^n \to \mathbb{R}&amp;lt;/math&amp;gt; is a convex function with domain &amp;lt;math&amp;gt;\mathbb{R}^n&amp;lt;/math&amp;gt;. To minimize &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; the subgradient method uses the iteration: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Submethod1.png|center]]&lt;br /&gt;
Where &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; is the number of iterations, &amp;lt;math&amp;gt;x^{(k)}&amp;lt;/math&amp;gt; is the &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;th iterate, &amp;lt;math&amp;gt;g^{(x)}&amp;lt;/math&amp;gt; is &#039;&#039;any&#039;&#039; subgradient at &amp;lt;math&amp;gt;x^{(k)}&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;\alpha_k&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;(&amp;gt; 0)&amp;lt;/math&amp;gt; is the &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;th step size. Thus, at each iteration of the subgradient method, we take a step in the direction of a negative subgradient. As explained above, when &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; is differentiable, &amp;lt;math&amp;gt;g^{(k)}&amp;lt;/math&amp;gt; simply reduces to &amp;lt;math&amp;gt;\nabla&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;f(x^{(k)})&amp;lt;/math&amp;gt;. It is also important to note that the subgradient method is not a descent method in that the new iterate is not always the best iterate. Thus we need some way to keep track of the best solution found so far, &#039;&#039;i.e.&#039;&#039; the one with the smallest function value. We can do this by, after each step, setting &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:submethod2.png|200px|center]]&lt;br /&gt;
and setting &amp;lt;math&amp;gt;i_{\text{best}}^{(k)} = k&amp;lt;/math&amp;gt; if &amp;lt;math&amp;gt;x^{(k)}&amp;lt;/math&amp;gt; is the best (smallest) point found so far. Thus we have:&lt;br /&gt;
[[File:submethod3.png|237px|center]]&lt;br /&gt;
which gives the best objective value found in &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; iterations. Since this value is decreasing, it has a limit (which can be &amp;lt;math&amp;gt;-\infty&amp;lt;/math&amp;gt;). &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
An algorithm flowchart is provided below for the subgradient method: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:SMFlowsheet.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
===Step size===&lt;br /&gt;
Several different step size rules can be used:&lt;br /&gt;
*&#039;&#039;&#039;Constant step size&#039;&#039;&#039;: &amp;lt;math&amp;gt;\alpha_k = h&amp;lt;/math&amp;gt; independent of &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
*&#039;&#039;&#039;Constant step length&#039;&#039;&#039;: [[File:stepsize1.png]] This means that [[File:stepsize2.png]]&lt;br /&gt;
*&#039;&#039;&#039;Square summable but not summable&#039;&#039;&#039;: These step sizes satisfy &lt;br /&gt;
:[[File:stepsize3.png]] &lt;br /&gt;
:One typical example is [[File:stepsize4.png]] where &amp;lt;math&amp;gt;a&amp;gt;0&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;b\ge0&amp;lt;/math&amp;gt;.&lt;br /&gt;
*&#039;&#039;&#039;Nonsummable diminishing&#039;&#039;&#039;: These step sizes satisfy&lt;br /&gt;
:[[File:stepsize5.png]]&lt;br /&gt;
:One typical example is [[File:stepsize6.png]] where &amp;lt;math&amp;gt;a&amp;gt;0&amp;lt;/math&amp;gt;.&lt;br /&gt;
An important thing to note is that for all four of the rules given here, the step sizes are determined &amp;quot;off-line&amp;quot;, or before the method is iterated. Thus the step sizes do not depend on preceding iterations. This &amp;quot;off-line&amp;quot; property of subgradient methods differs from the &amp;quot;on-line&amp;quot; step size rules used for descent methods for differentiable functions where the step sizes do depend on preceding iterations.&lt;br /&gt;
&lt;br /&gt;
===Convergence Results===&lt;br /&gt;
There are different results on convergence for the subgradient method depending on the different step size rules applied. &lt;br /&gt;
For constant step size rules and constant step length rules the subgradient method is guaranteed to converge within some range of the optimal value. Thus:&lt;br /&gt;
[[File:convergence1.png|center]]&lt;br /&gt;
where &amp;lt;math&amp;gt;f^{*}&amp;lt;/math&amp;gt; is the optimal solution to the problem and &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt; is the aforementioned range of convergence. This means that the subgradient method finds a point within &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt; of the optimal solution &amp;lt;math&amp;gt;f^{*}&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt; is number that is a function of the step size parameter &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt;, and as &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; decreases the range of convergence &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt; also decreases, &#039;&#039;i.e.&#039;&#039; the solution of the subgradient method gets closer to &amp;lt;math&amp;gt;f^{*}&amp;lt;/math&amp;gt; with a smaller step size parameter &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt;.&lt;br /&gt;
For the diminishing step size rule and the square summable but not summable rule, the algorithm is guaranteed to converge to the optimal value or [[File:convergence2.png]] When the function &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; is differentiable the subgradient method with constant step size yields convergence to the optimal value, provided the parameter &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; is small enough.&lt;br /&gt;
&lt;br /&gt;
==Example: Piecewise linear minimization==&lt;br /&gt;
Suppose we wanted to minimize the following piecewise linear convex function using the subgradient method: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Example1.png|center]]&lt;br /&gt;
Since this is a linear programming problem finding a subgradient is simple: given &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; we can find an index &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; for which:&lt;br /&gt;
[[File:Example2_so.png|center]]&lt;br /&gt;
The subgradient in this case is &amp;lt;math&amp;gt;g=a_j&amp;lt;/math&amp;gt;. Thus the iterative update is then:&lt;br /&gt;
[[File:Example3_so.png|center]]&lt;br /&gt;
Where &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; is chosen such to satisfy [[File:Example4.png]]&lt;br /&gt;
In order to apply the subgradient method to this problem all that is needed is some way to calculate [[File:Example5.png]] and the ability to carry out the iterative update. Even if the problem is dense and very large (where standard linear programming might fail), if there is some efficient way to calculate &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; then the subgradient method is a reasonable choice for algorithm.&lt;br /&gt;
Consider a problem with &amp;lt;math&amp;gt;n=10&amp;lt;/math&amp;gt; variables and &amp;lt;math&amp;gt;m=100&amp;lt;/math&amp;gt; terms and with data &amp;lt;math&amp;gt;a_i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; generated from a normal distribution. We will consider all four of the step size rules mentioned above and will plot &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt; or the difference between the optimal solution and the subgradient solution as a function of &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, the nuber of iterations. &amp;lt;br/&amp;gt;&lt;br /&gt;
For the constant step size rule [[File:Example6.png]] for several values of &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; the following plot was obtained: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Example7.png]] &amp;lt;br/&amp;gt;&lt;br /&gt;
For the constant step length rule [[File:Example8.png]] for several values of &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; the following plot was obtained: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Example9.png]] &amp;lt;br/&amp;gt;&lt;br /&gt;
The above figures reveal a trade-off: a larger step size parameter &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; gives a faster convergence but in the end gives a larger range of suboptimality so it is important to determine an &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; that will converge close to the optimal solution without taking a very large number of iterations. &amp;lt;br/&amp;gt;&lt;br /&gt;
For the subgradient method using diminishing step size rules, both the nonsummable diminishing step size rule [[File:Example10.png]] (blue) and the square summable but not summable step size rule [[File:Example11.png]] (red) are plotted below for convergence: &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Example12.png]] &amp;lt;br/&amp;gt;&lt;br /&gt;
This figure illustrates that both the nonsummable diminishing step size rule and the square summable but not summable step size rule show relatively fast and good convergence. The square summable but not summable step size rule shows less variation than the nonsummable diminishing step size rule but both show similar speed and convergence. &amp;lt;br/&amp;gt;&lt;br /&gt;
Overall, all four step size rules can be used to get good convergence, so it is important to try different values for &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; in the constant step size and length rules and different formulas for the nonsummable diminishing step size rule and the square summable but not summable step size rule in order to get good convergence in the smallest amount of iterations possible.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
The subgradient method is a very simple algorithm for minimizing convex nondifferentiable functions where newton&#039;s method and simple linear programming will not work. While the subgradient method has a disadvantage in that it can be much slower than interior-point methods such as Newton&#039;s method, it as the advantage of the memory requirement being often times much smaller than those of an interior-point or Newton method, which means it can be used for extremely large problems for which interior-point or Newton methods cannot be used. Morever, by combining the subgradient method with primal or dual decomposition techniques, it is sometimes possible to develop a simple distributed algorithm for a problem. The subgradient method is therefor an important method to know about for solving convex minimization problems that are nondifferentiable or very large.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
1. Akgul, M. &amp;quot;Topics in Relaxation and Ellipsoidal Methods&amp;quot;, volume 97 of Research Notes in Mathematics. Pitman, 1984. &amp;lt;br/&amp;gt;&lt;br /&gt;
2. Bazaraa, M. S., Sherali, H. D. &amp;quot;On the choice of step size in subgradient optimization.&amp;quot; European Journal of Operational Research 7.4, 1981 &amp;lt;br/&amp;gt;&lt;br /&gt;
3. Bertsekas, D. P. &amp;quot;Nonlinear Programming&amp;quot;, (2nd edition), Athena Scientific, Belmont, MA, 1999. &amp;lt;br/&amp;gt;&lt;br /&gt;
4. Goffin, J. L. &amp;quot;On convergence rates of subgradient optimization methods.&amp;quot; Mathematical Programming 13.1, 1977. &amp;lt;br/&amp;gt;&lt;br /&gt;
5. Shor, N. Z. &amp;quot;Minimization Methods for Non-differentiable Functions&amp;quot;. Springer Series in Computational Mathematics. Springer, 1985. &amp;lt;br/&amp;gt;&lt;br /&gt;
6. Shor, N. Z. &amp;quot;Nondifferentiable Optimization and Polynomial Problems&amp;quot;. Nonconvex Optimization and its Applications. Kluwer, 1998. &amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Subgradient.png&amp;diff=6620</id>
		<title>File:Subgradient.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Subgradient.png&amp;diff=6620"/>
		<updated>2022-04-01T15:14:12Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Subgradient&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Stepsize6.png&amp;diff=6619</id>
		<title>File:Stepsize6.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Stepsize6.png&amp;diff=6619"/>
		<updated>2022-04-01T15:13:57Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Stepsize6&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Stepsize5.png&amp;diff=6618</id>
		<title>File:Stepsize5.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Stepsize5.png&amp;diff=6618"/>
		<updated>2022-04-01T15:13:49Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Stepsize5&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Stepsize4.png&amp;diff=6617</id>
		<title>File:Stepsize4.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Stepsize4.png&amp;diff=6617"/>
		<updated>2022-04-01T15:13:30Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Stepsize4&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Stepsize3.png&amp;diff=6616</id>
		<title>File:Stepsize3.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Stepsize3.png&amp;diff=6616"/>
		<updated>2022-04-01T15:13:12Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Stepsize3&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Stepsize2.png&amp;diff=6615</id>
		<title>File:Stepsize2.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Stepsize2.png&amp;diff=6615"/>
		<updated>2022-04-01T15:13:05Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Stepsize2&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Stepsize1.png&amp;diff=6614</id>
		<title>File:Stepsize1.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Stepsize1.png&amp;diff=6614"/>
		<updated>2022-04-01T15:12:56Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Stepsize1&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Example3_so.png&amp;diff=6613</id>
		<title>File:Example3 so.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Example3_so.png&amp;diff=6613"/>
		<updated>2022-04-01T15:12:37Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example3 so&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Example2_so.png&amp;diff=6612</id>
		<title>File:Example2 so.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Example2_so.png&amp;diff=6612"/>
		<updated>2022-04-01T15:12:28Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example2 so&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Convergence1.png&amp;diff=6611</id>
		<title>File:Convergence1.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Convergence1.png&amp;diff=6611"/>
		<updated>2022-04-01T15:11:35Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Convergence1&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Example1.png&amp;diff=6610</id>
		<title>File:Example1.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Example1.png&amp;diff=6610"/>
		<updated>2022-04-01T15:11:24Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example1&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=File:Submethod1.png&amp;diff=6609</id>
		<title>File:Submethod1.png</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=File:Submethod1.png&amp;diff=6609"/>
		<updated>2022-04-01T15:08:23Z</updated>

		<summary type="html">&lt;p&gt;Btantisujjatham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Submethod1&lt;/div&gt;</summary>
		<author><name>Btantisujjatham</name></author>
	</entry>
</feed>