File: FAQ.html

package info (click to toggle)
fet 3.12.30-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 8,172 kB
  • ctags: 2,567
  • sloc: cpp: 32,632; python: 115; makefile: 52
file content (591 lines) | stat: -rw-r--r-- 25,878 bytes parent folder | download
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 &quot;make clean&quot;
before running &quot;make&quot; (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>	-&gt;added - 15 May 2004.</P>
<P>	-&gt;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>	-&gt;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>	-&gt;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>	-&gt;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>	-&gt; 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>	-&gt; added - 14 February 2005.</P>
</BODY>
</HTML>