Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Problem Plecakowy (Problem złodzieja okradającego sklep)

Podobne prezentacje


Prezentacja na temat: "Problem Plecakowy (Problem złodzieja okradającego sklep)"— Zapis prezentacji:

1 Problem Plecakowy (Problem złodzieja okradającego sklep)
Jest jednym z najczęściej poruszanych problemów optymalizacyjnych. Polega na zapakowaniu do plecaka o ograniczonej wielkości możliwie jak najbardziej wartościowych rzeczy.

2

3 Ogólny problem plecakowy
Główną cechą ogólnego problemu plecakowego jest nieograniczona ilość każdej rzeczy.

4 Ogólny problem plecakowy
Dane: n rzeczy R1, R2, …, Rn, o nieograniczonej wielkości. Rzecz Ri ma wielkość wi i wartości pi. W – maksymalna wartość plecaka. Wynik: Ilości q1,q2,q3,…,qn poszczególnych rzeczy, których łączna waga nie przekracza W i ich sumaryczna wartość jest największa.

5 Ogólny Problem plecakowy
Postać matematyczna Znaleźć wartości q1,q2,q3,…,qn, dla których wartość sumy, będącej całkowitą wartością plecaka, p1q1 + p2q2 + … + pnqn Jest największa, przy czym musi być spełniony warunek, że nie będzie przekroczona pojemność plecaka, czyli: w1q1 + w2q2 + …+ wnqn ≤ W oraz wielkości : q1,q2,q3,…,qn są nieujemnymi liczbami całkowitymi.

6 Rozwiązaniem dopuszczalnym nazywamy
Ogólny Problem plecakowy Rozwiązaniem dopuszczalnym nazywamy Wartości q1,q2,q3,…,qn , które spełniają warunek: w1q1 + w2q2 + …+ wnqn ≤ W Gdzie q1,q2,q3,…,qn są nieujemnymi liczbami całkowitymi. Jeśli dodatkowo p1q1 + p2q2 + … + pnqn dla tych wartości jest największa, to wartości nazywamy Rozwiązaniem optymalnym.

7 Algorytm zachłanny dla ogólnego problemu plecakowego
Ogólny Problem plecakowy Algorytm zachłanny dla ogólnego problemu plecakowego W jaki sposób pakujemy plecak??? Krok po kroku kompletowana jest zawartość plecaka Każda decyzja polega na dokonywaniu wyboru, który jest najlepszy w danym etapie

8 Kryteria wyboru kolejnych rzeczy do zapakowania
Ogólny Problem plecakowy Kryteria wyboru kolejnych rzeczy do zapakowania Wybieramy najcenniejsze rzeczy (nierosnące wartości pi) Wybieramy rzeczy zajmujące najmniej miejsca (niemalejące wartości wi) Wybieramy rzeczy najcenniejsze w stosunku do swojej wagi (nierosnące wartości ilorazu pi/wi)

9 Wybieramy najcenniejsze rzeczy (nierosnące wartości pi) Przykład
Ogólny Problem plecakowy Wybieramy najcenniejsze rzeczy (nierosnące wartości pi) Przykład Wybieramy rzecz nr.5 ponieważ jest najcenniejsza (ma wartość 10). Wybieramy jej aż 7 sztuk ponieważ wartość wagi wynosi 3. (3*7=21) W plecaku pozostało nam miejsce na rzecz o wadze 2 (23-21=2). Wybieramy rzecz nr.4 (1 szt), która ma wartość 7 Wartość plecaka wynosi 77 (7*10 + 7) i 1 2 3 4 5 6 W pi 7 10 wi 23

10 Wybieramy rzeczy zajmujące najmniej miejsca (niemalejące wartości wi)
Ogólny Problem plecakowy Wybieramy rzeczy zajmujące najmniej miejsca (niemalejące wartości wi) Przykład Wybieramy rzeczy w kolejności wag (rosnących) Wybieramy 23 sztuki rzeczy nr.6 Każda rzecz nr.6 ma wartość 2 Wartość plecaka wynosi 46 (2*23) i 1 2 3 4 5 6 W pi 7 10 wi 23

11 Wybieramy 11 sztuk rzeczy nr. 4 (waga 2)
Ogólny Problem plecakowy Wybieramy rzeczy najcenniejsze w stosunku do swojej wagi (nierosnące wartości ilorazu pi/wi) Przykład Pakujemy plecak wg nierosnącej kolejności ilorazów pi/wi czyli (7/2 (rzecz 4), 10/3 (5), 4/2 (2), 2/1 (6), 5/3 (3), 6/6 (1)) Wybieramy 11 sztuk rzeczy nr. 4 (waga 2) Pozostało nam 1 jednostka miejsca. Wybieramy 1 sztukę rzeczy nr. 6. (waga 1) Wartość plecaka wynosi 79 (11*7+1*2) i 1 2 3 4 5 6 W pi 7 10 wi 23

12 Żaden sposób nie daje nam najlepszego rozwiązania.
Ogólny Problem plecakowy Wnioski: Żaden sposób nie daje nam najlepszego rozwiązania. Otrzymane rozwiązania są przybliżone do rozwiązania optymalnego. Najbardziej przybliżone jest 3 kryterium ( Są w nim uwzględnione oba parametry, zarówno waga jaki i wartość rzeczy)

13 Algorytm zachłanny dla ogólnego problemu plecakowego
Ogólny Problem plecakowy Algorytm zachłanny dla ogólnego problemu plecakowego Dane: n rzeczy o nieograniczonej wielkości. Rzecz ma wielkość wi i wartości pi (i =1,2,3…,n). Rzeczy ponumerowane wg nierówności p1/w1≥p2/w2≥… ≥ pn/wn. W – maksymalna wartość plecaka. Wynik: Ilości q1,q2,q3,…,qn poszczególnych rzeczy (mogą być zerowe, których łączna waga nie przekracza W . Krok 1. Dla kolejnych rzeczy i =1,2,3…n, uporządkowanych zgodnie z nierównościami p1/w1≥p2/w2≥… ≥ pn/wn, wykonaj krok 2. Krok 2. Określ największą wartość qi, spełniającą nierówność wiqi≤W. przyjmij W:=W- wiqi Krok 3. Ładunek plecaka ma wartość p1q1 + p2q2 + … + pnqn

14 Programowanie dynamiczne dla ogólnego problemu plecakowego
Ogólny Problem plecakowy Programowanie dynamiczne dla ogólnego problemu plecakowego Zapewnia znalezienie optymalnego rozwiązania ogólnego problemu plecakowego Zasada optymalności Bellmana W każdym kroku podejmować najlepszą decyzję z uwzględnieniem stanu wynikającego z poprzednich decyzji.

15 Programowanie dynamiczne dla ogólnego problemu plecakowego
Tablica P 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 28 32 36 40 44 25 29 33 37 41 45 35 42 49 56 63 70 77 31 38 52 59 66 73 80 Tablica Q. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 i 1 2 3 4 5 6 W pi 7 10 wi 23

16 Ogólny Problem plecakowy
Algorytm programowania dynamicznego dla ogólnego problemu plecakowego Dane: n rzeczy o nieograniczonej wielkości. Rzecz ma wielkość wi i wartości pi (i =1,2,3…,n). W – maksymalna wartość plecaka. Wyniki: Tablica Pi,j najlepszych upakowań plecaka o pojemności j rzeczami rodzajów od 1 do i, dla i=1,2,3 …n oraz j=1,2,3…W; skojarzona tablica rodzajów rzeczy Qi,j, dołożonych w ostatnim dopakowaniu plecaka. Krok 1. {Ustalenie wartości początkowych w tablicach P i Q rozszerzonych dla ujednolicenia obliczeń, o wiersze i kolumny zerowe.} Dla j=1,2,3…W przypisujemy P0,j:=0, Q0,j:=0. Dla i=1,2,3…n przypisz Pi,0:=0, Qi,0:=0. Krok 2. Dla kolejnych rzeczy i=1,2,3…n wykonaj krok 3. Krok 3. Dla kolejnych pojemności plecaka j=1,2,3…W wykonaj krok 4. Krok 4. Jeśli j≥wi { Czyli, gdy pojemność plecaka jest wystarczająca, by pomieścić rzecz i.} Oraz Pi-1,j < Pi,j-wi + pi, to przypisz Pi,j:=Pi,j-wi + pi oraz Qi,j:=i, A w przeciwnym razie pozostaw wartości z poprzedniego wiersza, czyli przypisz Pi,j:=Pi-1,j oraz Qi,j:=Qi-1,j.

17 Decyzyjny problem plecakowy
Każda rzecz może być wybrana co najwyżej jeden raz.

18 Decyzyjny Problem plecakowy
Algorytm zachłanny dla decyzyjnego problemu plecakowego Dane: n rzeczy o nieograniczonej wielkości. Rzecz ma wielkość wi i wartości pi (i =1,2,3…,n). Rzeczy ponumerowane wg nierówności p1/w1≥p2/w2≥… ≥ pn/wn. W – maksymalna wartość plecaka. Wynik: Ilości q1,q2,q3,…,qn poszczególnych rzeczy (mogą być zerowe, których łączna waga nie przekracza W . Krok 1. Dla kolejnych rzeczy i =1,2,3…n, uporządkowanych zgodnie z nierównościami p1/w1≥p2/w2≥… ≥ pn/wn, wykonaj krok 2. Krok 2. Jeśli wi≤W. przyjmij W:=W- wi w przeciwnym razie przyjmij qi=0. Krok 3. Ładunek plecaka ma wartość p1q1 + p2q2 + … + pnqn

19 Decyzyjny Problem plecakowy
Przykład. W=10 1. Ustawiamy rzeczy zgodnie z kolejnością czyli 4,5,2,6,3,1 Wybieramy kolejno: 4,5,2,6 (razem ważą 8 jednostek) Wartość plecaka wynosi 23. 2. Gdy zamiast 6 wybierzemy 3 cały plecak będzie wypełniony a jego wartość będzie Wynosiła 26. i 1 2 3 4 5 6 W pi 7 10 wi 23

20 Algorytm programowania dynamicznego dla decyzyjnego problemu plecakowego
Dane: n rzeczy o nieograniczonej wielkości. Rzecz ma wielkość wi i wartości pi (i =1,2,3…,n). W – maksymalna wartość plecaka. Wyniki: Tablica Pi,j najlepszych upakowań plecaka o pojemności j rzeczami rodzajów od 1 do i, dla i=1,2,3 …n oraz j=1,2,3…W; skojarzona tablica rodzajów rzeczy Qi,j, dołożonych w ostatnim dopakowaniu plecaka. Krok 1. {Ustalenie wartości początkowych w tablicach P i Q rozszerzonych dla ujednolicenia obliczeń, o wiersze i kolumny zerowe.} Dla j=1,2,3…W przypisujemy P0,j:=0, Q0,j:=0. Dla i=1,2,3…n przypisz Pi,0:=0, Qi,0:=0. Krok 2. Dla kolejnych rzeczy i=1,2,3…n wykonaj krok 3. Krok 3. Dla kolejnych pojemności plecaka j=1,2,3…W wykonaj krok 4. Krok 4. Jeśli j≥wi { Czyli, gdy pojemność plecaka jest wystarczająca, by pomieścić rzecz i.} Oraz Pi-1,j < Pi,j-wi + pi, to przypisz Pi,j:=Pi,j-wi + pi oraz Qi,j:=1, A w przeciwnym razie pozostaw wartości z poprzedniego wiersza, czyli przypisz Pi,j:=Pi-1,j oraz Qi,j:=0.

21 Decyzyjny Problem plecakowy
Programowanie dynamiczne dla decyzyjnego problemu plecakowego 1 2 3 4 5 6 7 8 9 10 11 12 16 17 21 22 26 1.8 11.8 18.8 22.8 23.8 Tablica P Tablica Q 1 2 3 4 5 6 7 8 9 10


Pobierz ppt "Problem Plecakowy (Problem złodzieja okradającego sklep)"

Podobne prezentacje


Reklamy Google