<?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=Skepdb</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=Skepdb"/>
	<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Special:Contributions/Skepdb"/>
	<updated>2026-04-26T10:26:33Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2624</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2624"/>
		<updated>2020-12-14T04:59:23Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The eight-step procedures are a simplified, multi-stage approach for determining optimal solutions in mathematical optimization. Dynamic programming, developed by Richard Bellman in the 1950s&amp;lt;ref&amp;gt;Bellman, Richard. “The Theory of Dynamic Programming.” Bulletin of American Mathematical Society, vol. 60, 1954, pp 503–515, https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf. 18 Nov 2020.&amp;lt;/ref&amp;gt;, is used to solve for the maximization or minimization of the objective function by transforming the problem into smaller steps and enumerating all the different possible solutions and finding the optimal solution.&lt;br /&gt;
&lt;br /&gt;
In the eight-step procedure, a problem can be broken down into subproblems to solve. Using the solutions from the subproblems in a recursive manner, the solution can be determined after all the solutions of the subproblems are calculated to find the best solution, which demonstrates the principle of optimality: Any optimal policy has the property that, whatever the current state and current decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the current decision.&amp;lt;ref&amp;gt;Bradley, Stephen P. Applied Mathematical Programming. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&amp;lt;/ref&amp;gt; Such a standard framework is used so that dynamic programming store the values of the subproblems to avoid recomputing, and thus, reduce time to solve the problem.&amp;lt;ref&amp;gt;Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. https://www.byte-by-byte.com/dpbook/. 18 Nov 2020&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. Specifying the stages also divides the problem into smaller pieces.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision. There are multiple states for each stage. In general, the states consists of the information that is needed to solve the smaller problem within each stage.&amp;lt;ref&amp;gt;Chinneck. (2015). Chapter 15 Dynamic Programming. Carleton.Ca. https://www.sce.carleton.ca/faculty/chinneck/po/Chapter15.pdf&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create for a decision that must be made at each stage. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This can help create a starting point to finding a solution to the problem. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is often denoted with a function, and shows the relationsip between the value of a decision at a particular stage and the value of optimal decision made at the previous stages. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This step can be done manually or by using programming. Note that for each state, an optimal decision made at the remaining stages of the problem is independent from the decisions of the previous states. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is the final step for solving a problem using the eight step procedure. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
&#039;&#039;Suppose we have a knapsack with a weight capacity of C=5 and N=2 types of items. An item of type n weighs W [n] and generates a benefit of b [n,j] when packing j items of type n to the knapsack however only a[n] units of this item are available.&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
To solve a Knapsack problem we use the following steps: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039;   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
The following are some applications where dynamic programming is used. The criteria for applying dynamic programming to an optimization problem are if the objective function involves maximization, minimization, or counting and if the problem is determined by finding all the solutions to find the optimal solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shortest/ Longest Path Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the shortest path problem, the path with the least amount of cost or value must be determined in a problem with multiple nodes in between the beginning node &#039;&#039;s&#039;&#039; to the final node &#039;&#039;e&#039;&#039;. Travelling from one node to another incurs a value or cost &#039;&#039;c(p, q&#039;&#039;), and the objective is to reach t with the smallest cost possible. The eight-step procedure can be used to determine the possible solutions which the optimal solution can be determined from.&amp;lt;ref&amp;gt;Neumann K. “Dynamic Programming Basic Concepts and Applications.” Optimization in Planning and Operations of Electric Power Systems. Physica, Heidelberg, 1993, p 31-56.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, but in a maximization function, the longest path can be determined in a problem by determining the solution with the highest cost involved to travel from node &#039;&#039;s&#039;&#039; to node &#039;&#039;e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Knapsack Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The knapsack problem is an example of determining the distribution of effort or when there are limited resources to be shared with competing entities, and the goal is to maximize the benefit of the distribution. Dynamic programming is used when the increase in benefit in regard to increasing the quantity of resources is not linearly proportional. The volume may also be considered in addition to the weight of the resources. A volume constraint is added to the problem and represented in the state by stage &#039;&#039;n&#039;&#039; by an ordered pair (&#039;&#039;s, v&#039;&#039;) for remaining weight and volume. By considering &#039;&#039;d&#039;&#039; constraints, the number of states can grow exponentially with a &#039;&#039;d&#039;&#039; -dimensional state space even if the value of &#039;&#039;d&#039;&#039; is small. The problem becomes infeasible to solve and is referred to as the curse of dimensionality. However, the curse has faded due to advances in computational power.&amp;lt;ref&amp;gt;Taylor, C. Robert. Applications Of Dynamic Programming To Agricultural Decision Problems. United States, CRC Press, 2019.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inventory Planning Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In inventory management, dynamic programming is used to determine how to meet anticipated and unexpected demand in order to minimize overall costs. Tracking an inventory system involves establishing a set of policies that monitor and control the levels of inventory, determining when a stock must be replenished, and the quantity of parts to order. For example, a production schedule can be computationally solved by knowing the demand, unit production costs, and inventory supply limits in order to keep the production costs below a certain rate.&amp;lt;ref&amp;gt;Bellman, Richard. “Dynamic Programming Approach to Optimal Inventory Processes with Delay in Delivery.” Quarterly of Applied Mathematics, vol 18, 1961, p. 399-403, https://www.ams.org/journals/qam/1961-18-04/S0033-569X-1961-0118516-2/S0033-569X-1961-0118516-2.pdf. 19 Nov 2020&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Needleman-Wunsh Algorithm (Global Sequence Alignment)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Developed by Saul B. Needleman and Christian D. Wunsch in 1970, the Needleman-Wunsh algorithm, also known as global sequence alignment, is used to find similarities within protein or nucleotide sequences. This algorithm is an application of dynamic programming used to divide a large problem such as a large sequence into smaller subproblems and the solutions of the subproblems are used to find the optimal sequences with the highest scores. A  matrix is constructed consisting of strings of the protein or nucleotide sequences. A scoring system is determined for each of the nucleotide pairs (adenine, guanine, cytosine, thymine) where there could exist a match (+1), mismatch (-1), or gap (-1). The sum of the scores determine the entire alignment pair. Then the scores are calculated for the pairs and filled out in the matrix. To find the optimal alignment, one would perform a &amp;quot;traceback&amp;quot; by starting at the upper left matrix to the bottom right. The algorithm is limited in that it can align only entire proteins.&amp;lt;ref&amp;gt;Needleman, S. B. and Wunsch, C. D. &amp;quot;A General Method Applicable to the Search for Similarities in the Amino Acid Sequence of Two Proteins.&amp;quot; J. Mol. Biol. 48, 1970, p. 443-453.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
The eight-step procedure is an approach used in dynamic programming to transform a problem into simpler problems to yield an optimal solution. The recursive nature of the procedure allows for the optimization problems to be solved using computational models that reduce time and effort and can be used in many applications across many industries.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2623</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2623"/>
		<updated>2020-12-14T04:58:35Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The eight-step procedures are a simplified, multi-stage approach for determining optimal solutions in mathematical optimization. Dynamic programming, developed by Richard Bellman in the 1950s&amp;lt;ref&amp;gt;Bellman, Richard. “The Theory of Dynamic Programming.” Bulletin of American Mathematical Society, vol. 60, 1954, pp 503–515, https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf. 18 Nov 2020.&amp;lt;/ref&amp;gt;, is used to solve for the maximization or minimization of the objective function by transforming the problem into smaller steps and enumerating all the different possible solutions and finding the optimal solution.&lt;br /&gt;
&lt;br /&gt;
In the eight-step procedure, a problem can be broken down into subproblems to solve. Using the solutions from the subproblems in a recursive manner, the solution can be determined after all the solutions of the subproblems are calculated to find the best solution, which demonstrates the principle of optimality: Any optimal policy has the property that, whatever the current state and current decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the current decision.&amp;lt;ref&amp;gt;Bradley, Stephen P. Applied Mathematical Programming. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&amp;lt;/ref&amp;gt; Such a standard framework is used so that dynamic programming store the values of the subproblems to avoid recomputing, and thus, reduce time to solve the problem.&amp;lt;ref&amp;gt;Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. https://www.byte-by-byte.com/dpbook/. 18 Nov 2020&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. Specifying the stages also divides the problem into smaller pieces.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision. There are multiple states for each stage. In general, the states consists of the information that is needed to solve the smaller problem within each stage.&amp;lt;ref&amp;gt;Chinneck. (2015). Chapter 15 Dynamic Programming. Carleton.Ca. https://www.sce.carleton.ca/faculty/chinneck/po/Chapter15.pdf&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create for a decision that must be made at each stage. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This can help create a starting point to finding a solution to the problem. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is often denoted with a function, and shows the relationsip between the value of a decision at a particular stage and the value of optimal decision made at the previous stages. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This step can be done manually or by using programming. Note that for each state, an optimal decision made at the remaining stages of the problem is independent from the decisions of the previous states. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is the final step for solving a problem using the eight step procedure. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
&#039;&#039;Suppose we have a knapsack with a weight capacity of C=5 and N=2 types of items. An item of type n weighs W [n] and generates a benefit of b [n,j] when packing j items of type n to the knapsack however only a[n] units of this item are available.&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
To solve a Knapsack problem we use the following steps: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039;   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
The following are some applications where dynamic programming is used. The criteria for applying dynamic programming to an optimization problem are if the objective function involves maximization, minimization, or counting and if the problem is determined by finding all the solutions to find the optimal solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shortest/ Longest Path Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the shortest path problem, the path with the least amount of cost or value must be determined in a problem with multiple nodes in between the beginning node &#039;&#039;s&#039;&#039; to the final node &#039;&#039;e&#039;&#039;. Travelling from one node to another incurs a value or cost &#039;&#039;c(p, q&#039;&#039;), and the objective is to reach t with the smallest cost possible. The eight-step procedure can be used to determine the possible solutions which the optimal solution can be determined from.&amp;lt;ref&amp;gt;Neumann K. “Dynamic Programming Basic Concepts and Applications.” Optimization in Planning and Operations of Electric Power Systems. Physica, Heidelberg, 1993, p 31-56.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, but in a maximization function, the longest path can be determined in a problem by determining the solution with the highest cost involved to travel from node &#039;&#039;s&#039;&#039; to node &#039;&#039;e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Knapsack Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The knapsack problem is an example of determining the distribution of effort or when there are limited resources to be shared with competing entities, and the goal is to maximize the benefit of the distribution. Dynamic programming is used when the increase in benefit in regard to increasing the quantity of resources is not linearly proportional. The volume may also be considered in addition to the weight of the resources. A volume constraint is added to the problem and represented in the state by stage &#039;&#039;n&#039;&#039; by an ordered pair (&#039;&#039;s, v&#039;&#039;) for remaining weight and volume. By considering &#039;&#039;d&#039;&#039; constraints, the number of states can grow exponentially with a &#039;&#039;d&#039;&#039; -dimensional state space even if the value of &#039;&#039;d&#039;&#039; is small. The problem becomes infeasible to solve and is referred to as the curse of dimensionality. However, the curse has faded due to advances in computational power.&amp;lt;ref&amp;gt;Taylor, C. Robert. Applications Of Dynamic Programming To Agricultural Decision Problems. United States, CRC Press, 2019.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inventory Planning Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In inventory management, dynamic programming is used to determine how to meet anticipated and unexpected demand in order to minimize overall costs. Tracking an inventory system involves establishing a set of policies that monitor and control the levels of inventory, determining when a stock must be replenished, and the quantity of parts to order. For example, a production schedule can be computationally solved by knowing the demand, unit production costs, and inventory supply limits in order to keep the production costs below a certain rate.&amp;lt;ref&amp;gt;Bellman, Richard. “Dynamic Programming Approach to Optimal Inventory Processes with Delay in Delivery.” Quarterly of Applied Mathematics, vol 18, 1961, p. 399-403, https://www.ams.org/journals/qam/1961-18-04/S0033-569X-1961-0118516-2/S0033-569X-1961-0118516-2.pdf. 19 Nov 2020&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Needleman-Wunsh Algorithm (Global Sequence Alignment)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Developed by Saul B. Needleman and Christian D. Wunsch in 1970, the Needleman-Wunsh algorithm, also known as global sequence alignment, is used to find similarities within protein or nucleotide sequences. This algorithm is an application of dynamic programming used to divide a large problem such as a large sequence into smaller subproblems and the solutions of the subproblems are used to find the optimal sequences with the highest scores. A  matrix is constructed consisting of strings of the protein or nucleotide sequences. A scoring system is determined for each of the nucleotide pairs (adenine, guanine, cytosine, thymine) where there could exist a match (+1), mismatch (-1), or gap (-1). The sum of the scores determine the entire alignment pair. Then the scores are calculated for the pairs and filled out in the matrix. To find the optimal alignment, one would perform a &amp;quot;traceback&amp;quot; by starting at the upper left matrix to the bottom right. The algorithm is limited in that it can align only entire proteins&amp;lt;ref&amp;gt;Needleman, S. B. and Wunsch, C. D. &amp;quot;A General Method Applicable to the Search for Similarities in the Amino Acid Sequence of Two Proteins.&amp;quot; J. Mol. Biol. 48, 1970, p. 443-453.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
The eight-step procedure is an approach used in dynamic programming to transform a problem into simpler problems to yield an optimal solution. The recursive nature of the procedure allows for the optimization problems to be solved using computational models that reduce time and effort and can be used in many applications across many industries.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2619</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2619"/>
		<updated>2020-12-14T04:27:15Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Numerical Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The eight-step procedures are a simplified, multi-stage approach for determining optimal solutions in mathematical optimization. Dynamic programming, developed by Richard Bellman in the 1950s&amp;lt;ref&amp;gt;Bellman, Richard. “The Theory of Dynamic Programming.” Bulletin of American Mathematical Society, vol. 60, 1954, pp 503–515, https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf. 18 Nov 2020.&amp;lt;/ref&amp;gt;, is used to solve for the maximization or minimization of the objective function by transforming the problem into smaller steps and enumerating all the different possible solutions and finding the optimal solution.&lt;br /&gt;
&lt;br /&gt;
In the eight-step procedure, a problem can be broken down into subproblems to solve. Using the solutions from the subproblems in a recursive manner, the solution can be determined after all the solutions of the subproblems are calculated to find the best solution, which demonstrates the principle of optimality: Any optimal policy has the property that, whatever the current state and current decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the current decision.&amp;lt;ref&amp;gt;Bradley, Stephen P. Applied Mathematical Programming. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&amp;lt;/ref&amp;gt; Such a standard framework is used so that dynamic programming store the values of the subproblems to avoid recomputing, and thus, reduce time to solve the problem.&amp;lt;ref&amp;gt;Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. https://www.byte-by-byte.com/dpbook/. 18 Nov 2020&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. Specifying the stages also divides the problem into smaller pieces.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision. There are multiple states for each stage. In general, the states consists of the information that is needed to solve the smaller problem within each stage.&amp;lt;ref&amp;gt;Chinneck. (2015). Chapter 15 Dynamic Programming. Carleton.Ca. https://www.sce.carleton.ca/faculty/chinneck/po/Chapter15.pdf&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create for a decision that must be made at each stage. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This can help create a starting point to finding a solution to the problem. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is often denoted with a function, and shows the relationsip between the value of a decision at a particular stage and the value of optimal decision made at the previous stages. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This step can be done manually or by using programming. Note that for each state, an optimal decision made at the remaining stages of the problem is independent from the decisions of the previous states. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is the final step for solving a problem using the eight step procedure. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
&#039;&#039;Suppose we have a knapsack with a weight capacity of C=5 and N=2 types of items. An item of type n weighs W [n] and generates a benefit of b [n,j] when packing j items of type n to the knapsack however only a[n] units of this item are available.&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
To solve a Knapsack problem we use the following steps: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039;   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{1}(5)= 26 &amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
The following are some applications where dynamic programming is used. The criteria for applying dynamic programming to an optimization problem are if the objective function involves maximization, minimization, or counting and if the problem is determined by finding all the solutions to find the optimal solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shortest/ Longest Path Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the shortest path problem, the path with the least amount of cost or value must be determined in a problem with multiple nodes in between the beginning node &#039;&#039;s&#039;&#039; to the final node &#039;&#039;e&#039;&#039;. Travelling from one node to another incurs a value or cost &#039;&#039;c(p, q&#039;&#039;), and the objective is to reach t with the smallest cost possible. The eight-step procedure can be used to determine the possible solutions which the optimal solution can be determined from.&amp;lt;ref&amp;gt;Neumann K. “Dynamic Programming Basic Concepts and Applications.” Optimization in Planning and Operations of Electric Power Systems. Physica, Heidelberg, 1993, p 31-56.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, but in a maximization function, the longest path can be determined in a problem by determining the solution with the highest cost involved to travel from node &#039;&#039;s&#039;&#039; to node &#039;&#039;e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Knapsack Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The knapsack problem is an example of determining the distribution of effort or when there are limited resources to be shared with competing entities, and the goal is to maximize the benefit of the distribution. Dynamic programming is used when the increase in benefit in regard to increasing the quantity of resources is not linearly proportional. The volume may also be considered in addition to the weight of the resources. A volume constraint is added to the problem and represented in the state by stage &#039;&#039;n&#039;&#039; by an ordered pair (&#039;&#039;s, v&#039;&#039;) for remaining weight and volume. By considering &#039;&#039;d&#039;&#039; constraints, the number of states can grow exponentially with a &#039;&#039;d&#039;&#039; -dimensional state space even if the value of &#039;&#039;d&#039;&#039; is small. The problem becomes infeasible to solve and is referred to as the curse of dimensionality. However, the curse has faded due to advances in computational power.&amp;lt;ref&amp;gt;Taylor, C. Robert. Applications Of Dynamic Programming To Agricultural Decision Problems. United States, CRC Press, 2019.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inventory Planning Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In inventory management, dynamic programming is used to determine how to meet anticipated and unexpected demand in order to minimize overall costs. Tracking an inventory system involves establishing a set of policies that monitor and control the levels of inventory, determining when a stock must be replenished, and the quantity of parts to order. For example, a production schedule can be computationally solved by knowing the demand, unit production costs, and inventory supply limits in order to keep the production costs below a certain rate.&amp;lt;ref&amp;gt;Bellman, Richard. “Dynamic Programming Approach to Optimal Inventory Processes with Delay in Delivery.” Quarterly of Applied Mathematics, vol 18, 1961, p. 399-403, https://www.ams.org/journals/qam/1961-18-04/S0033-569X-1961-0118516-2/S0033-569X-1961-0118516-2.pdf. 19 Nov 2020&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
The eight-step procedure is an approach used in dynamic programming to transform a problem into simpler problems to yield an optimal solution. The recursive nature of the procedure allows for the optimization problems to be solved using computational models that reduce time and effort and can be used in many applications across many industries.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2614</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2614"/>
		<updated>2020-12-14T03:29:01Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Numerical Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The eight-step procedures are a simplified, multi-stage approach for determining optimal solutions in mathematical optimization. Dynamic programming, developed by Richard Bellman in the 1950s&amp;lt;ref&amp;gt;Bellman, Richard. “The Theory of Dynamic Programming.” Bulletin of American Mathematical Society, vol. 60, 1954, pp 503–515, https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf. 18 Nov 2020.&amp;lt;/ref&amp;gt;, is used to solve for the maximization or minimization of the objective function by transforming the problem into smaller steps and enumerating all the different possible solutions and finding the optimal solution.&lt;br /&gt;
&lt;br /&gt;
In the eight-step procedure, a problem can be broken down into subproblems to solve. Using the solutions from the subproblems in a recursive manner, the solution can be determined after all the solutions of the subproblems are calculated to find the best solution, which demonstrates the principle of optimality: Any optimal policy has the property that, whatever the current state and current decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the current decision.&amp;lt;ref&amp;gt;Bradley, Stephen P. Applied Mathematical Programming. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&amp;lt;/ref&amp;gt; Such a standard framework is used so that dynamic programming store the values of the subproblems to avoid recomputing, and thus, reduce time to solve the problem.&amp;lt;ref&amp;gt;Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. https://www.byte-by-byte.com/dpbook/. 18 Nov 2020&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. Specifying the stages also divides the problem into smaller pieces.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision. There are multiple states for each stage. In general, the states consists of the information that is needed to solve the smaller problem within each stage.&amp;lt;ref&amp;gt;Chinneck. (2015). Chapter 15 Dynamic Programming. Carleton.Ca. https://www.sce.carleton.ca/faculty/chinneck/po/Chapter15.pdf&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create for a decision that must be made at each stage. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This can help create a starting point to finding a solution to the problem. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is often denoted with a function, and shows the relationsip between the value of a decision at a particular stage and the value of optimal decision made at the previous stages. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This step can be done manually or by using programming. Note that for each state, an optimal decision made at the remaining stages of the problem is independent from the decisions of the previous states. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is the final step for solving a problem using the eight step procedure. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
&#039;&#039;Suppose we have a knapsack with a weight capacity of C=5 and N=2 types of items. An item of type n weighs W [n] and generates a benefit of b [n,j] when packing j items of type n to the knapsack however only a[n] units of this item are available.&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
To solve a Knapsack problem we use the following steps: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039;   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
The following are some applications where dynamic programming is used. The criteria for applying dynamic programming to an optimization problem are if the objective function involves maximization, minimization, or counting and if the problem is determined by finding all the solutions to find the optimal solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shortest/ Longest Path Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the shortest path problem, the path with the least amount of cost or value must be determined in a problem with multiple nodes in between the beginning node &#039;&#039;s&#039;&#039; to the final node &#039;&#039;e&#039;&#039;. Travelling from one node to another incurs a value or cost &#039;&#039;c(p, q&#039;&#039;), and the objective is to reach t with the smallest cost possible. The eight-step procedure can be used to determine the possible solutions which the optimal solution can be determined from.&amp;lt;ref&amp;gt;Neumann K. “Dynamic Programming Basic Concepts and Applications.” Optimization in Planning and Operations of Electric Power Systems. Physica, Heidelberg, 1993, p 31-56.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, but in a maximization function, the longest path can be determined in a problem by determining the solution with the highest cost involved to travel from node &#039;&#039;s&#039;&#039; to node &#039;&#039;e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Knapsack Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The knapsack problem is an example of determining the distribution of effort or when there are limited resources to be shared with competing entities, and the goal is to maximize the benefit of the distribution. Dynamic programming is used when the increase in benefit in regard to increasing the quantity of resources is not linearly proportional. The volume may also be considered in addition to the weight of the resources. A volume constraint is added to the problem and represented in the state by stage &#039;&#039;n&#039;&#039; by an ordered pair (&#039;&#039;s, v&#039;&#039;) for remaining weight and volume. By considering &#039;&#039;d&#039;&#039; constraints, the number of states can grow exponentially with a &#039;&#039;d&#039;&#039; -dimensional state space even if the value of &#039;&#039;d&#039;&#039; is small. The problem becomes infeasible to solve and is referred to as the curse of dimensionality. However, the curse has faded due to advances in computational power.&amp;lt;ref&amp;gt;Taylor, C. Robert. Applications Of Dynamic Programming To Agricultural Decision Problems. United States, CRC Press, 2019.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inventory Planning Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In inventory management, dynamic programming is used to determine how to meet anticipated and unexpected demand in order to minimize overall costs. Tracking an inventory system involves establishing a set of policies that monitor and control the levels of inventory, determining when a stock must be replenished, and the quantity of parts to order. For example, a production schedule can be computationally solved by knowing the demand, unit production costs, and inventory supply limits in order to keep the production costs below a certain rate.&amp;lt;ref&amp;gt;Bellman, Richard. “Dynamic Programming Approach to Optimal Inventory Processes with Delay in Delivery.” Quarterly of Applied Mathematics, vol 18, 1961, p. 399-403, https://www.ams.org/journals/qam/1961-18-04/S0033-569X-1961-0118516-2/S0033-569X-1961-0118516-2.pdf. 19 Nov 2020&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
The eight-step procedure is an approach used in dynamic programming to transform a problem into simpler problems to yield an optimal solution. The recursive nature of the procedure allows for the optimization problems to be solved using computational models that reduce time and effort and can be used in many applications across many industries.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2593</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2593"/>
		<updated>2020-12-14T02:52:22Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Methodology */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The eight-step procedures are a simplified, multi-stage approach for determining optimal solutions in mathematical optimization. Dynamic programming, developed by Richard Bellman in the 1950s&amp;lt;ref&amp;gt;Bellman, Richard. “The Theory of Dynamic Programming.” Bulletin of American Mathematical Society, vol. 60, 1954, pp 503–515, https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf. 18 Nov 2020.&amp;lt;/ref&amp;gt;, is used to solve for the maximization or minimization of the objective function by transforming the problem into smaller steps and enumerating all the different possible solutions and finding the optimal solution.&lt;br /&gt;
&lt;br /&gt;
In the eight-step procedure, a problem can be broken down into subproblems to solve. Using the solutions from the subproblems in a recursive manner, the solution can be determined after all the solutions of the subproblems are calculated to find the best solution, which demonstrates the principle of optimality: Any optimal policy has the property that, whatever the current state and current decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the current decision.&amp;lt;ref&amp;gt;Bradley, Stephen P. Applied Mathematical Programming. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&amp;lt;/ref&amp;gt; Such a standard framework is used so that dynamic programming store the values of the subproblems to avoid recomputing, and thus, reduce time to solve the problem.&amp;lt;ref&amp;gt;Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. https://www.byte-by-byte.com/dpbook/. 18 Nov 2020&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. Specifying the stages also divides the problem into smaller pieces.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision. There are multiple states for each stage. In general, the states consists of the information that is needed to solve the smaller problem within each stage.&amp;lt;ref&amp;gt;Chinneck. (2015). Chapter 15 Dynamic Programming. Carleton.Ca. https://www.sce.carleton.ca/faculty/chinneck/po/Chapter15.pdf&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create for a decision that must be made at each stage. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This can help create a starting point to finding a solution to the problem. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is often denoted with a function, and shows the relationsip between the value of a decision at a particular stage and the value of optimal decision made at the previous stages. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This step can be done manually or by using programming. Note that for each state, an optimal decision made at the remaining stages of the problem is independent from the decisions of the previous states. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is the final step for solving a problem using the eight step procedure. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5 &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;= &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
The following are some applications where dynamic programming is used. The criteria for applying dynamic programming to an optimization problem are if the objective function involves maximization, minimization, or counting and if the problem is determined by finding all the solutions to find the optimal solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shortest/ Longest Path Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the shortest path problem, the path with the least amount of cost or value must be determined in a problem with multiple nodes in between the beginning node &#039;&#039;s&#039;&#039; to the final node &#039;&#039;e&#039;&#039;. Travelling from one node to another incurs a value or cost &#039;&#039;c(p, q&#039;&#039;), and the objective is to reach t with the smallest cost possible. The eight-step procedure can be used to determine the possible solutions which the optimal solution can be determined from.&amp;lt;ref&amp;gt;Neumann K. “Dynamic Programming Basic Concepts and Applications.” Optimization in Planning and Operations of Electric Power Systems. Physica, Heidelberg, 1993, p 31-56.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, but in a maximization function, the longest path can be determined in a problem by determining the solution with the highest cost involved to travel from node &#039;&#039;s&#039;&#039; to node &#039;&#039;e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Knapsack Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The knapsack problem is an example of determining the distribution of effort or when there are limited resources to be shared with competing entities, and the goal is to maximize the benefit of the distribution. Dynamic programming is used when the increase in benefit in regard to increasing the quantity of resources is not linearly proportional. The volume may also be considered in addition to the weight of the resources. A volume constraint is added to the problem and represented in the state by stage &#039;&#039;n&#039;&#039; by an ordered pair (&#039;&#039;s, v&#039;&#039;) for remaining weight and volume. By considering &#039;&#039;d&#039;&#039; constraints, the number of states can grow exponentially with a &#039;&#039;d&#039;&#039; -dimensional state space even if the value of &#039;&#039;d&#039;&#039; is small. The problem becomes infeasible to solve and is referred to as the curse of dimensionality. However, the curse has faded due to advances in computational power.&amp;lt;ref&amp;gt;Taylor, C. Robert. Applications Of Dynamic Programming To Agricultural Decision Problems. United States, CRC Press, 2019.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inventory Planning Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In inventory management, dynamic programming is used to determine how to meet anticipated and unexpected demand in order to minimize overall costs. Tracking an inventory system involves establishing a set of policies that monitor and control the levels of inventory, determining when a stock must be replenished, and the quantity of parts to order. For example, a production schedule can be computationally solved by knowing the demand, unit production costs, and inventory supply limits in order to keep the production costs below a certain rate.&amp;lt;ref&amp;gt;Bellman, Richard. “Dynamic Programming Approach to Optimal Inventory Processes with Delay in Delivery.” Quarterly of Applied Mathematics, vol 18, 1961, p. 399-403, https://www.ams.org/journals/qam/1961-18-04/S0033-569X-1961-0118516-2/S0033-569X-1961-0118516-2.pdf. 19 Nov 2020&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
The eight-step procedure is an approach used in dynamic programming to transform a problem into simpler problems to yield an optimal solution. The recursive nature of the procedure allows for the optimization problems to be solved using computational models that reduce time and effort and can be used in many applications across many industries.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2589</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2589"/>
		<updated>2020-12-14T02:46:22Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Methodology */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The eight-step procedures are a simplified, multi-stage approach for determining optimal solutions in mathematical optimization. Dynamic programming, developed by Richard Bellman in the 1950s&amp;lt;ref&amp;gt;Bellman, Richard. “The Theory of Dynamic Programming.” Bulletin of American Mathematical Society, vol. 60, 1954, pp 503–515, https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf. 18 Nov 2020.&amp;lt;/ref&amp;gt;, is used to solve for the maximization or minimization of the objective function by transforming the problem into smaller steps and enumerating all the different possible solutions and finding the optimal solution.&lt;br /&gt;
&lt;br /&gt;
In the eight-step procedure, a problem can be broken down into subproblems to solve. Using the solutions from the subproblems in a recursive manner, the solution can be determined after all the solutions of the subproblems are calculated to find the best solution, which demonstrates the principle of optimality: Any optimal policy has the property that, whatever the current state and current decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the current decision.&amp;lt;ref&amp;gt;Bradley, Stephen P. Applied Mathematical Programming. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&amp;lt;/ref&amp;gt; Such a standard framework is used so that dynamic programming store the values of the subproblems to avoid recomputing, and thus, reduce time to solve the problem.&amp;lt;ref&amp;gt;Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. https://www.byte-by-byte.com/dpbook/. 18 Nov 2020&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision. There are multiple states for each stage. In general, the states consists of the information that is needed to solve the smaller problem within each stage.&amp;lt;ref&amp;gt;Chinneck. (2015). Chapter 15 Dynamic Programming. Carleton.Ca. https://www.sce.carleton.ca/faculty/chinneck/po/Chapter15.pdf&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This stage varies greatly based on the problem presented. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create a starting point to finding a solution to the problem. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is often denoted with a function. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This step can be done manually or by using programming. Note that for each state, an optimal decision made at the remaining stages of the problem is independent from the decisions of the previous states. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is the final step. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5 &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;= &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
The following are some applications where dynamic programming is used. The criteria for applying dynamic programming to an optimization problem are if the objective function involves maximization, minimization, or counting and if the problem is determined by finding all the solutions to find the optimal solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shortest/ Longest Path Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the shortest path problem, the path with the least amount of cost or value must be determined in a problem with multiple nodes in between the beginning node &#039;&#039;s&#039;&#039; to the final node &#039;&#039;e&#039;&#039;. Travelling from one node to another incurs a value or cost &#039;&#039;c(p, q&#039;&#039;), and the objective is to reach t with the smallest cost possible. The eight-step procedure can be used to determine the possible solutions which the optimal solution can be determined from.&amp;lt;ref&amp;gt;Neumann K. “Dynamic Programming Basic Concepts and Applications.” Optimization in Planning and Operations of Electric Power Systems. Physica, Heidelberg, 1993, p 31-56.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, but in a maximization function, the longest path can be determined in a problem by determining the solution with the highest cost involved to travel from node &#039;&#039;s&#039;&#039; to node &#039;&#039;e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Knapsack Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The knapsack problem is an example of determining the distribution of effort or when there are limited resources to be shared with competing entities, and the goal is to maximize the benefit of the distribution. Dynamic programming is used when the increase in benefit in regard to increasing the quantity of resources is not linearly proportional. The volume may also be considered in addition to the weight of the resources. A volume constraint is added to the problem and represented in the state by stage &#039;&#039;n&#039;&#039; by an ordered pair (&#039;&#039;s, v&#039;&#039;) for remaining weight and volume. By considering &#039;&#039;d&#039;&#039; constraints, the number of states can grow exponentially with a &#039;&#039;d&#039;&#039; -dimensional state space even if the value of &#039;&#039;d&#039;&#039; is small. The problem becomes infeasible to solve and is referred to as the curse of dimensionality. However, the curse has faded due to advances in computational power.&amp;lt;ref&amp;gt;Taylor, C. Robert. Applications Of Dynamic Programming To Agricultural Decision Problems. United States, CRC Press, 2019.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inventory Planning Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In inventory management, dynamic programming is used to determine how to meet anticipated and unexpected demand in order to minimize overall costs. Tracking an inventory system involves establishing a set of policies that monitor and control the levels of inventory, determining when a stock must be replenished, and the quantity of parts to order. For example, a production schedule can be computationally solved by knowing the demand, unit production costs, and inventory supply limits in order to keep the production costs below a certain rate.&amp;lt;ref&amp;gt;Bellman, Richard. “Dynamic Programming Approach to Optimal Inventory Processes with Delay in Delivery.” Quarterly of Applied Mathematics, vol 18, 1961, p. 399-403, https://www.ams.org/journals/qam/1961-18-04/S0033-569X-1961-0118516-2/S0033-569X-1961-0118516-2.pdf. 19 Nov 2020&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
The eight-step procedure is an approach used in dynamic programming to transform a problem into simpler problems to yield an optimal solution. The recursive nature of the procedure allows for the optimization problems to be solved using computational models that reduce time and effort and can be used in many applications across many industries.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2583</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2583"/>
		<updated>2020-12-14T02:25:03Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The eight-step procedures are a simplified, multi-stage approach for determining optimal solutions in mathematical optimization. Dynamic programming, developed by Richard Bellman in the 1950s&amp;lt;ref&amp;gt;Bellman, Richard. “The Theory of Dynamic Programming.” Bulletin of American Mathematical Society, vol. 60, 1954, pp 503–515, https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf. 18 Nov 2020.&amp;lt;/ref&amp;gt;, is used to solve for the maximization or minimization of the objective function by transforming the problem into smaller steps and enumerating all the different possible solutions and finding the optimal solution.&lt;br /&gt;
&lt;br /&gt;
In the eight-step procedure, a problem can be broken down into subproblems to solve. Using the solutions from the subproblems in a recursive manner, the solution can be determined after all the solutions of the subproblems are calculated to find the best solution, which demonstrates the principle of optimality: Any optimal policy has the property that, whatever the current state and current decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the current decision.&amp;lt;ref&amp;gt;Bradley, Stephen P. Applied Mathematical Programming. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&amp;lt;/ref&amp;gt; Such a standard framework is used so that dynamic programming store the values of the subproblems to avoid recomputing, and thus, reduce time to solve the problem.&amp;lt;ref&amp;gt;Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. https://www.byte-by-byte.com/dpbook/. 18 Nov 2020&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps:&amp;lt;ref&amp;gt;You, Fengqi. “Dynamic Programming” 5 Oct 2020. Online. Microsoft PowerPoint presentation.&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision. This is often denoted by &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, with &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; being set equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This stage varies greatly based on the problem presented. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create a starting point to finding a solution to the problem. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is often denoted with a function. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This step can be done manually or by using programming. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is the final step. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5 &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;= &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
The following are some applications where dynamic programming is used. The criteria for applying dynamic programming to an optimization problem are if the objective function involves maximization, minimization, or counting and if the problem is determined by finding all the solutions to find the optimal solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shortest/ Longest Path Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the shortest path problem, the path with the least amount of cost or value must be determined in a problem with multiple nodes in between the beginning node &#039;&#039;s&#039;&#039; to the final node &#039;&#039;e&#039;&#039;. Travelling from one node to another incurs a value or cost &#039;&#039;c(p, q&#039;&#039;), and the objective is to reach t with the smallest cost possible. The eight-step procedure can be used to determine the possible solutions which the optimal solution can be determined from.&amp;lt;ref&amp;gt;Neumann K. “Dynamic Programming Basic Concepts and Applications.” Optimization in Planning and Operations of Electric Power Systems. Physica, Heidelberg, 1993, p 31-56.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, but in a maximization function, the longest path can be determined in a problem by determining the solution with the highest cost involved to travel from node &#039;&#039;s&#039;&#039; to node &#039;&#039;e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Knapsack Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The knapsack problem is an example of determining the distribution of effort or when there are limited resources to be shared with competing entities, and the goal is to maximize the benefit of the distribution. Dynamic programming is used when the increase in benefit in regard to increasing the quantity of resources is not linearly proportional. The volume may also be considered in addition to the weight of the resources. A volume constraint is added to the problem and represented in the state by stage &#039;&#039;n&#039;&#039; by an ordered pair (&#039;&#039;s, v&#039;&#039;) for remaining weight and volume. By considering &#039;&#039;d&#039;&#039; constraints, the number of states can grow exponentially with a &#039;&#039;d&#039;&#039; -dimensional state space even if the value of &#039;&#039;d&#039;&#039; is small. The problem becomes infeasible to solve and is referred to as the curse of dimensionality. However, the curse has faded due to advances in computational power.&amp;lt;ref&amp;gt;Taylor, C. Robert. Applications Of Dynamic Programming To Agricultural Decision Problems. United States, CRC Press, 2019.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inventory Planning Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In inventory management, dynamic programming is used to determine how to meet anticipated and unexpected demand in order to minimize overall costs. Tracking an inventory system involves establishing a set of policies that monitor and control the levels of inventory, determining when a stock must be replenished, and the quantity of parts to order. For example, a production schedule can be computationally solved by knowing the demand, unit production costs, and inventory supply limits in order to keep the production costs below a certain rate.&amp;lt;ref&amp;gt;Bellman, Richard. “Dynamic Programming Approach to Optimal Inventory Processes with Delay in Delivery.” Quarterly of Applied Mathematics, vol 18, 1961, p. 399-403, https://www.ams.org/journals/qam/1961-18-04/S0033-569X-1961-0118516-2/S0033-569X-1961-0118516-2.pdf. 19 Nov 2020&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
The eight-step procedure is an approach used in dynamic programming to transform a problem into simpler problems to yield an optimal solution. The recursive nature of the procedure allows for the optimization problems to be solved using computational models that reduce time and effort and can be used in many applications across many industries.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2582</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2582"/>
		<updated>2020-12-14T02:24:39Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Applications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The eight-step procedures are a simplified, multi-stage approach for determining optimal solutions in mathematical optimization. Dynamic programming, developed by Richard Bellman in the 1950s&amp;lt;ref&amp;gt;Bellman, Richard. “The Theory of Dynamic Programming.” Bulletin of American Mathematical Society, vol. 60, 1954, pp 503–515, https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf. 18 Nov 2020.&amp;lt;/ref&amp;gt;, is used to solve for the maximization or minimization of the objective function by transforming the problem into smaller steps and enumerating all the different possible solutions and finding the optimal solution.&lt;br /&gt;
&lt;br /&gt;
In the eight-step procedure, a problem can be broken down into subproblems to solve. Using the solutions from the subproblems in a recursive manner, the solution can be determined after all the solutions of the subproblems are calculated to find the best solution, which demonstrates the principle of optimality: Any optimal policy has the property that, whatever the current state and current decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the current decision.&amp;lt;ref&amp;gt;Bradley, Stephen P. Applied Mathematical Programming. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&amp;lt;/ref&amp;gt; Such a standard framework is used so that dynamic programming store the values of the subproblems to avoid recomputing, and thus, reduce time to solve the problem.&amp;lt;ref&amp;gt;Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. https://www.byte-by-byte.com/dpbook/. 18 Nov 2020&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps:&amp;lt;ref&amp;gt;You, Fengqi. “Dynamic Programming” 5 Oct 2020. Online. Microsoft PowerPoint presentation.&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision. This is often denoted by &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, with &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; being set equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This stage varies greatly based on the problem presented. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create a starting point to finding a solution to the problem. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is often denoted with a function. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This step can be done manually or by using programming. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is the final step. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5 &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;= &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
The following are some applications where dynamic programming is used. The criteria for applying dynamic programming to an optimization problem are if the objective function involves maximization, minimization, or counting and if the problem is determined by finding all the solutions to find the optimal solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shortest/ Longest Path Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the shortest path problem, the path with the least amount of cost or value must be determined in a problem with multiple nodes in between the beginning node &#039;&#039;s&#039;&#039; to the final node &#039;&#039;e&#039;&#039;. Travelling from one node to another incurs a value or cost &#039;&#039;c(p, q&#039;&#039;), and the objective is to reach t with the smallest cost possible. The eight-step procedure can be used to determine the possible solutions which the optimal solution can be determined from.&amp;lt;ref&amp;gt;Neumann K. “Dynamic Programming Basic Concepts and Applications.” Optimization in Planning and Operations of Electric Power Systems. Physica, Heidelberg, 1993, p 31-56.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, but in a maximization function, the longest path can be determined in a problem by determining the solution with the highest cost involved to travel from node &#039;&#039;s&#039;&#039; to node &#039;&#039;e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Knapsack Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The knapsack problem is an example of determining the distribution of effort or when there are limited resources to be shared with competing entities, and the goal is to maximize the benefit of the distribution. Dynamic programming is used when the increase in benefit in regard to increasing the quantity of resources is not linearly proportional. The volume may also be considered in addition to the weight of the resources. A volume constraint is added to the problem and represented in the state by stage &#039;&#039;n&#039;&#039; by an ordered pair (&#039;&#039;s, v&#039;&#039;) for remaining weight and volume. By considering &#039;&#039;d&#039;&#039; constraints, the number of states can grow exponentially with a &#039;&#039;d&#039;&#039; -dimensional state space even if the value of &#039;&#039;d&#039;&#039; is small. The problem becomes infeasible to solve and is referred to as the curse of dimensionality. However, the curse has faded due to advances in computational power.&amp;lt;ref&amp;gt;Taylor, C. Robert. Applications Of Dynamic Programming To Agricultural Decision Problems. United States, CRC Press, 2019.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inventory Planning Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In inventory management, dynamic programming is used to determine how to meet anticipated and unexpected demand in order to minimize overall costs. Tracking an inventory system involves establishing a set of policies that monitor and control the levels of inventory, determining when a stock must be replenished, and the quantity of parts to order. For example, a production schedule can be computationally solved by knowing the demand, unit production costs, and inventory supply limits in order to keep the production costs below a certain rate.&amp;lt;ref&amp;gt;Bellman, Richard. “Dynamic Programming Approach to Optimal Inventory Processes with Delay in Delivery.” Quarterly of Applied Mathematics, vol 18, 1961, p. 399-403, https://www.ams.org/journals/qam/1961-18-04/S0033-569X-1961-0118516-2/S0033-569X-1961-0118516-2.pdf. 19 Nov 2020&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
The eight-step procedure is an approach used in dynamic programming to transform a problem into simpler problems to yield an optimal solution. The recursive nature of the procedure allows for the optimization problems to be solved using computational models that reduce time and effort and can be used in many applications across many industries.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
1. Bellman, Richard. “The Theory of Dynamic Programming.” &#039;&#039;Bulletin of American Mathematical Society, vol.&#039;&#039; 60, 1954, pp 503–515, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf&amp;lt;/nowiki&amp;gt;. 18 Nov 2020.&lt;br /&gt;
&lt;br /&gt;
2. Bradley, Stephen P. &#039;&#039;Applied Mathematical Programming&#039;&#039;. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
3. Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. &amp;lt;nowiki&amp;gt;https://www.byte-by-byte.com/dpbook/&amp;lt;/nowiki&amp;gt;. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
5. Neumann K. “Dynamic Programming Basic Concepts and Applications.” &#039;&#039;Optimization in Planning and Operations of Electric Power Systems&#039;&#039;. Physica, Heidelberg, 1993, p 31-56.&lt;br /&gt;
&lt;br /&gt;
6. Taylor, C. Robert. Applications Of Dynamic Programming To Agricultural Decision Problems. United States, CRC Press, 2019.&lt;br /&gt;
&lt;br /&gt;
7. Bellman, Richard. “Dynamic Programming Approach to Optimal Inventory Processes with Delay in Delivery.” &#039;&#039;Quarterly of Applied Mathematics&#039;&#039;, vol 18, 1961, p. 399-403, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/qam/1961-18-04/S0033-569X-1961-0118516-2/S0033-569X-1961-0118516-2.pdf&amp;lt;/nowiki&amp;gt;. 19 Nov 2020&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2581</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2581"/>
		<updated>2020-12-14T02:24:04Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Applications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The eight-step procedures are a simplified, multi-stage approach for determining optimal solutions in mathematical optimization. Dynamic programming, developed by Richard Bellman in the 1950s&amp;lt;ref&amp;gt;Bellman, Richard. “The Theory of Dynamic Programming.” Bulletin of American Mathematical Society, vol. 60, 1954, pp 503–515, https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf. 18 Nov 2020.&amp;lt;/ref&amp;gt;, is used to solve for the maximization or minimization of the objective function by transforming the problem into smaller steps and enumerating all the different possible solutions and finding the optimal solution.&lt;br /&gt;
&lt;br /&gt;
In the eight-step procedure, a problem can be broken down into subproblems to solve. Using the solutions from the subproblems in a recursive manner, the solution can be determined after all the solutions of the subproblems are calculated to find the best solution, which demonstrates the principle of optimality: Any optimal policy has the property that, whatever the current state and current decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the current decision.&amp;lt;ref&amp;gt;Bradley, Stephen P. Applied Mathematical Programming. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&amp;lt;/ref&amp;gt; Such a standard framework is used so that dynamic programming store the values of the subproblems to avoid recomputing, and thus, reduce time to solve the problem.&amp;lt;ref&amp;gt;Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. https://www.byte-by-byte.com/dpbook/. 18 Nov 2020&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps:&amp;lt;ref&amp;gt;You, Fengqi. “Dynamic Programming” 5 Oct 2020. Online. Microsoft PowerPoint presentation.&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision. This is often denoted by &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, with &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; being set equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This stage varies greatly based on the problem presented. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create a starting point to finding a solution to the problem. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is often denoted with a function. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This step can be done manually or by using programming. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is the final step. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5 &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;= &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
The following are some applications where dynamic programming is used. The criteria for applying dynamic programming to an optimization problem are if the objective function involves maximization, minimization, or counting and if the problem is determined by finding all the solutions to find the optimal solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shortest/ Longest Path Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the shortest path problem, the path with the least amount of cost or value must be determined in a problem with multiple nodes in between the beginning node &#039;&#039;s&#039;&#039; to the final node &#039;&#039;e&#039;&#039;. Travelling from one node to another incurs a value or cost &#039;&#039;c(p, q&#039;&#039;), and the objective is to reach t with the smallest cost possible. The eight-step procedure can be used to determine the possible solutions which the optimal solution can be determined from.&amp;lt;ref&amp;gt;Neumann K. “Dynamic Programming Basic Concepts and Applications.” Optimization in Planning and Operations of Electric Power Systems. Physica, Heidelberg, 1993, p 31-56.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, but in a maximization function, the longest path can be determined in a problem by determining the solution with the highest cost involved to travel from node &#039;&#039;s&#039;&#039; to node &#039;&#039;e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Knapsack Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The knapsack problem is an example of determining the distribution of effort or when there are limited resources to be shared with competing entities, and the goal is to maximize the benefit of the distribution. Dynamic programming is used when the increase in benefit in regard to increasing the quantity of resources is not linearly proportional. The volume may also be considered in addition to the weight of the resources. A volume constraint is added to the problem and represented in the state by stage &#039;&#039;n&#039;&#039; by an ordered pair (&#039;&#039;s, v&#039;&#039;) for remaining weight and volume. By considering &#039;&#039;d&#039;&#039; constraints, the number of states can grow exponentially with a &#039;&#039;d&#039;&#039; -dimensional state space even if the value of &#039;&#039;d&#039;&#039; is small. The problem becomes infeasible to solve and is referred to as the curse of dimensionality. However, the curse has faded due to advances in computational power.&amp;lt;ref&amp;gt;Taylor, C. Robert. Applications Of Dynamic Programming To Agricultural Decision Problems. United States, CRC Press, 2019.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inventory Planning Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In inventory management, dynamic programming is used to determine how to meet anticipated and unexpected demand in order to minimize overall costs. Tracking an inventory system involves establishing a set of policies that monitor and control the levels of inventory, determining when a stock must be replenished, and the quantity of parts to order. For example, a production schedule can be computationally solved by knowing the demand, unit production costs, and inventory supply limits in order to keep the production costs below a certain rate.&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
The eight-step procedure is an approach used in dynamic programming to transform a problem into simpler problems to yield an optimal solution. The recursive nature of the procedure allows for the optimization problems to be solved using computational models that reduce time and effort and can be used in many applications across many industries.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
1. Bellman, Richard. “The Theory of Dynamic Programming.” &#039;&#039;Bulletin of American Mathematical Society, vol.&#039;&#039; 60, 1954, pp 503–515, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf&amp;lt;/nowiki&amp;gt;. 18 Nov 2020.&lt;br /&gt;
&lt;br /&gt;
2. Bradley, Stephen P. &#039;&#039;Applied Mathematical Programming&#039;&#039;. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
3. Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. &amp;lt;nowiki&amp;gt;https://www.byte-by-byte.com/dpbook/&amp;lt;/nowiki&amp;gt;. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
5. Neumann K. “Dynamic Programming Basic Concepts and Applications.” &#039;&#039;Optimization in Planning and Operations of Electric Power Systems&#039;&#039;. Physica, Heidelberg, 1993, p 31-56.&lt;br /&gt;
&lt;br /&gt;
6. Taylor, C. Robert. Applications Of Dynamic Programming To Agricultural Decision Problems. United States, CRC Press, 2019.&lt;br /&gt;
&lt;br /&gt;
7. Bellman, Richard. “Dynamic Programming Approach to Optimal Inventory Processes with Delay in Delivery.” &#039;&#039;Quarterly of Applied Mathematics&#039;&#039;, vol 18, 1961, p. 399-403, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/qam/1961-18-04/S0033-569X-1961-0118516-2/S0033-569X-1961-0118516-2.pdf&amp;lt;/nowiki&amp;gt;. 19 Nov 2020&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2580</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2580"/>
		<updated>2020-12-14T02:23:34Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Applications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The eight-step procedures are a simplified, multi-stage approach for determining optimal solutions in mathematical optimization. Dynamic programming, developed by Richard Bellman in the 1950s&amp;lt;ref&amp;gt;Bellman, Richard. “The Theory of Dynamic Programming.” Bulletin of American Mathematical Society, vol. 60, 1954, pp 503–515, https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf. 18 Nov 2020.&amp;lt;/ref&amp;gt;, is used to solve for the maximization or minimization of the objective function by transforming the problem into smaller steps and enumerating all the different possible solutions and finding the optimal solution.&lt;br /&gt;
&lt;br /&gt;
In the eight-step procedure, a problem can be broken down into subproblems to solve. Using the solutions from the subproblems in a recursive manner, the solution can be determined after all the solutions of the subproblems are calculated to find the best solution, which demonstrates the principle of optimality: Any optimal policy has the property that, whatever the current state and current decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the current decision.&amp;lt;ref&amp;gt;Bradley, Stephen P. Applied Mathematical Programming. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&amp;lt;/ref&amp;gt; Such a standard framework is used so that dynamic programming store the values of the subproblems to avoid recomputing, and thus, reduce time to solve the problem.&amp;lt;ref&amp;gt;Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. https://www.byte-by-byte.com/dpbook/. 18 Nov 2020&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps:&amp;lt;ref&amp;gt;You, Fengqi. “Dynamic Programming” 5 Oct 2020. Online. Microsoft PowerPoint presentation.&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision. This is often denoted by &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, with &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; being set equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This stage varies greatly based on the problem presented. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create a starting point to finding a solution to the problem. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is often denoted with a function. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This step can be done manually or by using programming. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is the final step. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5 &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;= &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
The following are some applications where dynamic programming is used. The criteria for applying dynamic programming to an optimization problem are if the objective function involves maximization, minimization, or counting and if the problem is determined by finding all the solutions to find the optimal solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shortest/ Longest Path Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the shortest path problem, the path with the least amount of cost or value must be determined in a problem with multiple nodes in between the beginning node &#039;&#039;s&#039;&#039; to the final node &#039;&#039;e&#039;&#039;. Travelling from one node to another incurs a value or cost &#039;&#039;c(p, q&#039;&#039;), and the objective is to reach t with the smallest cost possible. The eight-step procedure can be used to determine the possible solutions which the optimal solution can be determined from.&amp;lt;ref&amp;gt;Neumann K. “Dynamic Programming Basic Concepts and Applications.” Optimization in Planning and Operations of Electric Power Systems. Physica, Heidelberg, 1993, p 31-56.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, but in a maximization function, the longest path can be determined in a problem by determining the solution with the highest cost involved to travel from node &#039;&#039;s&#039;&#039; to node &#039;&#039;e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Knapsack Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The knapsack problem is an example of determining the distribution of effort or when there are limited resources to be shared with competing entities, and the goal is to maximize the benefit of the distribution. Dynamic programming is used when the increase in benefit in regard to increasing the quantity of resources is not linearly proportional. The volume may also be considered in addition to the weight of the resources. A volume constraint is added to the problem and represented in the state by stage &#039;&#039;n&#039;&#039; by an ordered pair (&#039;&#039;s, v&#039;&#039;) for remaining weight and volume. By considering &#039;&#039;d&#039;&#039; constraints, the number of states can grow exponentially with a &#039;&#039;d&#039;&#039; -dimensional state space even if the value of &#039;&#039;d&#039;&#039; is small. The problem becomes infeasible to solve and is referred to as the curse of dimensionality. However, the curse has faded due to advances in computational power.&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inventory Planning Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In inventory management, dynamic programming is used to determine how to meet anticipated and unexpected demand in order to minimize overall costs. Tracking an inventory system involves establishing a set of policies that monitor and control the levels of inventory, determining when a stock must be replenished, and the quantity of parts to order. For example, a production schedule can be computationally solved by knowing the demand, unit production costs, and inventory supply limits in order to keep the production costs below a certain rate.&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
The eight-step procedure is an approach used in dynamic programming to transform a problem into simpler problems to yield an optimal solution. The recursive nature of the procedure allows for the optimization problems to be solved using computational models that reduce time and effort and can be used in many applications across many industries.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
1. Bellman, Richard. “The Theory of Dynamic Programming.” &#039;&#039;Bulletin of American Mathematical Society, vol.&#039;&#039; 60, 1954, pp 503–515, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf&amp;lt;/nowiki&amp;gt;. 18 Nov 2020.&lt;br /&gt;
&lt;br /&gt;
2. Bradley, Stephen P. &#039;&#039;Applied Mathematical Programming&#039;&#039;. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
3. Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. &amp;lt;nowiki&amp;gt;https://www.byte-by-byte.com/dpbook/&amp;lt;/nowiki&amp;gt;. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
5. Neumann K. “Dynamic Programming Basic Concepts and Applications.” &#039;&#039;Optimization in Planning and Operations of Electric Power Systems&#039;&#039;. Physica, Heidelberg, 1993, p 31-56.&lt;br /&gt;
&lt;br /&gt;
6. Taylor, C. Robert. Applications Of Dynamic Programming To Agricultural Decision Problems. United States, CRC Press, 2019.&lt;br /&gt;
&lt;br /&gt;
7. Bellman, Richard. “Dynamic Programming Approach to Optimal Inventory Processes with Delay in Delivery.” &#039;&#039;Quarterly of Applied Mathematics&#039;&#039;, vol 18, 1961, p. 399-403, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/qam/1961-18-04/S0033-569X-1961-0118516-2/S0033-569X-1961-0118516-2.pdf&amp;lt;/nowiki&amp;gt;. 19 Nov 2020&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2579</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2579"/>
		<updated>2020-12-14T02:22:56Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The eight-step procedures are a simplified, multi-stage approach for determining optimal solutions in mathematical optimization. Dynamic programming, developed by Richard Bellman in the 1950s&amp;lt;ref&amp;gt;Bellman, Richard. “The Theory of Dynamic Programming.” Bulletin of American Mathematical Society, vol. 60, 1954, pp 503–515, https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf. 18 Nov 2020.&amp;lt;/ref&amp;gt;, is used to solve for the maximization or minimization of the objective function by transforming the problem into smaller steps and enumerating all the different possible solutions and finding the optimal solution.&lt;br /&gt;
&lt;br /&gt;
In the eight-step procedure, a problem can be broken down into subproblems to solve. Using the solutions from the subproblems in a recursive manner, the solution can be determined after all the solutions of the subproblems are calculated to find the best solution, which demonstrates the principle of optimality: Any optimal policy has the property that, whatever the current state and current decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the current decision.&amp;lt;ref&amp;gt;Bradley, Stephen P. Applied Mathematical Programming. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&amp;lt;/ref&amp;gt; Such a standard framework is used so that dynamic programming store the values of the subproblems to avoid recomputing, and thus, reduce time to solve the problem.&amp;lt;ref&amp;gt;Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. https://www.byte-by-byte.com/dpbook/. 18 Nov 2020&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps:&amp;lt;ref&amp;gt;You, Fengqi. “Dynamic Programming” 5 Oct 2020. Online. Microsoft PowerPoint presentation.&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision. This is often denoted by &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, with &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; being set equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This stage varies greatly based on the problem presented. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create a starting point to finding a solution to the problem. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is often denoted with a function. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This step can be done manually or by using programming. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is the final step. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5 &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;= &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
The following are some applications where dynamic programming is used. The criteria for applying dynamic programming to an optimization problem are if the objective function involves maximization, minimization, or counting and if the problem is determined by finding all the solutions to find the optimal solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shortest/ Longest Path Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the shortest path problem, the path with the least amount of cost or value must be determined in a problem with multiple nodes in between the beginning node &#039;&#039;s&#039;&#039; to the final node &#039;&#039;e&#039;&#039;. Travelling from one node to another incurs a value or cost &#039;&#039;c(p, q&#039;&#039;), and the objective is to reach t with the smallest cost possible. The eight-step procedure can be used to determine the possible solutions which the optimal solution can be determined from.&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, but in a maximization function, the longest path can be determined in a problem by determining the solution with the highest cost involved to travel from node &#039;&#039;s&#039;&#039; to node &#039;&#039;e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Knapsack Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The knapsack problem is an example of determining the distribution of effort or when there are limited resources to be shared with competing entities, and the goal is to maximize the benefit of the distribution. Dynamic programming is used when the increase in benefit in regard to increasing the quantity of resources is not linearly proportional. The volume may also be considered in addition to the weight of the resources. A volume constraint is added to the problem and represented in the state by stage &#039;&#039;n&#039;&#039; by an ordered pair (&#039;&#039;s, v&#039;&#039;) for remaining weight and volume. By considering &#039;&#039;d&#039;&#039; constraints, the number of states can grow exponentially with a &#039;&#039;d&#039;&#039; -dimensional state space even if the value of &#039;&#039;d&#039;&#039; is small. The problem becomes infeasible to solve and is referred to as the curse of dimensionality. However, the curse has faded due to advances in computational power.&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inventory Planning Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In inventory management, dynamic programming is used to determine how to meet anticipated and unexpected demand in order to minimize overall costs. Tracking an inventory system involves establishing a set of policies that monitor and control the levels of inventory, determining when a stock must be replenished, and the quantity of parts to order. For example, a production schedule can be computationally solved by knowing the demand, unit production costs, and inventory supply limits in order to keep the production costs below a certain rate.&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
The eight-step procedure is an approach used in dynamic programming to transform a problem into simpler problems to yield an optimal solution. The recursive nature of the procedure allows for the optimization problems to be solved using computational models that reduce time and effort and can be used in many applications across many industries.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
1. Bellman, Richard. “The Theory of Dynamic Programming.” &#039;&#039;Bulletin of American Mathematical Society, vol.&#039;&#039; 60, 1954, pp 503–515, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf&amp;lt;/nowiki&amp;gt;. 18 Nov 2020.&lt;br /&gt;
&lt;br /&gt;
2. Bradley, Stephen P. &#039;&#039;Applied Mathematical Programming&#039;&#039;. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
3. Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. &amp;lt;nowiki&amp;gt;https://www.byte-by-byte.com/dpbook/&amp;lt;/nowiki&amp;gt;. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
5. Neumann K. “Dynamic Programming Basic Concepts and Applications.” &#039;&#039;Optimization in Planning and Operations of Electric Power Systems&#039;&#039;. Physica, Heidelberg, 1993, p 31-56.&lt;br /&gt;
&lt;br /&gt;
6. Taylor, C. Robert. Applications Of Dynamic Programming To Agricultural Decision Problems. United States, CRC Press, 2019.&lt;br /&gt;
&lt;br /&gt;
7. Bellman, Richard. “Dynamic Programming Approach to Optimal Inventory Processes with Delay in Delivery.” &#039;&#039;Quarterly of Applied Mathematics&#039;&#039;, vol 18, 1961, p. 399-403, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/qam/1961-18-04/S0033-569X-1961-0118516-2/S0033-569X-1961-0118516-2.pdf&amp;lt;/nowiki&amp;gt;. 19 Nov 2020&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2578</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2578"/>
		<updated>2020-12-14T02:22:31Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The eight-step procedures are a simplified, multi-stage approach for determining optimal solutions in mathematical optimization. Dynamic programming, developed by Richard Bellman in the 1950s&amp;lt;ref&amp;gt;Bellman, Richard. “The Theory of Dynamic Programming.” Bulletin of American Mathematical Society, vol. 60, 1954, pp 503–515, https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf. 18 Nov 2020.&amp;lt;/ref&amp;gt;, is used to solve for the maximization or minimization of the objective function by transforming the problem into smaller steps and enumerating all the different possible solutions and finding the optimal solution.&lt;br /&gt;
&lt;br /&gt;
In the eight-step procedure, a problem can be broken down into subproblems to solve. Using the solutions from the subproblems in a recursive manner, the solution can be determined after all the solutions of the subproblems are calculated to find the best solution, which demonstrates the principle of optimality: Any optimal policy has the property that, whatever the current state and current decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the current decision.&amp;lt;ref&amp;gt;Bradley, Stephen P. Applied Mathematical Programming. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&amp;lt;/ref&amp;gt; Such a standard framework is used so that dynamic programming store the values of the subproblems to avoid recomputing, and thus, reduce time to solve the problem.&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps:&amp;lt;ref&amp;gt;You, Fengqi. “Dynamic Programming” 5 Oct 2020. Online. Microsoft PowerPoint presentation.&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision. This is often denoted by &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, with &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; being set equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This stage varies greatly based on the problem presented. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create a starting point to finding a solution to the problem. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is often denoted with a function. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This step can be done manually or by using programming. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is the final step. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5 &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;= &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
The following are some applications where dynamic programming is used. The criteria for applying dynamic programming to an optimization problem are if the objective function involves maximization, minimization, or counting and if the problem is determined by finding all the solutions to find the optimal solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shortest/ Longest Path Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the shortest path problem, the path with the least amount of cost or value must be determined in a problem with multiple nodes in between the beginning node &#039;&#039;s&#039;&#039; to the final node &#039;&#039;e&#039;&#039;. Travelling from one node to another incurs a value or cost &#039;&#039;c(p, q&#039;&#039;), and the objective is to reach t with the smallest cost possible. The eight-step procedure can be used to determine the possible solutions which the optimal solution can be determined from.&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, but in a maximization function, the longest path can be determined in a problem by determining the solution with the highest cost involved to travel from node &#039;&#039;s&#039;&#039; to node &#039;&#039;e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Knapsack Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The knapsack problem is an example of determining the distribution of effort or when there are limited resources to be shared with competing entities, and the goal is to maximize the benefit of the distribution. Dynamic programming is used when the increase in benefit in regard to increasing the quantity of resources is not linearly proportional. The volume may also be considered in addition to the weight of the resources. A volume constraint is added to the problem and represented in the state by stage &#039;&#039;n&#039;&#039; by an ordered pair (&#039;&#039;s, v&#039;&#039;) for remaining weight and volume. By considering &#039;&#039;d&#039;&#039; constraints, the number of states can grow exponentially with a &#039;&#039;d&#039;&#039; -dimensional state space even if the value of &#039;&#039;d&#039;&#039; is small. The problem becomes infeasible to solve and is referred to as the curse of dimensionality. However, the curse has faded due to advances in computational power.&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inventory Planning Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In inventory management, dynamic programming is used to determine how to meet anticipated and unexpected demand in order to minimize overall costs. Tracking an inventory system involves establishing a set of policies that monitor and control the levels of inventory, determining when a stock must be replenished, and the quantity of parts to order. For example, a production schedule can be computationally solved by knowing the demand, unit production costs, and inventory supply limits in order to keep the production costs below a certain rate.&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
The eight-step procedure is an approach used in dynamic programming to transform a problem into simpler problems to yield an optimal solution. The recursive nature of the procedure allows for the optimization problems to be solved using computational models that reduce time and effort and can be used in many applications across many industries.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
1. Bellman, Richard. “The Theory of Dynamic Programming.” &#039;&#039;Bulletin of American Mathematical Society, vol.&#039;&#039; 60, 1954, pp 503–515, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf&amp;lt;/nowiki&amp;gt;. 18 Nov 2020.&lt;br /&gt;
&lt;br /&gt;
2. Bradley, Stephen P. &#039;&#039;Applied Mathematical Programming&#039;&#039;. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
3. Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. &amp;lt;nowiki&amp;gt;https://www.byte-by-byte.com/dpbook/&amp;lt;/nowiki&amp;gt;. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
5. Neumann K. “Dynamic Programming Basic Concepts and Applications.” &#039;&#039;Optimization in Planning and Operations of Electric Power Systems&#039;&#039;. Physica, Heidelberg, 1993, p 31-56.&lt;br /&gt;
&lt;br /&gt;
6. Taylor, C. Robert. Applications Of Dynamic Programming To Agricultural Decision Problems. United States, CRC Press, 2019.&lt;br /&gt;
&lt;br /&gt;
7. Bellman, Richard. “Dynamic Programming Approach to Optimal Inventory Processes with Delay in Delivery.” &#039;&#039;Quarterly of Applied Mathematics&#039;&#039;, vol 18, 1961, p. 399-403, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/qam/1961-18-04/S0033-569X-1961-0118516-2/S0033-569X-1961-0118516-2.pdf&amp;lt;/nowiki&amp;gt;. 19 Nov 2020&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2577</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2577"/>
		<updated>2020-12-14T02:22:03Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The eight-step procedures are a simplified, multi-stage approach for determining optimal solutions in mathematical optimization. Dynamic programming, developed by Richard Bellman in the 1950s&amp;lt;ref&amp;gt;Bellman, Richard. “The Theory of Dynamic Programming.” Bulletin of American Mathematical Society, vol. 60, 1954, pp 503–515, https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf. 18 Nov 2020.&amp;lt;/ref&amp;gt;, is used to solve for the maximization or minimization of the objective function by transforming the problem into smaller steps and enumerating all the different possible solutions and finding the optimal solution.&lt;br /&gt;
&lt;br /&gt;
In the eight-step procedure, a problem can be broken down into subproblems to solve. Using the solutions from the subproblems in a recursive manner, the solution can be determined after all the solutions of the subproblems are calculated to find the best solution, which demonstrates the principle of optimality: Any optimal policy has the property that, whatever the current state and current decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the current decision.&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Such a standard framework is used so that dynamic programming store the values of the subproblems to avoid recomputing, and thus, reduce time to solve the problem.&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps:&amp;lt;ref&amp;gt;You, Fengqi. “Dynamic Programming” 5 Oct 2020. Online. Microsoft PowerPoint presentation.&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision. This is often denoted by &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, with &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; being set equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This stage varies greatly based on the problem presented. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create a starting point to finding a solution to the problem. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is often denoted with a function. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This step can be done manually or by using programming. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is the final step. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5 &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;= &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
The following are some applications where dynamic programming is used. The criteria for applying dynamic programming to an optimization problem are if the objective function involves maximization, minimization, or counting and if the problem is determined by finding all the solutions to find the optimal solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shortest/ Longest Path Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the shortest path problem, the path with the least amount of cost or value must be determined in a problem with multiple nodes in between the beginning node &#039;&#039;s&#039;&#039; to the final node &#039;&#039;e&#039;&#039;. Travelling from one node to another incurs a value or cost &#039;&#039;c(p, q&#039;&#039;), and the objective is to reach t with the smallest cost possible. The eight-step procedure can be used to determine the possible solutions which the optimal solution can be determined from.&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, but in a maximization function, the longest path can be determined in a problem by determining the solution with the highest cost involved to travel from node &#039;&#039;s&#039;&#039; to node &#039;&#039;e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Knapsack Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The knapsack problem is an example of determining the distribution of effort or when there are limited resources to be shared with competing entities, and the goal is to maximize the benefit of the distribution. Dynamic programming is used when the increase in benefit in regard to increasing the quantity of resources is not linearly proportional. The volume may also be considered in addition to the weight of the resources. A volume constraint is added to the problem and represented in the state by stage &#039;&#039;n&#039;&#039; by an ordered pair (&#039;&#039;s, v&#039;&#039;) for remaining weight and volume. By considering &#039;&#039;d&#039;&#039; constraints, the number of states can grow exponentially with a &#039;&#039;d&#039;&#039; -dimensional state space even if the value of &#039;&#039;d&#039;&#039; is small. The problem becomes infeasible to solve and is referred to as the curse of dimensionality. However, the curse has faded due to advances in computational power.&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inventory Planning Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In inventory management, dynamic programming is used to determine how to meet anticipated and unexpected demand in order to minimize overall costs. Tracking an inventory system involves establishing a set of policies that monitor and control the levels of inventory, determining when a stock must be replenished, and the quantity of parts to order. For example, a production schedule can be computationally solved by knowing the demand, unit production costs, and inventory supply limits in order to keep the production costs below a certain rate.&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
The eight-step procedure is an approach used in dynamic programming to transform a problem into simpler problems to yield an optimal solution. The recursive nature of the procedure allows for the optimization problems to be solved using computational models that reduce time and effort and can be used in many applications across many industries.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
1. Bellman, Richard. “The Theory of Dynamic Programming.” &#039;&#039;Bulletin of American Mathematical Society, vol.&#039;&#039; 60, 1954, pp 503–515, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf&amp;lt;/nowiki&amp;gt;. 18 Nov 2020.&lt;br /&gt;
&lt;br /&gt;
2. Bradley, Stephen P. &#039;&#039;Applied Mathematical Programming&#039;&#039;. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
3. Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. &amp;lt;nowiki&amp;gt;https://www.byte-by-byte.com/dpbook/&amp;lt;/nowiki&amp;gt;. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
5. Neumann K. “Dynamic Programming Basic Concepts and Applications.” &#039;&#039;Optimization in Planning and Operations of Electric Power Systems&#039;&#039;. Physica, Heidelberg, 1993, p 31-56.&lt;br /&gt;
&lt;br /&gt;
6. Taylor, C. Robert. Applications Of Dynamic Programming To Agricultural Decision Problems. United States, CRC Press, 2019.&lt;br /&gt;
&lt;br /&gt;
7. Bellman, Richard. “Dynamic Programming Approach to Optimal Inventory Processes with Delay in Delivery.” &#039;&#039;Quarterly of Applied Mathematics&#039;&#039;, vol 18, 1961, p. 399-403, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/qam/1961-18-04/S0033-569X-1961-0118516-2/S0033-569X-1961-0118516-2.pdf&amp;lt;/nowiki&amp;gt;. 19 Nov 2020&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2576</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2576"/>
		<updated>2020-12-14T02:20:59Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The eight-step procedures are a simplified, multi-stage approach for determining optimal solutions in mathematical optimization. Dynamic programming, developed by Richard Bellman in the 1950s&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;, is used to solve for the maximization or minimization of the objective function by transforming the problem into smaller steps and enumerating all the different possible solutions and finding the optimal solution.&lt;br /&gt;
&lt;br /&gt;
In the eight-step procedure, a problem can be broken down into subproblems to solve. Using the solutions from the subproblems in a recursive manner, the solution can be determined after all the solutions of the subproblems are calculated to find the best solution, which demonstrates the principle of optimality: Any optimal policy has the property that, whatever the current state and current decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the current decision.&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Such a standard framework is used so that dynamic programming store the values of the subproblems to avoid recomputing, and thus, reduce time to solve the problem.&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps:&amp;lt;ref&amp;gt;You, Fengqi. “Dynamic Programming” 5 Oct 2020. Online. Microsoft PowerPoint presentation.&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision. This is often denoted by &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, with &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; being set equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This stage varies greatly based on the problem presented. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create a starting point to finding a solution to the problem. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is often denoted with a function. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This step can be done manually or by using programming. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is the final step. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5 &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;= &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
The following are some applications where dynamic programming is used. The criteria for applying dynamic programming to an optimization problem are if the objective function involves maximization, minimization, or counting and if the problem is determined by finding all the solutions to find the optimal solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shortest/ Longest Path Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the shortest path problem, the path with the least amount of cost or value must be determined in a problem with multiple nodes in between the beginning node &#039;&#039;s&#039;&#039; to the final node &#039;&#039;e&#039;&#039;. Travelling from one node to another incurs a value or cost &#039;&#039;c(p, q&#039;&#039;), and the objective is to reach t with the smallest cost possible. The eight-step procedure can be used to determine the possible solutions which the optimal solution can be determined from.&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, but in a maximization function, the longest path can be determined in a problem by determining the solution with the highest cost involved to travel from node &#039;&#039;s&#039;&#039; to node &#039;&#039;e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Knapsack Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The knapsack problem is an example of determining the distribution of effort or when there are limited resources to be shared with competing entities, and the goal is to maximize the benefit of the distribution. Dynamic programming is used when the increase in benefit in regard to increasing the quantity of resources is not linearly proportional. The volume may also be considered in addition to the weight of the resources. A volume constraint is added to the problem and represented in the state by stage &#039;&#039;n&#039;&#039; by an ordered pair (&#039;&#039;s, v&#039;&#039;) for remaining weight and volume. By considering &#039;&#039;d&#039;&#039; constraints, the number of states can grow exponentially with a &#039;&#039;d&#039;&#039; -dimensional state space even if the value of &#039;&#039;d&#039;&#039; is small. The problem becomes infeasible to solve and is referred to as the curse of dimensionality. However, the curse has faded due to advances in computational power.&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inventory Planning Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In inventory management, dynamic programming is used to determine how to meet anticipated and unexpected demand in order to minimize overall costs. Tracking an inventory system involves establishing a set of policies that monitor and control the levels of inventory, determining when a stock must be replenished, and the quantity of parts to order. For example, a production schedule can be computationally solved by knowing the demand, unit production costs, and inventory supply limits in order to keep the production costs below a certain rate.&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
The eight-step procedure is an approach used in dynamic programming to transform a problem into simpler problems to yield an optimal solution. The recursive nature of the procedure allows for the optimization problems to be solved using computational models that reduce time and effort and can be used in many applications across many industries.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
1. Bellman, Richard. “The Theory of Dynamic Programming.” &#039;&#039;Bulletin of American Mathematical Society, vol.&#039;&#039; 60, 1954, pp 503–515, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf&amp;lt;/nowiki&amp;gt;. 18 Nov 2020.&lt;br /&gt;
&lt;br /&gt;
2. Bradley, Stephen P. &#039;&#039;Applied Mathematical Programming&#039;&#039;. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
3. Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. &amp;lt;nowiki&amp;gt;https://www.byte-by-byte.com/dpbook/&amp;lt;/nowiki&amp;gt;. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
5. Neumann K. “Dynamic Programming Basic Concepts and Applications.” &#039;&#039;Optimization in Planning and Operations of Electric Power Systems&#039;&#039;. Physica, Heidelberg, 1993, p 31-56.&lt;br /&gt;
&lt;br /&gt;
6. Taylor, C. Robert. Applications Of Dynamic Programming To Agricultural Decision Problems. United States, CRC Press, 2019.&lt;br /&gt;
&lt;br /&gt;
7. Bellman, Richard. “Dynamic Programming Approach to Optimal Inventory Processes with Delay in Delivery.” &#039;&#039;Quarterly of Applied Mathematics&#039;&#039;, vol 18, 1961, p. 399-403, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/qam/1961-18-04/S0033-569X-1961-0118516-2/S0033-569X-1961-0118516-2.pdf&amp;lt;/nowiki&amp;gt;. 19 Nov 2020&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2575</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2575"/>
		<updated>2020-12-14T02:20:38Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Theory, Methodology, and/or Algorithmic Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The eight-step procedures are a simplified, multi-stage approach for determining optimal solutions in mathematical optimization. Dynamic programming, developed by Richard Bellman in the 1950s&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;, is used to solve for the maximization or minimization of the objective function by transforming the problem into smaller steps and enumerating all the different possible solutions and finding the optimal solution.&lt;br /&gt;
&lt;br /&gt;
In the eight-step procedure, a problem can be broken down into subproblems to solve. Using the solutions from the subproblems in a recursive manner, the solution can be determined after all the solutions of the subproblems are calculated to find the best solution, which demonstrates the principle of optimality: Any optimal policy has the property that, whatever the current state and current decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the current decision.&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Such a standard framework is used so that dynamic programming store the values of the subproblems to avoid recomputing, and thus, reduce time to solve the problem.&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps:&amp;lt;ref&amp;gt;You, Fengqi. “Dynamic Programming” 5 Oct 2020. Online. Microsoft PowerPoint presentation.&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision. This is often denoted by &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, with &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; being set equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This stage varies greatly based on the problem presented. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create a starting point to finding a solution to the problem. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is often denoted with a function. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This step can be done manually or by using programming. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is the final step. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5 &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;= &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
The following are some applications where dynamic programming is used. The criteria for applying dynamic programming to an optimization problem are if the objective function involves maximization, minimization, or counting and if the problem is determined by finding all the solutions to find the optimal solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shortest/ Longest Path Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the shortest path problem, the path with the least amount of cost or value must be determined in a problem with multiple nodes in between the beginning node &#039;&#039;s&#039;&#039; to the final node &#039;&#039;e&#039;&#039;. Travelling from one node to another incurs a value or cost &#039;&#039;c(p, q&#039;&#039;), and the objective is to reach t with the smallest cost possible. The eight-step procedure can be used to determine the possible solutions which the optimal solution can be determined from.&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, but in a maximization function, the longest path can be determined in a problem by determining the solution with the highest cost involved to travel from node &#039;&#039;s&#039;&#039; to node &#039;&#039;e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Knapsack Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The knapsack problem is an example of determining the distribution of effort or when there are limited resources to be shared with competing entities, and the goal is to maximize the benefit of the distribution. Dynamic programming is used when the increase in benefit in regard to increasing the quantity of resources is not linearly proportional. The volume may also be considered in addition to the weight of the resources. A volume constraint is added to the problem and represented in the state by stage &#039;&#039;n&#039;&#039; by an ordered pair (&#039;&#039;s, v&#039;&#039;) for remaining weight and volume. By considering &#039;&#039;d&#039;&#039; constraints, the number of states can grow exponentially with a &#039;&#039;d&#039;&#039; -dimensional state space even if the value of &#039;&#039;d&#039;&#039; is small. The problem becomes infeasible to solve and is referred to as the curse of dimensionality. However, the curse has faded due to advances in computational power.&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inventory Planning Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In inventory management, dynamic programming is used to determine how to meet anticipated and unexpected demand in order to minimize overall costs. Tracking an inventory system involves establishing a set of policies that monitor and control the levels of inventory, determining when a stock must be replenished, and the quantity of parts to order. For example, a production schedule can be computationally solved by knowing the demand, unit production costs, and inventory supply limits in order to keep the production costs below a certain rate.&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
The eight-step procedure is an approach used in dynamic programming to transform a problem into simpler problems to yield an optimal solution. The recursive nature of the procedure allows for the optimization problems to be solved using computational models that reduce time and effort and can be used in many applications across many industries.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
1. Bellman, Richard. “The Theory of Dynamic Programming.” &#039;&#039;Bulletin of American Mathematical Society, vol.&#039;&#039; 60, 1954, pp 503–515, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf&amp;lt;/nowiki&amp;gt;. 18 Nov 2020.&lt;br /&gt;
&lt;br /&gt;
2. Bradley, Stephen P. &#039;&#039;Applied Mathematical Programming&#039;&#039;. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
3. Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. &amp;lt;nowiki&amp;gt;https://www.byte-by-byte.com/dpbook/&amp;lt;/nowiki&amp;gt;. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
4. You, Fengqi. “Dynamic Programming” 5 Oct 2020. Online. Microsoft PowerPoint presentation.&lt;br /&gt;
&lt;br /&gt;
5. Neumann K. “Dynamic Programming Basic Concepts and Applications.” &#039;&#039;Optimization in Planning and Operations of Electric Power Systems&#039;&#039;. Physica, Heidelberg, 1993, p 31-56.&lt;br /&gt;
&lt;br /&gt;
6. Taylor, C. Robert. Applications Of Dynamic Programming To Agricultural Decision Problems. United States, CRC Press, 2019.&lt;br /&gt;
&lt;br /&gt;
7. Bellman, Richard. “Dynamic Programming Approach to Optimal Inventory Processes with Delay in Delivery.” &#039;&#039;Quarterly of Applied Mathematics&#039;&#039;, vol 18, 1961, p. 399-403, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/qam/1961-18-04/S0033-569X-1961-0118516-2/S0033-569X-1961-0118516-2.pdf&amp;lt;/nowiki&amp;gt;. 19 Nov 2020&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2574</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2574"/>
		<updated>2020-12-14T02:20:03Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Theory, Methodology, and/or Algorithmic Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The eight-step procedures are a simplified, multi-stage approach for determining optimal solutions in mathematical optimization. Dynamic programming, developed by Richard Bellman in the 1950s&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;, is used to solve for the maximization or minimization of the objective function by transforming the problem into smaller steps and enumerating all the different possible solutions and finding the optimal solution.&lt;br /&gt;
&lt;br /&gt;
In the eight-step procedure, a problem can be broken down into subproblems to solve. Using the solutions from the subproblems in a recursive manner, the solution can be determined after all the solutions of the subproblems are calculated to find the best solution, which demonstrates the principle of optimality: Any optimal policy has the property that, whatever the current state and current decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the current decision.&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Such a standard framework is used so that dynamic programming store the values of the subproblems to avoid recomputing, and thus, reduce time to solve the problem.&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps:&amp;lt;ref&amp;gt;4&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision. This is often denoted by &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, with &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; being set equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This stage varies greatly based on the problem presented. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create a starting point to finding a solution to the problem. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is often denoted with a function. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This step can be done manually or by using programming. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is the final step. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5 &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;= &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
The following are some applications where dynamic programming is used. The criteria for applying dynamic programming to an optimization problem are if the objective function involves maximization, minimization, or counting and if the problem is determined by finding all the solutions to find the optimal solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shortest/ Longest Path Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the shortest path problem, the path with the least amount of cost or value must be determined in a problem with multiple nodes in between the beginning node &#039;&#039;s&#039;&#039; to the final node &#039;&#039;e&#039;&#039;. Travelling from one node to another incurs a value or cost &#039;&#039;c(p, q&#039;&#039;), and the objective is to reach t with the smallest cost possible. The eight-step procedure can be used to determine the possible solutions which the optimal solution can be determined from.&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, but in a maximization function, the longest path can be determined in a problem by determining the solution with the highest cost involved to travel from node &#039;&#039;s&#039;&#039; to node &#039;&#039;e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Knapsack Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The knapsack problem is an example of determining the distribution of effort or when there are limited resources to be shared with competing entities, and the goal is to maximize the benefit of the distribution. Dynamic programming is used when the increase in benefit in regard to increasing the quantity of resources is not linearly proportional. The volume may also be considered in addition to the weight of the resources. A volume constraint is added to the problem and represented in the state by stage &#039;&#039;n&#039;&#039; by an ordered pair (&#039;&#039;s, v&#039;&#039;) for remaining weight and volume. By considering &#039;&#039;d&#039;&#039; constraints, the number of states can grow exponentially with a &#039;&#039;d&#039;&#039; -dimensional state space even if the value of &#039;&#039;d&#039;&#039; is small. The problem becomes infeasible to solve and is referred to as the curse of dimensionality. However, the curse has faded due to advances in computational power.&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inventory Planning Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In inventory management, dynamic programming is used to determine how to meet anticipated and unexpected demand in order to minimize overall costs. Tracking an inventory system involves establishing a set of policies that monitor and control the levels of inventory, determining when a stock must be replenished, and the quantity of parts to order. For example, a production schedule can be computationally solved by knowing the demand, unit production costs, and inventory supply limits in order to keep the production costs below a certain rate.&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
The eight-step procedure is an approach used in dynamic programming to transform a problem into simpler problems to yield an optimal solution. The recursive nature of the procedure allows for the optimization problems to be solved using computational models that reduce time and effort and can be used in many applications across many industries.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
1. Bellman, Richard. “The Theory of Dynamic Programming.” &#039;&#039;Bulletin of American Mathematical Society, vol.&#039;&#039; 60, 1954, pp 503–515, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf&amp;lt;/nowiki&amp;gt;. 18 Nov 2020.&lt;br /&gt;
&lt;br /&gt;
2. Bradley, Stephen P. &#039;&#039;Applied Mathematical Programming&#039;&#039;. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
3. Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. &amp;lt;nowiki&amp;gt;https://www.byte-by-byte.com/dpbook/&amp;lt;/nowiki&amp;gt;. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
4. You, Fengqi. “Dynamic Programming” 5 Oct 2020. Online. Microsoft PowerPoint presentation.&lt;br /&gt;
&lt;br /&gt;
5. Neumann K. “Dynamic Programming Basic Concepts and Applications.” &#039;&#039;Optimization in Planning and Operations of Electric Power Systems&#039;&#039;. Physica, Heidelberg, 1993, p 31-56.&lt;br /&gt;
&lt;br /&gt;
6. Taylor, C. Robert. Applications Of Dynamic Programming To Agricultural Decision Problems. United States, CRC Press, 2019.&lt;br /&gt;
&lt;br /&gt;
7. Bellman, Richard. “Dynamic Programming Approach to Optimal Inventory Processes with Delay in Delivery.” &#039;&#039;Quarterly of Applied Mathematics&#039;&#039;, vol 18, 1961, p. 399-403, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/qam/1961-18-04/S0033-569X-1961-0118516-2/S0033-569X-1961-0118516-2.pdf&amp;lt;/nowiki&amp;gt;. 19 Nov 2020&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2545</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2545"/>
		<updated>2020-12-14T00:17:01Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Methodology */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The eight-step procedures are a simplified, multi-stage approach for determining optimal solutions in mathematical optimization. Dynamic programming, developed by Richard Bellman in the 1950s&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;, is used to solve for the maximization or minimization of the objective function by transforming the problem into smaller steps and enumerating all the different possible solutions and finding the optimal solution.&lt;br /&gt;
&lt;br /&gt;
In the eight-step procedure, a problem can be broken down into subproblems to solve. Using the solutions from the subproblems in a recursive manner, the solution can be determined after all the solutions of the subproblems are calculated to find the best solution, which demonstrates the principle of optimality: Any optimal policy has the property that, whatever the current state and current decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the current decision.&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Such a standard framework is used so that dynamic programming store the values of the subproblems to avoid recomputing, and thus, reduce time to solve the problem.&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps:&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision. This is often denoted by &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, with &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; being set equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This stage varies greatly based on the problem presented. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create a starting point to finding a solution to the problem. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is often denoted with a function. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This step can be done manually or by using programming. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is the final step. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5 &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;= &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
The following are some applications where dynamic programming is used. The criteria for applying dynamic programming to an optimization problem are if the objective function involves maximization, minimization, or counting and if the problem is determined by finding all the solutions to find the optimal solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shortest/ Longest Path Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the shortest path problem, the path with the least amount of cost or value must be determined in a problem with multiple nodes in between the beginning node &#039;&#039;s&#039;&#039; to the final node &#039;&#039;e&#039;&#039;. Travelling from one node to another incurs a value or cost &#039;&#039;c(p, q&#039;&#039;), and the objective is to reach t with the smallest cost possible. The eight-step procedure can be used to determine the possible solutions which the optimal solution can be determined from.&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, but in a maximization function, the longest path can be determined in a problem by determining the solution with the highest cost involved to travel from node &#039;&#039;s&#039;&#039; to node &#039;&#039;e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Knapsack Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The knapsack problem is an example of determining the distribution of effort or when there are limited resources to be shared with competing entities, and the goal is to maximize the benefit of the distribution. Dynamic programming is used when the increase in benefit in regard to increasing the quantity of resources is not linearly proportional. The volume may also be considered in addition to the weight of the resources. A volume constraint is added to the problem and represented in the state by stage &#039;&#039;n&#039;&#039; by an ordered pair (&#039;&#039;s, v&#039;&#039;) for remaining weight and volume. By considering &#039;&#039;d&#039;&#039; constraints, the number of states can grow exponentially with a &#039;&#039;d&#039;&#039; -dimensional state space even if the value of &#039;&#039;d&#039;&#039; is small. The problem becomes infeasible to solve and is referred to as the curse of dimensionality. However, the curse has faded due to advances in computational power.&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inventory Planning Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In inventory management, dynamic programming is used to determine how to meet anticipated and unexpected demand in order to minimize overall costs. Tracking an inventory system involves establishing a set of policies that monitor and control the levels of inventory, determining when a stock must be replenished, and the quantity of parts to order. For example, a production schedule can be computationally solved by knowing the demand, unit production costs, and inventory supply limits in order to keep the production costs below a certain rate.&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
The eight-step procedure is an approach used in dynamic programming to transform a problem into simpler problems to yield an optimal solution. The recursive nature of the procedure allows for the optimization problems to be solved using computational models that reduce time and effort and can be used in many applications across many industries.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
1. Bellman, Richard. “The Theory of Dynamic Programming.” &#039;&#039;Bulletin of American Mathematical Society, vol.&#039;&#039; 60, 1954, pp 503–515, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf&amp;lt;/nowiki&amp;gt;. 18 Nov 2020.&lt;br /&gt;
&lt;br /&gt;
2. Bradley, Stephen P. &#039;&#039;Applied Mathematical Programming&#039;&#039;. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
3. Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. &amp;lt;nowiki&amp;gt;https://www.byte-by-byte.com/dpbook/&amp;lt;/nowiki&amp;gt;. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
4. You, Fengqi. “Dynamic Programming” 5 Oct 2020. Online. Microsoft PowerPoint presentation.&lt;br /&gt;
&lt;br /&gt;
5. Neumann K. “Dynamic Programming Basic Concepts and Applications.” &#039;&#039;Optimization in Planning and Operations of Electric Power Systems&#039;&#039;. Physica, Heidelberg, 1993, p 31-56.&lt;br /&gt;
&lt;br /&gt;
6. Taylor, C. Robert. Applications Of Dynamic Programming To Agricultural Decision Problems. United States, CRC Press, 2019.&lt;br /&gt;
&lt;br /&gt;
7. Bellman, Richard. “Dynamic Programming Approach to Optimal Inventory Processes with Delay in Delivery.” &#039;&#039;Quarterly of Applied Mathematics&#039;&#039;, vol 18, 1961, p. 399-403, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/qam/1961-18-04/S0033-569X-1961-0118516-2/S0033-569X-1961-0118516-2.pdf&amp;lt;/nowiki&amp;gt;. 19 Nov 2020&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2301</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=2301"/>
		<updated>2020-12-11T21:31:07Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The eight-step procedures are a simplified, multi-stage approach for determining optimal solutions in mathematical optimization. Dynamic programming, developed by Richard Bellman in the 1950s&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;, is used to solve for the maximization or minimization of the objective function by transforming the problem into smaller steps and enumerating all the different possible solutions and finding the optimal solution.&lt;br /&gt;
&lt;br /&gt;
In the eight-step procedure, a problem can be broken down into subproblems to solve. Using the solutions from the subproblems in a recursive manner, the solution can be determined after all the solutions of the subproblems are calculated to find the best solution, which demonstrates the principle of optimality: Any optimal policy has the property that, whatever the current state and current decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the current decision.&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Such a standard framework is used so that dynamic programming store the values of the subproblems to avoid recomputing, and thus, reduce time to solve the problem.&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps:&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision. This is often denoted by &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. Often, &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; is set equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This stage varies greatly based on the problem presented. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create a starting point to finding a solution to the problem. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is often noted by a function. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This step can be done manually or by using programming. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This is the final step. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5 &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;= &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
The following are some applications where dynamic programming is used. The criteria for applying dynamic programming to an optimization problem are if the objective function involves maximization, minimization, or counting and if the problem is determined by finding all the solutions to find the optimal solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shortest/ Longest Path Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the shortest path problem, the path with the least amount of cost or value must be determined in a problem with multiple nodes in between the beginning node &#039;&#039;s&#039;&#039; to the final node &#039;&#039;e&#039;&#039;. Travelling from one node to another incurs a value or cost &#039;&#039;c(p, q&#039;&#039;), and the objective is to reach t with the smallest cost possible. The eight-step procedure can be used to determine the possible solutions which the optimal solution can be determined from.&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, but in a maximization function, the longest path can be determined in a problem by determining the solution with the highest cost involved to travel from node &#039;&#039;s&#039;&#039; to node &#039;&#039;e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Knapsack Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The knapsack problem is an example of determining the distribution of effort or when there are limited resources to be shared with competing entities, and the goal is to maximize the benefit of the distribution. Dynamic programming is used when the increase in benefit in regard to increasing the quantity of resources is not linearly proportional. The volume may also be considered in addition to the weight of the resources. A volume constraint is added to the problem and represented in the state by stage &#039;&#039;n&#039;&#039; by an ordered pair (&#039;&#039;s, v&#039;&#039;) for remaining weight and volume. By considering &#039;&#039;d&#039;&#039; constraints, the number of states can grow exponentially with a &#039;&#039;d&#039;&#039; -dimensional state space even if the value of &#039;&#039;d&#039;&#039; is small. The problem becomes infeasible to solve and is referred to as the curse of dimensionality. However, the curse has faded due to advances in computational power.&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inventory Planning Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In inventory management, dynamic programming is used to determine how to meet anticipated and unexpected demand in order to minimize overall costs. Tracking an inventory system involves establishing a set of policies that monitor and control the levels of inventory, determining when a stock must be replenished, and the quantity of parts to order. For example, a production schedule can be computationally solved by knowing the demand, unit production costs, and inventory supply limits in order to keep the production costs below a certain rate.&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
The eight-step procedure is an approach used in dynamic programming to transform a problem into simpler problems to yield an optimal solution. The recursive nature of the procedure allows for the optimization problems to be solved using computational models that reduce time and effort and can be used in many applications across many industries.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
1. Bellman, Richard. “The Theory of Dynamic Programming.” &#039;&#039;Bulletin of American Mathematical Society, vol.&#039;&#039; 60, 1954, pp 503–515, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf&amp;lt;/nowiki&amp;gt;. 18 Nov 2020.&lt;br /&gt;
&lt;br /&gt;
2. Bradley, Stephen P. &#039;&#039;Applied Mathematical Programming&#039;&#039;. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
3. Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. &amp;lt;nowiki&amp;gt;https://www.byte-by-byte.com/dpbook/&amp;lt;/nowiki&amp;gt;. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
4. You, Fengqi. “Dynamic Programming” 5 Oct 2020. Online. Microsoft PowerPoint presentation.&lt;br /&gt;
&lt;br /&gt;
5. Neumann K. “Dynamic Programming Basic Concepts and Applications.” &#039;&#039;Optimization in Planning and Operations of Electric Power Systems&#039;&#039;. Physica, Heidelberg, 1993, p 31-56.&lt;br /&gt;
&lt;br /&gt;
6. Taylor, C. Robert. Applications Of Dynamic Programming To Agricultural Decision Problems. United States, CRC Press, 2019.&lt;br /&gt;
&lt;br /&gt;
7. Bellman, Richard. “Dynamic Programming Approach to Optimal Inventory Processes with Delay in Delivery.” &#039;&#039;Quarterly of Applied Mathematics&#039;&#039;, vol 18, 1961, p. 399-403, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/qam/1961-18-04/S0033-569X-1961-0118516-2/S0033-569X-1961-0118516-2.pdf&amp;lt;/nowiki&amp;gt;. 19 Nov 2020&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1876</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1876"/>
		<updated>2020-11-25T22:20:45Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The eight-step procedures are a simplified, multi-stage approach for determining optimal solutions in mathematical optimization. Dynamic programming, developed by Richard Bellman in the 1950s&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;, is used to solve for the maximization or minimization of the objective function by transforming the problem into smaller steps and enumerating all the different possible solutions and finding the optimal solution.&lt;br /&gt;
&lt;br /&gt;
In the eight-step procedure, a problem can be broken down into subproblems to solve. Using the solutions from the subproblems in a recursive manner, the solution can be determined after all the solutions of the subproblems are calculated to find the best solution, which demonstrates the principle of optimality: Any optimal policy has the property that, whatever the current state and current decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the current decision.&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Such a standard framework is used so that dynamic programming store the values of the subproblems to avoid recomputing, and thus, reduce time to solve the problem.&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps:&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. We set &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This can be defined as: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{n}(s)\, or\, j\, =\, 0,1,...,min\left \{ a[n], \left \lfloor \frac{s}{w[n]} \right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
In this sentence, we describe the optimization function for each state, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, and each stage, or &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. This can also be called &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create a starting point to finding a solution to the problem. First, we set &amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt; for all values of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. Here, we can note that &amp;lt;math&amp;gt; s=0,...,C &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
During this step, we make an allowable decision involving &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; items for the remaining capacity &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; for items &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. We can write this statement as: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{n}(s)= \overset{max}{j=0,1,...,min\left \{ a[n],\left \lfloor \frac{s}{w[n]} \right \rfloor \right \}} \left \{ b[n,j]+ f^{*}_{n+1}(s-j*w[n]) \right \} &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
In this step, a table is made containing all &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt;, and optimal values for all &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; variables. This step can be done manually or by using programming. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Once the value for &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt; is computed, we would look at the optimal decision that corresponds to the table entry for that value. We start with the optimal value for our first &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, calculate our remaining space &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, and use that value to arrive at an optimal value for all &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5 &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;= &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
The following are some applications where dynamic programming is used. The criteria for applying dynamic programming to an optimization problem are if the objective function involves maximization, minimization, or counting and if the problem is determined by finding all the solutions to find the optimal solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shortest/ Longest Path Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the shortest path problem, the path with the least amount of cost or value must be determined in a problem with multiple nodes in between the beginning node &#039;&#039;s&#039;&#039; to the final node &#039;&#039;e&#039;&#039;. Travelling from one node to another incurs a value or cost &#039;&#039;c(p, q&#039;&#039;), and the objective is to reach t with the smallest cost possible. The eight-step procedure can be used to determine the possible solutions which the optimal solution can be determined from.&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, but in a maximization function, the longest path can be determined in a problem by determining the solution with the highest cost involved to travel from node &#039;&#039;s&#039;&#039; to node &#039;&#039;e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Knapsack Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The knapsack problem is an example of determining the distribution of effort or when there are limited resources to be shared with competing entities, and the goal is to maximize the benefit of the distribution. Dynamic programming is used when the increase in benefit in regard to increasing the quantity of resources is not linearly proportional. The volume may also be considered in addition to the weight of the resources. A volume constraint is added to the problem and represented in the state by stage &#039;&#039;n&#039;&#039; by an ordered pair (&#039;&#039;s, v&#039;&#039;) for remaining weight and volume. By considering &#039;&#039;d&#039;&#039; constraints, the number of states can grow exponentially with a &#039;&#039;d&#039;&#039; -dimensional state space even if the value of &#039;&#039;d&#039;&#039; is small. The problem becomes infeasible to solve and is referred to as the curse of dimensionality. However, the curse has faded due to advances in computational power.&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inventory Planning Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In inventory management, dynamic programming is used to determine how to meet anticipated and unexpected demand in order to minimize overall costs. Tracking an inventory system involves establishing a set of policies that monitor and control the levels of inventory, determining when a stock must be replenished, and the quantity of parts to order. For example, a production schedule can be computationally solved by knowing the demand, unit production costs, and inventory supply limits in order to keep the production costs below a certain rate.&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
The eight-step procedure is an approach used in dynamic programming to transform a problem into simpler problems to yield an optimal solution. The recursive nature of the procedure allows for the optimization problems to be solved using computational models that reduce time and effort and can be used in many applications across many industries.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
1. Bellman, Richard. “The Theory of Dynamic Programming.” &#039;&#039;Bulletin of American Mathematical Society, vol.&#039;&#039; 60, 1954, pp 503–515, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf&amp;lt;/nowiki&amp;gt;. 18 Nov 2020.&lt;br /&gt;
&lt;br /&gt;
2. Bradley, Stephen P. &#039;&#039;Applied Mathematical Programming&#039;&#039;. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
3. Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. &amp;lt;nowiki&amp;gt;https://www.byte-by-byte.com/dpbook/&amp;lt;/nowiki&amp;gt;. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
4. You, Fengqi. “Dynamic Programming” 5 Oct 2020. Online. Microsoft PowerPoint presentation.&lt;br /&gt;
&lt;br /&gt;
5. Neumann K. “Dynamic Programming Basic Concepts and Applications.” &#039;&#039;Optimization in Planning and Operations of Electric Power Systems&#039;&#039;. Physica, Heidelberg, 1993, p 31-56.&lt;br /&gt;
&lt;br /&gt;
6. Taylor, C. Robert. Applications Of Dynamic Programming To Agricultural Decision Problems. United States, CRC Press, 2019.&lt;br /&gt;
&lt;br /&gt;
7. Bellman, Richard. “Dynamic Programming Approach to Optimal Inventory Processes with Delay in Delivery.” &#039;&#039;Quarterly of Applied Mathematics&#039;&#039;, vol 18, 1961, p. 399-403, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/qam/1961-18-04/S0033-569X-1961-0118516-2/S0033-569X-1961-0118516-2.pdf&amp;lt;/nowiki&amp;gt;. 19 Nov 2020&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1875</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1875"/>
		<updated>2020-11-25T22:16:11Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The eight-step procedures are a simplified, multi-stage approach for determining optimal solutions in mathematical optimization. Dynamic programming, developed by Richard Bellman in the 1950s&amp;lt;ref&amp;gt;&amp;lt;small&amp;gt;1&amp;lt;/small&amp;gt;&amp;lt;/ref&amp;gt;, is used to solve for the maximization or minimization of the objective function by transforming the problem into smaller steps and enumerating all the different possible solutions and finding the optimal solution.&lt;br /&gt;
&lt;br /&gt;
In the eight-step procedure, a problem can be broken down into subproblems to solve. Using the solutions from the subproblems in a recursive manner, the solution can be determined after all the solutions of the subproblems are calculated to find the best solution, which demonstrates the principle of optimality: Any optimal policy has the property that, whatever the current state and current decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the current decision&amp;lt;ref&amp;gt;2&amp;lt;/ref&amp;gt;.Such a standard framework is used so that dynamic programming store the values of the subproblems to avoid recomputing, and thus, reduce time to solve the problem.&amp;lt;ref&amp;gt;3&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps:&amp;lt;ref&amp;gt;4&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. We set &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This can be defined as: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{n}(s)\, or\, j\, =\, 0,1,...,min\left \{ a[n], \left \lfloor \frac{s}{w[n]} \right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
In this sentence, we describe the optimization function for each state, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, and each stage, or &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. This can also be called &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create a starting point to finding a solution to the problem. First, we set &amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt; for all values of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. Here, we can note that &amp;lt;math&amp;gt; s=0,...,C &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
During this step, we make an allowable decision involving &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; items for the remaining capacity &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; for items &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. We can write this statement as: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{n}(s)= \overset{max}{j=0,1,...,min\left \{ a[n],\left \lfloor \frac{s}{w[n]} \right \rfloor \right \}} \left \{ b[n,j]+ f^{*}_{n+1}(s-j*w[n]) \right \} &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
In this step, a table is made containing all &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt;, and optimal values for all &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; variables. This step can be done manually or by using programming. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Once the value for &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt; is computed, we would look at the optimal decision that corresponds to the table entry for that value. We start with the optimal value for our first &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, calculate our remaining space &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, and use that value to arrive at an optimal value for all &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5 &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;= &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
The following are some applications where dynamic programming is used. The criteria for applying dynamic programming to an optimization problem are if the objective function involves maximization, minimization, or counting and if the problem is determined by finding all the solutions to find the optimal solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shortest/ Longest Path Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the shortest path problem, the path with the least amount of cost or value must be determined in a problem with multiple nodes in between the beginning node &#039;&#039;s&#039;&#039; to the final node &#039;&#039;e&#039;&#039;. Travelling from one node to another incurs a value or cost &#039;&#039;c(p, q&#039;&#039;), and the objective is to reach t with the smallest cost possible. The eight-step procedure can be used to determine the possible solutions which the optimal solution can be determined from.&amp;lt;ref&amp;gt;5&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, but in a maximization function, the longest path can be determined in a problem by determining the solution with the highest cost involved to travel from node &#039;&#039;s&#039;&#039; to node &#039;&#039;e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Knapsack Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The knapsack problem is an example of determining the distribution of effort or when there are limited resources to be shared with competing entities, and the goal is to maximize the benefit of the distribution. Dynamic programming is used when the increase in benefit in regard to increasing the quantity of resources is not linearly proportional. The volume may also be considered in addition to the weight of the resources. A volume constraint is added to the problem and represented in the state by stage &#039;&#039;n&#039;&#039; by an ordered pair (&#039;&#039;s, v&#039;&#039;) for remaining weight and volume. By considering &#039;&#039;d&#039;&#039; constraints, the number of states can grow exponentially with a &#039;&#039;d&#039;&#039; -dimensional state space even if the value of &#039;&#039;d&#039;&#039; is small. The problem becomes infeasible to solve and is referred to as the curse of dimensionality. However, the curse has faded due to advances in computational power.&amp;lt;ref&amp;gt;6&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inventory Planning Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In inventory management, dynamic programming is used to determine how to meet anticipated and unexpected demand in order to minimize overall costs. Tracking an inventory system involves establishing a set of policies that monitor and control the levels of inventory, determining when a stock must be replenished, and the quantity of parts to order. For example, a production schedule can be computationally solved by knowing the demand, unit production costs, and inventory supply limits in order to keep the production costs below a certain rate.&amp;lt;ref&amp;gt;7&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
The eight-step procedure is an approach used in dynamic programming to transform a problem into simpler problems to yield an optimal solution. The recursive nature of the procedure allows for the optimization problems to be solved using computational models that reduce time and effort and can be used in many applications across many industries.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
1. Bellman, Richard. “The Theory of Dynamic Programming.” &#039;&#039;Bulletin of American Mathematical Society, vol.&#039;&#039; 60, 1954, pp 503–515, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/bull/1954-60-06/S0002-9904-1954-09848-8/S0002-9904-1954-09848-8.pdf&amp;lt;/nowiki&amp;gt;. 18 Nov 2020.&lt;br /&gt;
&lt;br /&gt;
2. Bradley, Stephen P. &#039;&#039;Applied Mathematical Programming&#039;&#039;. Addison-Wesley. 1 February 1977. 320-342. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
3. Gavin-Hughes, Sam. “Dynamic Programming for Interviews.” Byte by Byte. &amp;lt;nowiki&amp;gt;https://www.byte-by-byte.com/dpbook/&amp;lt;/nowiki&amp;gt;. 18 Nov 2020&lt;br /&gt;
&lt;br /&gt;
4. You, Fengqi. “Dynamic Programming” 5 Oct 2020. Online. Microsoft PowerPoint presentation.&lt;br /&gt;
&lt;br /&gt;
5. Neumann K. “Dynamic Programming Basic Concepts and Applications.” &#039;&#039;Optimization in Planning and Operations of Electric Power Systems&#039;&#039;. Physica, Heidelberg, 1993, p 31-56.&lt;br /&gt;
&lt;br /&gt;
6. Taylor, C. Robert. Applications Of Dynamic Programming To Agricultural Decision Problems. United States, CRC Press, 2019.&lt;br /&gt;
&lt;br /&gt;
7. Bellman, Richard. “Dynamic Programming Approach to Optimal Inventory Processes with Delay in Delivery.” &#039;&#039;Quarterly of Applied Mathematics&#039;&#039;, vol 18, 1961, p. 399-403, &amp;lt;nowiki&amp;gt;https://www.ams.org/journals/qam/1961-18-04/S0033-569X-1961-0118516-2/S0033-569X-1961-0118516-2.pdf&amp;lt;/nowiki&amp;gt;. 19 Nov 2020&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1630</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1630"/>
		<updated>2020-11-22T20:33:55Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The eight-step procedure is an approach in dynamic programming used to determine optimal solutions in mathematical optimization. Dynamic programming is used for problems requiring maximization or minimization of the objective function and can be solved by enumerating all the different possible solutions and finding the best one.&lt;br /&gt;
&lt;br /&gt;
In the eight-step procedure, a problem can be broken down into subproblems to solve. Using the solutions from the subproblems in a recursive manner, the solution can be determined after all the solutions of the subproblems are calculated to find the optimal solution. Such a standard framework is used so that dynamic programming store the values of the subproblems to avoid recomputing, and thus, reduce time to solve the problem. &lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. We set &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This can be defined as: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{n}(s)\, or\, j\, =\, 0,1,...,min\left \{ a[n], \left \lfloor \frac{s}{w[n]} \right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
In this sentence, we describe the optimization function for each state, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, and each stage, or &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. This can also be called &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create a starting point to finding a solution to the problem. First, we set &amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt; for all values of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. Here, we can note that &amp;lt;math&amp;gt; s=0,...,C &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
During this step, we make an allowable decision involving &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; items for the remaining capacity &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; for items &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. We can write this statement as: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{n}(s)= \overset{max}{j=0,1,...,min\left \{ a[n],\left \lfloor \frac{s}{w[n]} \right \rfloor \right \}} \left \{ b[n,j]+ f^{*}_{n+1}(s-j*w[n]) \right \} &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
In this step, a table is made containing all &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt;, and optimal values for all &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; variables. This step can be done manually or by using programming. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Once the value for &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt; is computed, we would look at the optimal decision that corresponds to the table entry for that value. We start with the optimal value for our first &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, calculate our remaining space &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, and use that value to arrive at an optimal value for all &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5 &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;= &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
The following are some applications where dynamic programming is used. The criteria for applying dynamic programming to an optimization problem are if the objective function involves maximization, minimization, or counting and if the problem is determined by finding all the solutions to find the optimal solution.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shortest/ Longest Path Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the shortest path problem, the path with the least amount of cost or value must be determined in a problem with multiple nodes in between the beginning node &#039;&#039;s&#039;&#039; to the final node &#039;&#039;e&#039;&#039;. Travelling from one node to another incurs a value or cost &#039;&#039;c(p, q&#039;&#039;), and the objective is to reach t with the smallest cost possible. The eight-step procedure can be used to determine the possible solutions which the optimal solution can be determined from.&lt;br /&gt;
&lt;br /&gt;
Likewise, but in a maximization function, the longest path can be determined in a problem by determining the solution with the highest cost involved to travel from node &#039;&#039;s&#039;&#039; to node &#039;&#039;e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Knapsack problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The knapsack problem is an example of determining the distribution of effort or when there are limited resources to be shared with competing entities and the goal is to maximize the benefit of the distribution. Oftentimes dynamic programming is used when the increase in benefit in regard to increasing the quantity of resources is not linearly proportional.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inventory planning problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1569</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1569"/>
		<updated>2020-11-22T06:23:11Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. We set &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This can be defined as: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{n}(s)\, or\, j\, =\, 0,1,...,min\left \{ a[n], \left \lfloor \frac{s}{w[n]} \right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
In this sentence, we describe the optimization function for each state, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, and each stage, or &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. This can also be called &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create a starting point to finding a solution to the problem. First, we set &amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt; for all values of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. Here, we can note that &amp;lt;math&amp;gt; s=0,...,C &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
During this step, we make an allowable decision involving &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; items for the remaining capacity &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; for items &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. We can write this statement as: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{n}(s)= \overset{max}{j=0,1,...,min\left \{ a[n],\left \lfloor \frac{s}{w[n]} \right \rfloor \right \}} \left \{ b[n,j]+ f^{*}_{n+1}(s-j*w[n]) \right \} &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
In this step, a table is made containing all &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt;, and optimal values for all &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; variables. This step can be done manually or by using programming. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Once the value for &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt; is computed, we would look at the optimal decision that corresponds to the table entry for that value. We start with the optimal value for our first &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, calculate our remaining space &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, and use that value to arrive at an optimal value for all &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5 &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;= &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|9&lt;br /&gt;
|0&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1568</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1568"/>
		<updated>2020-11-22T06:18:40Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. We set &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This can be defined as: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{n}(s)\, or\, j\, =\, 0,1,...,min\left \{ a[n], \left \lfloor \frac{s}{w[n]} \right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
In this sentence, we describe the optimization function for each state, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, and each stage, or &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. This can also be called &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create a starting point to finding a solution to the problem. First, we set &amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt; for all values of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. Here, we can note that &amp;lt;math&amp;gt; s=0,...,C &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
During this step, we make an allowable decision involving &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; items for the remaining capacity &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; for items &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. We can write this statement as: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{n}(s)= \overset{max}{j=0,1,...,min\left \{ a[n],\left \lfloor \frac{s}{w[n]} \right \rfloor \right \}} \left \{ b[n,j]+ f^{*}_{n+1}(s-j*w[n]) \right \} &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
In this step, a table is made containing all &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt;, and optimal values for all &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; variables. This step can be done manually or by using programming. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Once the value for &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt; is computed, we would look at the optimal decision that corresponds to the table entry for that value. We start with the optimal value for our first &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, calculate our remaining space &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, and use that value to arrive at an optimal value for all &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5 &lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{2}(5)= max\left \{ b[2,j]+ f^{*}_{3}(5-j*w[2]) \right \} &amp;lt;/math&amp;gt;= &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1563</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1563"/>
		<updated>2020-11-22T06:10:18Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. We set &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This can be defined as: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{n}(s)\, or\, j\, =\, 0,1,...,min\left \{ a[n], \left \lfloor \frac{s}{w[n]} \right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
In this sentence, we describe the optimization function for each state, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, and each stage, or &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. This can also be called &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create a starting point to finding a solution to the problem. First, we set &amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt; for all values of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. Here, we can note that &amp;lt;math&amp;gt; s=0,...,C &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
During this step, we make an allowable decision involving &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; items for the remaining capacity &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; for items &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. We can write this statement as: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{n}(s)= \overset{max}{j=0,1,...,min\left \{ a[n],\left \lfloor \frac{s}{w[n]} \right \rfloor \right \}} \left \{ b[n,j]+ f^{*}_{n+1}(s-j*w[n]) \right \} &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
In this step, a table is made containing all &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt;, and optimal values for all &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; variables. This step can be done manually or by using programming. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Once the value for &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt; is computed, we would look at the optimal decision that corresponds to the table entry for that value. We start with the optimal value for our first &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, calculate our remaining space &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, and use that value to arrive at an optimal value for all &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
Weight capacity of C=5 and N=2&lt;br /&gt;
&lt;br /&gt;
Item types are stages: n=1,2&lt;br /&gt;
&lt;br /&gt;
Remaining capacity s= 1,2,3,4,5 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{2}(5)\, =\, 0,1,...,min\left \{ a[2], \left \lfloor \frac{5}{w[2]}\right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt;= &#039;&#039;&#039;{0,1,2}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Boundary Conditions: &amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt;,     &#039;&#039;s=0,1,2,3,4,5&#039;&#039;      &#039;&#039;C=5&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{n}(s)= \overset{max}{j=0,1,...,min\left \{ a[n],\left \lfloor \frac{s}{w[n]} \right \rfloor \right \}} \left \{ b[n,j]+ f^{*}_{n+1}(s-j*w[n]) \right \} &amp;lt;/math&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Unused Capacity s &lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 1 opt &amp;lt;math&amp;gt;U^{*}_{1}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!Type 2 opt &amp;lt;math&amp;gt;U^{*}_{2}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
!&amp;lt;math&amp;gt;f^{*}_{3}(s)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1558</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1558"/>
		<updated>2020-11-22T04:34:43Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Numerical Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. We set &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This can be defined as: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{n}(s)\, or\, j\, =\, 0,1,...,min\left \{ a[n], \left \lfloor \frac{s}{w[n]} \right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
In this sentence, we describe the optimization function for each state, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, and each stage, or &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. This can also be called &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create a starting point to finding a solution to the problem. First, we set &amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt; for all values of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. Here, we can note that &amp;lt;math&amp;gt; s=0,...,C &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
During this step, we make an allowable decision involving &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; items for the remaining capacity &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; for items &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. We can write this statement as: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{n}(s)= \overset{max}{j=0,1,...,min\left \{ a[n],\left \lfloor \frac{s}{w[n]} \right \rfloor \right \}} \left \{ b[n,j]+ f^{*}_{n+1}(s-j*w[n]) \right \} &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
In this step, a table is made containing all &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt;, and optimal values for all &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; variables. This step can be done manually or by using programming. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Once the value for &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt; is computed, we would look at the optimal decision that corresponds to the table entry for that value. We start with the optimal value for our first &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, calculate our remaining space &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, and use that value to arrive at an optimal value for all &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
Weight capacity of C=5 and N=4&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1358</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1358"/>
		<updated>2020-11-21T01:34:22Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Methodology */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must use the following steps: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
The states of a problem are defined as the knowledge necessary to make a decision, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. We set &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This can be defined as: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
U_{n}(s)\, or\, j\, =\, 0,1,...,min\left \{ a[n], \left \lfloor \frac{s}{w[n]} \right \rfloor \right \}&lt;br /&gt;
&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
In this sentence, we describe the optimization function for each state, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, and each stage, or &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. This can also be called &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
This helps create a starting point to finding a solution to the problem. First, we set &amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt; for all values of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. Here, we can note that &amp;lt;math&amp;gt; s=0,...,C &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
During this step, we make an allowable decision involving &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; items for the remaining capacity &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; for items &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. We can write this statement as: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; f^{*}_{n}(s)= \overset{max}{j=0,1,...,min\left \{ a[n],\left \lfloor \frac{s}{w[n]} \right \rfloor \right \}} \left \{ b[n,j]+ f^{*}_{n+1}(s-j*w[n]) \right \} &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
In this step, a table is made containing all &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt;, and optimal values for all &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; variables. This step can be done manually or by using programming. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Once the value for &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt; is computed, we would look at the optimal decision that corresponds to the table entry for that value. We start with the optimal value for our first &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, calculate our remaining space &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, and use that value to arrive at an optimal value for all &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1357</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1357"/>
		<updated>2020-11-21T01:29:40Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Definition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Methodology===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must follow the following steps: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The states of a problem are defined as the knowledge necessary to make a decision, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. We set &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This can be defined as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	&amp;lt;math&amp;gt; &lt;br /&gt;
    U_{n}(s)\, or\, j\, =\, 0,1,...,min\left \{ a[n], \left \lfloor \frac{s}{w[n]} \right \rfloor \right \}&lt;br /&gt;
        &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this sentence, we describe the optimization function for each state, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, and each stage, or &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. This can also be called &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This helps create a starting point to finding a solution to the problem. First, we set &amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt; for all values of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. Here, we can note that &amp;lt;math&amp;gt; s=0,...,C &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	During this step, we make an allowable decision involving &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; items for the remaining capacity &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; for items &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. We can write this statement as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	&amp;lt;math&amp;gt; f^{*}_{n}(s)= \overset{max}{j=0,1,...,min\left \{ a[n],\left \lfloor \frac{s}{w[n]} \right \rfloor \right \}} \left \{ b[n,j]+ f^{*}_{n+1}(s-j*w[n]) \right \} &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this step, a table is made containing all &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt;, and optimal values for all &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; variables. This step can be done manually or by using programming. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	Once the value for &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt; is computed, we would look at the optimal decision that corresponds to the table entry for that value. We start with the optimal value for our first &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, calculate our remaining space &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, and use that value to arrive at an optimal value for all &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1356</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1356"/>
		<updated>2020-11-21T01:28:58Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Theory, Methodology, and/or Algorithmic Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Definition===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must follow the following steps: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The states of a problem are defined as the knowledge necessary to make a decision, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. We set &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This can be defined as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	&amp;lt;math&amp;gt; &lt;br /&gt;
    U_{n}(s)\, or\, j\, =\, 0,1,...,min\left \{ a[n], \left \lfloor \frac{s}{w[n]} \right \rfloor \right \}&lt;br /&gt;
        &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this sentence, we describe the optimization function for each state, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, and each stage, or &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. This can also be called &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This helps create a starting point to finding a solution to the problem. First, we set &amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt; for all values of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. Here, we can note that &amp;lt;math&amp;gt; s=0,...,C &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	During this step, we make an allowable decision involving &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; items for the remaining capacity &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; for items &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. We can write this statement as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	&amp;lt;math&amp;gt; f^{*}_{n}(s)= \overset{max}{j=0,1,...,min\left \{ a[n],\left \lfloor \frac{s}{w[n]} \right \rfloor \right \}} \left \{ b[n,j]+ f^{*}_{n+1}(s-j*w[n]) \right \} &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this step, a table is made containing all &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt;, and optimal values for all &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; variables. This step can be done manually or by using programming. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 8: Arrive at the optimal solution&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	Once the value for &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt; is computed, we would look at the optimal decision that corresponds to the table entry for that value. We start with the optimal value for our first &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, calculate our remaining space &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, and use that value to arrive at an optimal value for all &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1354</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1354"/>
		<updated>2020-11-20T23:40:38Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Theory, Methodology, and/or Algorithmic Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Definition===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must follow the following steps: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The states of a problem are defined as the knowledge necessary to make a decision, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. We set &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This can be defined as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	&amp;lt;math&amp;gt; &lt;br /&gt;
    U_{n}(s)\, or\, j\, =\, 0,1,...,min\left \{ a[n], \left \lfloor \frac{s}{w[n]} \right \rfloor \right \}&lt;br /&gt;
        &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this sentence, we describe the optimization function for each state, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, and each stage, or &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. This can also be called &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This helps create a starting point to finding a solution to the problem. First, we set &amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt; for all values of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. Here, we can note that &amp;lt;math&amp;gt; s=0,...,C &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	During this step, we make an allowable decision involving &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; items for the remaining capacity &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; for items &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. We can write this statement as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	&amp;lt;math&amp;gt; f^{*}_{n}(s)= \overset{max}{j=0,1,...,min\left \{ a[n],\left \lfloor \frac{s}{w[n]} \right \rfloor \right \}} \left \{ b[n,j]+ f^{*}_{n+1}(s-j*w[n]) \right \} &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this step, a table is made &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1353</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1353"/>
		<updated>2020-11-20T23:32:52Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Definition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Definition===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must follow the following steps: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The states of a problem are defined as the knowledge necessary to make a decision, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. We set &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; equal to the maximum value of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This can be defined as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	&amp;lt;math&amp;gt; &lt;br /&gt;
    U_{n}(s)\, or\, j\, =\, 0,1,...,min\left \{ a[n], \left \lfloor \frac{s}{w[n]} \right \rfloor \right \}&lt;br /&gt;
        &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this sentence, we describe the optimization function for each state, or &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, and each stage, or &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. This can also be called &amp;lt;math&amp;gt;f^{*}_{n}(s)&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This helps create a starting point to finding a solution to the problem. First, we set &amp;lt;math&amp;gt;f^{*}_{n+1}(s) = 0&amp;lt;/math&amp;gt; for all values of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;. Here, we can note that &amp;lt;math&amp;gt;s = 0,…,C&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	During this step, we make an allowable decision involving &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; items for the remaining capacity &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; for items &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. We can write this statement as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	f*n(s) = max j=0,1,…,min{a[n], floor(s/w[n]0} {b[n,j]+f*n+a(s-j*w[n])} &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this step, a table is made &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1352</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1352"/>
		<updated>2020-11-20T23:27:46Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Theory, Methodology, and/or Algorithmic Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Definition===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must follow the following steps: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable n. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The states of a problem are defined as the knowledge necessary to make a decision, or s. We set C equal to the maximum value of s. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This can be defined as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	&amp;lt;math&amp;gt; &lt;br /&gt;
U_{n}(s)\, or\, j\, =\, 0,1,...,min\left \{ a[n], \left \lfloor \frac{s}{w[n]]} \right \rfloor \right \}&lt;br /&gt;
        &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this sentence, we describe the optimization function for each state, or s, and each stage, or n. This can also be called F*n(s) &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This helps create a starting point to finding a solution to the problem. First, we set f*n+1(s) = 0 for all values of s. Here, we can note that s = 0,…,C &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	During this step, we make an allowable decision involving j items for the remaining capacity s for items n. We can write this statement as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	f*n(s) = max j=0,1,…,min{a[n], floor(s/w[n]0} {b[n,j]+f*n+a(s-j*w[n])} &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this step, a table is made &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1351</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1351"/>
		<updated>2020-11-20T23:25:35Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Theory, Methodology, and/or Algorithmic Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Definition===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must follow the following steps: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable n. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The states of a problem are defined as the knowledge necessary to make a decision, or s. We set C equal to the maximum value of s. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This can be defined as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	&amp;lt;math&amp;gt; \[U_{n}(s)\, or\, j\, =\, 0,1,...,min\left \{ a[n], \left \lfloor \frac{s}{w[n]]} \right \rfloor \right \}\] &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this sentence, we describe the optimization function for each state, or s, and each stage, or n. This can also be called F*n(s) &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This helps create a starting point to finding a solution to the problem. First, we set f*n+1(s) = 0 for all values of s. Here, we can note that s = 0,…,C &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	During this step, we make an allowable decision involving j items for the remaining capacity s for items n. We can write this statement as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	f*n(s) = max j=0,1,…,min{a[n], floor(s/w[n]0} {b[n,j]+f*n+a(s-j*w[n])} &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this step, a table is made &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1350</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1350"/>
		<updated>2020-11-20T22:43:59Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Theory, Methodology, and/or Algorithmic Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Definition===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must follow the following steps: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable n. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The states of a problem are defined as the knowledge necessary to make a decision, or s. We set C equal to the maximum value of s. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This can be defined as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	&amp;lt;img src=&amp;quot;https://latex.codecogs.com/gif.latex?U_{n}(s)\,&amp;amp;space;or\,&amp;amp;space;j\,&amp;amp;space;=\,&amp;amp;space;0,1,...,min\left&amp;amp;space;\{&amp;amp;space;a[n],&amp;amp;space;\left&amp;amp;space;\lfloor&amp;amp;space;\frac{s}{w[n]]}&amp;amp;space;\right&amp;amp;space;\rfloor&amp;amp;space;\right&amp;amp;space;\}&amp;quot; title=&amp;quot;U_{n}(s)\, or\, j\, =\, 0,1,...,min\left \{ a[n], \left \lfloor \frac{s}{w[n]]} \right \rfloor \right \}&amp;quot; /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this sentence, we describe the optimization function for each state, or s, and each stage, or n. This can also be called F*n(s) &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This helps create a starting point to finding a solution to the problem. First, we set f*n+1(s) = 0 for all values of s. Here, we can note that s = 0,…,C &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	During this step, we make an allowable decision involving j items for the remaining capacity s for items n. We can write this statement as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	f*n(s) = max j=0,1,…,min{a[n], floor(s/w[n]0} {b[n,j]+f*n+a(s-j*w[n])} &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this step, a table is made &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1349</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1349"/>
		<updated>2020-11-20T22:43:17Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Theory, Methodology, and/or Algorithmic Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Definition===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must follow the following steps: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable n. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The states of a problem are defined as the knowledge necessary to make a decision, or s. We set C equal to the maximum value of s. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This can be defined as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	[img[https://latex.codecogs.com/gif.latex?U_{n}(s)\, or\, j\, =\, 0,1,...,min\left \{ a%5Bn%5D, \left \lfloor \frac{s}{w%5Bn%5D%5D} \right \rfloor \right \}]] &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this sentence, we describe the optimization function for each state, or s, and each stage, or n. This can also be called F*n(s) &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This helps create a starting point to finding a solution to the problem. First, we set f*n+1(s) = 0 for all values of s. Here, we can note that s = 0,…,C &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	During this step, we make an allowable decision involving j items for the remaining capacity s for items n. We can write this statement as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	f*n(s) = max j=0,1,…,min{a[n], floor(s/w[n]0} {b[n,j]+f*n+a(s-j*w[n])} &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this step, a table is made &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1348</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1348"/>
		<updated>2020-11-20T22:42:33Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Theory, Methodology, and/or Algorithmic Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Definition===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must follow the following steps: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable n. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The states of a problem are defined as the knowledge necessary to make a decision, or s. We set C equal to the maximum value of s. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This can be defined as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	&amp;lt;a href=&amp;quot;https://www.codecogs.com/eqnedit.php?latex=U_{n}(s)\,&amp;amp;space;or\,&amp;amp;space;j\,&amp;amp;space;=\,&amp;amp;space;0,1,...,min\left&amp;amp;space;\{&amp;amp;space;a[n],&amp;amp;space;\left&amp;amp;space;\lfloor&amp;amp;space;\frac{s}{w[n]]}&amp;amp;space;\right&amp;amp;space;\rfloor&amp;amp;space;\right&amp;amp;space;\}&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;https://latex.codecogs.com/gif.latex?U_{n}(s)\,&amp;amp;space;or\,&amp;amp;space;j\,&amp;amp;space;=\,&amp;amp;space;0,1,...,min\left&amp;amp;space;\{&amp;amp;space;a[n],&amp;amp;space;\left&amp;amp;space;\lfloor&amp;amp;space;\frac{s}{w[n]]}&amp;amp;space;\right&amp;amp;space;\rfloor&amp;amp;space;\right&amp;amp;space;\}&amp;quot; title=&amp;quot;U_{n}(s)\, or\, j\, =\, 0,1,...,min\left \{ a[n], \left \lfloor \frac{s}{w[n]]} \right \rfloor \right \}&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this sentence, we describe the optimization function for each state, or s, and each stage, or n. This can also be called F*n(s) &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This helps create a starting point to finding a solution to the problem. First, we set f*n+1(s) = 0 for all values of s. Here, we can note that s = 0,…,C &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	During this step, we make an allowable decision involving j items for the remaining capacity s for items n. We can write this statement as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	f*n(s) = max j=0,1,…,min{a[n], floor(s/w[n]0} {b[n,j]+f*n+a(s-j*w[n])} &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this step, a table is made &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1347</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1347"/>
		<updated>2020-11-20T22:35:31Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Theory, Methodology, and/or Algorithmic Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Definition===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must follow the following steps: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable n. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 2: Specify the states for each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The states of a problem are defined as the knowledge necessary to make a decision, or s. We set C equal to the maximum value of s. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 3: Specify the allowable actions for each state in each stage&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This can be defined as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	Un(s) or j = 0,1,…,min{a[n], floor(s/w[n])} &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 4: Describe the optimization function using an English-language description.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this sentence, we describe the optimization function for each state, or s, and each stage, or n. This can also be called F*n(s) &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 5: Define the boundary conditions&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This helps create a starting point to finding a solution to the problem. First, we set f*n+1(s) = 0 for all values of s. Here, we can note that s = 0,…,C &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 6: Define the recurrence relation&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	During this step, we make an allowable decision involving j items for the remaining capacity s for items n. We can write this statement as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	f*n(s) = max j=0,1,…,min{a[n], floor(s/w[n]0} {b[n,j]+f*n+a(s-j*w[n])} &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 7: Compute the optimal value from the bottom-up&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this step, a table is made &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1346</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1346"/>
		<updated>2020-11-20T22:28:56Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Theory, Methodology, and/or Algorithmic Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Definition===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must follow the following steps: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 1: Specify the stages of the problem&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable n. &amp;lt;br /&amp;gt;&lt;br /&gt;
Step 2: Specify the states for each stage &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The states of a problem are defined as the knowledge necessary to make a decision, or s. We set C equal to the maximum value of s. &amp;lt;br /&amp;gt;&lt;br /&gt;
Step 3: Specify the allowable actions for each state in each stage &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This can be defined as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	Un(s) or j = 0,1,…,min{a[n], floor(s/w[n])} &amp;lt;br /&amp;gt;&lt;br /&gt;
Step 4: Describe the optimization function using an English-language description. &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this sentence, we describe the optimization function for each state, or s, and each stage, or n. This can also be called F*n(s) &amp;lt;br /&amp;gt;&lt;br /&gt;
Step 5: Define the boundary conditions &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This helps create a starting point to finding a solution to the problem. First, we set f*n+1(s) = 0 for all values of s. Here, we can note that s = 0,…,C &amp;lt;br /&amp;gt;&lt;br /&gt;
Step 6: Define the recurrence relation &amp;lt;br /&amp;gt;&lt;br /&gt;
•	During this step, we make an allowable decision involving j items for the remaining capacity s for items n. We can write this statement as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	f*n(s) = max j=0,1,…,min{a[n], floor(s/w[n]0} {b[n,j]+f*n+a(s-j*w[n])} &amp;lt;br /&amp;gt;&lt;br /&gt;
Step 7: Compute the optimal value from the bottom-up &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this step, a table is made &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1344</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1344"/>
		<updated>2020-11-20T22:22:10Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Definition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Definition===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must follow the following steps: &amp;lt;br /&amp;gt;&lt;br /&gt;
Step 1: Specify the stages of the problem &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable n. &amp;lt;br /&amp;gt;&lt;br /&gt;
Step 2: Specify the states for each stage &amp;lt;br /&amp;gt;&lt;br /&gt;
•	The states of a problem are defined as the knowledge necessary to make a decision, or s. We set C equal to the maximum value of s. &amp;lt;br /&amp;gt;&lt;br /&gt;
Step 3: Specify the allowable actions for each state in each stage &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This can be defined as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	Un(s) or j = 0,1,…,min{a[n], floor(s/w[n])} &amp;lt;br /&amp;gt;&lt;br /&gt;
Step 4: Describe the optimization function using an English-language description. &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this sentence, we describe the optimization function for each state, or s, and each stage, or n. This can also be called F*n(s) &amp;lt;br /&amp;gt;&lt;br /&gt;
Step 5: Define the boundary conditions &amp;lt;br /&amp;gt;&lt;br /&gt;
•	This helps create a starting point to finding a solution to the problem. First, we set f*n+1(s) = 0 for all values of s. Here, we can note that s = 0,…,C &amp;lt;br /&amp;gt;&lt;br /&gt;
Step 6: Define the recurrence relation &amp;lt;br /&amp;gt;&lt;br /&gt;
•	During this step, we make an allowable decision involving j items for the remaining capacity s for items n. We can write this statement as: &amp;lt;br /&amp;gt;&lt;br /&gt;
o	f*n(s) = max j=0,1,…,min{a[n], floor(s/w[n]0} {b[n,j]+f*n+a(s-j*w[n])} &amp;lt;br /&amp;gt;&lt;br /&gt;
Step 7: Compute the optimal value from the bottom-up &amp;lt;br /&amp;gt;&lt;br /&gt;
•	In this step, a table is made &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1343</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1343"/>
		<updated>2020-11-20T22:21:19Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: /* Definition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Definition===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must follow the following steps: &amp;lt;br /&amp;gt;&lt;br /&gt;
Step 1: Specify the stages of the problem&lt;br /&gt;
•	The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable n.&lt;br /&gt;
Step 2: Specify the states for each stage&lt;br /&gt;
•	The states of a problem are defined as the knowledge necessary to make a decision, or s. We set C equal to the maximum value of s.&lt;br /&gt;
Step 3: Specify the allowable actions for each state in each stage&lt;br /&gt;
•	This can be defined as:&lt;br /&gt;
o	Un(s) or j = 0,1,…,min{a[n], floor(s/w[n])}&lt;br /&gt;
Step 4: Describe the optimization function using an English-language description.&lt;br /&gt;
•	In this sentence, we describe the optimization function for each state, or s, and each stage, or n. This can also be called F*n(s)&lt;br /&gt;
Step 5: Define the boundary conditions&lt;br /&gt;
•	This helps create a starting point to finding a solution to the problem. First, we set f*n+1(s) = 0 for all values of s. Here, we can note that s = 0,…,C&lt;br /&gt;
Step 6: Define the recurrence relation&lt;br /&gt;
•	During this step, we make an allowable decision involving j items for the remaining capacity s for items n. We can write this statement as:&lt;br /&gt;
o	f*n(s) = max j=0,1,…,min{a[n], floor(s/w[n]0} {b[n,j]+f*n+a(s-j*w[n])}&lt;br /&gt;
Step 7: Compute the optimal value from the bottom-up&lt;br /&gt;
•	In this step, a table is made&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1342</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1342"/>
		<updated>2020-11-20T22:16:05Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
===Definition===&lt;br /&gt;
To solve a problem using the 8-step procedure, one must follow the following steps:&lt;br /&gt;
Step 1: Specify the stages of the problem&lt;br /&gt;
•	The stages of a dynamic programming problem can be defined as points where decisions are made. These are often denoted with the variable n.&lt;br /&gt;
Step 2: Specify the states for each stage&lt;br /&gt;
•	The states of a problem are defined as the knowledge necessary to make a decision, or s. We set C equal to the maximum value of s.&lt;br /&gt;
Step 3: Specify the allowable actions for each state in each stage&lt;br /&gt;
•	This can be defined as:&lt;br /&gt;
o	Un(s) or j = 0,1,…,min{a[n], floor(s/w[n])}&lt;br /&gt;
Step 4: Describe the optimization function using an English-language description.&lt;br /&gt;
•	In this sentence, we describe the optimization function for each state, or s, and each stage, or n. This can also be called F*n(s)&lt;br /&gt;
Step 5: Define the boundary conditions&lt;br /&gt;
•	This helps create a starting point to finding a solution to the problem. First, we set f*n+1(s) = 0 for all values of s. Here, we can note that s = 0,…,C&lt;br /&gt;
Step 6: Define the recurrence relation&lt;br /&gt;
•	During this step, we make an allowable decision involving j items for the remaining capacity s for items n. We can write this statement as:&lt;br /&gt;
o	f*n(s) = max j=0,1,…,min{a[n], floor(s/w[n]0} {b[n,j]+f*n+a(s-j*w[n])}&lt;br /&gt;
Step 7: Compute the optimal value from the bottom-up&lt;br /&gt;
•	In this step, a table is made&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1302</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=1302"/>
		<updated>2020-11-20T03:01:38Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany &amp;lt;/br&amp;gt;&lt;br /&gt;
Steward: Fengqi You &lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
=Theory, Methodology, and/or Algorithmic Discussion=&lt;br /&gt;
&lt;br /&gt;
=Numerical Example=&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=939</id>
		<title>Eight step procedures</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Eight_step_procedures&amp;diff=939"/>
		<updated>2020-11-11T01:08:23Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: Created page with &amp;quot;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany Steward: Fengqi You&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: Eljona Pushaj, Diana Bogdanowich, Stephanie Keomany&lt;br /&gt;
Steward: Fengqi You&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Quadratic_programming&amp;diff=938</id>
		<title>Quadratic programming</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Quadratic_programming&amp;diff=938"/>
		<updated>2020-11-11T00:54:40Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This web page is a duplicate of https://optimization.mccormick.northwestern.edu/index.php/Quadratic_programming&lt;br /&gt;
&lt;br /&gt;
Author: Jack Heider (ChE 345 Spring 2015) &amp;lt;br/&amp;gt;&lt;br /&gt;
Steward: Dajun Yue, Fengqi You&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
[[File:QPPic.jpg|frame|Optimizating of a quadratic function.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;12&amp;lt;/span&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Quadratic programming (QP) is the problem of optimizing a quadratic objective function and is one of the simplests form of non-linear programming.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;  The objective function can contain bilinear or up to second order polynomial terms,&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; and the constraints are linear and can be both equalities and inequalities.  QP is widely used in image and signal processing, to optimize financial portfolios, to perform the least-squares method of regression, to control scheduling in chemical plants, and in [https://optimization.mccormick.northwestern.edu/index.php?title=Sequential_quadratic_programming&amp;amp;action=edit&amp;amp;redlink=1 sequential quadratic programming], a technique for solving more complex non-linear programming problems.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;3,4&amp;lt;/span&amp;gt;   The problem was first explored in the early 1950s, most notably by Princeton University&#039;s [http://en.wikipedia.org/wiki/Philip_Wolfe_(mathematician) Wolfe] and [http://en.wikipedia.org/wiki/Marguerite_Frank Frank], who developed its theoretical background,&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; and by [http://en.wikipedia.org/wiki/Harry_Markowitz Harry Markowitz], who applied it to portfolio optimization, a subfield of finance.&lt;br /&gt;
&lt;br /&gt;
=Problem formulation= &lt;br /&gt;
A general quadratic programming formulation contains a quadratic objective function and linear equality and inequality constraints:&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;2,5,6&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\text{min} f(x)=q^{T}x+\frac{1}{2}x^{T}Qx&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;s.t. Ax=a&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;Bx\le b&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;x\ge0&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The objective function is arranged such that the vector &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; contains all of the (singly-differentiated) linear terms and &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; contains all of the (twice-differentiated) quadratic terms.  Put more simply, &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; is the Hessian matrix of the objective function and &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; is its gradient.  By convention, any constants contained in the objective function are left out of the general formulation.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt; The one-half in front of the quadratic term is included to remove the coefficient (2) that results from taking the derivative of a second-order polynomial.&lt;br /&gt;
&lt;br /&gt;
As for the constraints, the matrix equation &amp;lt;math&amp;gt;Ax=a&amp;lt;/math&amp;gt; contains all of the linear equality constraints, and &amp;lt;math&amp;gt;Bx \le b&amp;lt;/math&amp;gt; are the linear inequality constraints.&lt;br /&gt;
&lt;br /&gt;
When there are only inequality constraints (&amp;lt;math&amp;gt;Bx\le b&amp;lt;/math&amp;gt;), the Lagrangean is:&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L(x,\lambda,\mu)=q^{T}x+\frac{1}{2}x^{T}Qx+{\lambda}^T(Ax-a)+{\mu}^T(Bx-b)=0&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Global solutions==&lt;br /&gt;
If the objective function is convex, then any local minimum found is also the sole global minimum.  To analyze the function’s convexity, one can compute its Hessian matrix and verify that all eigenvalues are positive, or, equivalently, one can verify that the matrix Q is positive definite.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt;  This is a sufficient condition, meaning that it is not required to be true in order for a local minimum to be the unique global minimum, but will guarantee this property holds if true.&lt;br /&gt;
&lt;br /&gt;
==KKT conditions==&lt;br /&gt;
Solutions can be tested for optimality using Karush-Kuhn-Tucker conditions just as is done for other nonlinear problems:&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Condition 1: sum of gradients is zero: &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\triangledown L({x}^*,{\lambda}^*,{\mu}^*)=q^{T}+\frac{1}{2}x^{T}Q+{\lambda}^{*T}A+{\mu}^{*T}B&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Condition 2: all constraints satisfied: &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;Ax^*-a=0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;Bx^*-b\le0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Condition 3: complementary conditions: &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{\mu}^TBx-b=0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{x}^{T},{\lambda}^{T},{\mu}^T\ge0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Solution strategies==&lt;br /&gt;
Because quadratic programming problems are a simple form of nonlinear problem, they can be solved in the same manner as other non-linear programming problems.&lt;br /&gt;
An unconstrained quadratic programming problem is most straightforward to solve: simply set the derivative (gradient) of the objective function equal to zero and solve.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt;  More practical (constrained) formulations are more difficult to solve.  The typical solution technique when the objective function is strictly convex and there are only equality constraints is the [https://optimization.mccormick.northwestern.edu/index.php?title=Conjugate_gradient_methods&amp;amp;action=edit&amp;amp;redlink=1 conjugate gradient method].  If there are inequality constraints (&amp;lt;math&amp;gt;Bx\le b&amp;lt;/math&amp;gt;), then the [https://optimization.mccormick.northwestern.edu/index.php/Interior-point_method_for_NLP interior point] and active set methods are the preferred solution methods.  When there is a range on the allowable values of &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (in the form &amp;lt;math&amp;gt;x^L\le x\le x^U&amp;lt;/math&amp;gt;, which is the case for image and signal processing applications,  [https://optimization.mccormick.northwestern.edu/index.php/Trust-region_methods trust-region methods] are most frequently used.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; For all convex cases, an NLP solver in the optimization utility GAMS, such as KNITRO, MINOS, or CONOPT, can find solutions for quadratic programming problems.&lt;br /&gt;
&lt;br /&gt;
=Numerical example=&lt;br /&gt;
[[File:ChE345 Wiki Mathematica.png|frame|Plot of the unconstrained objective function. Figure generated using Wolfram Mathematica.]]&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to determine the KKT point of a specific QP problem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\text{min}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;f(x)=3{x_1}^2+{x_2}^2+2{x_1}{x_2}+x_1+6{x_2}+2&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\text{s.t.}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;2{x_1}+3{x_2} \ge 4&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{x_1},{x_2} \ge 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rewrite the constraints. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;g_1=-2{x_1}-3{x_2}+4\le 0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;g_2=-{x_1} \le 0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;g_3=-{x_2} \le 0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Construct the gradients. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\triangledown f= \begin{bmatrix} 6{x_1}+2{x_2}+1 \\ 2{x_1}+2{x_2}+6 \end{bmatrix}, \triangledown {g_1}= \begin{bmatrix} -2 \\ -3 \end{bmatrix}, \triangledown {g_2}= \begin{bmatrix} -1 \\ 0 \end{bmatrix}, \triangledown {g_3}= \begin{bmatrix} 0 \\ -1 \end{bmatrix} &amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Assuming all constraints are satisfied, set the gradient equal to zero to attempt to find an optima. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;6{x_1}+2{x_2}+1=0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;2{x_1}+2{x_2}+6=0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;{x_1}=\frac{5}{4}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;math&amp;gt;{x_2}=-\frac{17}{4}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make constraints &amp;lt;math&amp;gt;g_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;g_3&amp;lt;/math&amp;gt;, which are violated, active.  Set both equal to zero. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{g_1} = -2{x_1}-3{x_2}+4=0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{g_3} = -{x_2}=0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solve the resulting system of equations. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\triangledown f+ {\mu_1} \triangledown {g_1}+ {\mu_3} \triangledown {g_3} =0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{g_1}=0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{g_3}=0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{bmatrix} 6{x_1}+2{x_2}+1 \\ 2{x_1}+2{x_2}+6 \end{bmatrix} +{\mu_1} \begin{bmatrix} -2 \\ -3 \end{bmatrix} +{\mu_3} \begin{bmatrix} 0 \\ -1 \end{bmatrix} &amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;-2{x_1}-3{x_2}+4=0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;-{x_2}=0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formulating the system as one matrix and row reducing is one of the simplest ways to solve.  Doing so yields: &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{x_1}=2, {x_2}=0, {\mu_1}=6.5, {\mu_3}=9.5&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Drop constraint &amp;lt;math&amp;gt;g_3&amp;lt;/math&amp;gt; because &amp;lt;math&amp;gt;{\mu_3}&amp;lt;/math&amp;gt; is negative and resolve the system.  Doing so yields: &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{x_1}=0.5, {x_2}=1, {\mu_1}=3&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which yields an objective function value of &amp;lt;math&amp;gt;f=11.25&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verify linear dependence of the gradient: &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\triangledown f+ {\mu_1} \triangledown {g_1}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{bmatrix} 6 \\ 9 \end{bmatrix} +3 \begin{bmatrix} -2 \\ -3 \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \end{bmatrix} \therefore &amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verify the uniqueness of the solution: &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{\triangledown}^2 f(x)= \begin{bmatrix} 6 &amp;amp; 2 \\ 2 &amp;amp; 1 \end{bmatrix} \rightarrow \begin{bmatrix} 6-\lambda &amp;amp; 2 \\ 2 &amp;amp; 1-\lambda \end{bmatrix} =0 \rightarrow \lambda = 0.298, 6.702&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because both eigenvalues are positive, the Hessian matrix is positive determinant, and this local minimum is the global minimum of the objective function given these constraints. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
A few of the many quadratic programming applications are discussed in more detail and accompanied with general models below, and a list of other areas in which QP is important is presented as well.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Quadratic knapsack problem (QKP)&amp;lt;/b&amp;gt;&lt;br /&gt;
In the standard knapsack problem, there are a number of items with different weights and values, and the items are selected based on which combination yields the highest overall value without exceeding the overall weight limit of the knapsack.&lt;br /&gt;
&lt;br /&gt;
In the quadratic knapsack problem, the objective function is quadratic or, more specifically, bilinear, and the constraints are the same as in the typical knapsack problem.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;8&amp;lt;/span&amp;gt;  QKP&#039;s are used in designing email servers and to optimize the locations of &amp;quot;nodes&amp;quot; in applications such as positioning transportation hubs like airports and train stations.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;8&amp;lt;/span&amp;gt;  Additionally, the problem can model situations in which a limited number of people are assigned to complete specific objectives that require them to interact.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;9&amp;lt;/span&amp;gt;  One formulation is presented below:&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;8&amp;lt;/span&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\text{max or min}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;x^{T}Qx&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;Ax \le a&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;x \in {B}^{n} &amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The quadratic knapsack problem, although it looks very simple, is NP-hard and is thus difficult to solve.  To make obtaining solutions easier, these problems are often linearized.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;8&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Model predictive control&amp;lt;/b&amp;gt;&lt;br /&gt;
Quadratic programming also has important applications in chemical engineering.  Model predictive control (MPC) is a group of algorithms that help manage production in chemical plants by dictating production in each batch.  While often formulated as linear programs because the resulting models are more stable, robust and easier to solve, MPC models are sometimes made with quadratic programming.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;11&amp;lt;/span&amp;gt;  As an example of its utility, quadratic programming was used by Di Ruscio in an MPC algorithm for a thermomechanical pulping process, which a method for making paper.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;11&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Least squares&amp;lt;/b&amp;gt;&lt;br /&gt;
Least squares regression is one of the most common types of regression, and works by minimizing the sum of the squares of the difference between data points and a proposed fit.  Quadratic optimization is one method that can be used to perform a least squares regression and is more flexible than most linear methods.  One formulation for a quadratic programming regression model is as follows:&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\text{min}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;e&#039;Ie&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;e = Y-X \beta&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this model, &amp;lt;math&amp;gt;\beta&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; are the unknown regression parameters, &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt; is an identity matrix, and &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt; contain data about the independent and dependent variables respectively.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Other applications&amp;lt;/b&amp;gt;&lt;br /&gt;
Quadratic programming is used in a wide range of applications not touched upon in the sample presented above.  Other major areas in which QP&#039;s are relied upon include signal and image processing&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;12&amp;lt;/span&amp;gt; and a subfield of optimization called partial differential constrained optimization.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt;  QP&#039;s are also extensively used in finance, as variance, which is used to measure risk, is a function containing squares.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;13,14,15&amp;lt;/span&amp;gt;  More specifically, Markowitz won the 1990 Nobel Prize in Economics for his widely-used model that employs quadratic programming to optimizes the amount of risk taken on based on variances.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;14&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, [https://optimization.mccormick.northwestern.edu/index.php?title=Sequential_quadratic_programming&amp;amp;action=edit&amp;amp;redlink=1 Sequential quadratic programming], an algorithm for solving more complicated NLP&#039;s that uses QP subproblems, is one of the most important applications.&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
Quadratic programming, the problem of optimizing a quadratic function, have been widely used since its development in the 1950s because it is a simple type of non-linear programming that can accurately model many real world systems, notably ones dependent on two variables.  Problems formulated this way are straightforward to optimize when the objective function is convex. QP has applications in finance, various types of computer systems, statistics, chemical production, and in algorithms to solve more complex NLP&#039;s.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
1. Frank, Marguerite, and Philip Wolfe. &amp;quot;An Algorithm for Quadratic Programming.&amp;quot; Naval Research Logistics Quarterly 3 (1956): 95-110. Web. 4 June 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
2. Floudas, Christodoulos A., and V. Visweswaran. &amp;quot;Quadratic Optimization.&amp;quot; Nonconvex Optimization and Its Applications, 2 (1995): 217-69. Web. 23 May 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
3. McCarl, Bruce A., Moskowitz, Herbert, and Harley Furtan. &amp;quot;Quadratic Programming Applications.&amp;quot; The International Journal of Management Science, 5 (1977): 43-55. &amp;lt;br/&amp;gt;&lt;br /&gt;
4. Geletu, Abele. &amp;quot;Quadratic programming problems.&amp;quot; Ilmenau University of Technology. Web. 23 May 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
5. Bradley, Hax, and Magnanti. Applied Mathematical Programming. Boston: Addison-Wesley, 1997. 421-40. Web. 23 May 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
6. Jensen, Paul A., and Jonathan F. Bard. &amp;quot;Quadratic Programming.&amp;quot; Operations Research Models and  Methods. The University of Texas at Austin. Web. 23 May 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
7. Binner, David. &amp;quot;Quadratic programming example - no constraints.&amp;quot; Miscellaneous mathematical utilities. AKiTi. Web. 23 May 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
8. Pisinger, David. &amp;quot;The Quadratic Knapsack Problem – A Survey.&amp;quot; Discrete Applied Mathematics, 155 (2007): 623 – 648. Web. 23 May 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
9. &amp;quot;Quadratic Multiple Knapsack Problem.&amp;quot; Optimization of Complex System. Optiscom Project. 2012. Web. 6 June 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
10. Gallo, G., P. L. Hammer, and B. Simeone. &amp;quot;Quadratic Knapsack Problems.&amp;quot; Mathematical Programming 12 (1980): 132-149. Web. 24 May 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
11. Di Ruscio, David. &amp;quot;Model Predictive Control and Optimization.&amp;quot; Telemark University College. Mar. 2001. Web. 24 May 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
12. Ma, W. K. &amp;quot;Signal Processing Optimization Techniques.&amp;quot; The Chinese University of Hong Kong. Web. 24 May 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
13. Tütüncü, Reha H. &amp;quot;Optimization in Finance.&amp;quot; Tokyo Institute of Technology. Spring 2003. Web. 23 May 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
14. Van Slyke, R. &amp;quot;Portfolio Optimization.&amp;quot; NYU Polytechnic School of Engineering. 16 Nov. 2007. Web. 24 May 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
15. &amp;quot;Portfolio Optimization.&amp;quot; SAS/OR(R) 9.2 User&#039;s Guide: Mathematical Programming. SAS Institute. Web. 23 May 2015. &amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
	<entry>
		<id>https://optimization.cbe.cornell.edu/index.php?title=Quadratic_programming&amp;diff=937</id>
		<title>Quadratic programming</title>
		<link rel="alternate" type="text/html" href="https://optimization.cbe.cornell.edu/index.php?title=Quadratic_programming&amp;diff=937"/>
		<updated>2020-11-11T00:54:07Z</updated>

		<summary type="html">&lt;p&gt;Skepdb: test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This web page is a duplicate of https://optimization.mccormick.northwestern.edu/index.php/Quadratic_programming&lt;br /&gt;
&lt;br /&gt;
Author: Jack Heider (ChE 345 Spring 2015) &amp;lt;br/&amp;gt;&lt;br /&gt;
Steward: Dajun Yue, Fengqi You&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
[[File:QPPic.jpg|frame|Optimizating of a quadratic function.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;12&amp;lt;/span&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Quadratic programming (QP) is the problem of optimizing a quadratic objective function and is one of the simplests form of non-linear programming.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;  The objective function can contain bilinear or up to second order polynomial terms,&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; and the constraints are linear and can be both equalities and inequalities.  QP is widely used in image and signal processing, to optimize financial portfolios, to perform the least-squares method of regression, to control scheduling in chemical plants, and in [https://optimization.mccormick.northwestern.edu/index.php?title=Sequential_quadratic_programming&amp;amp;action=edit&amp;amp;redlink=1 sequential quadratic programming], a technique for solving more complex non-linear programming problems.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;3,4&amp;lt;/span&amp;gt;   The problem was first explored in the early 1950s, most notably by Princeton University&#039;s [http://en.wikipedia.org/wiki/Philip_Wolfe_(mathematician) Wolfe] and [http://en.wikipedia.org/wiki/Marguerite_Frank Frank], who developed its theoretical background,&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; and by [http://en.wikipedia.org/wiki/Harry_Markowitz Harry Markowitz], who applied it to portfolio optimization, a subfield of finance. test test test&lt;br /&gt;
&lt;br /&gt;
=Problem formulation= &lt;br /&gt;
A general quadratic programming formulation contains a quadratic objective function and linear equality and inequality constraints:&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;2,5,6&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\text{min} f(x)=q^{T}x+\frac{1}{2}x^{T}Qx&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;s.t. Ax=a&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;Bx\le b&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;x\ge0&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The objective function is arranged such that the vector &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; contains all of the (singly-differentiated) linear terms and &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; contains all of the (twice-differentiated) quadratic terms.  Put more simply, &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; is the Hessian matrix of the objective function and &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; is its gradient.  By convention, any constants contained in the objective function are left out of the general formulation.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt; The one-half in front of the quadratic term is included to remove the coefficient (2) that results from taking the derivative of a second-order polynomial.&lt;br /&gt;
&lt;br /&gt;
As for the constraints, the matrix equation &amp;lt;math&amp;gt;Ax=a&amp;lt;/math&amp;gt; contains all of the linear equality constraints, and &amp;lt;math&amp;gt;Bx \le b&amp;lt;/math&amp;gt; are the linear inequality constraints.&lt;br /&gt;
&lt;br /&gt;
When there are only inequality constraints (&amp;lt;math&amp;gt;Bx\le b&amp;lt;/math&amp;gt;), the Lagrangean is:&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L(x,\lambda,\mu)=q^{T}x+\frac{1}{2}x^{T}Qx+{\lambda}^T(Ax-a)+{\mu}^T(Bx-b)=0&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Global solutions==&lt;br /&gt;
If the objective function is convex, then any local minimum found is also the sole global minimum.  To analyze the function’s convexity, one can compute its Hessian matrix and verify that all eigenvalues are positive, or, equivalently, one can verify that the matrix Q is positive definite.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt;  This is a sufficient condition, meaning that it is not required to be true in order for a local minimum to be the unique global minimum, but will guarantee this property holds if true.&lt;br /&gt;
&lt;br /&gt;
==KKT conditions==&lt;br /&gt;
Solutions can be tested for optimality using Karush-Kuhn-Tucker conditions just as is done for other nonlinear problems:&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Condition 1: sum of gradients is zero: &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\triangledown L({x}^*,{\lambda}^*,{\mu}^*)=q^{T}+\frac{1}{2}x^{T}Q+{\lambda}^{*T}A+{\mu}^{*T}B&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Condition 2: all constraints satisfied: &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;Ax^*-a=0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;Bx^*-b\le0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Condition 3: complementary conditions: &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{\mu}^TBx-b=0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{x}^{T},{\lambda}^{T},{\mu}^T\ge0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Solution strategies==&lt;br /&gt;
Because quadratic programming problems are a simple form of nonlinear problem, they can be solved in the same manner as other non-linear programming problems.&lt;br /&gt;
An unconstrained quadratic programming problem is most straightforward to solve: simply set the derivative (gradient) of the objective function equal to zero and solve.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt;  More practical (constrained) formulations are more difficult to solve.  The typical solution technique when the objective function is strictly convex and there are only equality constraints is the [https://optimization.mccormick.northwestern.edu/index.php?title=Conjugate_gradient_methods&amp;amp;action=edit&amp;amp;redlink=1 conjugate gradient method].  If there are inequality constraints (&amp;lt;math&amp;gt;Bx\le b&amp;lt;/math&amp;gt;), then the [https://optimization.mccormick.northwestern.edu/index.php/Interior-point_method_for_NLP interior point] and active set methods are the preferred solution methods.  When there is a range on the allowable values of &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (in the form &amp;lt;math&amp;gt;x^L\le x\le x^U&amp;lt;/math&amp;gt;, which is the case for image and signal processing applications,  [https://optimization.mccormick.northwestern.edu/index.php/Trust-region_methods trust-region methods] are most frequently used.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; For all convex cases, an NLP solver in the optimization utility GAMS, such as KNITRO, MINOS, or CONOPT, can find solutions for quadratic programming problems.&lt;br /&gt;
&lt;br /&gt;
=Numerical example=&lt;br /&gt;
[[File:ChE345 Wiki Mathematica.png|frame|Plot of the unconstrained objective function. Figure generated using Wolfram Mathematica.]]&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to determine the KKT point of a specific QP problem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\text{min}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;f(x)=3{x_1}^2+{x_2}^2+2{x_1}{x_2}+x_1+6{x_2}+2&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\text{s.t.}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;2{x_1}+3{x_2} \ge 4&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{x_1},{x_2} \ge 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rewrite the constraints. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;g_1=-2{x_1}-3{x_2}+4\le 0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;g_2=-{x_1} \le 0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;g_3=-{x_2} \le 0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Construct the gradients. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\triangledown f= \begin{bmatrix} 6{x_1}+2{x_2}+1 \\ 2{x_1}+2{x_2}+6 \end{bmatrix}, \triangledown {g_1}= \begin{bmatrix} -2 \\ -3 \end{bmatrix}, \triangledown {g_2}= \begin{bmatrix} -1 \\ 0 \end{bmatrix}, \triangledown {g_3}= \begin{bmatrix} 0 \\ -1 \end{bmatrix} &amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Assuming all constraints are satisfied, set the gradient equal to zero to attempt to find an optima. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;6{x_1}+2{x_2}+1=0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;2{x_1}+2{x_2}+6=0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;{x_1}=\frac{5}{4}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;math&amp;gt;{x_2}=-\frac{17}{4}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make constraints &amp;lt;math&amp;gt;g_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;g_3&amp;lt;/math&amp;gt;, which are violated, active.  Set both equal to zero. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{g_1} = -2{x_1}-3{x_2}+4=0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{g_3} = -{x_2}=0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solve the resulting system of equations. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\triangledown f+ {\mu_1} \triangledown {g_1}+ {\mu_3} \triangledown {g_3} =0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{g_1}=0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{g_3}=0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{bmatrix} 6{x_1}+2{x_2}+1 \\ 2{x_1}+2{x_2}+6 \end{bmatrix} +{\mu_1} \begin{bmatrix} -2 \\ -3 \end{bmatrix} +{\mu_3} \begin{bmatrix} 0 \\ -1 \end{bmatrix} &amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;-2{x_1}-3{x_2}+4=0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;-{x_2}=0&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Formulating the system as one matrix and row reducing is one of the simplest ways to solve.  Doing so yields: &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{x_1}=2, {x_2}=0, {\mu_1}=6.5, {\mu_3}=9.5&amp;lt;/math&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Drop constraint &amp;lt;math&amp;gt;g_3&amp;lt;/math&amp;gt; because &amp;lt;math&amp;gt;{\mu_3}&amp;lt;/math&amp;gt; is negative and resolve the system.  Doing so yields: &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{x_1}=0.5, {x_2}=1, {\mu_1}=3&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which yields an objective function value of &amp;lt;math&amp;gt;f=11.25&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verify linear dependence of the gradient: &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\triangledown f+ {\mu_1} \triangledown {g_1}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{bmatrix} 6 \\ 9 \end{bmatrix} +3 \begin{bmatrix} -2 \\ -3 \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \end{bmatrix} \therefore &amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verify the uniqueness of the solution: &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{\triangledown}^2 f(x)= \begin{bmatrix} 6 &amp;amp; 2 \\ 2 &amp;amp; 1 \end{bmatrix} \rightarrow \begin{bmatrix} 6-\lambda &amp;amp; 2 \\ 2 &amp;amp; 1-\lambda \end{bmatrix} =0 \rightarrow \lambda = 0.298, 6.702&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because both eigenvalues are positive, the Hessian matrix is positive determinant, and this local minimum is the global minimum of the objective function given these constraints. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Applications=&lt;br /&gt;
&lt;br /&gt;
A few of the many quadratic programming applications are discussed in more detail and accompanied with general models below, and a list of other areas in which QP is important is presented as well.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Quadratic knapsack problem (QKP)&amp;lt;/b&amp;gt;&lt;br /&gt;
In the standard knapsack problem, there are a number of items with different weights and values, and the items are selected based on which combination yields the highest overall value without exceeding the overall weight limit of the knapsack.&lt;br /&gt;
&lt;br /&gt;
In the quadratic knapsack problem, the objective function is quadratic or, more specifically, bilinear, and the constraints are the same as in the typical knapsack problem.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;8&amp;lt;/span&amp;gt;  QKP&#039;s are used in designing email servers and to optimize the locations of &amp;quot;nodes&amp;quot; in applications such as positioning transportation hubs like airports and train stations.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;8&amp;lt;/span&amp;gt;  Additionally, the problem can model situations in which a limited number of people are assigned to complete specific objectives that require them to interact.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;9&amp;lt;/span&amp;gt;  One formulation is presented below:&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;8&amp;lt;/span&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\text{max or min}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;x^{T}Qx&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;Ax \le a&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;x \in {B}^{n} &amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The quadratic knapsack problem, although it looks very simple, is NP-hard and is thus difficult to solve.  To make obtaining solutions easier, these problems are often linearized.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;8&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Model predictive control&amp;lt;/b&amp;gt;&lt;br /&gt;
Quadratic programming also has important applications in chemical engineering.  Model predictive control (MPC) is a group of algorithms that help manage production in chemical plants by dictating production in each batch.  While often formulated as linear programs because the resulting models are more stable, robust and easier to solve, MPC models are sometimes made with quadratic programming.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;11&amp;lt;/span&amp;gt;  As an example of its utility, quadratic programming was used by Di Ruscio in an MPC algorithm for a thermomechanical pulping process, which a method for making paper.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;11&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Least squares&amp;lt;/b&amp;gt;&lt;br /&gt;
Least squares regression is one of the most common types of regression, and works by minimizing the sum of the squares of the difference between data points and a proposed fit.  Quadratic optimization is one method that can be used to perform a least squares regression and is more flexible than most linear methods.  One formulation for a quadratic programming regression model is as follows:&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\text{min}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;e&#039;Ie&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;e = Y-X \beta&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this model, &amp;lt;math&amp;gt;\beta&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; are the unknown regression parameters, &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt; is an identity matrix, and &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt; contain data about the independent and dependent variables respectively.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Other applications&amp;lt;/b&amp;gt;&lt;br /&gt;
Quadratic programming is used in a wide range of applications not touched upon in the sample presented above.  Other major areas in which QP&#039;s are relied upon include signal and image processing&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;12&amp;lt;/span&amp;gt; and a subfield of optimization called partial differential constrained optimization.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt;  QP&#039;s are also extensively used in finance, as variance, which is used to measure risk, is a function containing squares.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;13,14,15&amp;lt;/span&amp;gt;  More specifically, Markowitz won the 1990 Nobel Prize in Economics for his widely-used model that employs quadratic programming to optimizes the amount of risk taken on based on variances.&amp;lt;span style=&amp;quot;font-size: 8pt; position:relative; bottom: 0.3em;&amp;quot;&amp;gt;14&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, [https://optimization.mccormick.northwestern.edu/index.php?title=Sequential_quadratic_programming&amp;amp;action=edit&amp;amp;redlink=1 Sequential quadratic programming], an algorithm for solving more complicated NLP&#039;s that uses QP subproblems, is one of the most important applications.&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
Quadratic programming, the problem of optimizing a quadratic function, have been widely used since its development in the 1950s because it is a simple type of non-linear programming that can accurately model many real world systems, notably ones dependent on two variables.  Problems formulated this way are straightforward to optimize when the objective function is convex. QP has applications in finance, various types of computer systems, statistics, chemical production, and in algorithms to solve more complex NLP&#039;s.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
1. Frank, Marguerite, and Philip Wolfe. &amp;quot;An Algorithm for Quadratic Programming.&amp;quot; Naval Research Logistics Quarterly 3 (1956): 95-110. Web. 4 June 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
2. Floudas, Christodoulos A., and V. Visweswaran. &amp;quot;Quadratic Optimization.&amp;quot; Nonconvex Optimization and Its Applications, 2 (1995): 217-69. Web. 23 May 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
3. McCarl, Bruce A., Moskowitz, Herbert, and Harley Furtan. &amp;quot;Quadratic Programming Applications.&amp;quot; The International Journal of Management Science, 5 (1977): 43-55. &amp;lt;br/&amp;gt;&lt;br /&gt;
4. Geletu, Abele. &amp;quot;Quadratic programming problems.&amp;quot; Ilmenau University of Technology. Web. 23 May 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
5. Bradley, Hax, and Magnanti. Applied Mathematical Programming. Boston: Addison-Wesley, 1997. 421-40. Web. 23 May 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
6. Jensen, Paul A., and Jonathan F. Bard. &amp;quot;Quadratic Programming.&amp;quot; Operations Research Models and  Methods. The University of Texas at Austin. Web. 23 May 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
7. Binner, David. &amp;quot;Quadratic programming example - no constraints.&amp;quot; Miscellaneous mathematical utilities. AKiTi. Web. 23 May 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
8. Pisinger, David. &amp;quot;The Quadratic Knapsack Problem – A Survey.&amp;quot; Discrete Applied Mathematics, 155 (2007): 623 – 648. Web. 23 May 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
9. &amp;quot;Quadratic Multiple Knapsack Problem.&amp;quot; Optimization of Complex System. Optiscom Project. 2012. Web. 6 June 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
10. Gallo, G., P. L. Hammer, and B. Simeone. &amp;quot;Quadratic Knapsack Problems.&amp;quot; Mathematical Programming 12 (1980): 132-149. Web. 24 May 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
11. Di Ruscio, David. &amp;quot;Model Predictive Control and Optimization.&amp;quot; Telemark University College. Mar. 2001. Web. 24 May 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
12. Ma, W. K. &amp;quot;Signal Processing Optimization Techniques.&amp;quot; The Chinese University of Hong Kong. Web. 24 May 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
13. Tütüncü, Reha H. &amp;quot;Optimization in Finance.&amp;quot; Tokyo Institute of Technology. Spring 2003. Web. 23 May 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
14. Van Slyke, R. &amp;quot;Portfolio Optimization.&amp;quot; NYU Polytechnic School of Engineering. 16 Nov. 2007. Web. 24 May 2015. &amp;lt;br/&amp;gt;&lt;br /&gt;
15. &amp;quot;Portfolio Optimization.&amp;quot; SAS/OR(R) 9.2 User&#039;s Guide: Mathematical Programming. SAS Institute. Web. 23 May 2015. &amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Skepdb</name></author>
	</entry>
</feed>