Laboratorium Metod Optymalizacji



Podobne dokumenty
Kolejny krok iteracji polega na tym, że przechodzimy do następnego wierzchołka, znajdującego się na jednej krawędzi z odnalezionym już punktem, w

Document: Exercise*02*-*manual /11/ :31---page1of8 INSTRUKCJA DO ĆWICZENIA NR 2

Programowanie liniowe metoda sympleks

METODA SYMPLEKS. Maciej Patan. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski

Programowanie liniowe metoda sympleks

Metoda graficzna może być stosowana w przypadku gdy model zawiera dwie zmienne decyzyjne. Metoda składa się z dwóch kroków (zobacz pierwszy wykład):

Spis treści. Koszalin 2006 [BADANIA OPERACYJNE PROGRAMOWANIE LINIOWE]

Teoretyczne podstawy programowania liniowego

Programowanie liniowe

ZAGADNIENIA PROGRAMOWANIA LINIOWEGO

Programowanie liniowe metoda sympleks

Ekonometria - ćwiczenia 10

Układy równań i nierówności liniowych

Definicja problemu programowania matematycznego

Programowanie liniowe

PROGRAMOWANIE NIELINIOWE

Algorytm simplex i dualność

Rozdział 1 PROGRAMOWANIE LINIOWE

Wprowadzenie do badań operacyjnych - wykład 2 i 3

Programowanie liniowe

Metoda simpleks. Gliwice

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Algebra liniowa. Macierze i układy równań liniowych

Plan wykładu. Przykład. Przykład 3/19/2011. Przykład zagadnienia transportowego. Optymalizacja w procesach biznesowych Wykład 2 DECYZJA?

Programowanie liniowe. Tadeusz Trzaskalik

Rozdział 6 PROGRAMOWANIE WYPUKŁE I KWADRATOWE

Wykład 5. Metoda eliminacji Gaussa

ROZWIĄZYWANIE UKŁADÓW RÓWNAŃ NIELINIOWYCH PRZY POMOCY DODATKU SOLVER PROGRAMU MICROSOFT EXCEL. sin x2 (1)

1 Przykładowe klasy zagadnień liniowych

Programowanie matematyczne

Układy równań liniowych. Ax = b (1)

TOZ -Techniki optymalizacji w zarządzaniu

//warunki początkowe m=500; T=30; c=0.4; t=linspace(0,t,m); y0=[-2.5;2.5];

Układy równań liniowych

Rozdział 1 PROGRAMOWANIE LINIOWE

Uniwersytet Kardynała Stefana Wyszyńskiego Wydział Matematyczno-Przyrodniczy Szkoła Nauk Ścisłych. Piotr Kaczyński. Badania Operacyjne

Programowanie celowe #1

Układy równań liniowych i metody ich rozwiązywania

Elementy Modelowania Matematycznego

Wykład z modelowania matematycznego. Zagadnienie transportowe.

Rozdział 2 PROGRAMOWANIE LINIOWE CAŁKOWITOLICZBOWE

Programowanie liniowe całkowitoliczbowe. Tadeusz Trzaskalik

ZASTOSOWANIE PROGRAMOWANIA LINIOWEGO W ZAGADNIENIACH WSPOMAGANIA PROCESU PODEJMOWANIA DECYZJI

Elementy modelowania matematycznego

Modele i narzędzia optymalizacji w systemach informatycznych zarządzania

Zagadnienie transportowe

Wykład 6. Programowanie liniowe

Aproksymacja funkcji a regresja symboliczna

Elementy Modelowania Matematycznego Wykład 7 Programowanie nieliniowe i całkowitoliczbowe

doc. dr Beata Pułska-Turyna Zarządzanie B506 mail: mgr Piotr J. Gadecki Zakład Badań Operacyjnych Zarządzania B 505.

Metody numeryczne Wykład 4

( 1) ( ) 16 Warunki brzegowe [WB] Funkcja celu [FC] Ograniczenia [O] b i ( 2) ( ) ( ) 14. FC max. Kompletna postać bazowa

UKŁADY RÓWNAŃ LINIOWYCH - Metody dokładne

A. Kasperski, M. Kulej Badania Operacyjne- programowanie liniowe 1

Obliczenia iteracyjne

Elementy Modelowania Matematycznego

3. Macierze i Układy Równań Liniowych

Optymalizacja ciągła

Metoda eliminacji Gaussa. Autorzy: Michał Góra

Wykład z modelowania matematycznego. Algorytm sympleks.

Układy liniowo niezależne

A. Kasperski, M. Kulej Badania Operacyjne- metoda sympleks 1

PROGRAMOWANIE KWADRATOWE

Przekształcanie równań stanu do postaci kanonicznej diagonalnej

UKŁADY RÓWNAŃ LINIOWYCH -Metody dokładne

Układy równań liniowych. Krzysztof Patan

Równania nieliniowe, nieliniowe układy równań, optymalizacja

Programowanie liniowe

ROZWIĄZYWANIE RÓWNAŃ NIELINIOWYCH

Badania Operacyjne Ćwiczenia nr 4 (Materiały)

d) Definiowanie macierzy z wykorzystaniem funkcji systemu Matlak

Iwona Konarzewska Programowanie celowe - wprowadzenie. Katedra Badań Operacyjnych UŁ

ZAGADNIENIE TRANSPORTOWE

BADANIA OPERACYJNE pytania kontrolne

UKŁADY RÓWNAŃ LINIOWYCH

METODY NUMERYCZNE. wykład. konsultacje: wtorek 10:00-11:30 środa 10:00-11:30. dr inż. Grażyna Kałuża pokój

Zaawansowane metody numeryczne

Równania nieliniowe, nieliniowe układy równań, optymalizacja

BADANIA OPERACYJNE Zagadnienie transportowe. dr Adam Sojda

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Metody systemowe i decyzyjne w informatyce

= Zapiszemy poniższy układ w postaci macierzy. 8+$+ 2&=4 " 5 3$ 7&=0 5$+7&=4

wszystkich kombinacji liniowych wektorów układu, nazywa się powłoką liniową uk ładu wektorów

Rozwiązywanie układów równań liniowych

Funkcje Andrzej Musielak 1. Funkcje

PLAN WYNIKOWY (zakres podstawowy) klasa 2. rok szkolny 2015/2016

Rozwiązanie Ad 1. Model zadania jest następujący:

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

Programowanie nieliniowe. Badania operacyjne Wykład 3 Metoda Lagrange a

1 Układy równań liniowych

UKŁADY RÓWNAŃ LINIOWYCH

FUNKCJA LINIOWA, RÓWNANIA I UKŁADY RÓWNAŃ LINIOWYCH

Treść wykładu. Układy równań i ich macierze. Rząd macierzy. Twierdzenie Kroneckera-Capellego.

Wprowadzenie do Mathcada 1

A. Kasperski, M. Kulej, Badania operacyjne, Wykład 4, Zagadnienie transportowe1

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

Równania liniowe. Rozdział Przekształcenia liniowe. Niech X oraz Y będą dwiema niepustymi przestrzeniami wektorowymi nad ciałem

METODA ANALITYCZNA Postać klasyczna: z = 5 x 1 + 6x 2 MAX 0,2 x 1 + 0,3x 2 < 18 0,6 x 1 + 0,6x 2 < 48 x 1, x 2 > 0

Metoda Simplex bez użycia tabel simplex 29 kwietnia 2010

Wielokryteriowa optymalizacja liniowa

Transkrypt:

Laboratorium Metod Optymalizacji Grupa nr... Sekcja nr... Ćwiczenie nr 4 Temat: Programowanie liniowe (dwufazowa metoda sympleksu). Lp. 1 Nazwisko i imię Leszek Zaczyński Obecność ocena Sprawozdani e ocena Ocena średnia Uwagi 2 Krzysztof Wojsa 3 4 5 6 Ćwiczenie wykonano Sprawozdanie oddano Data 19 grudnia 27 Data

Treść zadania Napisać program implementujący rozwiązywanie zagadnienia programowania liniowego za pomocą dwufazowej metody sympleksu. Program powinien wykrywać sytuacje patologiczne (brak rozwiązań, nieskończenie wiele rozwiązań). Dodatkowym atutem programu będzie wyświetlanie tablicy sympleksowej. Teoria Zadanie programowania liniowego (LP): Zadanie programowania liniowego w postaci standardowej polega na minimalizacji funkcji: Przy zadanych ograniczeniach (*): (i) (ii) Ax=b; A=[a ii ] ; b=[b i ] ; b i ; i=1, 2,..., M ; j=1, 2,..., N ; M<N W praktyce występują też ograniczenia w postaci nierówności które można jednak sprowadzić do równości wprowadzając dodatkowe zmienne (tzw. zmienne dopełniające), z odpowiednim współczynnikiem (-1 lub 1). Idea algorytmu symplex: Ograniczenia (*) wyznaczają w R N wielościan, tzw. sympleks, zaś wartość minimalna funkcji F może być osiągnięta jedynie w wierzchołkach tego sympleksu (jeżeli w więcej niż jednym wierzchołku funkcja F ma wartość minimalną, to na odcinku łączącym te wierzchołki też przyjmuje wartość minimalną). Współrzędne wierzchołków sympleksu można uzyskać rozwiązując układ równań (ii) dla M współrzędnych różnych od (tzw. współrzędnych bazowych) i pozostałych N-M współrzędnych równych. Algorytm sympleksu można podzielić na dwie fazy: w pierwszej znajdywane jest dowolne rozwiązanie dopuszczalne (tzn. takie w którym wartości M niezerowych zmiennych są nieujemne). W kolejnej fazie rozwiązanie to jest konsekwentnie poprawiane poprzez odpowiednią podmianę wektorów tworzących bazę (inny wybór współrzędnych bazowych) - sprawdzanie kolejnych wierzchołków sympleksu. Do osiągnięcia punktu optymalnego potrzeba co najwyżej N takich podmian. I etap: Jedną z metod znalezienia rozwiązania dopuszczalnego jest rozwiązanie następującego problemu pomocniczego który też jest zadaniem programowania liniowego (jednak z danym rozwiązaniem dopuszczalnym) z funkcją celu postaci: 2

gdzie - wektor zmiennych sztucznych (i równocześnie początkowy wektor zmiennych bazowych generujący dopuszczalne rozwiązanie problemu pomocniczego). i ograniczeniami:,, gdzie IM -macierz jednostkowa. Oczywiście wartość minimalna funkcji G wynosi (wystarczy że pozbędziemy się z bazy wszystkich zmiennych sztucznych) gdy istnieje rozwiązanie oryginalnego problemu LP. Rozwiązanie problemu pomocniczego jest równocześnie początkowym rozwiązaniem problemu oryginalnego (wymaganym w II etapie). II etap: Oznaczenia: Po fazie I (i dalej w każdej iteracji) otrzymujemy nasze zadanie w postaci kanonicznej: gdzie, wektor - to wektor zmiennych bazowych która wyznacza następujące rozwiązanie dopuszczalne: i Implementacja - program przyjmuje zmienne w postaci x1,x2,..,xn - program przyjmuje ograniczenia podawane kolejno oddzielone znakiem ";" - program sprowadza zadanie do postaci standardowej przy ograniczeniach zdefiniowanych nastepujaco: <=, >=, jest chcemy rozpatrzeć przypadek >= <= lub odwrotny to musimy go po prostu rozpisać na dwa oddzielne i przedzielić średnikiem -zakładamy ze każda cyfra w zadanych równaniach jest poprzedzona znakiem + lub - Wyniki 1. min 2x 1 +x 2 3

p.o. x 1 +x 2 3 x 1 +2x 2 4 x n Rozwiązanie: dwufazowysympleks('+2x1+1x2','+1x1+1x2>=+3;+1x1+2x2>=+4') Rownania w postaci macierzowej: 2 1 1 1-1 3 1 2-1 4 Faza 1 Macierz po dodaniu sztucznych zmiennych: 2 1 1 1 1 1-1 1 3 1 2-1 1 4 kolejne kroki algorytmu: -2-3 1 1-7 1 1-1 1 3 1 2-1 1 4 zmienne bazowe:x5x6 -.5 1 -.5 1.5-1.5-1.5 1 -.5 1.5 1 -.5.5 2 zmienne bazowe:x5x2 1 1 1-2 1 2-1 2 1 1-1 -1 1 1 zmienne bazowe:x1x2 Faza 2 3-1 -5 1-2 1 2 1 1-1 1 zmienne bazowe:x1x2 1 1-3 1-2 1 2 1 1-1 3 zmienne bazowe:x4x2 Punkt optymalny: x1= x2=3 x3= x4=2 Wartosc funkcji celu w bazowym rozwiazaniu dopuszczalnym: f(x)=3 Rozwiązanie za pomocą wbudowanej metody matlaba linpgrog: 4

f=[2; 1; ; ] >> Aeq=[1 1-1 ; 1 2-1] >> beq=[3; 4] >> lb=zeros(4,1) >> options=optimset('largescale','off','simplex','on') >> [x,fval,exitflag,output]=linprog(f,[],[],aeq,beq,lb,[], [],options) Optimization terminated. x = 3 2 fval =3 exitflag =1 output = iterations: 2 algorithm: 'medium scale: simplex' cgiterations: [] message: 'Optimization terminated.' 2. min x 1 +2x 2 +3x 3 +4x 4 p.o. x 1 +x 2 +x 3 +x 4 =1 x1+x 3-3x 4 =1/2 x n Rozwiązanie: dwufazowysympleks('+1x1+2x2+3x3+4x4','+1x1+1x2+1x3+1x4= +1;+1x1+1x3-3x4=+1/2') Rownania w postaci macierzowej: 1 2 3 4 1 1 1 1 1 1 1-3.5 Faza 1 Macierz po dodaniu sztucznych zmiennych: 1 2 3 4 1 1 1 1 1 1 1 1-3 1.5 kolejne kroki algorytmu: -1-1 3 -.5 1 1 1 1 1 1 1-3 1.5 5

zmienne bazowe:x2x5 1 1 4-1.5 1 1-3 1.5 zmienne bazowe:x2x1 Faza 2 2-1 -1.5 1 4.5 1 1-3.5 zmienne bazowe:x2x1.25 2-1.375.25 1.125 1.75 1.875 zmienne bazowe:x4x1 Punkt optymalny: x1=.875 x2= x3= x4=.125 Wartosc funkcji celu w bazowym rozwiazaniu dopuszczalnym: f(x)=1.375 Rozwiązanie za pomocą wbudowanej metody matlaba linpgrog: >> A=[1 1 1 1;1 1-3]; >> f=[1;2;3;4]; >> b=[1;.5]; >> lb=zeros(4,1); >> options = optimset('largescale', 'off', 'Simplex', 'on'); >> [x,fval,exitflag,output]=linprog(f,[],[],a,b,lb,[], [],options) Optimization terminated. x =.875.125 fval =1.375 exitflag =1 output = iterations: 1 algorithm: 'medium scale: simplex' cgiterations: [] message: 'Optimization terminated.' 6

3. min x2 p.o. -2x 1 +x 2-1 -x 1 +2x 2-2 x n >> dwufazowysympleks('-1x2','-2x1+1x2>=-1;-1x1+2x2<=-2') Nasze rozwiązanie: Rownania w postaci macierzowej: -1-2 1-1 -1-1 2 1-2 Faza 1 Macierz po dodaniu sztucznych zmiennych: -1 1 2-1 1 1 1-2 -1 1 2 kolejne kroki algorytmu: -1 2 1-2 2-1 1 1 1-2 -1 1 2 zmienne bazowe:x3x5 1.5.5 1-1.5 1 -.5.5.5-1.5 -.5-1 1 1.5 zmienne bazowe:x1x5 Nie usunieto wszystkich zmiennych sztucznych, zadanie jest SPRZECZNE. Rozwiązanie za pomocą wbudowanej metody matlaba linpgrog: >> f=[; -1; ; ]; >> A=[-2 1-1 ;-1 2 1]; >> b=[-1;-2]; >> lb=zeros(4,1); >> options = optimset('largescale', 'off', 'Simplex', 'on'); >> [x,fval,exitflag,output]=linprog(f,[],[],a,b,lb,[], [],options) Exiting: The constraints are overly stringent; no feasible starting point found. x = -1 fval =1 7

exitflag = -2 output = iterations: algorithm: 'medium scale: simplex' cgiterations: [] message: [1x8 char] 4. min =-x 2 p.o. -2x 1 +1x 2 +1x 3 =1-1x 1 +2x 2-1x 4 =-2 >> dwufazowysympleks('-1x2','-2x1+1x2+1x3=+1;-1x1+2x2-1x4=-2') Rownania w postaci macierzowej: -1-2 1 1 1-1 2-1 -2 Faza 2-1 -2 1 1 1 1-2 1 2 zmienne bazowe:x3x4-2 1 1-2 1 1 1-3 2 1 4 zmienne bazowe:x2x4 Zadanie jest NIEOGRANICZONE. Rozwiązanie za pomocą wbudowanej metody matlaba linpgrog: >> f=[;-1;;]; >> A=[-2 1 1 ;-1 2-1]; >> b=[1;-2]; >> lb=zeros(4,1); >> options = optimset('largescale', 'off', 'Simplex', 'on'); >> [x,fval,exitflag,output]=linprog(f,[],[],a,b,lb,[], [],options) Exiting: The problem is unbounded; the constraints are not restrictive enough. x = 1.e+16 * 2. 1. 3. fval = -1.e+16 exitflag = -3 output = iterations: 8

algorithm: 'medium scale: simplex' cgiterations: [] message: [1x78 char] Wnioski: Jak widać rozwiązania wszystkich przykładów za pomocą naszej implementacji metody dwufazowego sympleksu pokrywają się z rozwiązaniami metody wbudowanej w matlaba. W związku z tym możemy wysunąć wniosek że nasza implementacja metody jest poprawna. 9