Algoritamsko rešavanje Rubikove kocke III

Nakon postavljanja algoritma, isti je trebalo ispitati. Pri pokretanju Solver-a boje na kocki se menjaju, a u prozoru Grasshopper-a očitava se dijagram sa brojevima koji pokazuju uspešnost. Kako bi program bolje rešavao problem, s vremena na vreme dobro je dodati mu određene mutacije. Problemi koji su postavljeni na početku su uglavnom rešeni, osim poslednjeg, a to je dobijanje krajnjeg rezultata. Naime, program pokušava da dođe do rešenja, što je i uspeo (rezultat 54), ali pri povećanju broja iteracija ima problem sa pronalaženjem rešenja i uspešnost opada. Na rešavanje dosta utiče i složenost početnog položaja boja na kocki. U tabeli ispod su prikazana ispitivanja algoritma sa različitim vrednostima.

Tabela

Princip rotiranja kocke je prikazan na videu:

Rotiranje

Hipoteza je u ovom slučaju opovrgnuta, s obzirom da nije moguće rešavanje kocke bez obzira na početne vrednosti. Zaključak je da genetski algoritam nije pogodan za rešavanje ovakvog tipa problema, odnosno ne može da omogući rešavanje Rubikove kocke bez obzira na početni položaj boja.

Published
Categorized as Opšte

Algoritamsko rešavanje Rubikove kocke II

Deo 1

Modelovanje Rubikove kocke u programu Grasshopper + Rhinoceros

Definisali smo jednu kockicu koju smo potom skalirali kako bismo nakon umnožavanja (array 3x3x3) dobili razmak između kockica. S obrzirom da se centralni deo Rubikove kocke ne pomera, bilo je potrebno izbaciti središnju kockicu, što smo i učinili tako što smo definisali novu kocku koja uokviruje postojeće, pronašli njenu središnju tačku i uklonili kockicu najbližu njoj. Potom smo izdvojili centralne tačke preostalih 26 kockica koje smo dekonsteuisali iz razloga što su nam potrebne samo periferne strane kockica koje su obojene u šest boja. To je urađeno tako što je prethodni uokvirujući box skaliran tako da dodiruje unutrašnje strane kockica, koje su zatim korišćenjem true/false metode odvojene od onih “ispravnih”, odnosno perifernih koje su obojene u šest različitih boja dok su sve ostale “neispravne” obojene u crno. Strane su obojene u različite boje na osnovu centralnih tačaka ranije korišćene kocke, a nakon toga su spojene.

Deo 2

“Kvarenje” kocke

Odnosi se na rotiranje osam boja po strani, tako da se omogući nasumično (random) rotiranje. Krenuli smo sa definisanje petlje koja će određeni broj puta ponoviti rotiranje. Strane smo definisali po brojevima od 0 do 5 zato što postoji šest strana kocke i definisali ih na osnovu funcije Random. Uz pomoć druge funcije Random definisali smo brojevima od 0 do 2 rotacije za 90, 180 i 270 stepeni. Omogućeno je okretanje oko x (yz ravan), y (xz ravan) i z (xy ravan) ose koje se kreću iz centralne tačke kocke. Filter koji je povezan sa osama (stranama) bira rotacije dok se u drugom bira set koji se okreće. Potom se pokreće rotiranje.

Deo 3

“Popravljanje” kocke

Odnosi se na popravljanje kocke, odnosno obrnute radnje (kocku je potrebno vratiti u prvobitan položaj rotacijama koje su već korišćene, ali drugačijim redosledom).

Deo 4

Provera rešenja

Podrazumeva proveravanje (verifikaciju) dobijenog rešenja. Eksplodirali smo kocku, a zatim ponovo odvojili periferni obojeni deo kocke (omotač). Uzima se u obzir devet najbližih tačaka centru kocke, pa su dekonstruisani mesh-evi kako bi se kasnije dobila boja i urađen average (srednja vrednost) toga. Kada se uzme u obzir svih devet boja na jednoj strani kocke može da se uradi prosečna vrednost, a ako je ta vrednost slična vrednosti određene boje onda će biti ispravna. S obzirom da ovaj način nije davao najbolje rezultate, kod je promenjen tako da ne daje slične vrednosti nego identične.

Published
Categorized as Opšte

Algoritamsko rešavanje Rubikove kocke I

Oblast istraživanja: modelovanje i animacija

Tema istraživanja: stvaranje algoritma koji će na najbrži način sa najmanje poteza rešiti Rubikovu kocku

Stanje u oblasti: smatramo da postoji efikasniji i kraći način za rešavanje Rubikove kocke, u videu nije postignut krajnji rezultat

Problemi: zadavanje komandi programu, kako da program prepozna od čega da krene, grupisanje elemenata pri različitim rotacijama, kako dobiti krajnji rezultat (svaka boja na jednoj strani)

Cilj: postaviti tri ose, odabir pozicije (strane) i količinu rotacije (90/180/270 stepeni), pomoću plane-ova grupisati elemente i usmeriti ih

Hipoteza: Rubikova kocka će biti rešena u najviše 20 poteza

Kriterijumi: Rubikova kocka će biti rešena u najviše 20 poteza pravilnim rotiranjem grupacija, poput fizičke Rubikove kocke

Metode: algoritamsko rešavanje Rubikove kocke koja se inače rešava manuelno uz pomoć programa Rhinoceros i Grasshopper

imgbin-rubik-s-cube-2rzfF508XHVnWs2qmqTBS0mBA-300x264 55-554757_rhino-3d-logo-png-transparent-png-300x242

Published
Categorized as Opšte