[OER] 4. domaća zadaća - 2021/2022
micho
branimir1999 Hmmm ovdje vidim potencijalne probleme:
- ne clampaš brzine, to ti je potencijalno loše jer ti čestica može otići u 3pm što će ti rezultirati nekakvim spiralnim gibanjem i potencijalno zaglavljivanjem
- moment ti je dosta velik, u praksi se koriste momenti između 0.2 i 0.5 za ovaj algoritam - kombinacija ovako velikog momenta s neograničenim brzinama ti može biti loša
Dakle ono što bih ja preporučio je da prvo postaviš faktor inercije da ti bude između 0.2 i 0.5. Okej je linearna interpolacija maksimuma prema minimumu i mislim da tu ne treba išta mijenjati.
Zatim, pogledaj malo koje brzine imaš. Specifično zanimaju te prvih par iterscija, preporučam da si raspišeš samo maksimalne i minimalne brzine čestica u prvih, nezz, 10-20 iteracija. Škicni malo i kako se mijenjaju. Zavrti to par puta i provjeri da ti ne spajkaju brzine nigdje - nakon promjene ovih vrijednosti inercije možda ni neće. Ti i sam znaš koliko su čestice udaljene od optimuma funkcije, pa ćeš znati prosuditi što su prevelike brzine.
Kako ti to ne bi bio konstantan hiperparametar, ja bih te limite brzina ograničio ovisno o inicijalnoj populaciji - dakle, nezz, gledao bih koje su dvije najudaljenije čestice i vjv ne bih dopustio da brzina bude ikad veća od toga. Nema smisla da neka čestica ima mogućnost otići vrlo daleko od inicijalne populacije ako to nemaju mogućnost sve čestice.
Teatiraj ove stvari jednu po jednu, i kad dobiš dobar rezultat umjesto da to dalje šminkaš pokušaj racionalizirati zašto je to pomoglo.
branimir1999
samo_vagabundo Ovo s inercijom nije problem jer sam provjerio za svaki slucaj. Ali svejedno sam implementirao kako si mi rekao i povecao populaciju na 50 i 150000 iteracija i dobio sam:
x = (7.090, -2.958, 1.986, 1.106, -2.897, 3.115)
MSE = 153.714
x = (6.843, -2.746, 3.005, 1.166, 3.184, 2.987)
MSE = 7067.312
M̵̧̩͑̀͝î̶͍̉ć̴̝̾́̀o̶̺̟̣͂̽ već sam implementirao clampanje samo sto sam zaboravio napomenuti da sam izostavio u postu. Ako stavim inerciju na interval [0.2,0.5], algoritam samo losije rezultate daje. Koristio sam 0.9 jer se tako preporuca u knjizi
branimir1999
samo_vagabundo Dobro racunam (i ja sam takoder pomislio da je tu mozda problem) jer dobijem 10-27 za te vrijednosti. Ono sto se cini netocno je to sto mi je e priblizno 3, a treba biti -3.
M̵̧̩͑̀͝î̶͍̉ć̴̝̾́̀o̶̺̟̣͂̽ Pogledao sam brzine dobivene tokom prvih 20 iteracija i u prvih nekoliko ima dosta po maksimalnoj brzini, pa onda sve rjede, ali i dalje se pojavljuju tu i tamo.
samo_vagabundo
branimir1999 mozda dobro ne racunas MSE, ovo su rjesenja
Banananjeros a = 7, b = -3, c = 2, d = 1, e = -3, f = 3
ne cini mi se kao da su tvoja netocna za 7k MSE
(dogodilo mi se na jednom labosu lmao)
ako nije nesto toliko ocito, onda po redu @M̵̧̩͑̀͝î̶͍̉ć̴̝̾́̀o̶̺̟̣͂̽ odgovor
samo_vagabundo
branimir1999 msm da je e u kosinus pa ti je svejedno, r1 i r2 kad azuriras brzine bi trebali biti jednaki, i istim random brojem mnozis sve dimenzije (MC skripta zadnji odlomak 101.str)
inercija nakon iteration_maxa
ti treba vracati uvijek inertia_min
, provjeri jel to i radi
osim toga, ispisuj stvari probaj naci nesto sto ne bi trebalo biti tu, isprobavaj razlicite parametre, jbg glhf
branimir1999
samo_vagabundo Hvala na pomoci svejedno tebi i @M̵̧̩͑̀͝î̶͍̉ć̴̝̾́̀o̶̺̟̣͂̽ . Nista ne radi pa mislim da cu objasnit cu situaciju na labosu i dobit bodove koje dobijem. Skontao sam da mi brzina po jednoj komponenti na jednoj cestici kroz prvih 150000 iteracija skoro da ne konvergira, ali nemam ideje kako da to ispravim.
Retard00
Banananjeros e = -3
meni ispada da je e = 3, jel to tvoje typo il sam ja neš sjebo?
EDIT: ispada da su oba dobra, nekad mi ispadne e = -3, nekad e = 3, a nekad i zapne u nekom lok. opt.
samo_vagabundo
Retard00 jeje, u kosinusu, oba dobra