Linear optimization: Upper and lower bounds 2: Unterschied zwischen den Versionen
[unmarkierte Version] | [unmarkierte Version] |
(→Example) |
(→Example) |
||
Zeile 18: | Zeile 18: | ||
Consider the sample model with upper bounds <math>0\leq x_{1}\leq 8</math>, and <math>0\leq x_{2}\leq 4</math>. The simplex table is | Consider the sample model with upper bounds <math>0\leq x_{1}\leq 8</math>, and <math>0\leq x_{2}\leq 4</math>. The simplex table is | ||
− | + | | [[bild:01_123image123456.jpg]] | |
The <math>x^{B}/y_{i}</math> –ratios would allow an increase of <math>x_{2}</math>. However, in this case the minimum <math>\Theta </math> = 4 corresponding to the entering variable itself. | The <math>x^{B}/y_{i}</math> –ratios would allow an increase of <math>x_{2}</math>. However, in this case the minimum <math>\Theta </math> = 4 corresponding to the entering variable itself. |
Version vom 27. Juni 2013, 09:32 Uhr
Inhaltsverzeichnis
Theory
Linear optimization can be used for set of different problems, which have restrictions such as a given amount of resources or a certain budget. The lower bound is the smallest possible value, and the upper bound is the highest possible value.
Linear programming is the most commonly used optimisation technique in embedded industrial applications. There are many reasons for this. Linear programs are relatively easy to formulate, use and understand. The LP optimisation techniques are also relatively efficient and well developed. A surprisingly large set of real-life problems can be represented as linear programs, or approximated sufficiently well with linear programs. Finally, a number of more advanced modelling and solution techniques are based on linear programming, such as quadratic programming, fractional programming, integer programming, mixed integer programming, constraint logic programming, etc.
Lower bounds are classified like: Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): x_{j}\geq l_{j}
Upper bounds are classified like: Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): x_{j}\leq l_{j}
Of course you can implement these upper and lower bounds as specific constraints in a simplex tableau.
But this far too complicated.
The other possibility is to transform the simplextableau, i.e. modifying the simplex tableau.
Example
Consider the sample model with upper bounds Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): 0\leq x_{1}\leq 8 , and Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): 0\leq x_{2}\leq 4 . The simplex table is
|The –ratios would allow an increase of . However, in this case the minimum Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): \Theta
= 4 corresponding to the entering variable itself.
The upper bound substitution can be done very easily on the simplex table. A non-basic variable is substituted by subtracting times the variable column from the solution vector and negating then the column. Substituting Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): x_{2}=4-x_{2}^{*}
in the previous table gives
Comparing this solution with the previous example after the first iteration we observe that the basis is different, but the solution is essentially the same (same values for and ). Next we enter and remove from row 2 with minimum Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): \Theta = 4
This table is not optimal because the reduced cost of Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): x_{2}^{*}
is 1. Because is negative and the corresponding basic variable 1 has a finite upper bound of 8, we must compute the ratio as (Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): 4-8)/-2 = 2
. This time the ratio for the first row is smallest. Thus, we enter Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): x_{2}^{*}
and remove from row 1 with minimum Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): \Theta = 1
.
This table is optimal. To obtain the solution in terms of the original variables, we can substitute the Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): x_{2}^{*}
with Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): 4-x_{2}
. Because Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): x_{2}^{*}
is basic, this substitution affects only the row.
However, negating the column of has made the identity matrix element -1. To restore the identity matrix, the row must yet be multiplied by -1.
This same solution was found in the previous example without the upper bounds technique.
Presentation of the problem
Detailed solution process with explanation
Sources
First of all you have to transform the old variable into: .
That means:
Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): {x}'_{j}= x_{j}-l_{j}
But you have to take care of, that the lower bound is not allowed to be negative.
Example
Consider the linear program
- Minimize
- Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): Z = -2 x - 3 y - 4 z\,
- Subject to
- Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): \begin{align} 3 x + 2 y + z &\le 10\\ 2 x + 5 y + 3 z &\le 15\\ x,\,y,\,z &\ge 0 \end{align}
With the addition of slack variables s and t, this is represented by the canonical tableau
where columns 5 and 6 represent the basic variables s and t and the corresponding basic feasible solution is
Columns 2, 3, and 4 can be selected as pivot columns, for this example column 4 is selected. The values of x resulting from the choice of rows 2 and 3 as pivot rows are 10/1 = 10 and 15/3 = 5 respectively. Of these the minimum is 5, so row 3 must be the pivot row. Performing the pivot produces
- Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): \begin{bmatrix} 1 & -\tfrac{2}{3} & -\tfrac{11}{3} & 0 & 0 & -\tfrac{4}{3} & -20 \\ 0 & \tfrac{7}{3} & \tfrac{1}{3} & 0 & 1 & -\tfrac{1}{3} & 5 \\ 0 & \tfrac{2}{3} & \tfrac{5}{3} & 1 & 0 & \tfrac{1}{3} & 5 \end{bmatrix}
Now columns 4 and 5 represent the basic variables z and s and the corresponding basic feasible solution is
For the next step, there are no positive entries in the objective row and in fact
- Fehler beim Parsen (http://mathoid.testme.wmflabs.org Serverantwort ist ungültiges JSON.): Z = -20 + \tfrac{2}{3} x + \tfrac{11}{3} y + \tfrac{4}{3} t
so the minimum value of Z is −20.