Somas iepakošanas uzdevums

Post on 03-Jan-2016

59 views 0 download

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

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

Ievads

Somas iepakošanas uzdevums

angl. knapsack problem,

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

pieder pie šādiem uzdevumu klasēm:

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

2

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

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

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

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

Ģ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

Ģ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

Ģ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

Ģ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

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

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

Zaru atciršanas algoritms (3/5)

13

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

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

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

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:

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ā)

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

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

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

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.

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.

Paldies par uzmanību!

24