1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
References for the idea of the timetable generation algorithm:
1. Michael Marte - Models And Algorithms For School Timetabling - A Constraint Programming Approach - 5 July 2002
(free, on the internet, one possible link is: https://www.en.pms.ifi.lmu.de/publications/dissertationen/PMS-DISS-2003-1/PMS-DISS-2003-1.pdf)
- Section 2.2.5 - Manual Timetabling - pages 23-24.
2. Jantien Hartog - Timetabling on Dutch High-Schools - Satisfiability versus gp-Untis - March 2007
(free, on the internet, one possible link is: https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=98a8bd5acac1757e3637f070ec039aa6c27a1009)
- Section 5.2 - page 27.
References for other algorithms and techniques used in FET:
1. Generating a random permutation of a vector in linear time (used to shuffle the time slots at which an activity can be placed,
and in other places in FET): Thomas H. Cormen, Charles E. Leiserson and Ronald R. Rivest - Introduction to Algorithms - First Edition (in Romanian),
Section 8.3, Exercise 8.3-4.
2. Obsolete - it was replaced in FET version 5.44.0: 32 bit random number generator: Donald E. Knuth - The Art of Computer Programming - Volume 2 -
Seminumerical Algorithms - Third Edition (in Romanian), Section 3.6.
3. The 32 bit random number generator named MRG32k3a: P. L'Ecuyer, ``Good Parameter Sets for Combined Multiple Recursive Random Number Generators'',
Shorter version in Operations Research, 47, 1 (1999), 159--164. - https://pubsonline.informs.org/doi/abs/10.1287/opre.47.1.159. Includes ideas and code
from the files: https://simul.iro.umontreal.ca/rng/MRG32k3a.h, https://simul.iro.umontreal.ca/rng/MRG32k3a.c, and/or
https://www.iro.umontreal.ca/~lecuyer/myftp/papers/combmrg2.c. Used with permission from the author, Pierre L'Ecuyer (9 March 2020).
4. For the virtual rooms allocation function we used an algorithm for a randomized maximum bipartite matching of minimum cost, inspired and modified from the
Hopcroft-Karp algorithm, which was described and implemented in pseudocode on the Wikipedia internet page:
https://en.wikipedia.org/wiki/Hopcroft%E2%80%93Karp_algorithm.
C++ code references for FET:
1. Qt Documentation: https://doc.qt.io/.
2. A tutorial on pointers and arrays in C, by Ted Jensen, Chapter 9: Pointers and Dynamic Allocation of Memory:
https://pdos.csail.mit.edu/6.828/2014/readings/pointers.pdf. We used the idea of contiguous memory allocation into a dynamic array.
We used the idea in the file src/engine/matrix.h.
3. C++ FAQ LITE, by Marshall Cline, Section [13] - Operator overloading, Article [13.12]: http://parashift.com/c++-faq-lite/.
We used the recommendation to add the () operator for a dynamically allocated matrix, which is not necessarily slower. We used the
idea in the file src/engine/matrix.h.
4. References for the Javascript code to highlight similar entries in the HTML timetables (FET code by Volker Dirr) can be found in
Open Admin for Schools: http://www.openadmin.ca/, authored by Les Richardson.
5. https://www.qtcentre.org/threads/53066-QMap-sorting-according-to-QLocale
6. https://www.qtcentre.org/threads/57210-how-to-change-background-color-of-individual-QHeaderView-section
7. https://www.qtcentre.org/threads/46841-Can-t-style-QHeaderView-section-selected-in-QSS-stylesheet
8. https://stackoverflow.com/questions/15519749/how-to-get-widget-background-qcolor
9. https://stackoverflow.com/questions/22635867/is-it-possible-to-set-the-text-of-the-qtableview-corner-button
10. https://stackoverflow.com/questions/19555121/how-to-get-current-timestamp-in-milliseconds-since-1970-just-the-way-java-gets
11. https://stackoverflow.com/questions/31255486/c-how-do-i-convert-a-stdchronotime-point-to-long-and-back
12. https://stackoverflow.com/questions/18022927/convert-high-resolution-clock-time-into-an-integer-chrono/18023064
13. https://stackoverflow.com/questions/37767847/stdsort-function-with-custom-compare-function-results-error-reference-to-non
14. https://stackoverflow.com/questions/14416786/webpage-returning-http-406-error-only-when-connecting-from-qt
15. http://amin-ahmadi.com/2016/06/13/fix-modsecurity-issues-in-qt-network-module-download-functionality/
16. https://stackoverflow.com/questions/48093102/how-does-qt-select-a-default-style
You may find updated or additional references for the algorithms and techniques used in this program on the FET documentation web page, https://lalescu.ro/liviu/fet/doc/
|