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 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
GENERAL:
- Change "Equipments" into "Equipment"
- Check the memory leaks. In Valgrind it shows some leakage, I don't know where from
- Add translation in other languages
- Command line options.
- Add make install. Where should I place the executable?
- Proper help files.
- CVS support?
- Compare this program with proprietary (non-free) applications.
I saw that the only applications which use a text input file are "Mimosa" and,
more recently, "Lantiv".
- Collect results obtained by people worldwide. More input files required.
TECHNICAL:
- ConstraintActivitiesSameEndingTime
- ConstraintActivitiesNotConsecutive
- ConstraintActivityRejectedTime ?
- ConstraintStudentsNoGaps: is it better to consider the importance of
a gap as 1 or as its length? Currently, it is considered 1.
- ConstraintStudentsMaxGapsDaily
WISHLIST:
1----------several users----------------------------------
- Improve user interface - add help and wizard.
2---------------------------------------------------------
From Michael Towers:
"
** Why are such configuration values set as constants which are then compiled into the
program? Wouldn't it be better to put these into a resource file, loaded at run time?
** What about a rewrite of the front end in a scripting language - e.g. Python? It might speed
development and help debugging. It could also make maintenance of the code easier.
** Is there some way of doing "interactive" timetable development? The human would make
suggestions, or place some items, run the program, maybe move a few things around, run the
program again ... (Liviu: it would be very simple, the algorithm supports that. Only the
interface has to be updated)
** A clear and clean interface to your evolutionary engine as an entity separate from the
input/output might be useful.
"
"How compatible my idea of manual intervention is with the genetic algorithm is not clear to me.
Actually a purely manual approach would probably disallow clashes completely and offer all
sorts of visual signals to show where activities could or could not be scheduled,
which activities could be scheduled in a particular period, etc. This is something completely
different to what you have been working on. Maybe there is some middle way, but I feel some
of this stuff would actually be necessary (I do not yet believe that it is practicable to
generate timetables purely automatically - the requirements and constraints are too diverse).
It seems to me, it should be possible (but of course only after a lot of work!) to have
a beautiful manual timetable editor (which can also print the various timetables, and
perhaps save the data sets and results in a database) with an interface to an automatic
timetable scheduler which can be used to speed up the work."
3---------------------------------------------------------
From TheStar:
A constraint to think about is that some activities, and I suspect 'normal school management'
talks about teachers as in "One teacher per x students".
In the HSC year here, it's about one teacher per 26 students (or something like that).
At a recent excursion, it was one teacher per 10 students. Hope that helps :)
..............................
> Of course, you can add each student. I could have implemented this solution.
> But I doubt that the user has such patience :-)
You could always autogenerate the students...
"Quick-Build Students"
[Properties]
[Number]
(Build)
And it will generate students with name: AutoGen-11231, ID: 11231, and the like.
The user could then 'select' groups of these students... and... (Just an idea)
4---------------------------------------------------------
From Abdul Hadi Kamel:
Do you have a plan in mind to upgrade the existing fet from standalone
application to a client-server/web-based database oriented type of
application in the future. This is because the current fet is quite limited
especially in terms of timetable data which cannot be keyed-in /view s
amongs several users at the same time. This will cause hardship because the
people involved in making the class timetable in universities normally
consist of several key persons from different departments. Using standalone
application by several persons sometimes make data consolidation process
among departments become difficult and error-prone
I think it will be better if the FET can support a single timetable data
repository (using client-server model) in a database that can be input/view
by several users simultaneously.
5---------------------------------------------------------
From Yush Yuen:
Anyway, what i meant was, our teachers may have lunch at EITHER 5th or
6th period. so, i can't just use a break.
Do timetable of just selected teachers.
6---------------------------------------------------------
From Scott Sweeting:
I have come up with another idea for FET. You currently have a timetable - both
individual and compiled - for rooms, students and teachers. How about have another
one for subjects? This would be in both forms - individual and compiled - and would
contain the teacher(s), group(s) and room(s) for each activity. This would allow
you to see when a subject is being taught, which is handy for school and university
environments. This would allow you to cover all four areas - rooms, students,
teachers and subjects.
7---------------------------------------------------------
From Daniel S.:
I think it might be a good idea to make the rate of mutation a runtime
variable rather than a compile-time variable. According to your thesis, it
seems like the mutation rate is 80%, though I could not find any reference
to that in your code. However, near the end of a simulation, once the
fitness curve has become flat and the number of conflicts is only rarely
decreasing, it seems like the gene pool is too uniform and only some major
change will allow any improvement. If the rate of mutation is changed to
something like 99%, then the likelihood of a better schedule should
increase, because the schedules become more diverse. While this is a bad
way to function at the beginning because there will not be enough simple
propagation, at the end, when all the chromosomes are similar, mutation
becomes more valuable. At least this might be a solution to a situation
where a simulation has stalled with over 60 conflicts.
(Liviu: the mutation rate is stored in the fet.ini file).
8----------------------------------------------------------
From Paulo Carrasco:
Also it will be interesting to have some graphical output of the
simulation of the GA (ex. Constraint violation per evolution step, mean of
population fitness, etc.)
|