TECHNIKA OPTYMALIZACJI - LABOLATORIUM |
---|
Ćwiczenie II: Dwufazowa metoda simpleks |
Skład grupy: |
- Dawid Cekus - Mateusz Grzelak |
Zadania programowania liniowego dla ograniczeń mniejszościowych i większościowych. Dwufazowa metoda simpleks.
Cel ćwiczenia.
Celem ćwiczenia to zapoznanie się metodą rozwiązywania zadania LP na przykładzie dwufazowej metody simpleks. Pozwala ona, na wyliczenie takiego wektora zmiennych decyzyjnych x, należącego do zbioru rozwiązań dopuszczalnych X, dla którego funkcja celu osiąga maksimum (minimum):
f(x) = xo = cTx → max(min)
przy ograniczeniach:
X = {x : A1 • x ≥ b1; x ≥ 0; A2 • x ≤ b2}
dim x= nx1, dim c=nx1, dim A1=m1xn, dim A2=m2xn, dim b1 = m1x1, dim b2 = m2x1
Macierz A1 jest to macierz tworzona przez współczynniki przy zmiennych decyzyjnych w kolejnych m1 ograniczeniach większościowych, macierz A2 jest to macierz tworzona przez współczynniki przy zmiennych decyzyjnych w kolejnych m2 ograniczeniach mniejszościowych. Wektory b1, b2 to wektory wyrazów wolnych w ograniczeniach
Przebieg ćwiczenia.
Przykład I X ≠ O , istnieje optymalne rozwiązanie dla n = 2
Min { x0 = -2x1 + x2 }
Ograniczenia:
$$\left\{ \begin{matrix}
2x_{1} + x_{2} \leq 1 \\
\ 4x_{1} - 3x_{2}\ \geq 2 \\
\end{matrix} \right.\ \ $$
x1, x2 ≥ 0
Rozwiązanie uzyskane przy użyciu Matlaba - linprog:
$$x = \left\lbrack \ \begin{matrix}
0.5\ \\
0 \\
\end{matrix} \right\rbrack$$
Fval = -1
Exitflag = 1
Iterations = 1
Algorithm = „simplex”
Interpretacja graficzna zadania:
Opis i rozwiązanie problemu LP z użyciem metody dwu fazowej.
Przed optymalizacją metoda simpleks, rozpoczynam od standaryzacji problemu. (Algorytm simpleks polega na badaniu postaci kanonicznej, więc przed przystąpieniem do budowy tablicy muszę zamienić wszystkie nierówności na równania.)
- Dla ograniczeń ze znakiem ≤ dodaję zmienne swobodne „slack” w celu utworzenia równań.
2x1 + x2 ≤ 1 → 2x1 + x2 + s1 = 1
- Dla ograniczeń ze znakiem ≥ odejmuję zmiennych swobodną / nadmiarową „excess” i dodaję zmienną sztuczą „artificial” w celu utworzenia równań.
4x1 − 3x2 ≥ 2 → 4x1 − 3x2 − e2 + a2 = 2
Faza I
Celem jest minimalizacja sumy wszystkich zmiennych sztucznych.
(W fazie I zaczynam od minimalizacji niezależnie od tego czy oryginalną funkcją celu jest minimalizacja czy maksymalizacja).
Ponieważ mam tylko jedną zmienną sztuczną, więc moją funkcją celu jest:
Min x0 = a2
Następnie standaryzuję funkcję celu:
x0 = a2 → x0 − a2 = 0
Dodatkowo należy zaznaczy, że wszystkie zmienne decyzyjne mają wartości dodatnie. Tj:
x1, x2,s1, e2, a2 ≥ 0
Przechodzę do tworzenia tabeli simpleksowej. (RHS – „right hand side” – prawa strona równania)
x1 | x2 | s1 | a2 | e2 | RHS | |
---|---|---|---|---|---|---|
s1 | 2 | 1 | 1 | 0 | 0 | 1 |
a2 | 4 | -3 | 0 | 1 | -1 | 2 |
x0 | 0 | 0 | 0 | -1 | 0 | 0 |
W kolumnie zmiennej bazowej a2 dla rzędu x0 występuje wartość -1, co nie jest zgodne z typową definicją zmiennych bazowych. Innymi słowy wartość 1 może występować tylko w kolumnie i rzędzie a2, a w innych rzędach dla tej kolumny musi występować 0.
Z tego powodu wykonuję operację elementarną Rx1 -> Rx1 + Ra2
x1 | x2 | s1 | a2 | e2 | RHS | |
---|---|---|---|---|---|---|
s1 | 2 | 1 | 1 | 0 | 0 | 1 |
a2 | 4 | -3 | 0 | 1 | -1 | 2 |
x0 | 4 | -3 | 0 | 0 | -1 | 2 |
Warunkiem optymalizacji w tym kroku będzie osiągnięcie tabeli, w której wszystkie współczynniki zmiennych w rzędzie x0 będą ≤0
Krok 1. Znajduję największą dodatnią wartość w rzędzie x0, Kolumna x1, w której znajduje się ta wartość to tzw. oś „pivot” (W celach wyjaśnień dla kolejnych przykładów, zaznacza, że gdyby operacja ta dotyczyła maksymalizacji, musiał bym wybrać najmniejsza ujemną wartość w tym kroku).
Krok 2. Wykonuję test minimum, dla wartości dodatnich w kolumnie x1.
min { RHSk / x1k } – wybieram najmniejszą z obliczonych wartości (lub dowolną, jeśli są różne), a rząd, którego dotyczy będzie tzw. rzędem osi.
x1 | x2 | s1 | a2 | e2 | RHS | Min test | |
---|---|---|---|---|---|---|---|
s1 | 2 | 1 | 1 | 0 | 0 | 1 | $$\frac{1}{2}$$ |
a2 | 4 | -3 | 0 | 1 | -1 | 2 | $$\frac{2}{4} = \frac{1}{2}$$ |
x0 | 4 | -3 | 0 | 0 | -1 | 2 |
Rząd i kolumna osi wyznaczają teraz tzw. Wartość osi. W kolejnej tabeli zamieniam więc a2 z x1
Wykonuję kolejno następujące operacje elementarne w celu uzyskania, jak wcześniej opisałem odpowiednich wartości dla zmiennych bazowych w kolumnie x1. Tzn. 1 w osi oraz 0 dla innych wartości dla kolumny x1.
R3 -> -R2 + R3
R2 -> R2 / 4
R1 -> -2R2 + R1
x1 | x2 | s1 | a2 | e2 | RHS | |
---|---|---|---|---|---|---|
s1 | 0 | $$\frac{5}{2}$$ |
1 | $$\frac{- 1}{2}$$ |
$$\frac{1}{2}$$ |
0 |
x1 | 1 | $$\frac{- 3}{4}$$ |
0 | $$\frac{1}{4}$$ |
$$\frac{- 1}{4}$$ |
$$\frac{1}{2}$$ |
x0 | 0 | 0 | 0 | -1 | 0 | 0 |
Otrzymane współczynniki w rzędzie x0 są ≤0 więc osiągnięty został warunek na optimum i tabela jest optymalna.
W zmiennych bazowych, dzięki powyższym operacjom zniknęła nam zmienna sztuczna. Możemy teraz zinterpretować tabele, jako:
s1 = 0, x1 = 0.5
x2 = e2 = a2 = 0
x0 = a2 = 0
Wartość funkcji celu to 0, co implikuje, że wartość zmiennej sztucznej to również zero i problem ma „rozwiązywalne” rozwiązanie.
Faza II
Przechodzę teraz do rozwiązywania oryginalnej funkcji, skoro pozbyłem się sztucznej zmiennej, i mogę usunąć jej kolumnę.
Analogicznie jak pokazałem w fazie pierwszej standaryzuję problem, przekształcam w celu otrzymania odpowiednich wartości dla zmiennych bazowych, wykonuje test minimum, i tak aż do osiągnięcia warunku na optymalną tabelę.
max { x0 = -2x1 + x2 }
min x0 + 2x1 − x2 = 0
x1 | x2 | s1 | e2 | RHS | |
---|---|---|---|---|---|
s1 | 0 | $$\frac{5}{2}$$ |
1 | $$\frac{1}{2}$$ |
0 |
x1 | 1 | $$\frac{- 3}{4}$$ |
0 | $$\frac{- 1}{4}$$ |
$$\frac{1}{2}$$ |
x0 | 2 | -1 | 0 | 0 | 0 |
R3 -> -2R2 + R1
x1 | x2 | s1 | e2 | RHS | |
---|---|---|---|---|---|
s1 | 0 | $$\frac{5}{2}$$ |
1 | $$\frac{1}{2}$$ |
0 |
x1 | 1 | $$\frac{- 3}{4}$$ |
0 | $$\frac{- 1}{4}$$ |
$$\frac{1}{2}$$ |
x0 | 0 | $$\frac{1}{2}$$ |
0 | $$\frac{1}{2}$$ |
-1 |
$$R_{1} \rightarrow \frac{2}{5}R_{1}$$
$$R_{2} \rightarrow \frac{3}{4}R_{1} + \ R_{2}$$
$$R_{3} \rightarrow \frac{- 1}{2}R_{1} + \ R_{3}$$
x1 | x2 | s1 | e2 | RHS | |
---|---|---|---|---|---|
x2 | 0 | 1 | $$\frac{2}{5}$$ |
$$\frac{1}{5}$$ |
0 |
x1 | 1 | 0 | $$\frac{3}{10}$$ |
$$\frac{- 1}{10}$$ |
$$\frac{1}{2}$$ |
x0 | 0 | 0 |
$$\frac{- 1}{5}$$ |
$$\frac{2}{5}$$ |
-1 |
$$R_{2} \rightarrow \frac{R_{1}}{2} + \ R_{2}$$
R3 → −2R1 + R3
R1 → 5R1
x1 | x2 | s1 | e2 | RHS | |
---|---|---|---|---|---|
e2 | 0 | 5 | 2 | 1 | 0 |
x1 | 1 | $$\frac{1}{2}$$ |
$$\frac{1}{10}$$ |
0 |
$$\frac{1}{2}$$ |
x0 | 0 | -2 | $$\frac{- 3}{5}$$ |
0 |
-1 |
Otrzymane współczynniki w rzędzie x0 są ≤0 więc osiągnęliśmy warunek na optimum w przypadku dla minimalizacji i tabela jest optymalna.
Interpretacja wyników:
X1 = 0.5
X2 = 0
X0 = -1
Wnioski:
Otrzymaliśmy wyniki takie same jak w przypadku obliczeń w matlabie. Ilość iteracji nie zgadza się z liczbą tablic, ponieważ matlab zlicza je począwszy od fazy II.
Przykład II X = O , zbiór pusty, zadanie nie ma rozwiązania dla n = 2
Min { x0 = 2x1 + x2 }
Ograniczenia:
$$\left\{ \begin{matrix}
- 4x_{1} + 3x_{2} \leq 2 \\
- 2x_{1} - x_{2}\ \geq 1 \\
\end{matrix} \right.\ \ $$
x1, x2 ≥ 0
Rozwiązanie uzyskane przy użyciu Matlaba - linprog:
x = [ ]
fval = [ ]
Output:
No feasible points exists.
Exitflag = -2
Iterations = 0
Algorithm = „simplex”
Interpretacja graficzna zadania:
Opis i rozwiązanie problemu LP z użyciem metody dwu fazowej.
Standaryzacja:
−4x1 + 3x2 ≤ 2 → − 4x1 + 3x2 + s1 = 2
−2x1 − x2 ≥ 1 → − 2x1 − x2 − e2 + a2 = 1
Założenia:
x1, x2,s1, e2, a2 ≥ 0
Funkcja celu:
min x0 = a2
Standaryzacja funkcji celu:
x0 = a2 → x0 − a2 = 0
Tablica simpleksowa:
x1 | x2 | s1 | a2 | e2 | RHS | |
---|---|---|---|---|---|---|
s1 | -4 | 3 | 1 | 0 | 0 | 2 |
a2 | -2 | -1 | 0 | 1 | -1 | 1 |
x0 | 0 | 0 | 0 | -1 | 0 | 0 |
R3 → R2 + R3
x1 | x2 | s1 | a2 | e2 | RHS | |
---|---|---|---|---|---|---|
s1 | -4 | 3 | 1 | 0 | 0 | 2 |
a2 | -2 | -1 | 0 | 1 | -1 | 1 |
x0 | -2 | -1 | 0 | 0 | -1 | 1 |
Interpretacja wyników:
Nie można wybrać, największej dodatniej wartości w rzędzie x0, co oznacza, że nie ma optymalnego rozwiązania i minimalizacja nie jest możliwa.
Nie ma sensu wybierać również „zer”, ponieważ skutkowałoby to tzw. zapętleniem i nigdy nie otrzymalibyśmy wyniku.
Wynik zgodny, z obliczeniami w matlabie.
Przykład III X ≠ O , wektor x przyjmuje wartości z zakresu licz rzeczywistych tzn: x ∈ Rn- lub tylko kilka składowych wektora x i ∈ R i istnieje rozwiązanie optymalne zadania.
Funkcja celu:
max x0 = x1 − 2x2
Ograniczenia:
$$\left\{ \begin{matrix}
- 4x_{1} + 2x_{2} \leq 8 \\
2x_{1} - 3x_{2} \leq 3 \\
3x_{1} + 2x_{2} \leq 6 \\
\end{matrix} \right.\ \ $$
x1, x2 ∈ R
Rozwiązanie uzyskane przy użyciu Matlaba - linprog:
$$x = \left\lbrack \ \begin{matrix}
- 3.75\ \\
- 3.5 \\
\end{matrix} \right\rbrack$$
Fval = -3.25
Exitflag = 1
Iterations = 2
Algorithm = „simplex”
Interpretacja graficzna zadania:
Opis i rozwiązanie problemu LP z użyciem metody dwu fazowej.
Wprowadzam zmienne swobodne z powodu braku ograniczeń dla x1 i x2 w celu sprowadzenia zadania do postaci standardowej.
x1 = u1 − v1
x2 = u2 − v2
Standaryzacja:
−4x1 + 2x2 ≤ 8 → − 4(u1 − v1)+2(u2 − v2)+ s1 = 8
2x1 − 3x2 ≤ 3 → 2(u1 − v1)−3(u2 − v2)+ s2 = 3
3x1 + 2x2 ≤ 6 → 3(u1 − v1)+2(u2 − v2)+ s3 = 6
x0 = x1 − 2x2 → x0 − (u1 − v1)+2(u2 − v2)=0
Tablica simpleksowa:
u1 | v1 | u2 | v2 | s1 | s2 | s3 | RHS | Min test | |
---|---|---|---|---|---|---|---|---|---|
s1 | -4 | 4 | 2 | -2 | 1 | 0 | 0 | 8 | - |
s2 | 2 | -2 | -3 | 3 | 0 | 1 | 0 | 3 | 1 |
s3 | 3 | -3 | 2 | -2 | 0 | 0 | 1 | 6 | - |
x0 | -1 | 1 | 2 | -2 | 0 | 0 | 0 | 0 |
$$R_{2} \rightarrow \frac{R_{2}}{3}$$
R1 → 2R2 + R1
R3 → 2R2 + R3
R4 → 2R2 + R4
u1 | v1 | u2 | v2 | s1 | s2 | s3 | RHS | Min test | |
---|---|---|---|---|---|---|---|---|---|
s1 | $$\frac{- 8}{3}$$ |
$$\frac{8}{3}$$ |
0 | 0 | 1 | $$\frac{2}{3}$$ |
0 | 10 | $$\frac{15}{4}$$ |
v2 | $$\frac{2}{3}$$ |
$$\frac{- 2}{3}$$ |
-1 | 1 | 0 | $$\frac{1}{3}$$ |
0 | 1 | - |
s3 | $$\frac{13}{3}$$ |
$$\frac{- 13}{3}$$ |
0 | 0 | 0 | $$\frac{2}{3}$$ |
1 | 8 | - |
x0 | $$\frac{1}{3}$$ |
$$\frac{- 1}{3}$$ |
0 | 0 | 0 | $$\frac{- 2}{3}$$ |
0 | 2 |
$$R_{2} \rightarrow \frac{R_{1}}{4} + \ R_{2}$$
$$R_{3} \rightarrow \frac{{13R}_{1}}{8} + \ R_{3}$$
$$R_{1} \rightarrow \frac{{3R}_{1}}{8}$$
$$R_{4} \rightarrow \frac{1R_{1}}{3} + \ R_{4}$$
u1 | v1 | u2 | v2 | s1 | s2 | s3 | RHS | |
---|---|---|---|---|---|---|---|---|
v1 | -1 | 1 | 0 | 0 | $$\frac{3}{8}$$ |
$$\frac{1}{4}$$ |
0 | $$\frac{15}{4} = 3.75$$ |
v2 | 0 | 0 | -1 | 1 | 0 | $$\frac{1}{2}$$ |
0 | $$\frac{7}{2} = 3.5$$ |
s3 | 0 | 0 | 0 | 0 | $$\frac{13}{8}$$ |
$$\frac{7}{4}$$ |
1 | $$\frac{97}{4}$$ |
x0 | 0 | 0 | 0 | 0 | $$\frac{1}{8}$$ |
$$\frac{3}{4}$$ |
0 | $$\frac{13}{4} = 3.25$$ |
Interpretacja wyników:
x1 = u1 − v1 = 0 − 3.75 = − 3.75
x2 = u2 − v2 = 0 − 3.5 = − 3.5
x0 = 3.25
Ilość iteracji otrzymanych w wyniku działania funkcji linprog w matlabie nie zgadza się z liczbą tablic, ponieważ matlab zlicza je począwszy od fazy II.
Wartość funkcji fval, również nie zgadza się, ponieważ, matlab z użyciem linprog liczy tylko minimum, przez co wartości obliczone zgadzają się, ale ich znak się nie zgadza (są przeciwne).
Przykład IV Przykład praktyczny. Zadanie PL z większa liczbą zmiennych (n>2)
Treść zadania:
Babcia Genowefa zachorowała na grypę. Bakterie można zabić na trzy sposoby.
-Antybiotykami - x1
-Alkoholem – x2
-Wodą z cytryną – x3
Przyjęcie 1 porcji Antybiotyku zabija 40 Mld bakterii
Przyjęcie 1 porcji Alkoholu zabija 5 Mld bakterii
Przyjęcie 1 porcji Wody z cytryną zabija 1 Mld bakterii
Działanie 1 porcji Antybiotyku trwa 24h
Działanie 1 porcji Alkoholu trwa 5h
Działanie 1 porcji Wody z cytryną trwa 1h
Nie wolno podawać innych leków, kiedy działanie poprzedniego nie skończyło się. Kuracja nie może trwać więcej niż 7 dni, bo bakterie uodpornia się na Leki.
Koszt 1 porcji Antybiotyku wynosi 10 zł
Koszt 1 porcji Alkoholu wynosi 3 zł
Koszt 1 porcji Wody z cytryną wynosi 1 zł
Babcia może ze swojej renty wydać maksymalnie 31 zł, w innym wypadku nie będzie mieć, co jeść.
Należy ustalić dla babci kurację, która zabije najwięcej bakterii, za założeniem, że babcia przynajmniej raz spróbuje wody z cytryną, żeby się wyleczyć.
Rozwiązanie uzyskane przy użyciu Matlaba - linprog:
$$x = \left\lbrack \ \begin{matrix}
3\ \\
\begin{matrix}
0\ \\
1 \\
\end{matrix} \\
\end{matrix} \right\rbrack$$
Fval = -121
Exitflag = 1
Iterations = 1
Algorithm = „simplex”
Funkcja celu:
max x0 = 40x1 + 5x2 + x3 [Mld bakt.]
Objaśnienia:
-Współczynniki w funkcji celu oznaczają ilość zabitych w Mld bakterii przypadająca na 1 porcję $\lbrack Mld\frac{\text{bakt.}}{porcje}\rbrack\ \ \ $
-Zmiennymi w funkcji celu jest ilość porcji.
Ograniczenia:
$$\left\{ \begin{matrix}
\ 24x_{1} + {5x}_{2} + x_{3} \leq 168\ \lbrack godziny\rbrack \\
\ 10x_{1} + {3x}_{2} + x_{3} \leq 31\ \lbrack PLN\rbrack \\
x_{3} \geq 1 \\
\end{matrix} \right.\ \ $$
x1, x2, x3 ≥ 0
Objaśnienia:
-Współczynniki w pierwszym ograniczeniu oznaczają ilość godzin działania leku przypadająca na 1 porcję leku $\lbrack\frac{\text{godziny}}{porcje}\rbrack\ \ \ $
-Współczynniki w drugim ograniczeniu funkcji oznaczają ilość złotych (kosztów) przypadająca na 1 porcję leku $\lbrack\frac{\text{PLN}}{porcje}\rbrack\ \ \ $
-Trzecie ograniczenie oznacza, że ilość przyjętych przez pacjenta porcji wody z cytryną ma być większa lub równa 1
Standaryzacja:
24x1 + 5x2 + x3 ≤ 168 → 24x1 + 5x2 + x3 + s1 = 168
10x1 + 3x2 + x3 ≤ 31 → 10x1 + 3x2 + x3 + s2 = 31
x3 ≥ 1 → x3 − e3 + a3 = 31
Faza I
Funkcją celu w fazie I:
min = x0 = a3
Standaryzacja funkcji celu:
x0 = a3 → x0 − a3 = 0
Tablica smipleks:
x1 | x2 | x3 | s1 | s2 | a3 | e3 | RHS | |
---|---|---|---|---|---|---|---|---|
s1 | 24 | 5 | 1 | 1 | 0 | 0 | 0 | 168 |
s2 | 10 | 3 | 1 | 0 | 1 | 0 | 0 | 31 |
a3 | 0 | 0 | 1 | 0 | 0 | 1 | -1 | 1 |
x0 | 0 | 0 | 0 | 0 | 0 | -1 | 0 | 0 |
R4 → R3 + R4
x1 | x2 | x3 | s1 | s2 | a3 | e3 | RHS | Min test | |
---|---|---|---|---|---|---|---|---|---|
s1 | 24 | 5 | 1 | 1 | 0 | 0 | 0 | 168 | 168 |
s2 | 10 | 3 | 1 | 0 | 1 | 0 | 0 | 31 | 31 |
a3 | 0 | 0 | 1 | 0 | 0 | 1 | -1 | 1 | 1 |
x0 | 0 | 0 | 1 | 0 | 0 | 0 | -1 | 1 |
R1 → −R3 + R1
R2 → −R3 + R2
R4 → −R3 + R4
x1 | x2 | x3 | s1 | s2 | a3 | e3 | RHS | |
---|---|---|---|---|---|---|---|---|
s1 | 24 | 5 | 0 | 1 | 0 | -1 | 1 | 167 |
s2 | 10 | 3 | 0 | 0 | 1 | -1 | 1 | 30 |
x3 | 0 | 0 | 1 | 0 | 0 | 1 | -1 | 1 |
x0 | 0 | 0 | 0 | 0 | 0 | -1 | 0 | 0 |
Warunek optymalności tablicy spełniony.
x0 = a3 = 0
Faza II
Funkcją celu w fazie II - maksymalizacja
max x0 − 40x1 − 5x2 − x3 = 0
x1 | x2 | x3 | s1 | s2 | e3 | RHS | |
---|---|---|---|---|---|---|---|
s1 | 24 | 5 | 0 | 1 | 0 | 1 | 167 |
s2 | 10 | 3 | 0 | 0 | 1 | 1 | 30 |
x3 | 0 | 0 | 1 | 0 | 0 | -1 | 1 |
x0 | -40 | -5 | -1 | 0 | 0 | 0 | 0 |
R4 → R3 + R4
x1 | x2 | x3 | s1 | s2 | e3 | RHS | Min test | |
---|---|---|---|---|---|---|---|---|
s1 | 24 | 5 | 0 | 1 | 0 | 1 | 167 | $$\frac{167}{24} = 6.958(3)$$ |
s2 | 10 | 3 | 0 | 0 | 1 | 1 | 30 | $$\frac{30}{10} = 3$$ |
x3 | 0 | 0 | 1 | 0 | 0 | -1 | 1 | - |
x0 | -40 | -5 | 0 | 0 | 0 | -1 | 1 |
R4 → 4R2 + R4
$$R_{2} \rightarrow \frac{R_{2}}{10}$$
R1 → −24R2 + R1
x1 | x2 | x3 | s1 | s2 | e3 | RHS | |
---|---|---|---|---|---|---|---|
s1 | 0 | $$\frac{- 11}{5}$$ |
0 | 1 | $$\frac{- 24}{10}$$ |
$$\frac{- 14}{10}$$ |
95 |
x1 | 1 | $$\frac{3}{10}$$ |
0 | 0 | $$\frac{1}{10}$$ |
$$\frac{1}{10}$$ |
3 |
x3 | 0 | 0 | 1 | 0 | 0 | -1 | 1 |
x0 | 0 | 7 | 0 | 0 | 4 | 3 | 121 |
Otrzymane współczynniki w rzędzie x0 są ≥0 więc osiągnęliśmy warunek na optimum w przypadku dla maksymalizacji i tabela jest optymalna.
Interpretacja wyników:
X1 = 3
X2 = 0
X3 = 1
X0 = 121
Wnioski:
Ilość iteracji otrzymanych w wyniku działania funkcji linprog w matlabie nie zgadza się z liczbą tablic, ponieważ matlab zlicza je począwszy od fazy II.
Wartość funkcji fval, również nie zgadza się, ponieważ, matlab z użyciem linprog liczy tylko minimum, przez co wartości obliczone zgadzają się, ale ich znak się nie zgadza (są przeciwne).