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
Feb 24, 2016
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-012011. gads
Ievads
Somas iepakošanas uzdevumsangl. 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; ХЗ metode; Ололо pieeja; Meklēšana pēc pirmās labākās sakritības; Dinamiskās programmēšanas pieeja.
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 dališana uz
mazakiem uzdevumiem Katra mazaka uzdevuma risinajums ir
optimals Mazakie uzdevumi tiek risinati dalot tos
velreiz Mazakais uzdevums – tads, uz kuru var
uzreiz atbildet Mazako uzdevumu rezultati tiek saglabati
17
Dinamiskās programmēšanas pieeja (2/5) Galvenais reazlizacijā ir matrica (n+1) x
(W+1), kur n ir priekšmetu daudzums un W ir uzdotas somas celtspēja.
Matrica tiek aizpildita pa rindiņam izmantojot sekošas 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 masanepārsniedz wƲi ir i-ta priekšmeta cena.W ir maksimala celspēja somaiwi 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ārs0 0 0 0 0 Sākumstāvoklis pēc noteikumiem1 0 6 6 6 Mēs varam ielikt tikai 1 priekšmetu2 0 6 10 10 Starp 1 un 2 priekšmetu, 2 ir dārgāks3 0 6 16 16 1+2 ir dārgāki, nekā 34 0 6 16 18 1+3 ir dārgāki, nekā 1+25 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) = (WeightLeft / weighti) / (pricei / weighti) 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