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.