Mokyklos pamokų tvarkaraščio optimizavimo uždavinys
Papildė: Vitalius Marcinkevičius (papildymai, TvarkaAnalyser)
Atliko: Dalia Švirmickienė (Modelis ir JAVA)
Aurelija
Zakšauskaitė (Duomenys ir modelis)
Priėmė: prof. J.Mockus
Kaunas, 1999
Sudaryti programą, kuri nuskaito iš duomenų failo jau sudarytą vidurinės mokyklos penktų - dvyliktų klasių vienos savaitės pamokų tvarkarastį ir jį optimizuoja (optimizavimas suvedamas į mokytojų langų skaičiaus minimizavimą).
Mokyklos tvarkaraščio sudarymas - tai gerai žinomas bendresnės tvarkaraščio problemos pavyzdys. Pagrindinis uždavinio tikslas - optimizuoti tvarkaraštį taip, kad mokytojai turėtų kuo mažiau laukimo valandų, t.y. langų. Pamokų tvarkaraščio uždavinys išsiskiria tuo, kad jam egzistuoja apribojimai, t.y., pamokos tvarkaraštyje išdėstomos pagal tam tikras taisykles:
Optimizavimas pradedamas nuo jau sudaryto mokyklos tvarkaraščio.
Tvarkaraščio uždavinys yra priskiriamas NP-complete uždavinių klasei. Norint rasti tikslų sprendinį, naudojama formulė T=C*2^m. Pilnas perrinkimas pareikalautų didelių skaičiavimo ir laiko sąnaudų. Kadangi galimų sprendimo variantų yra labai daug, naudojamos tam tikros taisyklės, vadinamos heuristikomis. Naudojant heuristikas peržiūrima tik tam tikra leistinų sprendinių dalis. Iš jų išrenkamas geriausias sprendinys. Pastarasis yra pateikiamas kaip optimaliausias sprendinys.
Tikslas, sprendžiant pamokų tvarkaraščio uždavinį, minimizuoti pamokų tvarkaraščio įvertinimo funkciją. Sprendžiant pamokų tvarkaraščio optimizavimo uždavinį, naudojome šias heuristikas:
Mokyklos savaitės tvarkaraštis saugomas masyve string Mokytojai[M][3+5*7], M=64 - mokytojų skaičius. Čia Mokytojai[i], i=1..M - tai informacija apie i-ąjį mokytoją:
^ Tvarkaraščio perstatymo ir įvertinimo algoritmas
Šio uždavinio vykdomoji programa yra JAVA applet'as. Applet'o vykdomui reikalinga
naršyklė palaikanti JAVA (Netscape Communicator v. 4.06, Internet Explorer 4.0 ar aukštesnės
versijos naršyklės). Applet'as paleidžiamas nurodant atitinkama *.html failą.
Pastaba: programą galima paleisti ir naudojant java interpretatorių.
^ Optimizuojamo tvarkaraščio peržiūra
Norint stebėti tvarkaraščio minimizavimo eigą reikia iš "Run analysis"
dėžutės pasirinkti "TvarkaAnalyser".
Pasirodo TvarkaAnalyser langas.
Lango viršuje išvedama:
-> Last - paskutinio rezultato iteracija ir reikšmė;
-> Progress - paskutinio pažangaus rezultato iteracija ir reikšmė;
-> Displayed - šiuo metu lange atvaizduojamo rezultato iteracija ir reikšmė.
Žemiau:
->Freeze - užšaldyti lange atvaizduojamą rezultatą (pagal nutylėjimą jei
skaičiuojant gaunamas naujas pažangus rezultatas, tai jis automatiškai atvaizduojamas
lange);
->Save - išsaugoti tvarkaraštį faile nurodytame įvedimo laukelyje;
->File - išvedamas dialogas, kuriame galite pasirinkti failą, kuriame bus galima
išsaugoti tvarkaraštį (Pastaba: dialogas gali neatsirasti, jei jūsų saugumo
parametrai neleidžia to padaryti).
Lango apačioje mygtukai:
->Count - suskaičiuoja langų skaičių šiuo metu atvaizduojamame tvarkaraštyje
(t.y. simbolių X skaičių tekste);
->Refresh - atnaujina vaizdą;
->Help - išveda pagalbos langą;
->About - išveda informaciją apie sprendžiamą uždavinį.
Optimizuojant pasirinkome Mig1 metodą, iteracijų skaičius K=2, pradinė tikimybė :
0.5.
Pradinis langų skaičius buvo 129.
Vienu atveju buvo pasirinkta 10 iteracijų, kitu - 50.
Pirmu atveju, kai iteracijų skaičius 10, gauti tokie rezultatai:
Kai iteracijų skaičius - 50, gauti rezultatai:
Šis metodas naudoja atsitiktinumą langų šalinime. Šiame algoritme yra atsitiktinumo faktorius, renkantis tvarkaraščio eilutę ir konkrečią taisyklę minimumo radimui. Šis algoritmas nepažeidžia pagrindinių tvarkaraščio sudarymo taisyklių, tačiau jo perstatinėjimas nėra pritaikytas kitkam kaip tik mokytojų langų šalinimui. Uždavinys yra konkrečiai taikomas tik mokytojų langų minimizavimui, neatsižvelgiant į mokytojų užimtumą bei galimus kitokius faktorius. Norint tvarkaraščio minimizavimo programą taikyti praktikoje, reikėtų įvertinti daugiau kriterijų: mokytojų užimtumą, pamokų sudėtingumo lygį ir pan.
[1] D. Švirmickienė ir A. Zakšauskaitė. Mokyklos pamokų tvarkaraščio uždavinys.
Techninė ataskaita, Vytauto Didžiojo Universitetas, Informatikos fakultetas, Lietuva,
Kaunas, 1998.
[2] J. Mockus, W. Eddy, A. Mockus, L. Mockus, and G. Reklaitis. Bayesian Heuristic
Approach to Discrete and Global Optimization. Kluwer Academic Publishers,
Dordrecht-London-Boston, 1997.