we have about 1000 free seats for our lectures at our uni, and around 2000 seats demanded (maybe 500 students demanding 4 places each).
I'm developing a webapp with CakePHP, which lets students make a wishlist and enter 4 lectures per block, with priorities from 1 to 4. (This then goes into a MySQL-database)
Şimdi, web ön sol tek şey dağıtım algoritması yazıyor .. Admin eylemleri (vb, dersler eklemek öğretim görevlisi eklemek) yapılır, yapılır.
How should I best do this? A MySQL-script seems useful, but mysql is not very friendly when it comes to loops and if-constructs, is it?
Would it be smart to export the data somewhere and let another language handle the problem?
Edit: dnagirl requested more info about the algorithm:
We don't have business rules for the algorithm. We adapted an existing (very expensive) app from someone else at another university, which has rules we just adapted.
What he is doing (and what I am trying to clone, to save the big per-semester fee), is this:
- Olaylar (dersler, vb egzersizleri) tüm bir bloğa ait (blok belki 4 veya 5 farklı olaylar vardır örneğin Uluslararası Politika, olan)
- Öğrenciler 4 öncelikler 1, blok başına kadar 4 etkinlik için başvurabilirler.
- Algoritma, blok başına çalışır. Her blok için, onların sıralamasına göre farklı gruplar halinde öğrencileri bölmek. (Sıralama "daha iyi". Normal puanları 0-20 olmasıdır)
- Yüksek sıralama ile öğrenci grubundan rastgele birini seçmek. Ona öncelik 1 ile seçti olay bir koltuk verin bu olay dolu ise, ona öncelik 2 ile seçti koltuk vermek.; vb, 4 aşağı.
- Sonraki öğrenciyi seçmek, ve bu sıralama ile her öğrencinin bir koltuk kadar, aynı şeyi. Ardından, bir sonraki alt rütbeli gidip, tekrar her şeyi yapmak. Bu blok bittiğinde tüm bloklar yapılır kadar, bir sonraki blok ile yine her şeyi yapmak.
Ben bu algoritma en iyi çözüm değil biliyorum, ama ben sadece şimdi için klonlamak edeceğiz düşündüm, ve belki daha sonra mantık / olanakları bir iyileştirme çalışması.