Profesori
Svaki profesor ima svoje predmete, raspoložive periode, radne dane i ograničenja koja raspored mora da poštuje.
Education · Scheduling · Optimization
Aplikacija za Muzičku školu „Isidor Bajić“ nije problem prikaza tabele, već problem povezivanja velikog broja pravila u jedno validno i kvalitetno rešenje.
Next.js · PostgreSQL · Prisma · Optimization · CP-SAT

Problem
Ako se svi časovi samo „nekako“ smeste u dozvoljene termine, problem još nije rešen.
Profesor može dobiti veliki broj rupa. Učenici mogu imati loše raspoređen dan. Isti predmet može biti nezgodno ponovljen. Učionica može napraviti konflikt. Pomeranje jednog časa može pokvariti raspored nekoliko drugih ljudi.
Zato sistem mora istovremeno da razlikuje pravila koja se nikada ne smeju prekršiti od kriterijuma koje treba optimizovati koliko god je moguće.
Ograničenja
Svaki profesor ima svoje predmete, raspoložive periode, radne dane i ograničenja koja raspored mora da poštuje.
Časovi moraju da se uklope bez preklapanja, uz što kvalitetniji dnevni raspored i minimalan broj nepotrebnih rupa.
Aktivnost mora da dobije odgovarajuću učionicu, uključujući predmete koji imaju svoju podrazumevanu matičnu prostoriju.
Nisu svi termini jednako mogući. Različiti razredi, profesori i aktivnosti imaju različite dozvoljene vremenske okvire.
Jedna promena može da izazove lanac problema na drugim mestima, pa lokalno dobro rešenje ne mora biti dobro za ceo raspored.
Nije dovoljno da raspored bude samo validan. Potrebno je smanjiti rupe, loše ponavljanje časova i nepotrebne radne dane.
Pristup
U jednom trenutku nije više racionalno popravljati raspored potez po potez i nadati se da se problem neće pojaviti na drugom mestu.
Zato je sistem dobio solver pristup koji posmatra veliki broj aktivnosti i ograničenja kao jednu celinu, uz jasnu razliku između hard pravila i kriterijuma kvaliteta.
Hard constraints
Konflikti profesora, učenika, učionica i nedozvoljeni periodi ne smeju postojati.
Optimization
Među validnim rešenjima traži se ono koje daje kvalitetniji raspored.
Human control
Automatsko rešenje ne ukida urednika. Sistem i dalje omogućava pregled i kontrolisane ručne izmene.
Validation
Svaka važna verzija prolazi proveru pre nego što može postati kandidat za objavljivanje.
Sistem
Školi ne treba matematički model koji radi u terminalu. Potreban je kompletan proizvod kroz koji podaci ulaze, raspored nastaje, proverava se, uređuje i na kraju objavljuje.
Uvoz i obrada školskih podataka
Draft verzija rasporeda za dalji rad
Automatsko otkrivanje konflikata
Optimizacija velikog broja međusobnih ograničenja
Ručno uređivanje i kontrolisani drag & drop
Verzionisanje i objavljivanje rasporeda
Javni pregled rasporeda
Dnevni pregled profesora
Rezultat
0
rupa profesorima u validiranom kandidatu
U prihvaćenom optimizacionom rezultatu raspored je došao do nula rupa profesorima, uz samo jednu preostalu učeničku rupu — dovoljno dobar kvalitet da se prestane sa agresivnim daljim peglanjem i pređe na stvarnu upotrebu.
To je dobar primer zašto optimizacija nije beskonačna potraga za matematičkim savršenstvom. Cilj je sistem koji rešava stvaran problem dovoljno dobro da može da se koristi.
Šta ovaj projekat pokazuje
Ovaj projekat mi je posebno važan zato što kombinuje klasičan full-stack razvoj sa modelovanjem ograničenja, optimizacijom, validacijom i realnim pravilima jedne škole.
Interfejs je samo poslednji sloj. Najveći deo vrednosti nastaje u pravilnom razumevanju problema i načinu na koji se velika količina međusobno zavisnih pravila pretvara u sistem.
Sledeći case study
RentalWorkers rešava potpuno drugačiju vrstu problema: korisničke uloge, tržište rada, više jezika i poslovne tokove unutar jedne velike platforme.
RentalWorkers →