Krzysztof Trajkowski. Przegląd pakietów do optymalizacji liniowej

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

1.2. Rozwiązywanie zadań programowania liniowego metodą geometryczną

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

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

Laboratorium WDEC. Opis posługiwania się pakietem AMPL

ZAGADNIENIE TRANSPORTOWE (część 1)

Zadania 1. Czas pracy przypadający na jednostkę wyrobu (w godz.) M 1. Wyroby

ZASTOSOWANIE PROGRAMOWANIA LINIOWEGO W ZAGADNIENIACH WSPOMAGANIA PROCESU PODEJMOWANIA DECYZJI

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

ZAGADNIENIE TRANSPORTOWE

Zadanie transportowe i problem komiwojażera. Tadeusz Trzaskalik

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

Programowanie liniowe

OPTYMALIZACJA W LOGISTYCE

Laboratorium Metod Optymalizacji

BADANIA OPERACYJNE pytania kontrolne

Wykład z modelowania matematycznego. Zagadnienie transportowe.

Programowanie liniowe

Optymalizacja procesów technologicznych przy zastosowaniu programowania liniowego

Zagadnienie transportowe

WYKORZYSTANIE NARZĘDZIA Solver DO ROZWIĄZYWANIA ZAGADNIEŃ TRANSPORTOWYCH Z KRYTERIUM KOSZTÓW

ZAGADNIENIE TRANSPORTOWE

BADANIA OPERACYJNE I TEORIE OPTYMALIZACJI. Zagadnienie transportowe

Definicja problemu programowania matematycznego

Ekonometria - ćwiczenia 10

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

Programowanie liniowe

maj 2014 Politechnika Gdańska Wydział Oceanotechniki i Okrętownictwa St. II stop., sem. I

Rozdział 3 ZADANIE TRANSPORTOWE I PROBLEM KOMIWOJAŻERA

1 Programowanie całkowitoliczbowe PLC

ZAGADNIENIE TRANSPORTOWE(ZT)

Politechnika Wrocławska, Wydział Informatyki i Zarządzania. Optymalizacja

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

Agenda. Politechnika Poznańska WMRiT ZST. Piotr Sawicki Optymalizacja w transporcie 1. Kluczowe elementy wykładu. WPROWADZENIE Cel i zakres wykładu.

Programowanie liniowe

Ekonometria - ćwiczenia 11

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

Programowanie liniowe

Wielokryteriowa optymalizacja liniowa

Agenda. Optymalizacja w transporcie. Piotr Sawicki WIT PP, ZST 1. Kluczowe elementy wykładu. WPROWADZENIE Cel i zakres wykładu.

TOZ -Techniki optymalizacji w zarządzaniu

Ekonometria Programowanie Liniowe. Robert Pietrzykowski

PROGRAMOWANIE KWADRATOWE

Rozwiązywanie zadań za pomocą pakietu WinQSB

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

1 Przykładowe klasy zagadnień liniowych

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

WYDZIAŁ ELEKTRYCZNY POLITECHNIKI WARSZAWSKIEJ INSTYTUT ELEKTROENERGETYKI ZAKŁAD ELEKTROWNI I GOSPODARKI ELEKTROENERGETYCZNEJ

WYKORZYSTANIE NARZĘDZIA Solver DO ROZWIĄZYWANIA ZAGADNIENIA Problem przydziału

Badania Operacyjne Ćwiczenia nr 6 (Materiały)

Programowanie liniowe całkowitoliczbowe. Tadeusz Trzaskalik

Dodatek Solver Teoria Dodatek Solver jest częścią zestawu poleceń czasami zwaną narzędziami analizy typu co-jśli (analiza typu co, jeśli?

Liniowe Zadanie Decyzyjne model matematyczny, w którym zarówno funkcja celu jak i warunki

ALGORYTMY EWOLUCYJNE W OPTYMALIZACJI JEDNOKRYTERIALNEJ

BADANIA OPERACYJNE Zagadnienie transportowe. dr Adam Sojda

Programowanie liniowe

OPTYMALIZACJA W LOGISTYCE

Rozwiązywanie problemów z użyciem Solvera programu Excel

Standardowe zadanie programowania liniowego. Gliwice 1

Badania Operacyjne Ćwiczenia nr 5 (Materiały)

Rozdział 6 PROGRAMOWANIE WYPUKŁE I KWADRATOWE

Wykład 7. Informatyka Stosowana. Magdalena Alama-Bućko. 16 kwietnia Magdalena Alama-Bućko Wykład 7 16 kwietnia / 23

Algorytm simplex i dualność

[1] R. K. Ahuja, T. L. Magnanti, J. B. Orlin, Network Flows: Theory, Algorithms, and Applications, Prentice Hall, 1993.

PROGRAMOWANIE WIELOKRYTERIALNE (CELOWE)

Programowanie matematyczne

Projekt Era inżyniera pewna lokata na przyszłość jest współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Rozwiązanie problemu transportowego metodą VAM. dr inż. Władysław Wornalkiewicz

Optymalizacja ciągła

Matura próbna 2014 z matematyki-poziom podstawowy

> x <-seq(-2*pi, 2*pi, by=0.5) > plot(x, sin(x), type="b",main="wykres funkcji sin(x) i cos(x)", col="blue") > lines(x, cos(x), type="l",col="red")

OPTYMALIZACJA DYSKRETNA

Materiał dotyczy generowania różnego typu wykresów w środowisku R.

M1 M2 M3 Jednostka produkcyjna W1 6h 3h 10h h/1000szt 2zł W2 8h 4h 5h h/100szt 25zł Max. czas pracy maszyn:

Rozdział 9 PROGRAMOWANIE DYNAMICZNE

PRZEWODNIK PO PRZEDMIOCIE

MATURA probna listopad 2010

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

Rozdział 1 PROGRAMOWANIE LINIOWE

Egzamin / zaliczenie na ocenę*

WYDZIAŁ ELEKTRYCZNY POLITECHNIKI WARSZAWSKIEJ INSTYTUT ELEKTROENERGETYKI ZAKŁAD ELEKTROWNI I GOSPODARKI ELEKTROENERGETYCZNEJ

ZAGADNIENIA TRANSPORTOWE

2017 R. Robert Gajewski: Mathcad Prime 4. Solution of examples Rozwiązania przykładów

PRZEWODNIK PO PRZEDMIOCIE

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

Elementy Modelowania Matematycznego

Ostatnia aktualizacja: 30 stycznia 2015 r.

Optymalizacja systemów

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

Metoda simpleks. Gliwice

ZAGADNIENIA PROGRAMOWANIA LINIOWEGO

Elementy Modelowania Matematycznego

, h(x) = sin(2x) w przedziale [ 2π, 2π].

Zad. 1 Liczba jest równa A B C D. Zad. 2 Liczba log16 jest równa A 3log2 + log8 B log4 + 2log3 C 3log4 log4 D log20 log4

Instalacja Pakietu R

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a

Optymalizacja systemów

Badania Operacyjne Ćwiczenia nr 2 (Materiały)

ZADANIA ZAMKNIETE W zadaniach 1-25 wybierz i zaznacz na karcie odpowiedzi poprawna

Konspekt. Piotr Chołda 2 marca Podstawowe informacje nt. przedmiotu. Prowadzący przedmiot (wykład, egzamin, projekt, laboratorium):

Transkrypt:

Krzysztof Trajkowski Przegląd pakietów do optymalizacji liniowej

1. Wprowadzenie Niniejsze opracowanie dotyczy opisu funkcji solvelp(linprog) i lp(lpsolve) za pomocą których możemy rozwiązywać zadania programowania liniowego. Liniowa funkcja celu jest postaci: f(x 1, x 2,... x n ) = c 1 x 1 + c 2 x 2 +... + c n x n (min) lub (max) (1.1) gdzie: c n R. Gradient czyli wektor, który jest prostopadły do liniowej funkcji celu (1.1): f(x 1, x 2,... x n ) = [c 1, c 2,... c n ] (1.2) Ograniczenia które tworzą zbiór rozwiązań dopuszczalnych są dane następującymi wzorami: a 1 x 1 + a 2 x 2 +... + a n x n b a 1 x 1 + a 2 x 2 +... + a n x n b a 1 x 1 + a 2 x 2 +... + a n x n = b (1.3a) (1.3b) (1.3c) gdzie: a n R oraz b R. Ograniczenia brzegowe: x 1 0,... x n 0 (1.4) Tak sformułowane ograniczenia (1.3a)-(1.3c) oraz ograniczenia brzegowe (1.4) tworzą zbiór rozwiązań dopuszczalnych. 2. Zadanie programowania liniowego Funkcja celu: Gradient: 2x 1 + 3x 2 max (2.1) [2, 3] (2.2) Ograniczenia: 3x 1 + 9x 2 36 (2.3) 4x 1 5x 2 11 (2.4) 3x 1 2x 2 6 (2.5) 4x 1 + 3x 2 39 (2.6) Ograniczenia brzegowe: x 1 0 oraz x 2 0. Aby znaleźć wierzchołki wielokąta wypukłego (zbiór rozwiązań dopuszczalnych - rysunek 2.1) należy rozwiązać kilka układów równań. Na listingu 2.1 został przedstawiony sposób rozwiązania wybranego układu rownań (2.7): { 3x + 9y = 36 4x + 3y = 39 (2.7) 1

> A= matrix (c( -3,4,9,3),2,2) > B= matrix (c (36,39),2,1) > solve (A)%*%B [,1] [1,] 5.4 [2,] 5.8 Listing 2.1: Rozwiązanie układu równań (2.7) Graficzna prezentacja rozwiązania ZPL jest przedstawiona na rysunku 2.1. Kod jest przedstawiony na listingu 2.2: Listing 2.2: Rozwiązanie ZPL - metoda graficzna > plot (0,1, col =" black ",pch =".",xlim =c (0,8),ylim =c (0,8),axes =F, xlab ="",ylab = "") > mtext ( side =1, line =0, paste ("x1"),cex =0.8) ; mtext ( side =2, line =0, paste (" x2"),cex =0.8) > axis (1,c (0:8),pos =0, las =1, mgp =c(3, -0.1,0),tcl = -0.2, cex. axis =.6) > axis (2,c (0:8),pos =0, las =1, mgp =c(3, 0.3,0),tcl = -0.2, cex. axis =.6) > curve ( add =T,lty =5,( -2/3)*x +47 /5) > curve ( add =T,lty =5,( -2/3)*x+4/3) > p= data. frame (x1=c (2,0,0,5.4,7.125,2.75),x2=c (0,3,4,5.8,3.5,0) ) # wierzchołki wielokąta wypukłego > polygon (p,col =" gray90 ") > points (p,pch =21, bg=" gray90 ") > arrows (0,0,282 / 65,423 /65, length =0.1, angle =20, lwd =2) # gradient funkcji celu 8 7 6 5 x2 4 3 2 1 0 0 1 2 3 4 5 6 7 8 x1 Rysunek 2.1: Rozwiązanie graficzne. > fc = function ( x){ # funkcja celu + x1=x [1] + x2=x [2] + 2*x1 +3*x2 + } Listing 2.3: Rozwiązanie ZPL 2

> p= data. frame (x1=c (2,0,0,5.4,7.125,2.75),x2=c (0,3,4,5.8,3.5,0) ) # wierzchołki wielokąta wypukłego > min ( fc( p)) # minimalna wartość funkcji celu [1] 4 > max ( fc( p)) # maksymalna wartość funkcji celu [1] 28.2 > range ( fc( p)) # wartości ekstremalne funkcji celu [1] 4.0 28.2 Na listingu 2.4 zostało przedstawione rozwiązanie ZPL za pomocą funkcji solvelp(linprog). Listing 2.4: Rozwiązanie ZPL - funkcja solvelp > library ( linprog ) # załadowanie pakietu linprog > f=c (2,3) # współczynniki funkcji celu > b=c (36,11, -6,39) > m= matrix (c(-3, 4, -3, 4, 9, -5, -2,3),4,2) > solvelp (f,b,m,t) Results of Linear Programming / Linear Optimization Objective function ( Maximum ): 28.2 Iterations in phase 1: 1 Iterations in phase 2: 3 Solution opt 1 5.4 2 5.8 Basic Variables opt 1 5.4 2 5.8 S 2 18.4 S 3 21.8 Constraints actual dir bvec free dual dual. reg 1 36.0 <= 36 0.0 0. 133333 25.875 2-7.4 <= 11 18.4 0. 000000 18.400 3-27.8 <= -6 21.8 0. 000000 21.800 4 39.0 <= 39 0.0 0. 600000 27.000 All Variables ( including slack variables ) opt cvec min.c max.c marg marg. reg 1 5.4 2-1.000000 4. 000000 NA NA 2 5.8 3 1. 500000 Inf NA NA S 1 0.0 0 - Inf 0. 133333-0.133333 25.875 S 2 18.4 0-0.187500 1. 285714 0. 000000 NA S 3 21.8 0-0.818182 6. 000000 0. 000000 NA S 4 0.0 0 - Inf 0. 600000-0.600000 27.000 Oprócz rozwiązania optymalnego które wynosi f max = 28, 2 dla x 1 = 5, 4 i x 2 = 5, 8 otrzymaliśmy także kilka dodatkowych informacji: zasoby s 1 i s 4 zostały wykorzystane w całości. Z kolei zasobu s 2 i s 3 pozostało odpowiednio 18, 4 i 21, 8. rozwiązanie dualne wynosi: y 1 = 0, 13, y 2 = 0, y 3 = 0, y 4 = 0, 6. zmiana wybranego współczynnika funkcji celu (2.1) dla c 1 = 2 na przedziale c 1 1; 4 lub dla c 2 = 3 na przedziale c 2 1, 5; ) nie spowoduje zmiany wartości x 1 oraz x 2. 3

Rozwiązanie tego samego zadania za pomocą funkcji lp(lpsolve) jest przedstawione na listingu 2.5. Listing 2.5: Rozwiązanie ZPL - funkcja lp > library ( lpsolve ) # załadowanie pakietu lpsolve > f=c (2,3) # współczynniki funkcji celu > m= matrix ( c(-3,4, -3,4, 9, -5, -2,3), 4,2) > o=c(" <="," <="," <="," <=") > b=c (36,11, -6,39) > lp(" max ",f,m,o, b) # maksymalna wartość funkcji celu Success : the objective function is 28.2 > lp(" max ",f,m,o, b) $ solution # wartości zmiennych decyzyjnych x1 oraz x2 [1] 5.4 5.8 > lp(" max ",f,m,o,b, compute. sens =T)$ duals # rozwiązanie dualne [1] 0. 1333333 0. 0000000 0. 0000000 0. 6000000 0. 0000000 0. 0000000 Warto w tym miejscu zaznaczyć, że ograniczenia brzegowe x 1 0 oraz x 2 0 są ustawieniami domyślnymi. A więc nie musimy ich uwzględniać w kodzie. Jeżeli chcemy, aby wszystkie zmienne decyzyjne należały do zbioru liczb całkowitych dodatnich (x 1 Z + oraz x 2 Z + ) należy użyć opcji int.vec=true. > lp(" max ",f,m,o,b,int. vec =T) Success : the objective function is 27 > lp(" max ",f,m,o,b,int. vec =T)$ solution [1] 6 5 Listing 2.6: Rozwiązanie ZPL - funkcja lp Z kolei dla założenia x 1 {0, 1} oraz x 2 Z + należy użyć opcję int.vec=2 (dla zmiennej x 2 ) oraz binary.vec=1 (dla zmiennej x 1 ). Listing 2.7: Rozwiązanie ZPL - funkcja lp > lp(" max ",f,m,o,b,int. vec =2, binary. vec =1) Success : the objective function is 14 > lp(" max ",f,m,o,b,int. vec =2, binary. vec =1) $ solution [1] 1 4 3. Zadanie transportowe Zadanie transportowe możemy rozwiązać z wykorzystaniem funkcji lp(lpsolve). Jednak w środowisku R mamy do dyspozycji funkcję lp.transport(lpsolve) za pomocą której mamy możliwość rozwiązć takie zadanie. Przykładowe dane zostały przedstawione w tabeli 3.1. Tabela 3.1. ZT. Odb 1 Odb 2 Odb 3 Dost 1 20 16 18 30 Dost 2 15 15 20 25 Dost 3 14 11 12 22 Dost 4 11 10 14 20 16 27 22 Ponieważ 97 > 65 (tzn. 30 + 25 + 22 + 20 > 16 + 27 + 22) to mamy do czynienia z niezbilansowanym zadaniem transportowym. Występuje przewaga podaży (dostawcy) nad popytem (odbiorcy). 4

Funkcja celu: 20x 11 + 16x 12 + 18x 13 + 15x 21 + 15x 22 + 20x 23 +14x 31 + 11x 32 + 12x 33 + 11x 41 + 10x 42 + 14x 43 min (3.1) Ograniczenia dla dostawców: x 11 + x 12 + x 13 30 x 21 + x 22 + x 23 25 x 31 + x 32 + x 33 22 x 41 + x 42 + x 43 20 Ograniczenia dla odbiorców: x 11 + x 21 + x 31 + x 41 = 16 x 12 + x 22 + x 32 + x 42 = 27 x 13 + x 23 + x 33 + x 43 = 22 Listing 3.1: Rozwiązanie ZT - funkcja lp.transport > m= matrix (c (20,15,14,11,16,15,11,10,18,20,12,14),4,3) > rs= rep (" <=",4) > rm= c (30,25,22,20) > cs= rep ("=",3) > cm= c (16,27,22) > lp. transport (m, " min ", rs, rm, cs, cm) Success : the objective function is 809 > lp. transport (m, " min ", rs, rm, cs, cm)$ solution [,1] [,2] [,3] [1,] 0 0 0 [2,] 16 7 0 [3,] 0 0 22 [4,] 0 20 0 4. Zadanie przydziału Zadanie przydziału polega na przydzieleniu pracownika do stanowiska pracy. Przykładowe dane do tego typu zadania zostały przedstawione w tabeli 4.1 - liczba godzin jaką potrzebuje każdy z pracowników na wykonanie określonego zadania. Tabela 4.1. ZP. Zad 1 Zad 2 Zad 3 Zad 4 P rac 1 8 8 7 4 1 P rac 2 5 5 8 7 1 P rac 3 6 7 5 9 1 P rac 4 4 4 8 5 1 1 1 1 1 Funkcja celu: 8x 11 + 8x 12 + 7x 13 + 4x 14 + 5x 21 + 5x 22 + 8x 23 + 7x 24 +6x 31 + 7x 32 + 5x 33 + 9x 34 + 4x 41 + 4x 42 + 8x 43 + 5x 44 min (4.1) 5

Ograniczenia dla pracowników: Ograniczenia dla zadań: x 11 + x 12 + x 13 + x 14 = 1 x 21 + x 22 + x 23 + x 24 = 1 x 31 + x 32 + x 33 + x 34 = 1 x 41 + x 42 + x 43 + x 44 = 1 x 11 + x 21 + x 31 + x 41 = 1 x 12 + x 22 + x 32 + x 42 = 1 x 13 + x 23 + x 33 + x 43 = 1 x 14 + x 24 + x 34 + x 44 = 1 Rozwiązanie zadania przydziału z wykorzystaniem funkcji lp.transport(lpsolve): Listing 4.1: Rozwiązanie ZP - funkcja lp.transport > m= matrix (c(8,5,6,4,8,5,7,4,7,8,5,8,4,7,9,5),4,4) > rs= rep ("=",4) > rm= c (1,1,1,1) > cs= rep ("=",4) > cm= c (1,1,1,1) > lp. transport (m, " min ", rs, rm, cs, cm) Success : the objective function is 18 > lp. transport (m, " min ", rs, rm, cs, cm)$ solution [,1] [,2] [,3] [,4] [1,] 0 0 0 1 [2,] 1 0 0 0 [3,] 0 0 1 0 [4,] 0 1 0 0 W przypadku rozwiązywania zbilansowanego zadania przydziału (liczba pracowników jest równa liczbie zadań - tabela 4.1) wygodniej jest wykorzystać funkcję lp.assign(lpsolve): Listing 4.2: Rozwiązanie ZP - funkcja lp.assign > m= matrix (c(8,5,6,4,8,5,7,4,7,8,5,8,4,7,9,5),4,4) > lp. assign (m, " min ") Success : the objective function is 18 > lp. assign (m, " min ")$ solution [,1] [,2] [,3] [,4] [1,] 0 0 0 1 [2,] 1 0 0 0 [3,] 0 0 1 0 [4,] 0 1 0 0 6