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 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=iso-8859-1">
<TITLE></TITLE>
<META NAME="GENERATOR" CONTENT="OpenOffice.org 1.1.3 (Linux)">
<META NAME="AUTHOR" CONTENT="Lalescu Liviu">
<META NAME="CREATED" CONTENT="20050228;17341200">
<META NAME="CHANGEDBY" CONTENT="Lalescu Liviu">
<META NAME="CHANGED" CONTENT="20050228;17343800">
</HEAD>
<BODY LANG="en-US" DIR="LTR">
<P>FET FAQ:</P>
<P>--------</P>
<P><BR><BR>
</P>
<P>Q: What is the organization of FET input data?</P>
<P>A: - Students - organized into sets (years, containing groups,
containing subgroups).</P>
<P> - Teachers.</P>
<P> - Subjects (the names of the possible courses, eg. Maths,
Physics, etc.).</P>
<P> - Rooms (classrooms).</P>
<P> - Activities: a coupling of one or more teachers, a subject and
one or more students set. This is usually named a course, a lecture,
a laboratory and so on.</P>
<P> - Constraints. They can be: time constraints (referring to the
allocated day and hour) or space constraints (referring to rooms
allocation). They can also be compulsory or non-compulsory.
ConstraintBasicCompulsoryTime and ConstraintBasicCompulsorySpace are
two implicit constraints of any timetable. They are added
automatically. Also automatically added are
ConstraintActivityPreferredTime, added by FET when a new activity is
inserted. Each constraint has a weight. The implicit constraints have
the weight 1.0. You can choose the weight of the other constraints
and you are encouraged to play with that. How to calculate the
conflict factor of a constraint? Basically, the number of conflicts,
multiplied with 1 for biweekly activities and with 2 for weekly
activities, and then multiplied with the weight.
</P>
<P><BR><BR>
</P>
<P>PS: Please try to work with integer weights, for now (between 1
and 100).</P>
<P><BR><BR>
</P>
<P>New adding: the FET data set also may contain a list of equipments
and a list of subject tags.</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: How does FET work?</P>
<P>A: A really simple genetic algorithm. You can read my papers
(available on my web site - http://lalescu.ro/liviu/fet/) about it.</P>
<P>The essence (hour allocation only): each possible timetable is
represented by an array, say times[i], where i goes from 0 to the
number of activities - 1. The location times[i] represents the
allocated time for activity i. This is the representation.</P>
<P>Now, it applies a genetic algorithm (using notions like selection,
crossover, mutation, etc.) to obtain a close to optimal solution
(hopefully).</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: How can I obtain a good timetable and why do I get different
results each time?</P>
<P>A: The generation of the timetable is a random process; please
restart and try again if you are dissatisfied with the results. Also,
you can increase the population number. For the moment, the
population number is limited to 8192 but, if you have plenty of RAM,
you can make it as big as you want (8192 means about 160 megabytes of
memory). This variable is stored in the file
src/engine/genetictimetable_defs.h and is named
MAX_POPULATION_NUMBER.</P>
<P><BR><BR>
</P>
<P>NEW ADDING - 18 Oct. 2004: you can decrease the variable
MAX_ACTIVITIES to the number of activities you have in your school,
then increase MAX_POPULATION_NUMBER. I have achieved results with
MAX_ACTIVITIES set to 400 and MAX_POPULATION_NUMBER set to 65536.
These variables can be found in the file
src/engine/genetictimetable_defs.h. Please run a "make clean"
before running "make" (there is a bug in gcc, I think).</P>
<P><BR><BR>
</P>
<P>NEW ADDING - 14 Feb. 2005: The variable MAX_ACTIVITIES is now set
by default to 1250, and MAX_POPULATION_NUMBER to 8192.</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: What is the structure of the students FET can handle?</P>
<P>A: FET was designed to allow any school structure:</P>
<P> - independent subgroups (non-overlapping);</P>
<P> - overlapping groups (several subgroups) and years (several
groups).</P>
<P> </P>
<P>-------------------------------------------------------------------------------</P>
<P> </P>
<P>Q: How can one work with overlapping structures of students?</P>
<P>A: If you have overlapping groups, then you must define the
smallest independent subgroup, which does not overlap with any other
subgroup. Example: you have 1 group, subject sport (which must be
taught to boys and girls separately) and subject physics, which is an
optional subject and only some students would like to have this
course (yes, FET can manage optional subjects). Then, you must define
the subgroups: boys who want physics, boys who do not want physics,
girls who want physics, girls who do not want physics. Now, it is
very easy. Just define
</P>
<P>group girls=subgroup girls who want physics + girls who do not
want physics,
</P>
<P>group boys=subgroup boys who want physics + boys who do not
physics</P>
<P>group physics=boys who want physics + girls who want physics.
</P>
<P>Then, you can add as many activities as you want to the
corresponding groups:</P>
<P>Activity1: teacher A, group girls, subject sport;</P>
<P>Activity2: teacher B, group boys, subject sport;</P>
<P>Activity3: teacher C, group physics, subject optional physics.</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P> </P>
<P>Q: Can you add more students sets or teachers to a single
activity?</P>
<P>A: Yes, you can add several students sets (subgroups, groups or
years) and several teachers per activity.</P>
<P><BR><BR>
</P>
<P>NEW ADDING - 18 Oct. 2004: The interface permits only 3 teachers
and 4 students sets per activity. But you can edit by hand the input
file and add there as more as 6 teachers per activity. Nobody asked
me for more than 6 teachers and 4 students sets.</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: What represents the weight of the constraints?</P>
<P>A: The importance of the respective constraint, relative to other
constraints. For the moment, please try to use integer weights
(between 1 and 100). I never had to use different values than 1, but
you might need that.</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: How can I increase the power of search?</P>
<P>A: You will have to increase the population number.</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: What means bi-weekly activity?</P>
<P>A: An activity which takes place once at two weeks (maybe this
concept is not usual, but I considered it from the beginning because
my faculty needed that).</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: Why are all the conflicts reported with double importance?</P>
<P>A: Because they are conflicts referring to weekly activities. For
biweekly ones, they will appear with single importance.</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: How can I contribute to/support FET?</P>
<P>A: Please see the TODO file. Also, you can send any
comment/suggestion to the author.</P>
<P>FET is free software and any donation would be great. Please
contact the author for that.</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: What is the algorithm behind FET?</P>
<P>A: A simple genetic algorithm applied on a simple data
representation.</P>
<P> In the future, I hope I will put here some real description of
the algorithm. Until then,here are different tricks needed to
understand the program:</P>
<P>- The genetic algorithm and representation behind the program
looks very simple to me now and I think it can be explained in at
most 2 hours. The engine is also not so hard to understand. The
nightmare is the graphical user interface, data representation and
loading/saving part.</P>
<P>- Time (hours) and space (rooms) allocations are 2 similar phases.
You must read my paper to see the reasons why you can firstly
allocate the hours and then the rooms.</P>
<P>- I use for the teachers, subjects, students (years, groups,
subgroups), activities and constraints a QPtrList. Before starting
the simulation, all this information is copied into some arrays, to
speed up the computation. Now, the simulation works by considering
each teacher, subject and activity an index in these new arrays (the
timetables are represented as matrices, indexed by the the teacher
(students, rooms), day and hour, and have integer values, which
represent activity indices (indices in this second copied arrays).</P>
<P>- I used int16 sometimes just because of the memory consumption</P>
<P>- With 8192 maximum population and 2500 maximum activities, class
GeneticTimetable has the size of about 160 megabytes (I hope I
remember well). In fact, it contains an array of 2500*8192*2*2 of 16
bit integers, which is ~160Mb of memory.</P>
<P><BR><BR>
</P>
<P>Modification (21 Feb. 2005) - with 8192 population size and 1250
activities the class Rules has size of ~160Mb.</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: Could you please detail the use of weights in constraints?</P>
<P>A: The weight of any constraint can be a real number (double).
BUT: I preferred that any return value of a constraint to be an
integer, which is this real value rounded up to the nearest integer
(reasons of speed). For the moment, please try to work with integer
weights (between 1 and 100).</P>
<P> </P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: Could you please explain why FET works in two phases, first the
time, then the space?</P>
<P>A: For reasons of speed. But in the two phase allocation the first
phase might find solutions that are not compatible with the second
phase (for example, working with the sample number 12, from Marek
Jaszuk, will not yield perfect solutions for the second phase,
although there exists a perfect solution, found manually.</P>
<P><BR><BR>
</P>
<P>There are two solutions: 1) FET to work in a single phase (but the
time will be a bit longer) or 2) add some time constraints so as the
solution to the first phase will always respect all the space
constraints (very complicated: all the constraints might be
compulsory or non-compulsory and the execution time is very long).</P>
<P><BR><BR>
</P>
<P>This is a research problem.</P>
<P> </P>
<P>-------------------------------------------------------------------------------</P>
<P> </P>
<P>Q: How does ConstraintActivitiesSameStartingTime work?</P>
<P>A: - for compulsory constraints, the solution candidate is
repaired before evaluation (so all solutions will respect these
constraints and there will be no conflicts reported). This is faster,
as an input file from user Ian Fantom proved.</P>
<P> - for non-compulsory constraints, the method is conflict
reporting (slower, worse than the above method).</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P> </P>
<P>Q: How does ConstraintActivityPreferredTime work?</P>
<P>A: - for compulsory constraints, the solution candidate is
repaired before evaluation (so all solutions will respect these
constraints and there will be no conflicts reported). This is faster
(proved practically, not theoretically).</P>
<P> - for non-compulsory constraints, the method is conflict
reporting. The procedure reports a conflicts factor that is
increasing with the distance to the desired period. This might
generate worse solutions, if you are only interested in the exact
placement. In this case, please use ConstraintActivityPreferredTimes
with only one preferred time.</P>
<P> Example: 5 days per week</P>
<P> 5 activities daily exclusive</P>
<P> activity 1 - preferred on monday</P>
<P> activity 2 - preferred on monday</P>
<P> activity 3 - preferred on tuesday</P>
<P> activity 4 - preferred on thursday</P>
<P> activity 5 - anytime</P>
<P> The best solution will contain 2 conflicts, and a possible
solution would be:</P>
<P> act 1 - mon</P>
<P> act 2 - tue</P>
<P> act 3 - wed</P>
<P> act 4 - thu</P>
<P> act 5 - fri</P>
<P> If you use ConstraintActivityPreferredTimes, you will get only
one conflict:</P>
<P> act 1 - mon</P>
<P> act 2 - wed</P>
<P> act 3 - tue</P>
<P> act 4 - thu</P>
<P> act 5 - fri</P>
<P> </P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: What advantages has FET over other applications?</P>
<P>A: - It is free software</P>
<P> - Supports weekly and biweekly activities (my university of
Craiova, Romania, needed that);</P>
<P> - Independent subgroups, overlapping or independent groups,
overlapping or independent years (flexible enough to permit any kind
of students structure). FET can even be used to manage every
individual student, if you really need that;</P>
<P> - Possibility of optional activities;</P>
<P> - Many kinds of constraints, possibility to add many more (please
suggest!).</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: What are the disadvantages of FET, compared to other
applications?</P>
<P>A: - Very unfriendly (no help, primitive graphical user
interface);</P>
<P> - Potentially buggy. I do not have enough sample files for
testing FET (and I hate testing :-)</P>
<P> </P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: Does FET compile on other operating systems than GNU/Linux?</P>
<P>A: FET can be compiled easily in operating systems which are
similar to GNU/Linux. I will provide help to compile this program on
any operating system. In particular, FET can be compiled on Microsoft
Windows, if you install Qt from trolltech.com.</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: Does FET claim to be the best timetabling software in the
world, like all the other timetabling applications?</P>
<P>A: I cannot pretend that, because I could not compare FET with
other applications (if you could help me, that would be great). All I
can say right now is that I did not see any application with as many
kinds of constraints and such flexibility as FET, and besides being
free software.</P>
<P><BR><BR>
</P>
<P>Is FET the first free timetabling software (GNU/GPL)? Hmmm... the
first one was Tablix, as I found out after finishing FET. You can see
links to this software if you look in the LINKS file or if you search
it on the internet.</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: What is the difference between unallocated and random
initialization? Which one is better?</P>
<P>A: This means the method of initializing the population of
solution candidates. It seems (practical results) that unallocated
initialization is better. I have not read about unallocated
initialization anywhere, but it seems to me more natural and I have
an empirical explanation somewhere on my thesis.</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: Help on ConstraintMinNDaysBetweenActivities.</P>
<P>A: It refers to a set of activities and involves a constant, N.
For every pair of activities in the set, it does not allow the
distance(in days) between them to be less than N. If you specify N=1,
then this constraint means that no two activities can be scheduled in
the same day. N=2 means that each two subactivities must be separated
by at least one day</P>
<P>Example: 3 activities and N=2. Then, one can place them on Monday,
Wednesday and Friday (5 days week).</P>
<P>Example2: 2 activities, N=3. Then, one can place them on Monday
and Thursday, on Monday and Friday, then on Tuesday andFriday (5 days
week).</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: Is it easy to add new constraints to FET?</P>
<P>A: It is very easy. I can say that I am able to implement a new
constraint in a matter of hours. You can find a description of this
procedure in file /.../fet-x.x.x/doc/how-to-implement-new-constraints</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: Help on ConstraintStudentsEarly.</P>
<P>A: It is a constraint that imposes the condition that all the
students must begin their courses as early as possible. You have to
be careful with this constraint: if any set of students begins the
classes later than the first hour in a certain day, you</P>
<P>will get a conflict.</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: FET fails to solve my timetable.</P>
<P>A: Please try to use a greater population size. Then, try more
simulations. If that does not solve your problem, please try to relax
the conditions on the timetable. You can accomplish that by deleting
compulsory constraints or by making them non-compulsory</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: Do the weights have any importance? What is the best way to
choose them?</P>
<P> ---The comment below was written when FET used only mutation
which randomized an activity's starting time.</P>
<P>A: Yes, the weights are important, but unfortunately I cannot
answer to the second question.</P>
<P> I can justify the first affirmation by an example: the considered
file is named (for the moment) sample4. As it is right now, it is a
good example of a very constraint timetable, difficult to schedule by
FET. The weights are chosen such that the basic constraints have a
smaller weight than the constraint avoiding the gaps for the
students. I think that after about 4 tries, FET manages to find a
clash-free timetable (I am only referring to compulsory constraints).
There was no trial in which FET failed with more than 3 compulsory
constraints conflicts (usually 1).</P>
<P>I wanted to impose the more important basic constraints, so I
raised their importance (weight) and lowered the weight of the gaps
constraints. The results came as a very unpleasant surprise for me: I
never obtained less than 3 conflicts, with an average of 6. What
conclusions can be derived: I am currently thinking and analysing
this issue. Until someone will come up with a plausible explanation,
I think that: the weights of the constraints are influencing the
conflicts function. The function can have more or less local minima
(which are a headache for genetic algorithms designers). You are
encouraged to play with different weights.</P>
<P><BR><BR>
</P>
<P>New comment: FET-s algorithm favorises the one-mutation
transitions, that is, from a candidate solution you obtain a new
candidate solution with a single activity rescheduled. The old
candidate solution and the new one must have a good fitness, to be
preferred in the evolutionary process. Basic constraints are more
likely to be respected by this mutation, whereas gaps constraints
require more mutations and the intermediary candidate solutions are
not so fit and therefore the chances are lower of finding the good
solution.</P>
<P><BR><BR>
</P>
<P> ---The comment below was written after I chosed to introduce also
the second kind of mutation, a swapping of two random activities.
This swapping was very benefical, and now the results are the same,
regardless of the weights (I am only referring to the above example).
The reason is that this random swap helps FET transform a candidate
solution which does break gaps constraints into a candidate solution
which does not.</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: Can I use FET to do interactive timetabling?</P>
<P>A: Yes, but this is not easy. All the part regarding data
representation and gradually construction of the solution is working,
only the interface has to be updated.</P>
<P> Anyway, when you add a compulsory
ConstraintActivityPreferredTime, it means that you fixed that
activity. You can use this feature for a semi-automatic or even
manual timetabling, but it is not so convenient.</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: Help on ConstraintActivityPreferredTimes.</P>
<P>A: You can specify a set of time slots when this activity can be
scheduled (a kind of OR of more ConstraintActivityPreferredTime).</P>
<P><BR><BR>
</P>
<P>Important: For only one non-compulsory preferred time,
ConstraintActivityPreferredTimes might behave better than
ConstraintActivityPreferredTime, depending on whether you are
interested in minimizing the distance to this preferred time or only
in reaching the exact preferred time. Please see the detailed
observation in the explanation of ConstraintActivityPreferredTime</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: Help on ConstraintStudentsSetIntervalMaxDaysPerWeek.</P>
<P>A: Quite a difficult and long name. A user needed a constraint to
disallow more than 2 afternoons per week for a students set. This
constraint is more general. You can specify an interval (by the start
and end hour), a students set and the maximum number of days in a
week when it is permitted to have activities in this time interval.</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: Help on Constraint2ActivitiesConsecutive.</P>
<P>A: A user needed a timetable to respect the requirement that 2
activities follow one after the other (order is important). For
compulsory and non-compulsory, normal error reporting is done. The
conflicts are a difference in days + a difference in hours. The
number of conflicts is multiplied with 2 if the first activity is
weekly (not bi-weekly) and again multiplied with 2 if the second
activity is weekly.</P>
<P> </P>
<P> ->added - 15 May 2004.</P>
<P> ->modified - 20 February 2005.</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: Help on Constraint2ActivitiesGrouped.</P>
<P>A: A user needed a timetable to respect the requirement that 2
activities follow one after the other (order is not important).For
compulsory and non-compulsory, normal error reporting is done. The
conflicts reported are: the difference in days+: - the difference in
hours if the activities are too far from each other</P>
<P> - a constant number if the activities overlap</P>
<P> - 0 if the hours are OK.</P>
<P>The number of conflicts is multiplied with 2 if the first activity
is weekly (not bi-weekly) and again multiplied with 2 if the second
activity is weekly.</P>
<P><BR><BR>
</P>
<P> ->added - 15 May 2004.</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: Help on ConstraintActivitiesPreferredTimes.</P>
<P>A: A user suggested that ConstraintActivityPreferredTimes should
be more general. Now, you can specify a teacher, the students and a
subject as a filter to a set of activities that must be scheduled in
certain intervals.</P>
<P><BR><BR>
</P>
<P> ->added - 15 May 2004.</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: After finding the timetable of our school, suppose that a
single teacher needs to modify his timetable and the rest would like
to keep their timetable unchanged. Thus, it is needed to fix all the
activities of the rest of the teachers and re-allocate the hours. Can
FET deal with such a situation?</P>
<P>A: Yes, FET can deal with that. Just add many compulsory
ConstraintActivityPreferredTime-s, one for each activity that you
would like to be fixed (the preferred time will be the one from the
previous allocation). This will not slow down the allocation,</P>
<P>because compulsory constraints of this type are dealt with in a
special way (repairing of the chromosomes, to be more specific).</P>
<P><BR><BR>
</P>
<P> ->added - 17 November 2004.</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: What about introducing duplicate constraints in the timetable
data?</P>
<P>A: It will slow down the automatic allocation, so please don't.</P>
<P><BR><BR>
</P>
<P> -> added - 12 February 2005.</P>
<P><BR><BR>
</P>
<P>-------------------------------------------------------------------------------</P>
<P><BR><BR>
</P>
<P>Q: What about the one phase and 2 phases automatic allocation?</P>
<P>A: If FET fails to solve your timetable in 2 phases (it has many
broken space constraints), try a single phase allocation</P>
<P> </P>
<P> -> added - 14 February 2005.</P>
</BODY>
</HTML>
|