Somas iepakošanas uzdevums

24
Somas iepakošanas uzdevums Rīgas Tehniskā universitāte Datorzinātnes un informācijas tehnoloģijas fakultāte Lietišķo datorsistēmu institūts, Lietišķo datorzinātņu katedra Mihails Prihodko, Daniels Umanovskis, Aleksejs Zaharovs I-DMD-01 2011. gads

description

Rīgas Tehniskā universitāte Datorzinātnes un informācijas tehnoloģijas fakultāte Lietišķo datorsistēmu institūts , Lietišķo datorzinātņu katedra. Somas iepakošanas uzdevums. Mihails Prihodko, Daniels Umanovskis , Aleksejs Zaharovs I-DMD-01. 201 1 . gads. Ievads. - PowerPoint PPT Presentation

Transcript of Somas iepakošanas uzdevums

Page 1: Somas iepakošanas uzdevums

Somas iepakošanasuzdevums

Rīgas Tehniskā universitāteDatorzinātnes un informācijas tehnoloģijas fakultāte

Lietišķo datorsistēmu institūts, Lietišķo datorzinātņu katedra

Mihails Prihodko, Daniels Umanovskis,Aleksejs Zaharovs

I-DMD-01

2011. gads

Page 2: Somas iepakošanas uzdevums

Ievads

Somas iepakošanas uzdevums

angl. knapsack problem,

kriev. задача о рюкзаке

pieder pie šādiem uzdevumu klasēm:

Kombinatoriskās optimizācijas uzdevums; Maksimizēšanas uzdevums.

2

Page 3: Somas iepakošanas uzdevums

Klasiskā uzdevuma nostādne

Ir dots: Priekšmetu kopa, kur katram priekšmetam ir

definēta masa; Mugursoma ar ierobežotu celtspēju;

Nepieciešams iepakot somu, maksimizējot priekšmetu skaitu;

Katrs priekšmets eksistē tikai vienā eksemplārā.

3

Page 4: Somas iepakošanas uzdevums

Zagļa problēma (risināta šajā darbā) Ir dots:

Priekšmetu kopa, kur katram priekšmetam ir definēta masa + naudas vērtība.

Mugursoma ar ierobežotu celtspēju;

Nepieciešams iepakot somu, maksimizējot kopējo naudas vērtību;

Katrs priekšmets eksistē tikai vienā eksemplārā.

4

Page 5: Somas iepakošanas uzdevums

Integrētā vide

Vienotā vide algoritmu izpildei ir izveidotā Python valodā.

Vide atbalsta divus pakošanas algoritmu pieslēgšanas paņēmienus:

kā moduļu pirmkodu Python valodā, kā nokompilētas Microsoft Windows dinamisko

saišu bibliotēkas, DLL.

5

Page 6: Somas iepakošanas uzdevums

Studentu realizēti algoritmi

Pakošanas problēmu var risināt ar vairākiem paņēmieniem. Šajā darbā tika realizētas šādas pieejas:

Ģenētiskais algoritms; Zaru atciršanas algoritms; Meklēšana pēc pirmās labākās sakritības; Dinamiskās programmēšanas pieeja.; Skopais algoritms

6

Page 7: Somas iepakošanas uzdevums

Ģenētiskais algoritms (1/4)

Pamatā ir šādi jēdzieni:

gēns – bitu virkne, raksturo indivīdu; hromosoma – viens bits gēnā; indivīds – kāds uzdevuma risinājums –

iespējams vai neiespējams); populācija – indivīdu kopa.

7

Page 8: Somas iepakošanas uzdevums

Ģenētiskais algoritms (2/4)

1. Tiek ģenerēta iespējamo risinājumu sākuma

populācija.

2. Iteratīvi tiek veikta paaudžu maiņa:

a) Visi vēcāki tiek novērtēti ar heiristiskā novērtējuma funkciju;

b) Vecāku novērtēšana, klonēti divi labākie (1. un 2. vieta);

c) Tiek nejauši izvēlēts gēna sagriešanas punkts;

d) Krustošanas gaitā iegūta bērnu populācija.

3. Izvēlēts dārgākais risinājums no visiem atrastiem

iespējamiem.

8

Page 9: Somas iepakošanas uzdevums

Ģenētiskais algoritms (3/4)

Indivīda (risinājuma) heiristiskā novērtējuma pamatā ir naudas vērtība, heiristiskās funkcijas vērtība ir:

Ja risinājums nav iespējams → naudas vērtība; Ja risinājums ir iespējams → naudas vērtības

kvadrāts.

Tas nodrošina, ka iespējamiem risinājumiem heiristiskā vērtība tiecas būt lielākā.

9

Page 10: Somas iepakošanas uzdevums

Ģenētiskais algoritms (4/4)

Ģenētisks algoritms negarantē optimālo risinājumu. Pamatā ir pietuvinātā heiristiskā novērtējuma funkcija.

Algoritmā ir ieliktā nejaušība, tāpēc algoritms var sniegt atšķirīgus risinājumus.

10

Page 11: Somas iepakošanas uzdevums

Zaru atciršanas algoritms (1/5)

Tiek uzbūvēts risinājumu koks; Katrā koka virsotne ir uzdevuma risinājums; Apriori neveiksmīgie risinājumu tiek atcirti (šajā

realizācijā vispār netiek ielikti kokā); Neiespējamo risinājumu izslēgšana ļauj iegūt

priekšrocību salīdzinājumā ar visu variāciju apskatīšanu.

11

Page 12: Somas iepakošanas uzdevums

Zaru atciršanas algoritms (2/5)

Koks ir būvēts pēc šāda principa:

Sākne ir visu iespējamu un neiespējamu risinājumu apgabals;

Starpvirsotnes ir risinājumu apakšapgabali; Beigu virsotnes ir iespējamie risinājumi.

„?” nozīmē, ka risinājumu apgabalā ietilpst risinājumi, kur attiecīgais priekšmets gan ir gan nav ielikts;

„0” nozīme, ka priekšmets nav ielikts; „1” nozīmē, ka priekšmets ir ielikts.

12

Page 13: Somas iepakošanas uzdevums

Zaru atciršanas algoritms (3/5)

13

Page 14: Somas iepakošanas uzdevums

Zaru atciršanas algoritms (4/5)

Koka apstaigāšana notiek šādi: Kā sākumpunkts, nodod koka sākni; Tiek izmantota rekursīva funkcija, kura atgriež

dārgāko risinājumu, kurš eksistē apakškokā; Tiek izmantots fakts, ka apstaigāt virsotni tas ir

apstaigāt pašu virsotni un tās tiešus pēctečus; Notiek pārmeklēšana dziļumā; Atcirstie apgabali netiek ģenerēti.

14

Page 15: Somas iepakošanas uzdevums

Zaru atciršanas algoritms (5/5)

Algoritms sniedz garantēti optimālo risinājumu, jo pārmeklē visus iespējamus risinājumus un atrod dārgāko;

Pie lielā pieejamu priekšmetu skaita stāvokļu telpa kļūst liela.

15

Page 16: Somas iepakošanas uzdevums

16

Dinamiskās programmēšanas pieeja (1/5) Tiek izmantota uzdevumu dalīšana uz

mazākiem uzdevumiem Katra mazāka uzdevuma risinājums ir

optimāls Mazākie uzdevumi tiek risināti dalot tos

vēlreiz Mazākais uzdevums – tāds, uz kuru var

uzreiz atbildēt Mazāko uzdevumu rezultāti tiek saglabāti

Page 17: Somas iepakošanas uzdevums

17

Dinamiskās programmēšanas pieeja (2/5) Galvenais realizācijā ir matrica (n+1) x

(W+1), kur n ir priekšmetu daudzums un W ir uzdotas somas celtspēja.

Matrica tiek aizpildīta pa rindiņām izmantojot formulas:

Page 18: Somas iepakošanas uzdevums

18

Dinamiskās programmēšanas pieeja (3/5)

Kw,i ir maksimāla kopīga vērtība, kuru mēs varam iegūt pirmajiem i priekšmetiem, kuriem kopīga masa nepārsniedz w

Ʋi ir i-ta priekšmeta cena.

W ir maksimāla celtspēja somai

wi ir i-ta priekšmeta masa

K0,j = 0, 0 <= j <= n

Kw,0 = 0, 0 <= w <= W

Kw,i = max{Kw,i − 1, Kw-wi,i – 1 + Ʋi} | 0 <= w <= W, wi <= w}

Kw,i = Kw,i − 1, ja wi > w (mēs vairs nevaram ievietot priekšmetu somā)

Page 19: Somas iepakošanas uzdevums

19

Dinamiskās programmēšanas pieeja (4/5)

0 1 2 3 Komentārs

0 0 0 0 0 Sākumstāvoklis pēc noteikumiem

1 0 6 6 6 Mēs varam ielikt tikai 1 priekšmetu

2 0 6 10 10 Starp 1 un 2 priekšmetu, 2 ir dārgāks

3 0 6 16 16 1+2 ir dārgāki, nekā 3

4 0 6 16 18 1+3 ir dārgāki, nekā 1+2

5 0 6 16 22 2+3 ir visdārgākie

Page 20: Somas iepakošanas uzdevums

20

Dinamiskās programmēšanas pieeja (5/5)

0 1 2 3 Komentārs0 0 0 0 0 Kolonnas, kuros notika cenas maiņa ir saņemtie

priekšmeti1 0 6 6 62 0 6 10 10 Ejam atpakaļ horizontāli, kamēr ir vienāda cena,

Ejam uz rindiņu w - wi

3 0 6 16 164 0 6 16 185 0 6 16 22 Ejam atpakaļ horizontāli, kamēr ir vienāda cena,

Ejam uz rindiņu w - wi

Page 21: Somas iepakošanas uzdevums

21

Meklēšana pēc pirmās labākās sakritības (1/3) Koku apiešanas algoritms “Atvērtas“ virsotnes pēcteči ir ievietoti

sarakstā Izvēlas no virsotnēm to virsotni, kurai ir

vislabākais heiristiskais novērtējums Ir piemērots uzdevumiem ar papildinformāciju

par mērķi

Page 22: Somas iepakošanas uzdevums

22

Meklēšana pēc pirmās labākās sakritības (2/3) Vienkāršāka heiristika:

F(i) = weighti / pricei

Funkcija neparedz atkāpšanos, jo tas neievēro pašreizējo situāciju.

No 2 priekšmetiem ar vienādu novērtējumu, algoritms var izmantot to priekšmetu, kuram ir lielāka masa.

Page 23: Somas iepakošanas uzdevums

23

Meklēšana pēc pirmās labākās sakritības (3/3) Vairāk piemērota funkcija

F(i) = (weighti) / (weighti / weightLeft) līdz noteiktam brīdim mēs varam likt somā vis

kaut kas pēc skopa algoritma, kamēr somai nepaliek maz celtspējas,

Jo mazāk celtspējas somai, jo vairāk uzmanības algoritms pievērš tai.

Page 24: Somas iepakošanas uzdevums

Paldies par uzmanību!

24