Transcript slajdy 1

Deterministyczne modele badań
operacyjnych
Wprowadzenie
Sprawy formalne
LITERATURA
• T. Trzaskalik, Wprowadzenie do badań operacyjnych z komputerem, PWE, Warszawa 2008;
szczególnie rozdziały: 1, 2, 3, 8, 9.
• W. Sikora [red.], Badania operacyjne, PWE, Warszawa 2008; szczególnie rozdziały: 1, 2, 3, 6, 8.
• B. Guzik, Wstęp do badań operacyjnych, Wydawnictwo Uniwersytetu Ekonomicznego w Poznaniu,
Poznań 2009; szczególnie rozdziały: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13.
STRONA INTERNETOWA: http://www.sgh.waw.pl/mlewandowski
KONTAKT: [email protected]
KONSULTACJE: wtorek 16.30 sala 103G (po uprzednim mailu)
ZALICZENIE: 20% Ćwiczenia, 80% Egzamin
WYKŁADY – zajęcia co dwa tygodnie w czwartek o 8:00 w C-2a
GRUPY ĆWICZENIOWE – zajęcia co dwa tygodnie
• Grupa I: co dwa tygodnie w czwartek o 8:00 w C-5d - prowadzę ja;
• Grupa II: co dwa tygodnie w czwartek o 9:50 w C-5d – prowadzi dr Knauff
• Grupa III: co dwa tygodnie w czwartek o 9:50 w C-5d – prowadzi dr Knauff
Sprawy formalne, cd.
ĆWICZENIA: głównie – Formułowanie i rozwiązywanie zadań przy pomocy Excel Solver
PLAN – TEMATY TRADYCYJNE
1) Programowanie liniowe i metoda sympleks
–
–
–
Optymalny asortyment produkcji
Zagadnienie diety
Zagadnienie mieszanki
2) Dualizm w optymalizacji liniowej
3) Zmienne całkowitoliczbowe w optymalizacji liniowej i metoda podziału i ograniczeń
–
–
–
–
–
–
4)
5)
6)
7)
Problem komiwojażera
Zagadnienie rozkroju
Zagadnienie przydziału
Zagadnienie lokalizacji
Zagadnienie plecaka
Warunki logiczne
Problem transportowy – zbilansowane, niezbilansowane, z trasami niedopuszczalnymi, z
ograniczoną przepustowością tras, wieloetapowe, minimalizacja pustych przebiegów, problem
lokalizacyjno-transportowy
Optymalizacja na sieciach, sieci transportowe, problem maksymalnego przepływu
Zagadnienia optymalizacji nieliniowej sprowadzalne do optymalizacji liniowej, problemy z
ułamkowo-liniową funkcją celu
Analiza obwiedni danych (DEA)
Sprawy formalne, cd.
PLAN – NOWE TEMATY:
1) TEORIA GIER
– Rozwiązywanie gier o sumie zerowej metodami programowania liniowego
– Skojarzenia, algorytm Gale’a i Shapleya
2) OPTYMALIZACJA DYNAMICZNA, Zasada optymalności Bellmanna
3) Algorytmy sieciowe
–
–
–
4)
Algorytmy całkowitoliczbowe
–
–
5)
Algorytm Dijkstra
Algorytm Forda-Fulkersona
Algorytm drzewa rozpinającego
Branch and bound dla zmiennych binarnych
Algorytm Dakina
Algorytmy ewolucyjne
TEN WYKŁAD JEST NAPISANY NA PODSTAWIE MATERIAŁU ZAJĘĆ PROF. ORLIN z MIT, MASSACHUSETTS
Co to są Badania Operacyjne?
•
•
Po angielsku – operations research lub management science
II wojna światowa: Brytyjscy generałowie poprosili naukowców i inżynierów, aby ci
przeanalizowali parę problemów natury militarnej
–
–
•
•
Rozmieszczenie radarów
Zarządzanie konwojami, bombardowaniem, system przeciwko łodziom podwodnym, operacje
minowania, etc.
W rezultacie powstała nowa dziedzina wiedzy zwana badaniami operacyjnymi
Badania operacyjne to dyscyplina stosująca metody analityczne na potrzeby
lepszego podejmowania decyzji. http://www.scienceofbetter.org/
http://www.orms-today.org/ormsmain.shtml
Badania operacyjne w praktyce
SCHEMAT POSTEPOWANIA
•
•
•
•
•
•
•
Zidentyfikuj problem
Obserwuj system i zbieraj dane
Sformułuj model matematyczny problemu i ewentualne podproblemy
Zweryfikuj model i wykorzystaj go do prognozowania lub analizy
Wybierz odpowiednią alternatywę
Zaprezentuj odpowiednią alternatywę
Zaimplementuj i oceń wyniki
Programowanie liniowe
• Minimalizuj lub maksymalizuj funkcję liniową
• Przy ograniczeniach w postaci nierówności i równości liniowych
• Poniższe przykłady NIE SĄ zadaniami programowania liniowego:
Programowanie całkowitoliczbowe
Zadanie programowania całkowito liczbowego to zadanie programowania
liniowego, w którym część lub wszystkie zmienne są całkowitoliczbowe
Zadania programowania całkowitoliczbowego są dużo częściej spotykane w
praktyce. Jednak do ich rozwiązania stosuje się techniki programowania
liniowego.
Ustalanie grafiku
•
•
•
•
•
Każdy z pracowników na poczcie pracuje 5 dni z rzędu i później 2 dni
odpoczywa.
Popyt na pracowników w różne dni tygodnia jest następujący:
Dzień
Pon
Wto
Śro
Czw
Pią
Sob
Nie
Popyt
17
13
15
19
14
16
11
Zminimalizuj liczbę pracowników zatrudnionych na poczcie.
Na początek przyjmijmy, że pracownicy mogą występować w częściach
ułamkowych.
Sformułowanie problemu:
– Zidentyfikuj zmienne decyzyjne (decision variables)
– Zidentyfikuj funkcję celu (objective function)
– Sformułuj ograniczenia (constraints)
•
•
Rozwiązanie dopuszczalne (feasible solution)
Rozwiązanie optymalne (optimal solution, best feasible solution)
Ustalamy zmienne decyzyjne
•
•
•
Spróbujmy tak: yi – liczba osób pracujących w dzień i
Ograniczenia popytu łatwo sformułować
Ale jak sformułować ograniczenie: „5 dni w pracy 2 wolnego”?
– OKAZUJE SIĘ TO NIEMOŻLIWE
Sprytne zdefiniowanie zmiennych
decyzyjnych
Ograniczenia
Funkcja celu
PON
WTO
ŚRO
CZW
PIĄ
SOB
NIE
Zmienne decyzyjne są dobrane w taki sposób, aby ograniczenie „5 dni w pracy 2 dni wolnego” było
automatycznie spełnione.
Zmienna decyzyjna x1 to liczba pracowników zaczynających pracę w poniedziałek. Pozostałe zmienne są
zdefiniowane podobnie.
Wówczas funkcja celu musi być zdefiniowana jako suma zmiennych decyzyjnych (suma wszystkich
pracowników).
Przedstawienie w postaci tabelki
PON
WTO
ŚRO
CZW
PIĄ
SOB
NIE
Modyfikacja modelu
•
•
•
Dobrze jest zacząć od prostego modelu, który opisuje tylko część rzeczywistości, a później
dodawać coraz bardziej realistyczne ograniczenia. Często trudno jest zbudować
skomplikowany model w jednym kroku.
Załóżmy, że pracownicy otrzymują różne wynagrodzenie w zależności od dnia, w którym
zaczynają pracę – pracownik zaczynający pracę w dzień j, otrzymuje zapłatę cj Dodatkowo
poczta może zatrudnić pracownika dorywczego (na jeden lub więcej dni). Zapłata dla
pracownika dorywczego, gdy pracuje w dzień j to pj
Jaka będzie zmiana w modelu? Jakie będą nowe zmienne decyzyjne?
Inna modyfikacja
•
•
•
•
Załóżmy, że popyt na pracowników reprezentuje ograniczenie zwane „lekkim” – tj.
jest to pożądana liczba pracowników, którzy są potrzebni w dany dzień, a nie
wymagana liczba.
Niech sj będzie zmienną reprezentującą nadmiar pracowników w dzień j ponad
stan pożądany. Ujemne wartości oznaczają oczywiście niedobór.
Jaki jest minimalny koszt zatrudnienia pracowników, jeśli koszt zbyt dużej liczby
pracowników w dzień j jest opisany nieliniową funkcją fj(sj)?
Traktujemy popyt na pracowników na konkretny dzień jako cel na ten dzień i
nakładamy karę za niespełnienie go dokładnie.
– Zbyt duża liczba pracowników to nieefektywne wykorzystanie zasobów pracy
– Zbyt mała liczba pracowników może spowodować problemy w wykonaniu zadań na dany
dzień
•
Jakie są nowe zmienne decyzyjne? Jak wygląda nowy model nieliniowy?
• Funkcje nieliniowe mogą czasem być przetransformowane w funkcje
liniowe – rzadki, ale bardzo pożądany przypadek
• W ogólności, programy nieliniowe minimalizacji (maksymalizacji) można
rozwiązać łatwiej, gdy funkcja celu jest wypukła (wklęsła)
• Przykłady funkcji nieliniowych
Suma kwadratów zmiennych nadmiaru
Ważona suma kwadratów zmiennych nadmiaru
Suma wartości bezwględnych zmiennych nadmiaru
Dwa razy suma pracowników minus suma zmiennych nadmiaru
Nieseparowalna funkcja celu
Separowalna funkcja to taka, że można ją przedstawić jako sumę funkcji jednej
zmiennej. Z funkcjami separowalnymi dużo łatwiej sobie radzić i problem rozwiązuje
się szybciej.
Które funkcje są wypukłe?
Maksimum paru funkcji liniowych jest
wypukłe
Minimax
• Szczególnie „przyjazne” funkcje nieliniowe to takie, które można zapisać
jako maksimum jednej lub wielu funkcji liniowych:
– Jeżeli dany problem minimalizacji ma taką przyjazną funkcję celu, a region dopuszczalny
jest taki, jak w ZPL, wówczas rozwiązanie tego problemu może być przedstawione jako
ZPL
• Problem minimax jednej zmiennej
Problem z
przyjazną
funkcją
ZPL
Z powrotem do problemu obsady
poczty
• Minimalizuj maksymalny nadmiar pracowników na dany dzień
Inny przykład „przyjaznej” funkcji celu
• Przypuśćmy, że funkcją celu jest s1 + s2 +... + s7
• Jak ją zmodyfikować, aby stała się liniowa?
• Kluczowa obserwacja: s j = max{s j ,-s j }, dla każdego j.
• Musimy stworzyć tym razem 7 zmiennych zj
• Nowa funkcja celu
min z1 + z2 +... + z7
• Dodatkowe ograniczenia
zi ³ si , zi ³ -si , "i =1,..., 7
• Dla każdego optymalnego rozwiązania będzie zachodzić
z j = s j , "j =1,..., 7
Ułamkowe ograniczenie
• Przypuśćmy, że chcemy zapewnić, aby przynajmniej 30% pracowników
miało wolną niedzielę.
nie pracujacy w niedziele
• Jak można to włączyć do modelu?
³ 0.3
• Ale to ograniczenie jest nieliniowe!
wszyscy pracujacy
x1 + x2
³ 0.3
x1 + x2 +... + x7
• Zauważmy, że suma wszystkich pracowników jest dodatnia, dlatego
możemy przez nią pomnożyć obie strony nierówności
• Wówczas otrzymujemy ograniczenie liniowe:
0.7x1 + 0.7x2 - 0.3x3 - 0.3x4 - 0.3x4 - 0.3x5 - 0.3x6 - 0.3x7 ³ 0
Inne modyfikacje obsady poczty
•
Możemy wymagać, żeby każda zmiana miała całkowitą liczbę pracowników
– Zadanie programowania całkowitoliczbowego
DYGRESJA: Modelowanie ułamkowych części pracowników jest zupełnie nierealistyczne. W praktyce łatwo
sobie z tym poradzić zaokrąglając otrzymane rozwiązanie – jednak należy pamiętać, że nie zawsze da się dobrze
zaokrąglić i dlatego, jeśli można, lepiej rozwiązywać zadanie programowania całkowitoliczbowego.
•
Możemy rozpatrywać grafik na dłuższy okres
– Na przykład 6 tygodni na raz (pozwala na sprawiedliwsze rozwiązanie – na przykład w
powyższym modelu większość pracowników nigdy nie ma wolnej soboty I niedzieli; w modelu
z 6 tygodniami na raz, można zapewnić, że każdy pracownik będzie miał wolne cały lub
przynajmniej część weekendu)
•
Możemy rozpatrywać krótszy grafik
– I modelować przerwy na lunch
•
Możemy wreszcie modelować pracowników indywidualnie
– Wprowadzając preferencje pracowników (można uczynić pracowników bardziej szczęśliwymi,
jeśli da się im wolne wtedy, kiedy poproszą)
Większość powyższych modyfikacji wymaga programowania całkowitoliczbowego,
które również będziemy omawiać na zajęciach.
Problem optymalizacyjny
•
Dany jest zbiór liczb. Rozdziel je na dwa zbiory tak, aby różnica sum liczb w obu
grupach była jak najmniejsza.
•
Przykład: 7, 10, 13, 17, 20, 22
•
•
Mogę je podzielić na {20,22} (suma 42) oraz {7, 10, 13, 17} (suma 47)
Różnica sum wynosi 5
•
Czy możemy uzyskać lepszy wynik?
Ciekawe zastosowanie programowania
matematycznego – radioterapia
• Wysokie dawki promieniowania (energia na jednostkę masy)
mogą zabijać komórki i/lub uniemożliwiać ich rozwój i podział
– Prawdziwe zarówno dla komórek rakowych, jak i zdrowych
• Radioterapia jest atrakcyjna, ponieważ mechanizmy
naprawcze działają bardziej efektywnie w przypadku komórek
zdrowych niż w przypadku komórek rakowych
• Chodzi tutaj o radioterapię a nie o stosowanie wiązek
protonów.
• Niedawne osiągnięcia w obrazowaniu:
– MRI (rezonans magnetyczny)
– CT Scan (tomografia komputerowa)
– -etc.
• Rozwój w dziedzinie naświetlania
– Tomoterapia
– IMRT
• Radioterapia jest teraz
dokonywana przez komputer,
który dostarcza duże dawki
promieniowania wiązkami
puszczanymi pod różnymi kątami
do mózgu.
• Tradycyjna radioterapia:
• Ważne jest, aby puszczać wiązki pod różnymi kątami
• W konwencjonalnej radioterapii:
– 3 do 7 wiązek
– Radioonkolog i lekarz ogólny ustalają wspólnie kąty I natężenia wiązek
– Wszystko odbywa się za pomocą metod prób i błędów
• Celem jest zmaksymalizowanie dawki promieniowania na
komórki rakowe przy jednoczesnym zminimalizowaniu dawki
na obszar krytyczny.
• W mózgu każda nierakowa komórka jest krytyczna. W
pozostałych częściach ciała, niektóre komórki są bardziej
krytyczne od innych.