Badania operacyjne 2012/2013
Transkrypt
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Sformułowanie problemu
Zastosowania
Programowanie liniowe całkowitoliczbowe
Jeżeli w zadaniu programowania liniowego pewne (lub wszystkie)
zmienne musza˛ przyjmować wartości całkowite, to takie zadanie nazywamy zadaniem programowania liniowego całkowitoliczbowego.
Jeżeli wszystkie zmienne musza˛ przyjmować wartości 0 lub 1, to zadanie nazywamy zadaniem programowania liniowego 0-1. Zatem, w
każdym takim zadaniu wystepuj
˛ a˛ ograniczenia postaci 0 ≤ xi ≤ 1 i xi
całkowite dla każdej zmiennej xi , co krótko oznaczamy jako xi ∈ {0, 1}.
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Sformułowanie problemu
Zastosowania
Problem rozkroju
Tartak posiada standardowe deski o szerokości 10 cali. Otrzymał zamówienie
na 90 desek o szerokości 2 cale, 175 desek o szerokości 3 cale i 120 desek
o szerokości 4 cale. Tartak chce wyznaczyć taki plan realizacji zamówienia,
który zminimalizuje łaczny
˛
odpad wyrażony w calach. Możliwe sposoby ciecia
˛
deski 10 calowej podane sa˛ w poniższej tabeli:
Sposób
1
2
3
4
5
6
7
8
deski 4-calowe
2
1
1
1
0
0
0
0
deski 3-calowe
0
2
1
0
3
2
1
0
Adam Kasperski
deski 2-calowe
1
0
1
3
0
2
3
5
Badania operacyjne 2012/2013
Odpad
0
0
1
0
1
0
1
0
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Sformułowanie problemu
Zastosowania
Problem rozkroju
1
Zmienne decyzyjne:
xi - liczba standardowych desek cietych
˛
i-tym sposobem
y1 , y2 , y3 - liczba desesk 4, 3 i 2-calowych wyprodukowanych
ponad zamówienie
2
Funkcja celu:
min z = Całkowity odpad= x3 + x5 + x7 + 4y1 + 3y2 + 2y3
3
Ograniczenia:
2x1 + x2 + x3 + x4 − y1 = 90
2x2 + x3 + 3x5 + 2x6 + x7 − y2 = 175
x1 + x3 + 3x4 + 2x6 + 3x7 + 5x8 − y3 = 120
x1 , . . . , x8 , y1 , y2 , y3 ≥ 0 i całkowite.
[deski 4-calowe]
[deski 3-calowe]
[deski 2-calowe]
Optymalne rozwiazanie:
˛
x1 = 24, x2 = 42, x6 = 45, x7 = 2, y2 = 1 i
całkowity odpad wynosi 5 cali.
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Sformułowanie problemu
Zastosowania
Planowanie komunikacji miejskiej [Taha 2008]
Progress City planuje usprawnienie komunikacji miejskiej. Przeprowadzono
badania, z których wynika że minimalna liczba potrzebnych autobusów zmienia sie˛ w ciagu
˛ dnia. W kolejnych, 4-godzinnych oknach czasowych, jest ona
pokazana na poniższym rysunku. Każdy autobus rozpoczyna prace˛ na poczatku
˛ czterogodzinnego okna czasowego i pracuje bez przerwy przez kolejne
8 godzin. Celem jest wyznaczenie minimalnej liczby autobusów, które spełnia˛
zapotrzebowanie komunikacyjne mieszkańców.
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Sformułowanie problemu
Zastosowania
Planowanie komunikacji miejskiej [Taha 2008]
1
Zmienne decyzyjne:
xi - liczba autobusów zaczynajacych
˛
prace˛ o 00:01, 4:01, 8:01,
12:01, 16:01, 20:01.
2
Funkcja celu:
3
Ograniczenia:
min z = Liczba autobusów= x1 + x2 + x3 + x4 + x5 + x6
x1 + x6 ≥ 4 [0:01 - 4:00]
x1 + x2 ≥ 8 [4:01- 8:00]
x2 + x3 ≥ 10 [8:01 - 12:00]
x3 + x4 ≥ 7 [12:01 - 16:00]
x4 + x5 ≥ 12 [16:01 - 20:00]
x5 + x6 ≥ 4 [20:01- 24:00]
x1 , . . . , x6 ≥ 0 i całkowite.
Optymalne rozwiazanie: x1 = 4, x2 = 4, x3 = 6, x4 = 8, x5 = 4, x6 = 0 i
minimalna liczba autobusów wynosi 26.
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Sformułowanie problemu
Zastosowania
Problem plecakowy
Jan zamierza wybrać sie˛ na wycieczk˛e. Rozważa zapakowanie do plecaka
siedmiu przedmiotów. Każdy z nich ma określona˛ wage˛ i wartość. Niestety
pojemność plecaka Jana jest ograniczona i można do niego załadować przedmioty o wadze nie wiekszej
˛
niż 15. Które przedmioty Jan powinien zabrać?
Przedmiot
1
2
3
4
5
6
7
Adam Kasperski
Waga
5
2
7
1
6
8
2
Wartość
8
3
10
1
9
11
2
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Sformułowanie problemu
Zastosowania
Problem plecakowy
1
Zmienne decyzyjne:
1 jeżeli przedmiot i jest zabrany
, i = 1, . . . , 7.
xi =
0 w przeciwnym wypadku
2
Funkcja celu:
max z = Wartość= 8x1 + 3x2 + 10x3 + x4 + 9x5 + 11x6 + 2x7
3
Ograniczenia:
5x1 + 2x2 + 7x3 + x4 + 6x5 + 8x6 + 2x7 ≤ 15
xi ∈ {0, 1}, i = 1, . . . , 7.
[Poj. plecaka]
Optymalne rozwiazanie:
˛
x1 = 1, x2 = 1, x6 = 1, czyli Jan powinien
zabrać przedmioty 1, 2 i 6. Wartość plecaka wyniesie wówczas 22.
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Sformułowanie problemu
Zastosowania
Problem lokalizacji
W pewnym regionie znajduje sie˛ pieć
˛ miast. Władze regionu chca˛ wybudować
w miastach posterunki straży pożarnej tak aby czas dojazdu straży pożarnej
do każdego miasta nie przekraczał 15 minut. Czasy przejazdu miedzy
˛
miastami (w minutach) sa˛ podane w poniższej tabeli.
Miasto 1
Miasto 2
Miasto 3
Miasto 4
Miasto 5
Miasto 6
Miasto 1
0
Miasto 2
10
0
Miasto 3
20
25
0
Miasto 4
30
35
15
0
Miasto 5
30
20
30
15
0
Miasto 6
20
10
20
25
14
0
W których miastach należy wybudować posterunki straży pożarnej aby liczba
tych posterunków była najmniejsza?
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Sformułowanie problemu
Zastosowania
Problem lokalizacji
1
Zmienne decyzyjne:
1 jeżeli P.S. jest zbudowany w mieście i
, i = 1, . . . , 6.
xi =
0 w przeciwnym wypadku
2
Funkcja celu:
3
Ograniczenia:
min z = Liczba posterunków= x1 + x2 + x3 + x4 + x5 + x6
x1 + x2 ≥ 1
[Miasto 1]
x1 + x2 + x6 ≥ 1 [Miasto 2]
x3 + x4 ≥ 1
[Miasto 3]
x3 + x4 + x5 ≥ 1 [Miasto 4]
x4 + x5 + x6 ≥ 1 [Miasto 5]
x2 + x5 + x6 ≥ 1 [Miasto 6]
xi ∈ {0, 1}, i = 1, . . . , 6.
Optymalne rozwiazanie:
˛
x2 = 1, x4 = 1, czyli należy wybudować posterunki w miastach 2 i 4.
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Sformułowanie problemu
Zastosowania
Warunki logiczne
Rozpatrzmy ponownie problem plecakowy (Slajd 6) i załóżmy, że Jan ma nastepuj
˛ ace
˛ dodatkowe wymagania:
1
Chce zabrać przedmiot 1 lub 5:
x1 + x5 ≥ 1
2
Nie chce zabrać jednocześnie przedmiotów 1 i 6:
x1 + x6 ≤ 1
3
[∼ (1 ∧ 5)]
Jeżeli zabierze przedmiot 3, to chce również zabrać przedmiot 4:
x3 ≤ x4
4
[1 ∨ 5]
[4 ⇒ 3]
Chce zabrać albo przedmiot 5 albo przedmiot 6 (ale nie oba):
x5 + x6 = 1
[5 ⊗ 6]
Ponieważ xi ∈ {0, 1}, wiec
˛ możemy identyfikować 1 z prawda˛ a 0 z fałszem.
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Sformułowanie problemu
Zastosowania
Ograniczenia dyzjunkcyjne i implikacje
Firma DA wytwarza trzy typy samochodów: kompaktowe, średnie i duże. Wymagane zasoby oraz zyski jednostkowe ze sprzedaży sa˛ podane w poniższej
tabeli:
Wymagana stal (t./jedn.)
Nakład pracy (godz./jedn.)
Zysk ($/jedn.)
Kompaktowy
1.5
30
2000
Średni
3
25
3000
Duży
5
40
4000
Dostepnych
˛
jest 6000 ton stali i 60000 godzin pracy. Firma DA chce zmaksymalizować zysk. Model jest nastepuj
˛ acy:
˛
max z =
2000x1 + 3000x2 + 4000x3
1.5x1 + 3x2 + 5x3 ≤ 6000
30x1 + 25x2 + 40x3 ≤ 60000
x1 , x2 , x3 ≥ 0 i całkowite
Adam Kasperski
[Stal]
[Praca]
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Sformułowanie problemu
Zastosowania
Ograniczenia dyzjunkcyjne i implikacje
Jeżeli DA uruchomi produkcje˛ samochodów kompaktowych, to co najmniej
1000 sztuk tych samochodów musi być produkowanych.
Ograniczenie jest nastepuj
˛ ace:
˛
x1 > 0 ⇒ x1 ≥ 1000.
lub równoważnie:
x1 ≤ 0 lub x1 ≥ 1000.
Modelujemy to w nastepuj
˛ acy
˛ sposób:
x1 ≤ My1
1000 − x1 ≤ M(1 − y1 )
gdzie y1 ∈ {0, 1} i M jest duża˛ stała˛ (nie jest zmienna!).
˛
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Sformułowanie problemu
Zastosowania
Ograniczenia dyzjunkcyjne i implikacje
Jeżeli liczba produkowanych dużych samochodów jest wieksza
˛
niż 500, to
produkcja średnich samochodów musi być niewieksza
˛
niż 100
Ograniczenie jest nastepuj
˛ ace:
˛
x3 > 500 ⇒ x2 ≤ 100.
lub równoważnie:
x1 ≤ 500 lub x2 ≤ 100 (x1 − 500 ≤ 0 lub x2 − 100 ≤ 0)
Modelujemy to w nastepuj
˛ acy
˛ sposób:
x3 − 500 ≤ My2
x2 − 100 ≤ M(1 − y2 )
gdzie M duża˛ stała˛ a y2 ∈ {0, 1}
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Sformułowanie problemu
Zastosowania
Ograniczenia dyzjunkcyjne i implikacje
W ogólnym przypadku chcemy zamodelować alternatywe˛ ograniczeń:
f (x1 , . . . , xn ) ≤ 0 ∨ g(x1 , . . . , xn ) ≤ 0
Chcemy zapewnić, żeby przynajmniej jedno z dwóch ograniczeń było spełnione.
Wprowadzamy dodatkowa˛ zmienna˛ binarna˛ y ∈ {0, 1} i dodajemy do modelu
nastepuj
˛ ace
˛ ograniczenia:
f (x1 , . . . , xn ) ≤ My
g(x1 , . . . , xn ) ≤ M(1 − y )
(1)
gdzie M jest dostatecznie duża˛ liczba˛ taka,
˛ że warunki f (x1 , . . . , xn ) ≤ M i
g(x1 , . . . , xn ) ≤ M sa˛ prawdziwe dla wszystkich wartości zmiennych.
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Sformułowanie problemu
Zastosowania
Ograniczenia dyzjunkcyjne i implikacje
Implikacje˛
f (x1 , . . . , xn ) > 0 ⇒ g(x1 , . . . , xn ) ≤ 0.
zastepujemy
˛
równoważnym logicznie warunkiem:
f (x1 , . . . , xn ) ≤ 0 ∨ g(x1 , . . . , xn ) ≤ 0.
Implikacje˛
f (x1 , . . . , xn ) > 0 ⇒ g(x1 , . . . , xn ) ≥ 0
zastepujemy
˛
równoważnym logicznie warunkiem:
f (x1 , . . . , xn ) ≤ 0 ∨ −g(x1 , . . . , xn ) ≤ 0,
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Sformułowanie problemu
Zastosowania
Modelowanie iloczynu zmiennych 0-1
Fabryka rozważa 5 miejsc w celu lokalizacji nowych magazynów. W
miejscach tych można wybudować magazyny o pojemnościach odpowiednio 120, 200, 180, 150 i 300. Odległości pomiedzy
˛
każda˛ para˛
miejsc sa˛ podane w poniższej tabeli:
1
2
3
4
5
1
0
2
12
0
3
3
9
0
4
9
2
6
9
5
20
12
8
11
0
Fabryka chce zbudować 3 magazyny o maksymalnej sumarycznej pojemności. Magazyny powinny być tak ulokowane aby odległość pomiedzy
˛
każda˛ para˛ magazynów była niewieksza
˛
niż 10.
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Sformułowanie problemu
Zastosowania
Modelowanie iloczynu zmiennych 0-1
1
Zmienne decyzyjne:
1 jeżeli magazyn jest w miejscu i
, i = 1, . . . , 5.
xi =
0 w przeciwnym wypadku
2
Funkcja celu:
max z = Pojemność = 120x1 + 200x2 + 180x3 + 150x4 + 300x5
3
Ograniczenia:
12x1 x2 ≤ 10
[Odległość miedzy
˛
1 i 2]
3x1 x3 ≤ 10
[Odległość miedzy
˛
1 i 3]
...
xi ∈ {0, 1}, i = 1, . . . , 5.
Ograniczenia nie sa˛ liniowe!
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Sformułowanie problemu
Zastosowania
Modelowanie iloczynu zmiennych 0-1
Ograniczenie 12x1 x2 ≤ 10 nie jest liniowe. Zmieniamy je na liniowe
wprowadzajac
˛ zmienna˛ y12 ∈ {0, 1} i zastepuj
˛ ac
˛ ograniczeniami:
12y12 ≤ 10
y12 ≤ x1
y12 ≤ x2
y12 ≥ x1 + x2 − 1
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Metody naiwne
Algorytm podziału i ograniczeń
Metody naiwne
[Algorytm 1.] Usuń warunki całkowitoliczbowości. Rozwiaż
˛ model algorytmem sympleksowym i zaokraglij
˛ wyniki do najbliższej liczby całkowitej.
x2
3
2.5
max z = 21x1 + 12x2
7x1 + 4x2 < 13
x1, x2 > 0, integer
2
1.5
1
0.5
0
0.5
1.0
1.5
2.0
x1
Optymalnym rozwiazaniem
˛
jest (13/7, 0). Zaokraglaj
˛ ac
˛ do (1, 0) otrzymujemy
rozwiazanie
˛
nieoptymalne. Zaokraglaj
˛ ac
˛ do (2, 0) otrzymujemy rozwiazanie
˛
niedopuszczalne.
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Metody naiwne
Algorytm podziału i ograniczeń
Metody naiwne
[Algorytm 2.] Wygeneruj wszystkie rozwiazania
˛
dopuszczalne i wybierz najlepsze z nich.
Problem plecakowy ze zmiennymi binarnymi x1 , . . . , xn posiada nie
wiecej
˛
niż 2n dopuszczalnych rozwiaza
˛ ń. Przypuśćmy, że jedno rozwiazanie
˛
można sprawdzić w czasie 10−6 sekundy. Jak długo potrwaja˛
obliczenia?
n
10
20
50
100
Adam Kasperski
10−6 · 2n
0.0001 s.
1.048 s.
35.7 lat
1016 lat
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Metody naiwne
Algorytm podziału i ograniczeń
Metody naiwne
Zadanie programowania liniowego całkowitoliczbowego jest dużo trudniejsze do rozwiazania
˛
niż zwykłe zadanie programowania liniowego.
Do chwili obecnej nie jest znany szybki algorytm dla tej klasy problemów i uważa sie,
˛ że taki algorytm nie istnieje.
Do rozwiazania
˛
zadania programowania liniowego całkowitoliczbowego
powszechnie stosuje sie˛ algorytm podziału i ograniczeń, który można
traktować jako znacznie ulepszona˛ wersje˛ metody pełnego przegladu.
˛
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Metody naiwne
Algorytm podziału i ograniczeń
Liniowa relaksacja
Jeżeli usuniemy ograniczenia na całkowitość zmiennych w problemie P, to
otrzymamy zadanie programowania liniowego, które nazywamy relaksacja˛ P.
Dla problemu maksymalizacji, optymalna wartość funkcji celu relaksacji jest
górnym ograniczeniem na wartość funkcji celu optymalnego rozwiazania
˛
P.
x2
3
P:
2.5
max z = 21x1 + 12x2
7x1 + 4x2 < 13
x1, x2 > 0, integer
max z = 21x1 + 12x2
relaxation
of P: 7x1 + 4x2 < 13
2
x1, x2 > 0
1.5
1
0.5
0
0.5
1.0
1.5
2.0
x1
Optymalnym rozwiazaniem
˛
P jest (0, 3), z = 36. Optymalnym rozwiazaniem
˛
relaksacji P jest (13/7, 0), z R = 39.
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Metody naiwne
Algorytm podziału i ograniczeń
Algorytm podziału i ograniczeń
max z =
8x1 + 5x2
6x1 + 10x2 ≤ 45
9x1 + 5x2 ≤ 45
x1 , x2 ≥ 0, x1 , x2 całkowite
x2
5
4
3
(3.75,2.25)
2
1
0
1
2
3
4
5
x1
Rozwiazuj
˛ ac
˛ relaksacje˛ otrzymujemy x1 = 3.75, x2 = 2.25, zR∗ = 41.25.
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Metody naiwne
Algorytm podziału i ograniczeń
Algorytm podziału i ograniczeń
0
x1 ≤ 3
1
x1 = 3.75, x2 = 2.25
zR∗ = 41.25
x1 = 3, x2 = 2.7
zR∗ = 37.5
2
x1 ≥ 4
x1 = 4, x2 = 1.8
zR∗ = 41
5
4
(3,2.7)
3
2
(4,1.8)
1
1
2
0
1
2
3
4
5
Wartość zmiennej x1 = 3.75 nie jest całkowita. Rozpatrujemy dwa podproblemy 1 i 2 dodajac
˛ odpowiednio ograniczenia x1 ≤ 3 i x1 ≥ 4.
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Metody naiwne
Algorytm podziału i ograniczeń
Algorytm podziału i ograniczeń
0
x1 ≤ 3
1
x1 = 3, x2 = 2.7
zR∗ = 37.5
3
x1 = 3.75, x2 = 2.25
zR∗ = 41.25
2
x2 ≤ 1
x1 ≥ 4
x1 = 4, x2 = 1.8
zR∗ = 41
x1 = 4.44, x2 = 1
zR∗ = 40.55
4
x2 ≥ 2
sprzeczny
W podproblemie 2 wartość zmiennej x2 = 1.8 nie jest całkowita. Rozpatrujemy
dwa kolejne podproblemy 3 i 4 dodajac
˛ odpowiednio ograniczenia x2 ≤ 1 i
x2 ≥ 2. Podproblem 4 jest sprzeczny, dlatego wierzchołek odpowiadajacy
˛
temu podproblemowi zamykamy.
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Metody naiwne
Algorytm podziału i ograniczeń
Algorytm podziału i ograniczeń
0
x1 ≤ 3
1
x1 = 3, x2 = 2.7
zR∗ = 37.5
3
x1 ≤ 4
5
x1 = 4, x2 = 1
zR∗ = 37
x1 = 3.75, x2 = 2.25
zR∗ = 41.25
2
x2 ≤ 1
x1 = 4.44, x2 = 1
zR∗ = 40.55
6
x1 ≥ 4
x1 = 4, x2 = 1.8
zR∗ = 41
4
x2 ≥ 2
sprzeczny
x1 ≥ 5
x1 = 5, x2 = 0
zR∗ = 40
W podproblemie 3 wartość zmiennej x1 = 4.44 nie jest całkowita. Rozpatrujemy wiec
˛ kolejne dwa podproblemy 5 i 6 dodajac
˛ ograniczenia x1 ≤ 4 i
x1 ≥ 5. W obu podproblemach otrzymujemy optymalne rozwiazanie
˛
całkowite
i zamykamy wierzchołki im odpowiadajace.
˛
Zamykamy też wierzchołek 1, popnieważ w problemie odpowiadajacym
˛
temu wierzchołkowi zR∗ = 37.5 < 40.
Optymalne rozwiazanie:
˛
x1 = 5, x2 = 0, z = 40.
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Metody naiwne
Algorytm podziału i ograniczeń
Algorytm podziału i ograniczeń
1
Algorytm konstruuje binarne drzewo przeszukiwania. W każdym wierzchołku tego drzewa rozwiazywane
˛
jest zadanie programowania liniowego.
2
Istnieje kilka metod wyboru kolejnego wierzchołka do podziału. Jedna˛ z
najbardziej popularnych jest wybór wierzchołka z najwieksz
˛
a˛ wartościa˛
zR∗ .
3
Wierzchołek drzewa zamykamy jeżeli:
1
2
3
4
rozwiazanie
˛
otrzymane w tym wierzchołku jest całkowitoliczbowe;
problem odpowiadajacy
˛ temu wierzchołkowi jest sprzeczny;
wartość funkcji celu optymalnego rozwiazania
˛
w tym wierzchołku
jest niewieksza
˛
niż wartość funkcji celu dla pewnego znanego
rozwiazania
˛
dopuszczalnego.
Jeżeli wszystkie wierzchołki sa˛ zamkniete,
˛
to najlepsze znalezione rozwiazanie
˛
całkowitoliczbowe jest optymalne.
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Metody naiwne
Algorytm podziału i ograniczeń
Mieszany problem liniowy całkowitoliczbowy
Jeżeli w zadaniu programowania liniowego tylko niektóre zmienne musza˛ być
całkowite, to zadanie takie nazywamy mieszanym zadaniem programowania
liniowego całkowitoliczbowego.
max z =
2x1 + x2
5x1 + 2x2 ≤ 8
x1 + x2 ≤ 3
x1 , x2 ≥ 0, x1 całkowite
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Metody naiwne
Algorytm podziału i ograniczeń
Mieszany problem liniowy całkowitoliczbowy
0
x1 ≤ 0
1
x1 = 0, x2 = 3
zR∗ = 3
x1 = 2/3, x2 = 7/3
zR∗ = 11
2
x1 ≥ 1
x1 = 1, x2 = 3/2
zR∗ = 7/2
Przy podziale bierzemy pod uwage˛ tylko zmienna˛ x1 . Optymalne rozwiazanie
˛
wynosi x1 = 1, x2 = 3/2.
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Metody naiwne
Algorytm podziału i ograniczeń
Problem plecakowy
max z =
5x1 + 3x2 + 6x3 + 6x4 + 2x5
5x1 + 4x2 + 7x3 + 6x4 + 2x5 ≤ 15,
x1 , .., x5 ∈ {0, 1}
max z =
5x1 + 3x2 + 6x3 + 6x4 + 2x5
5x1 + 4x2 + 7x3 + 6x4 + 2x5 ≤ 15,
0 ≤ xi ≤ 1, i = 1, . . . , 5
Relaksacja:
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Metody naiwne
Algorytm podziału i ograniczeń
Problem plecakowy
Relaksacja może być efektywnie rozwiazana
˛
za pomoca˛ algorytmu zachłannego:
i
1
2
3
4
5
ci
5
3
6
6
2
wi
5
4
7
6
2
ci /wi
1
3/4
6/7
1
1
Wybieramy przedmioty zgodnie z nieroznac
˛ a˛ wartościa˛ ci /wi . Zatem bierzemy całe przedmioty 1, 4, 5 i 2/7 przedmiotu 3.
W optymalnym rozwiazaniu
˛
relaksacji co najwyżej jedna zmienna jest
niecałkowita.
Adam Kasperski
Badania operacyjne 2012/2013
Programowanie liniowe całkowitoliczbowe
Rozwiazywanie
˛
modeli całkowitoliczbowych
Metody naiwne
Algorytm podziału i ograniczeń
Problem plecakowy
0
zR∗ = 14 75
(1, 0, 27 , 1, 1)
x3 = 1
x3 = 0
1
zR∗ = 14 21
(1, 12 , 0, 1, 1)
x2 = 1
x2 = 0
3
= 13
(1, 0, 0, 1, 1)
zR∗
2
4
= 14
(1, 1, 0, 1, 0)
zR∗
zR∗ = 14
(1, 0, 1, 12 , 0)
x4 = 1
x4 = 0
5
13 43
=
(1, 41 , 1, 0, 1)
zR∗
6
zR∗ = 14
( 25 , 0, 1, 1, 0)
W każdym wierzchołku wybieramy zmienna˛ niecałkowita˛ xi i rozpatrujemy dwa
przypadki xi = 1 (bierzemy przedmiot i) oraz xi = 0 (nie bierzemy przedmiotu
i). Optymalne rozwiazanie
˛
znajduje sie˛ w wierzchołku 4. Zatem bierzemy
przedmioty 1, 2 i 4.
Adam Kasperski
Badania operacyjne 2012/2013