1 / 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. Somas iepakošanas uzdevums. Mihails Prihodko, Daniels Umanovskis , Aleksejs Zaharovs I-DMD-01. 201 1 . gads. Ievads.

nam
Télécharger la présentation

Somas iepakošanas uzdevums

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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šanasuzdevums Mihails Prihodko, Daniels Umanovskis, Aleksejs Zaharovs I-DMD-01 2011. gads

  2. Ievads • Somas iepakošanas uzdevums angl. knapsack problem, kriev. задача о рюкзаке pieder pie šādiem uzdevumu klasēm: • Kombinatoriskās optimizācijas uzdevums; • Maksimizēšanas uzdevums.

  3. 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ā.

  4. 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ā.

  5. 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.

  6. 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.

  7. Ģ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.

  8. Ģenētiskais algoritms (2/4) • Tiek ģenerēta iespējamo risinājumu sākuma populācija. • Iteratīvi tiek veikta paaudžu maiņa: • Visi vēcāki tiek novērtēti ar heiristiskā novērtējuma funkciju; • Vecāku novērtēšana, klonēti divi labākie (1. un 2. vieta); • Tiek nejauši izvēlēts gēna sagriešanas punkts; • Krustošanas gaitā iegūta bērnu populācija. • Izvēlēts dārgākais risinājums no visiem atrastiem iespējamiem.

  9. Ģ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ā.

  10. Ģ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.

  11. 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.

  12. 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.

  13. Zaru atciršanas algoritms (3/5)

  14. 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.

  15. 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.

  16. Dinamiskāsprogrammēš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āsprogrammēš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āsprogrammēšanas pieeja (3/5) Kw,iir maksimāla kopīga vērtība, kuru mēs varam iegūt pirmajiem i priekšmetiem, kuriem kopīga masanepārsniedzw Ʋiir i-ta priekšmeta cena. W ir maksimalacelspē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āsprogrammēšanas pieeja (4/5)

  20. Dinamiskāsprogrammēšanas pieeja (5/5)

  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.

  24. Paldies par uzmanību!

More Related