File: TODO

package info (click to toggle)
fet 5.18.0-1
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 141,688 kB
  • sloc: cpp: 124,180; makefile: 51
file content (1898 lines) | stat: -rw-r--r-- 93,194 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
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1----------------------------------------------------------
From Liviu Lalescu:

These are some rather technical problems, for developers, referring to some possible improvements in the generation code:

In generate.cpp, improve the stack memory for variables which are using int[MAX_DAYS_PER_WEEK][MAX_HOURS_PER_DAY]
and int[MAX_HOURS_PER_WEEK] (but be careful, I tried this and it seemed to slow down the generation.)

In the initial order, in nIncompatible, consider also teachers(students)intervalMaxDaysPerWeek, like in teacherMaxDaysPerWeek

Make students max gaps per day perfect. This is very difficult/complicated. Any bug/mistake would be critical.

2----------------------------------------------------------
From Volker Dirr:

Disable menus and shortcuts (in FET main form) if they are currently not
usable. For example: Disable teacher constraints, if there is no teacher
in the dataset. Disable space constraints if there is no room in the
dataset. (Disable means: Just make them unavailable/gray. Don't hide
them. Do it like OpenOffice.org, Firefox, etc.)

3----------------------------------------------------------
From Horatiu Halmajan:

Students set max days per week (but you can use for the moment students (set) interval max days per week).

Max gaps constraints with weight under 100% (this is very difficult)

4----------------------------------------------------------
From Horatiu Halmajan:

Horatiu:
I met a situation: a teacher asks for maximum 2 working days, but these
days should not be consecutive.

Is there a way to implement it in .fet?

The only (manual) way I could think of, is to set the teacher as
unavailable on Tuesdays and Thursdays, thus leaving him available on
Monday, Wednesday and Friday (any two of these are unconsecutive).

Any other ideas...?

Liviu:
I have another idea: add a dummy activity for this teacher, split into 2
per
week, min n days = 2, with 100%. You just need to take care that this
teacher
has place for these dummy activities (enough slots in the day) and to
consider
these dummy activities as possible gaps, so if teacher has max gaps 2 then
make max gaps for him 0.

Horatiu:
For my case, the second idea worked perfectly, as my teacher does not accept
gaps.

I have also "played" with the first with the first idea, as it seems to be
the most un-restrictive one. It also worked. I tried it three times, and in
all three situations at least one of the dummy activities was the first or
the last activity for the teacher's day. So, there is a chance that the
teacher would end up with only one gap.

Which leads me to a suggestion: An activity end (or starts) a teacher's day.
Similar to "an activity ends students's day)

5----------------------------------------------------------
From daviodan:

I will refer to sample_Brazil_more_difficult_max_2_gaps_for_teachers.fet

1. In the FET activities dialog there exist more filters after the teacher, group, etc.
If we choose for instance the subject "Math" and we do the filtering also after the name of 
the teacher, then the list of the filter should contain only the name: Bruna,Silvania,Wellington,
because only these teache Maths. In the present moment the filter contains the list of all teachers.
The same for all the other filters.

2. In the teachers' statistics dialog, when we click a teacher, there should appear in the right
in a box all the constraints for this teacher inputted by that moment.

6----------------------------------------------------------
From Volker Dirr:

for code cleanup always use the same style:
some constraint c have
c->teacher_ID
others have
c->teacher_Index

7----------------------------------------------------------
From Azu Boba (modified/updated by Liviu Lalescu):

About timetable view teachers: ... I propose is to 
have fixed cell height and width so it would be easier to comprehend and 
pinpoint what you see when switching between teachers. 
We have a 3D table (teachers/days/hours). I propose to 
add a new view named e.g. "View (day for teachers)" (of course you keep 
the "View (teachers)" too). This view will be similar to "View 
(teachers)" but it will have all the days as selectable tabs on the top. 
The 2D table it will display below the tabs would be the Teachers/Hours 
view for the day selected. The buttons and functionality will be the 
same as in the case of "View (teachers)". ...
The best part though is that with this 
new View you will be able to better comprehend/modify the schedule in a 
day by day base...
You might also want to consider adding an additional flag when locking 
an activity. This flag might be called "Save data and timetable flag" 
and would be set when an activity is locked automatically during the 
"Save data+timetable as..." procedure. Why? Mainly, because when you 
want to unlock e.g. a specific day in a "Save data+timetable as..." 
saved timetable you do not want to unlock all the activities of the day; 
you want unlocked only the ones that were locked by the "Save 
data+timetable as..." process. There are activities that the schedule 
creator manually locked them before FET generated the table (e.g. a 
specific lesson needs to happen only on a specific day and time). By 
selecting and unlocking a whole day as things are now you unlock these 
activities too! This means that if the schedule creator doesn't pay 
enough attention he might mistakenly create a schedule with activities 
set at undesired hours. The solution I propose to this is to toggle 
between locked/unlocked only the activities that have the "Save data and 
timetable flag" set. To unlock the manually locked ones the user would 
have to do it in a different/manual way (see the paragraph below about 
the editable "Details" box) or even better be asked with a message box 
if he wants to unlock the manually locked activities too.
I also mentioned that in order to remove a teacher from a specific day 
(because he is ill or on a leave) I have to go to "View (teachers)" and 
pinpoint all the activities assigned to the teacher for this day 
(checking their IDs from the "Details" text box and then writing them 
down in notepad). Then I close this view and go to the "Activities" 
list, find the specific activities and uncheck "Active" for them. This 
is a little annoying and a prone to errors procedure especially if there 
are more than one teachers missing. What I thought as a solution for 
this has to do with the "Details" text box on the "View (teachers)". It 
would be great if it wasn't just a simple text box but an editable 
interface for every changeable value. What I have in mind is to split 
the "Details" into two parts; the upper part would include all the non 
editable values while the lower part all the editable ones. Right now 
for me, only the "Active" and "locked time" values are worth of being 
editable, so  simple check boxes would suffice but someone else might 
want other values editable too (e.g. Total number of students, duration) 
or new values worth being editable might be added in the future, so it's 
a good thing to have.
Last but not least (and certainly the most difficult modification) it 
would be great if you could drag and drop activities in the "View 
(teachers)" and "View (day for teachers)" GUIs. Of course by doing so 
you create conflicts and this will need handling. But I think all the 
before mentioned changes are enough work for you now and I need to think 
this a little more to come up with a viable solution.

8----------------------------------------------------------
From Marco Barsotti:

The only thing that I would like to find in a future version of FET is the
ability 1) to find when a combination of constraints is impossible to
respect. 2) to recognize which constraints generate a bottleneck, where FET
stand by searching the little hole where to pass and go on, placing
activities.

9----------------------------------------------------------
From Saad (on forum):

Manual improvements of the timetable.

10---------------------------------------------------------
From Volker Dirr:

Change remove redundant to deactivate redundant.

11---------------------------------------------------------
From Volker Dirr

I got reports from a user that he had trouble to find the correct
output files today, because there were so many files in the directory.

just maybe:
maybe write only the index file into the result directory. then make 3
subdirectories. one subdirectory with all html files, one with all xml
files and one with all csv files. so we don't need the export menu
anymore, because it is exported always by default and the directory is a
little bit more tidy.

12---------------------------------------------------------
From Volker Dirr

We have:

1. category: 3-4 classes
2. category: 5 courses
3. category: 4 religions (always same time, so i didn't enter it)
4. category: several working groups (after noon lesson, so i add them
manualy)

Now have a closer look:
4 classes * 5 courses * 4 religion is already 80 subgroubs.
so if i also add working groups (lets say 5, but there are more!)
then we have total 400 subgroups.

that is stupid, because i have only around 100 students in a year!

i think in that case it is wise to enetr data not in groups, add
students
individual.

that is like high school do it.

- add a year.
- add groups (NOT with split year, but same names)
- add a group ALL STUDENTS.
- add subgroup with all students names into ALL STUDENTS.

- now we need a table to every year:
	- horizontal are the division names (must not be group names, but
	can)
	- vertical must be the student names
	- every cell is a bool checkbox

no the timetablemaker can check every single student. of yourse by
checking the studentsname must be added as subgroup into that group.

13---------------------------------------------------------
From Maciej Deorowicz:

Possibility to disable contraint without removing it.
Such 'Active' checkbox like on activities dialog.

14---------------------------------------------------------
From more users:

Multiple processor - split multiple timetable generation on multiple processors

15---------------------------------------------------------
From Volker Dirr

how about displaying "minimum home
room hours" and maybe also "maximum special room hours" in the teacher
statistics? because a timetable maker (maybe) need that for his
planning.

16---------------------------------------------------------
From Danail Traichev:

You see, this division in subgroups is very complicated - to understand 
and to add by hand. And at the end you came with a lot of subgroups that 
have only formal sense, for the algorithm, but are visible in dialogs, 
in the final chart and everywhere. It should not be like this. One will 
have to divide years in wizard-like dialog, with questions:
1. How many classes you have for this year?
2. Define courses for which students from this year study together
3. Which of these curses start at same time. Group them by this criteria
4. Define from which classes came students for these courses. Whole 
class is caming, or only part of it? Where other part goes - have rest, 
or has another activity, and if yes - which one?
5. Define teacher that is teaching in every course.

This is a draft, but some wizard like this will save *a lot of* 
mistakes, and will make program much more user friendly. Then you can 
add internal groups, but not show them to users, or at least show if 
they set some option. Show them only groups and subgroups that they need 
to put in activities, and show these same in final html output.

This is my opinion of user in trouble :-)

Second set:
1. Ability to select more than one constraint and delete it, or set its 
weight
2. Ability to disable all informative and warning messages, or to display 
them in status bar or in another log window.
3. Option to remember last focused control in dialogs - very useful if 
you want by keyboard to open many constraints and change their weight
4. Constraint "longest gap is n hours"
5. A way to save last generated timetable and reopen it again (for example 
for printing it with different html level, or for viewing it.
6. Ability to show free teachers for every position in students and 
teachers timetable - very useful if you want to find somebody to replace you

17---------------------------------------------------------
From my80s:

also in program we have
a matrix with days x hours = n x n
if this is allocated from some activity it should get error in
precomputing in real time
if we put another activity 100% in same cell

that would take less time to find mistakes

18---------------------------------------------------------
From my80s:

export as odt (OpenOffice.org) table (spreadsheet)

19---------------------------------------------------------
From Danail Traichev:

If you make it how it is now with years, groups and subgroups, it will not
be complicated for entering and even will not need change in most
constraint dialogs. What I mean - define "groups of subjects", and allow
"group of subjects" name to be used in every place where subject can be
used. Much  like it is now with student sets - both student years, groups
and subgroups are placed in one control and added from one place.

But of course, I don't know how this will fit with FET internals. And FET
is fine even without this. It simple will make entering constraints a bit
easy. The other posibility is if every activity constraint dialog has a
posibility to select multiple activities, and to filter them by "subject
group", or at least by "selected subjects". That will make entering
constraints like in my case easy.

20---------------------------------------------------------
From Volker Dirr:

maybe it's possible to do Form::setLayoutDirection(Form::LeftToRight) only to the filename or language in menu.
(bracket bug in Arabic translation)

21---------------------------------------------------------
From Volker Dirr:

I saw at Les's timetable, that he called hour==period.
also at wikipedia it´s called period. (see School_timetables chapter, terminology)

I am not sure about that. in German we have the also the word "peridode",
but we don´t use it for timetables. we say hour.
but maybe that´s just colloquial language. this colloquial language is ok,
because the schools have 1 schoolhour (45 minutes) or 2 schoolhours (90
minutes).

but maybe it´s better to use also the word periode, because by this
schools with 60 minutes activities (2 periods) and 90 minutes activities
(3 periods) don´t get trouble with the word hour (because it entrap /
ensnare /
inveigle so write 1 hour and 1,5 hour. but "hour" is an integer values!

but on the other hand people (maybe) will not understand immediately the
word period.

so maybe we should write "period (hour)".

22---------------------------------------------------------
From Volker Dirr:

maybe change "current constaint" into "description", "constraint
information", "description of the selected constraint", ... (very very low
priority, maybe one day)

23---------------------------------------------------------
From Volker Dirr, regarding translation:

1. maybe it's better to be more exact. example: phrases "min hour" better "min hour per day"

2. sometimes the english version isn't always the same.

sometimes you wrote "add current activity"
sometimes you wrote "add activity"
sometimes you wrote "add current"
sometimes you wrote "add"
i think it should always be the same.

also sentence like: "You have to know that this constraint ..."
should only be: "This contraint ..."

3. maybe "start" should be "generate" in the generateform.

4.	- if you wrote one or more sentences, please always end with ., ! or ?.
	- sometimes you wrote "students subgroups", i think you just need to write
	"subgroups", because teachers have no subgroups.
	- all "add", "modify", and "remove", "close" phrases should only contain
	this word. no more words like "current" or "group". maybe wrote them with
	QObject, because nearly every dialog have this 4 phrases.

5. i think we should think and write a small definition note for english
phrases.

it looks like in a few times this terms are not always used same/correct:
hour
duration
period
lesson
activity

when we write a small definition note, then we have to care about this:
words must also be correct for schools that don't use "hours" as one time
hour.
in Germany one school hour is 45 minutes. but that's no problem. we use the
same words for that.
but i remember a letter, a user wrote that he has 60
minutes hours and 90 minutes hours. so he defined 30 minutes "hours" and
set duration == 2 or duration == 3 to the activities.
so the definition and use of hour, duration, period and lesson must also
match to this.

please let us first a small definition not for this terms:
hour, duration, periode, lesson, activity
this will help if we add new or modify old english phrases and it will
also help translators.

6. maybe: no brackets in "view (students)", "view (teachers)", and "view
(rooms)".

7. and it looks like we shouldn't use the word "lesson".
in the most phases it's better to replace "lessons" by "subactivities"

8. that is also why i already asked you to change english translations,
because some phrases can be shorten.
for example all sentences with "you", "current" or "that mean" can be
shorten (in english and german).
example:
"If you insert current group to current year, that means that some years
share the same group (overlap)"

shorten version:
"Some years share this group if it's inserted."

9. and a maybe other thing. example:
view in fet-mainform.
there is "Time contraints (techers)".
and in this folder is for example "Teachers max gaps per Week".
i recommend to write just "Max gaps per Week".
Reason:
- it's shorter
- it's clear that it "teachers" contraint, because it´s in that folder

the English version looks fine, because you are always possible to write
first "teachers". (except on min days between activities. You
are not able to write Activities first.)
In German translation it is much more difficult the write "teacher" always
first. even including the word teacher is a much longer phrases than in
english. it will be much easier and nice, if we don't write teacher here.
maybe the same problem in other languages.

24---------------------------------------------------------
From Volker Dirr:

how about this:
if you go to data->activities
the you have 4 different filters where you can choose something.

for example i choose filter subject "DE". now can see all "DE" activities
at the left side. so it is ok like it is, or i see a missing one. if i see
a missing one, then of course i want to add a subject "DE". so this
subject should be default if i press add.

so the function should have four parameters (the four filters),
defaultsetting in the data->activities->add screen should have be the
filters of data->activities.

25---------------------------------------------------------
From Volker Dirr:

For multiple generation:

Maybe add a checkbox "shutdown after job is done".

26---------------------------------------------------------
From Volker Dirr:

long time goal: code cover planning.

27--------------------------------------------------------
From bmlahcen13:

for that i advice to start thinking from now to
- enhance the UI
- use Database
- add web client
- use UML models

and also for the structure, use "int id", this will
enhance both runtime and will reduce the storage,
because in the FET xml files, for example to store and
activity, you have to write again the name of the
subject, teacher, students and also the day and time
slot in a solution. the same happens in time and space
constraints, these 3 entities represent a big
percentage of the size of the file, so you use int IDs
and not names you will certainly gain a lot of space
and also a better execution time, i know, as you said,
that the internal structure uses int id but for
loading and saving xml files and searching, the usage
of strings delays them.

Liviu: maybe it would be better to compress the input file

28--------------------------------------------------------
From more users:

Improve the user interface - add help and wizard.

29--------------------------------------------------------
From Michael Towers:

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 ...

A clear and clean interface to your engine as an entity separate from the 
input/output might be useful.

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."

30--------------------------------------------------------
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 :)

Liviu Lalescu: 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)

31--------------------------------------------------------
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.

32---------------------------------------------------------
From Volker Dirr:

If you think that other people don't like this default constaint how about
making a menu "default settings". there you can add "language" and my
defautt wish. maybe there are other parameters, that can be set in this
settings. I guess that there a people who want set duration to 2 or 4 by
default.

33---------------------------------------------------------
From kdsayang

I would like to see FET generate the time table in 

1. certain amount of time for each time table
2. with some setting about the remaining weight soft conflicts
3. generate multiple variants

For example
(A) rules are
(i) the user select to generate 10 minutes time limit for each time table
(ii) user set 0 for remaining weight soft conflicts
(iii) the user select 10 variants

the outcome
(B)
(i) the time table finished and it has generate 10 time table that concur with 0 remaining soft conflicts for each time table
(ii) the time table finish and it only manage to get 5 variants from 0 remaining weight soft conflicts
(iii) the time table finish BUT it don't manage to generate any variants with 0 remaining weight soft conflicts

refer to (B)(iii)

the user can change
(i) longer run time to generate time table (with crossing finger) hehe... Others setting is not change
(ii) longer run time to generate time table with increasing value for remaining soft conflicts (0.5, 1.0, 1.5 etc)

As you can see in timetable --> generate multiple variants, features in (A)(i) and (A)(iii) are already there. I hope that you 

can figure it out on how to implement the feature in (A)(ii). It would be marvelous.

34---------------------------------------------------------
From kdsayang

If a user want to add "an activity have a set of preferred rooms", the user will need to click one 
by one to add right???... So, I would like to suggest that we group them like when user want to add 
an "activity". There (activity), we can select by years, groups and subgroup for students. Instead of 
clicking all the student groups in years 1, user can just click year 1 to include them all into students....
 
For example for rooms (room group then room subgroup)
 
HALL
Hall A
Hall B
Hall C
 
TUTORIAL
A-A1
A-A2
B-A1
 
COMPUTER LAB
Lab 1
Lab 2
Lab 3
 
So when user want to add "an activity have a set of preferred rooms" for all the tutorial room, instead 
of clicking 20 tutorial room one by one, user just click the group that is Tutorial. Easy right???

35---------------------------------------------------------
From kdsayang

What I meant is in Data --> Time Constraints --> Teacher Time Constraints --> A Teachers not available time, 
1. If you double clicked Afida, 
2. It will show Afida not available time right. 
3. Then if you want to change Sambilan not available time by choosing Teacher drop down menu, nothing happen. In fact, It still shows Afida not available time. 
4. So, if you want to change Sambilan not available time, you have to clicked Cancel button first, 
5. then double clicked Sambilan. 
6. Now you can see that Sambilan not available time is updated.

My suggestion is that It will be better If FET can update to Sambilan from Afida in Step no 3. 

36---------------------------------------------------------
From kdsayang

I have some other suggestion.
 
1. It will be GREAT if FET can be turn to tree structure. We can show/hide the structure
2. In the tree structure, we can use the copy, cut and paste to edit the subject, activities, etc in the tree structure

37---------------------------------------------------------
From kdsayang

If I want to change many teacher not available time, I need to add one by one although the teacher not available time is the SAME.
 
So, I suggest that you can add a set of teachers not available time. Same as rooms not available time feature.

38---------------------------------------------------------
From kdsayang

On current version, there is no group for subject and teacher. It is quite annoying if you have to look for certain subject X and teacher Y in that list. When the list grows bigger (let say 100), it's kinda hard because you have to find that lecture and subject in that 100 lists. Although the sorting is a good way to find the subject and teacher, IMHO maybe we can make groups in that teacher and subject section

For example I want to find teacher X and subject X. Teacher X is a teacher that teach Diploma IT student. So, I just search that teacher in Diploma IT group rather than searching 100 other list. Same as subject X.

This feature is needed if my/our/your university/school is a big one where teacher and subject are hundreds.

39---------------------------------------------------------
From Zsolt Udvari

We've created a timetable but the rooms aren't. So we do it by hand.
How can I change in FET the rooms simpler in a generated timetable?
The times are locked.
It would be the most simplier when I open e.g. the teachers timetable,
click on a activities and I can add room to this.

Liviu:
I'm sorry, but you'll have to add manually constraints activity preferred
room for each of the activities.
I am not sure I understood correctly the problem, if not, please excuse me
and explain more detailed.

Yes, imho you understand my problem. I hoped that there is a simpler
solution. So, maybe in the next releases would be nice: when a
timetable is generated, user can changes/sets the rooms (only the
activities without rooms of course) from the timetable (Timetable ->
Show teachers/students): you select an activity, you click a button
with "Assign room" and choose a room.

40---------------------------------------------------------
From Naji

Hopefully, FET's team can enhanced it to be able to export the xml data to database, that will facilitates the 
output of the data and enables programmers to engage it with their programs.

41---------------------------------------------------------
From Massimo Mancini

This is a request for a new feature...
For Teachers and Subjects I like to use a brief description (BD), a code, and I optionally convert it to corresponding long description (LD) in the generated timetables (I refer to my current timetable procedures). So I need to define two new fields. Example:
Theacher:  MANC, MANCINI
Subjects: MAT, MATEMATICA

I think that this can be achieved without any change to current interface, simply using the format above. Of course I want use the BD only in defining activities and when I have to specify subject and Teacher.
I wish to output the brief (only BD) or complete (LD) timetables

42---------------------------------------------------------
From jaspal

INSTRUCTION FOR ALLOTMENT OF SUBSITUTION/ ARANGEMENT PERIODS

On a particular day, faculty can be on leave, or may be busy with some 
other work hence unable to take the assigned classes. Thus, the classes 
taken by those faculty members are to be assigned to some other faculty 
members.

Facility of keeping track of back log periods due to absence or 
unavailability are to be recorded year and group wise in the software. 
Also extra periods taken by the faculty has to be recorded year and group 
wise.

43---------------------------------------------------------
From Bingen

For the internal organization of my school, it's convenient to have a general timetable for each
group, A and B, and our timetabling software gives it. But as you observed, the footnote legend
style it's not probably the best, as it's a little bit difficult to understand. I think in FET a good
solution could be to be able to define a group of activities for a group (for example A, or even the whole
year A and B), and then subdivide this group of activities in many subactivities, each of them
with its own teacher and classroom (I have read the term "subactivity" in the manual, but I
can't find a definition of it, nor find it in FET menus). So a group would be attending many
activities at a time, which is not possible right now in FET. Maybe if it represents a structural
problem FET could define internally subgroups, but being transparent for the user. This activity
group should have a user defined name to identify (for example "Optative 1"). And then inside,
each subactivity would have the real subject ("French language", "Arts", etc.). In this way the
user would avoid to define such a great number of subgoups, and in the teacher's timetable
everything would appear right and clear, with no reference to the activity group, just to his own
subactivity, and with information of room besides of the group (opposed to the pseudoactivity
solution to book the room).

In the group timetable, the common activities would appear as always, and the others would appear
with the activity group name. Then parallel timetables with blanks in the common activities and
one of the subactivities for the rest could be printed . So we would need as much timetables as
the maximum number of subactivities of the largest activity group. Maybe the subactivities could
be diplayed in couples to avoid many timetables, as it happens now with group timetables and
"same day+hour" activities.

These parallel timetables could be hanged up on the classroom board, and, of course, each pupil
should know which of the subactivities has to attend. I think this display should be clearer than
the footnote legend style. I don't know if I have explained it clear enough, but if not I could
send a spreadsheet with an example.

Also, with this solution, if no activity group are defined all works as before, so we would avoid
the problem commented by Liviu of people not needing it.

44---------------------------------------------------------
From Zsolt Udvari:

command line version which needs no X server

45---------------------------------------------------------
From Massimo Mancini:

SUGGESTION BY: Massimo Mancini

WHERE: add activity form

WHAT: a check box to lock the total duration of activity

WHY: to introduce an automatic check and alert on the sum of durations of
single subactivities (currently the total duration reflect always the sum,
so if you alter the single duration, FET recompute the total, this can be
what you want or maybe not)

WHEN: all new future are always ASAP :-D (the programmer says...)

FURTHER DEVELOPMENTS: a templates system for automatic generation of activity based
on year and subjects expected for a class of that year (normal italian
situation, abroad I don't know ;-)

46---------------------------------------------------------
From Bingen:

- In my school the timetable is divided in morning (from 8:00 to 14:30h) and afternoon (15:00 to 17:00h). In the morning there's a break from 11:00 to 11:30h.
I have defined this break as an hour of the timetable, but not allowing activities for any set of students in this slot. The reason is to plan the surveillance
of the teachers in this slot. There must be always 2 teachers looking after the pupils during this period, so I define activities without students.
The problem is that if a teacher does not have surveillance at break time, it should not count as a gap. If I define this slot as break in "Misc time constraints"
then I can not define the surveillance activities.
- We try that all the teachers work maximum 2 afternoons per week. This has been easy to define with "All teachers work in an hourly interval max days per week".
But we try also that teachers who work two days per week in the afternoon to have a free morning. I don't know how to define this situation.

47---------------------------------------------------------
From T. Renganathan:

2) You can give a provision for the user to perform his own sorting of years,
teachers, etc., for e.g., using dragging and dropping.
 
3) You can include a provision for multiple selection of subjects, teachers,
activities, etc., for example using Ctrl or Shift key. This will especially be useful for deleting
multiple entries.

48---------------------------------------------------------
From Volker Dirr:

Volker:
if i am in FET->Data->Subjects
i can't see at the right side all constraints.

in my latest samplefiles for example the "a set of subactivities has a
set
of preferd time slots" is missing to that subject.

also in FET->Data->Activity Tags are not all constraints displayed.

Liviu:
Yes, I know, because these are related to activities. I chose not to show them.

Volker:
please add in TODO. i think this is a nice feature we should not forgot.

Liviu:
I thought about your proposal. I think it cannot be done and I know the reasons why I didn't do that: 
a constraint activities preferred starting times has subject "" or specified. If it is "", then it is for 
all subjects. So, I should write all constraints of this type with subject "" for each subject. But this 
is not correct. A constraint might have a teacher who doesn't have this subject.

49---------------------------------------------------------
From Volker Dirr:

by the way we should add a new tests before generating a timetable:
if 2 activities are grouped, then turn of min n day constraint of that
activities.
if 2 activities are consecutive, turn of min n day.
if 2 activitives have same starting time, turn of min n day.

or the opposit, bedending on what has a higher weight.

maybe instead of turning of maybe just warn the user that this two
constraints are not acceptable at the same time and tell him he should
care about that problem first of all (by removing or reducing weight to
0%).

50---------------------------------------------------------
From Les W. Johnstone

Hi Liviu,

I'm into the thick of it again scheduling...
now working on two different schools...

Sacred Heart College is not a problem since they use a five day blocked
schedule. Saint John's College though is a slightly different problem...

They have a five day AB schedule...

which means I entered two activity groups... one for week one and one for
week two and used different activity tags... w1 and w2 to keep things
separate, with specific rules of placement of w1 in Week1 and w2 in week
2...

However, your spacing feature doesn't work ... not on more than five
days.... not sure it would be possible to extend your logic or not... (what
do you think?)

The other thing I've noticed is a bit of an annoyance concerning
constraints... when you are trying to get a schedule to work you push in
constraints however, on slight modification of activities (concerning
resources etc.) sometimes, what was once soluble becomes insoluble.

Usually this means you have to relax constraints in order to get the
schedule soluble... some (most) can be set to a 0% weight which means they
are ineffective.. then later you can turn them on again... however, some
rules are only acceptable at 100%... which means you need to drop them from
the constraint set...

but the constraint may be important and be forgotten to reimplement...
could you set an active/inactive flag for constraints like you have for
activities... so it can later be reimplemented?

51---------------------------------------------------------
From Chafik Graiguer:

Liviu:
There is no easy way to remove a component.

Chafik Graiguer:
well
to re-use  last year .fet file,
what about
-removing all activities at once, so Data keeps only subjects, teachers and groups ?
or
- removing all teachers from all activities (because teachers dont teach the same groups every year)
or
- removing all groups from all activities

Liviu:
I just looked in the sources and it seems that in statistics I only count active activities. Please verify that, though.

Chafik Graiguer:
yes !
and I spend nealy ONE hour counting periods for teacher  Eng1!!
in Statistics, teacher  Eng1 has only 20 hours
in Data  ---> activities, I count 21 hours :-))  for him
finaly, I realised that I has deactivted one hour component by mistake

so, is it possible to add this line into activity window:
Quote:
Activity:
Teacher=fr4
Subject=fr
Students=2Lg -1
Id=1
Activity group id=1
Duration=1
Total duration=5
Total active: XX
Active: yes
Total number of students=0 

-----------addition:
Chafik Graiguer:
- removing all groups from all activities
sorry, removing groups does not make sense, because, activities should keep group's information
Groups have the same set of activities every year

So the most important is:
-removing all activities at once, so Data keeps only subjects, teachers and groups ?
but this is not so good, as we will lost time and space constraints related to those activities
So, the best of the best is:
- removing all teachers from all activities (because teachers don't teach the same groups every year)
so we can re-assign new teachers to groups

52---------------------------------------------------------
From Massimo Mancini:

Consider this:
1. I inspect the activities of a teacher (via filter on teacher)
2. I see the lack of an activity (or I delete one or more filtered
activities because I want redefine them)
3. I push the add buttom... why the subjects aren't
only those that teacher teach?

A more general question... why not associate in advance the teacher with
his students and with the subject he teaches? In this way I could obtain some
type of automatic filter.
If I add an activities of mines I select MANC but MANC teach MAT in GEO_1B,
GEO_2B, GEO_3B and IGE_1A. The program should be aware of this.

53---------------------------------------------------------
From Massimo Mancini:

When I review generated timetable with view (teachers) menu option I can lock/unlock
the placed activities and this is ok. But why I cannot do the same for
empty cell? The meaning of locking an empty cell should be to add/modify a
Teacher not available constraint or something that have the
same effect... so a new generation leaves those positions untouched.

A I said I would to lock/unlock some students or some teacher and
recalculate the rest.

54---------------------------------------------------------
From Frans Cilliers:

About campuses: What I thought is the following. Currently you have min
gaps between buildings and maximum building changes per day. If this can
also be done for campuses, for example minimum gaps between campuses for
teachers. (An extra constraint but it will probably be to difficult as
you mentioned)

55---------------------------------------------------------
From K:

Maybe you remember my post from April (many teachers – many groups). Since
than in our team we’ve been trying to adapt our internal solutions to use
FET (it is really your great success).
We tried to use FET to solve timetable for a pretty big plan and by the
way we had to solve a few problems and got some experiences as an
end-users. Maybe it would be interesting also for you.
...
    The third problem was to export data from the program we use for planning
(a database application) to FET and than import data back. I pre-assumed I must
enter data to the FET automatically as the number of activities and
constraints is too high to handle them manually. Also a plan generated by
FET had to be automatically imported to our database. I used FET
procedures to import teachers, students and rooms. I also tried to use
FET import procedure for activities too but I had a problem with IDs. FET
generate its own ids but I needed to use my own ones to keep link between
data in the database with those in the FET so finally I decided to
generate input file instead. Fortunately FET doesn’t change ids and
generate perfect XML file with generated plan and
thanks to known ids I could import data from FET to our database with no
problem.
    The next point. Due to number of constraints we have in our database I
used similar procedure to generate a part of FET input file with teacher
time constraints and room time constraints. Hence I have a question.
Would it be possible to include file path into FET input file to keep
data in a couple of separate files as working with 100 000 lines file is
not fun?
    We prepared the whole procedure for timetabling with FET. First we
planned (in the database program) activities for VIPs manually. To use FET
we also had to put into the timetable all activities where students from
one group could choose one activity from a several ones (languages and
some lectures) at the same time. That is why in the input files are so
many “permanently locked” activities and activities with many groups and
only 10 students to avoid conflicts with room capability (I used
<Activity_Tag>UL to mark them). Together with these activities we locked
a room by preferred_room constraint. After that I included prepared data
to the FET input file and after all we started to generate
the plan. Fortunately FET is smart enough to find mistakes in locked
activities (room and time conflicts) so than we removed conflicts for
already planned activities.
    By the way – during reading the input file I noticed the error
that rises when the number between tags:
<Number_of_Not_Available_Times>NUMBER</Number_of_Not_Available_Times>
was  not exactly the same as the number of constraints in the file. Of
course it is not a bug. It never happens if user use FET to input
constraints. But it forced me to count constraints during generating data
and shows that program is rather “sensitive”.
The first hint for other users is to start with minimum number of
constraints and if FET would generate the plan than thinking about adding
the next ones. In TODO file I found the suggestion of “possibility to
disable constraint without removing it. Such 'Active' checkbox like on
activities dialog”. I admit – it would be nice. Moreover finding a good
plan is just like using 10 knobs increasing one constraint and decreasing
the other so fast access to the constraints window is crucial. I suggest
to put “Time constraints” and “Room constraints” buttons also in the main
menu (or creating any other shortcuts) as these constraints are rather
deep in the menu.
The next suggestion is to change the interface for some constraints
(particularly wherever there is a long list). For instance for the
constraint Max day for a teacher per week if we have many teachers a
simple table like:

| Teacher Name | Max days|
| teacher 1    |     n   |
| teacher n    |         |

with a button “Save all changes” would be great. Now we have to enter
value for every teacher one by one in separate windows.
    After setting constraints we tried to generate the next version of the
plan. We added more and more constraints (for instance WOLNE – dump
activities - free day for student or increasing max day for teacher) and
I was really surprised when FET coped with that. It took from about 1,5
minutes (almost no constraint) to over 20 minutes (with many constraints).
With too many constrains after
about 10 minutes when I saw no change in the number of placed activities
(neither up nor down) I cut simulation, removed some constraints and
started it over.
    The second hint is not to change too many constraints in one simulation
as it may lead to impossible timetable and than it is difficult to say
which particular constraint was too much.
    Of course there is a lot of work to do. For instance even when two
consecutive activities are placed at one day (the same group and the same
teacher) sometimes there are placed at different rooms what would force
them to needless changing room. I guess that FET is focused on fulfilling
constrains but not on optimizing timetable. Sometimes simple changing of
two activities makes plan better both for students and teachers. I think
that manually improving generated plan is faster than creating many many
more constraints and repeating simulations. And this is the third hint.

56---------------------------------------------------------
From Chafik Graiguer:

When a user click on Data ---> activities
he is presented with a list of all activities because filter fields are empty
all activities are listed based on Activity Id
Now, is it possible to a add sort feature like this
Sort by:
	Teachers
	Students
	Duration
	Subject
	Act Id
	
So for example, if you select teachers, all activities will be listed alphapetically in a ascendent order

57---------------------------------------------------------
From Massimo Mancini:

In advanced lock/unlock I would lock/unlock on teachers basis (with pick up
the teacher from list of teachers) or on students groups basis (always from
a list) The lists are mentained from subsequent generations and saved with
data.

58---------------------------------------------------------
From Massimo Mancini:

I have another suggestion: an history file where you record all the actions
of the timetabler and theirs effects. If the history was visible in a a frame
in the View timetable forms, I would see scroll the messages without interruption
and with the opportunity to review them (please don't answer that is too
complicated... you can use a tab widget, a tab for the current situation
another for history... the right answer is: GREAT! I add it in TODO! ;-))). 
In general an history file should be a great thing and the base for
undo/rollup features.

59---------------------------------------------------------
From George Milliotis:

I propose the ability to sort constraints by:
1. Type [so single ones - ones that you can't add twice - go to the top]
2. ID of activity
3. room / day
and so on

This could also be done for activities. If I add two activities for the
same subject, why do I need to have one at the bottom (id 200) and the
other at the top (id 5)?

BTW, I haven't used the menu once since I got this new version. I like
the basic concept of the shortcuts. If the dialogs were not modal I'd be
opening all sorts of windows and working much faster. If I could HIDE
buttons selectively I'd even be able to get the secretaries to do the
schedule and save ALL my time.

60--------------------------------------------------------
From Frans:

I refer to the Data menu, space constraints and say students, set of home rooms and then add.
In this box I select the students and then the individual venues.

If I for example already defined an activity tag for Large rooms, I want to add the activity tag
instead of the individual venues.

Now that I think again I doubt if it will be possible, because FET has to make a distiction between
general activity tags and "room" activity tags as the room activity tags must also appear in the rooms
list so that it can be selected. How will FET know this.

61--------------------------------------------------------
From Volker Dirr:

an other useful feature is:
modifying in settings the default min days constraint (for add activity).

because we nearly always use 100%, not 95%.

modifing later all to 100% isn't the best, because there are a few
activities with min n day = 0%.

62---------------------------------------------------------
From Frans:

I came across the following:

Let say one define the number of FET hours per day as 11. Now I enter preffered starting slots, not available constraints etc. and set the timetable.

Next I change the number of FET hours per day from 11 to 10 and try to generate again. A timetable is now impossible.

In changing the number FET hours from 11 to 10 the constraints were not automatically adjusted. I must now go to each constraint and change. Sometimes I had to remove the constraint and re-enter.

I just want to know it it must be like that or if FET cannot change the constraints automatically.

63---------------------------------------------------------
From Volker Dirr:

Our timetablemaker played a bit with FET. he done several changes in the
dataset, sadly he used the FET file with locked activities.
he tried to generated, but of course it failed, because of the changes in
dataset, but locked times/rooms.

Of course easy to solve, just remove all locking constraint.
I tried with the unlock all activities feature, but it was not possible,
because FET complains it must be generated first. but why? can't we unlock
even it is not generated?
(yes, i know i can remove constraints manualy. i just mean: unlocking a
special day and unlocking all activities is possible, even if table is not
generated.)

64---------------------------------------------------------
From aliponte:

An activity tag can be assigned the property not to count the underlying activities.

Please consider also this flag to affect the constraints with "days". A pseudo activity should not increase the number of days (if it is the only 
activity of a day). A pseudo activity should be "invisible" for all countings concerning constraints, and for countings concerning statistics (teachers, students, subjects).

65---------------------------------------------------------
From aliponte:

There are many suggestions from FET users to improve FET's UI. It will be nearly impossible to find a UI that meets everybody's needs, I know. But let me just present, what was confusing me for a while. Maybe I'm not the only one.

Dialog "Modify activity":
Changing the state of the check box "Active" does not change the active/passive state of all subactivities that belong to the same activity. It affects only the single subactivity that shows in the tab (= the one that has been highlighted bevor the dialog was opened). If I want to activate the whole activity I have to click through all of the tabs. (It took some time until I understood this.)

Since there are two dialogs, one for activities and one for subactivities the (novice) user does not expect the possibility of editing individual subactivity properties in the activities dialog (because individual activation and individual duration of subactivities can be chosen in the subactivities dialog).

By the way, is it really necessary to have two dialogs? I could imagine a check box "subactivity only" in a common dialog for both, activities and subactivities. This would make this comment obsolete.

66---------------------------------------------------------
From Chafik Graiguer:

-Min hours daily with an activity tag (to count real activities only leaving pseudo activities out of count)
-Min hours continuously with an activity tag 

67---------------------------------------------------------
From Gert Veltink:

I would be very pleased, if in a future version it would be possible to specify the number of students for an activity as an extra column in the activities.csv.

Rationale: I mainly use FET for planning examinations. In this setting the number of calculated participants and actual participants differs significantly, because students have to repeat examinations or do not register for examinations.

68---------------------------------------------------------
From Mr Robo:

In the Time tab, Break button, leading to the dialog to set up break times... At the moment, I set up one break time constraint that has morning breaks and lunch breaks combined.

If I set up two (one for break and one for lunch) and I could attach a label that would be displayed in the unavailable slots in the finished timetable, such as 'Break' or 'Lunch', it would save me having to edit each Student, Teacher and Room timetable before they can be printed, etc. It's quite manual at the moment because '-X-' is used throughout and I can't do a global search and replace.

69---------------------------------------------------------
From George Miliotis:

About the "Years", "Groups", "Subgroups" check boxes in add/modify activity and
modify subactivity dialogs:

I'd be more interested in FET actually remembering these settings
globally (not even per form) for each session, no need to actually store
to disk.

70---------------------------------------------------------
From Frans (on forum):

Frans:

I came across the following, it is possible that you know about this:

I generate a timetable with constraints such as minimum hours daily for a students set

Next from the data, students, groups or subgroup menu I deactivate all activities for one group. This group has the constraint minimum hours.

I generate again and then Fet- gives an error message and stops, namely you have too little activities to respect the constraint minimum hours ....

In other words I must go to minimum hours and delete the constraint. It is not deactivated automatically.

As said I do not know if it must be like this. Other constraints such as same starting time are automatically de-acticted.

Liviu:

It is normal to be like that, because it is hard to take care of such constraints, and because you don't deactivate a students set, but a set of activities. The constraint min hours daily is for a students set, not for a set of activities.

Frans:

I understand what you say, but I am not talking about deactivating activities.  In my case however I had to deactivate a complete studens set and this one can only do from the data menu. In other words everything for a students set must be deactivated.

Studens go out to work in private practice for a few months. During that period they are not on campus and everythig must therefore be deactivated as another students set takes their place and must be scheduled.

If it was possible to deactivate everything only when one uses the data menu.

Liviu:

Yes, you are right in a way, but there are many problems which may appear if I do like you say, and the things are complicated.

For instance, user deactivates a students set's activities, then activates only one activity for this user. Or if there is an activity with more students sets, of which some are deactivated and some are activated. Or there might be a global constraint min hours daily for all students.

The perfect approach might be to add a flag to each teacher, subject, activity tag, students set -> active or not active.
It would be kind of tedious and difficult to change now, as it was not designed from the beginning.

71---------------------------------------------------------
From Jason (on guestbook):

Ask for new feature:

- Auto generated after allow user to manual adjust timetable (Drag and Drop in view timetable)

72---------------------------------------------------------
From Zsolt Udvari (on forum):

If I de-activity all activities of a whole year (student set), FET will not ignore "min hours daily" constraint.
So I've two suggestion immedi:
- when FET checks this (and similar) constraints, would tolerate this
- can deactivite the students set (and related activities, constraints, etc.)

73---------------------------------------------------------
From Zsolt Udvari (on forum):

It would be nice when can filter in activities list by "no teacher" and "no students".

74---------------------------------------------------------
From Zsolt Udvari (on forum):

It would be nice when can pair teachers with his/her subjects and can filter in the activity dialog.
So, what do I think? I'm teaching Math and Physics. So to my name can add these subjects and when I add a new activity and select Literature, my name will not shown, only those teachers who teaches Literature. 

75---------------------------------------------------------
From Chafik Graiguer (on forum):

Clone activities or constraints:

Is it possible to clone activities for one student set to another?
Last year, Year 1S had 3 student sets
Now Two new student sets have been added
Student sets from same year have same activities and of course same time constraints
So how it is possible to do an activities Clone from 1S03 to both 1S04 and 1S05 with or without assigned teachers ? 

76---------------------------------------------------------
From Zsolt Udvari (on forum):

Default settings per subject:

Is there any chance to make it? In my school the all "English" subject is 4 per week (and there are more similar subjects). So it would be nice, when I don't should set these settings (activities per week, tags).

77---------------------------------------------------------
From Chafik Graiguer (on forum):

Save button on Activity Planing Window:

For users working with activity planning window, they will probably spend most of the time on it
But this window is lacking a save button, so users have to close it from time to time to get access to FET main window to save work
Can a save button be added to activity planning window?

78---------------------------------------------------------
From Chafik Graiguer (on forum):

About constraint min gaps between a set of activities:

Now, how about applying this contraint globally? I mean every activities with subject (or tag) Math sould be 2 hours apart from an activity with subject (or tag) Physics?
Entering all activities, one by one is tedious
How it is easy/possible to add: min gaps between a set of activites with a tag?

or better:
Min gaps between two subjects/tag

79---------------------------------------------------------
From Chafik Graiguer (on forum):

Filter for modify multiple constraints at once:

In the min days between activities window
there is an option for: Modify multiple constraints at once
Is it possible to add a standard filter: teacher, student set, subject, tag ?
So I can multi-change only those activities with a given subject or teacher... etc?

80---------------------------------------------------------
From Chafik Graiguer (on forum):

Filter teachers:

Students are easily filtered because they are grouped using years then groups
So at Students set not available time window, we can, for example, apply unvailability to only one year, thus affecting  groups under that year
We can also apply unvailability to group, thus affecting  Subgroups under that group.

Unfortunately , teachers are treated either indivdually or totally (constraints for ALL teachers): ONE or ALL
Zsolt Udvari already wrote:
Quote:
It would be nice when can pair teachers with his/her subjects and can filter in the activity dialog.
So, what do I think? I'm teaching Math and Phisycs. So to my name can add these subjects and when I add a new activity and select Literature, my name will not shown, only those teachers who teaches Literature.

So it would be very practical, less time consuming, to treat teachers per groups based on
- Home subject
or
- any other artificial tag like :
-part_time_teachers,
- team teachers,
-..etc

81---------------------------------------------------------
From Chafik Graiguer (on forum):

More statistics after generation:

FET has a stastics menu
What about adding statistics after generation accessible from statistics menu
(for teachers and students sets as well)
- Total free days
- Total working days
- Total gaps

Because the quality of a timetable depends on overall total of free days and gap

82---------------------------------------------------------
From Valdo (on forum):

Conclusion: he has many teachers, and almost all should have max 2 gaps per week, with 2 exceptions, who may have more gaps. He
does not want to add manually that many constraints. So, he suggests that FET should add constraints for all teachers,
with a selected number of max gaps per week, and then the user can modify each one by hand.

83---------------------------------------------------------
From Massimo Mancini:

1. Constraint not available time slots for a teacher
2. I put a name in filter and I see there's any constraint of this kind on
that teacher
3. Then I press Add. I expect the teacher field filled with the name I used in
filter... but currently FET propose always the first teacher in list.

84---------------------------------------------------------
From Massimo Mancini and Chafik Graiguer:

Consider this:

1. the max num of hours for day is 5 for ALL teachers, the max num for teacher X is 3: this
works

2. the max num of hours for day is 4 for ALL teachers, the max num for teacher X is 5: this
NOT works as expected. FET simply refuse the exception. The exception does
not override the global in any case. 

I remember we discussed this "strange" logic (imho an exception is an
exception and always override a global condition) last year, it seems that
the workaround is to manage this scenario using only individual constraints
(isn't it?), very tedious. If so I suggest a button in the form of global
constraint to automatically generate all the individual constraints one
needs.

From Chafik Graiguer (same subject):

My suggestion was not only about adding a teacher one by one
It is about get rid of double menu entries
For example, for Teachers and students, and for every constaint, FET has double entry like this:
-Max days per week for a teacher
-Max days per week for all teachers
-Min days per week for a teacher
-Main days per week for all teachers
...etc
My idea is to make a single entry for any constraint like this :
-Max days per week for teacher (s)

-Min days per week for teacher (s)

This has another advantage:
user will be presented by a window like described in my screenshot, where he can press Add all button
Now suppose, like user X, that I have 50 teachers or 50 student sets
I can easily add them all into Min days per week =5
then on the right pan double click on 5 teachers to deselect them before clicking Add constraint
Then add another Min days per week =3 for those 5 teachers !!
If we have tags for teachers (and rooms) it will even more easier

This concept is already used in FET in two places:
- Set all available, set all not available
- subject has a set of prefered rooms 

85---------------------------------------------------------
From Massimo Mancini:

Consider the form that lists the constraint "teacher non available":
change the line format from DESC CONSTRAINT + TEACHER'S NAME to
TEACHER+CONSTRAINT or, better, codify description of constraint using some string of
fixed size like so:

HTNA - NAME .....

I know the problem of translation (you may omit the description at all, it is
useful only when you display ALL constraints), but I think that a code is less boring
than a long and incomplete description repeated at beginning of all lines.

86---------------------------------------------------------
From Andres Chandia (on forum):

Is there a way to tag teachers, for different purposes like, a group of teachers can only work in the morning, or an activity can only be given by a
teacher of certain group, etc.

87---------------------------------------------------------
From Massimo Mancini:

a problem that we discussed in the past is about the description of
constraints (specially in the list of constraints or in the list of
conflicts): they are too long.
You must well understand that the unlucky timetable maker need to see the
troubles at a glance: reading long sentences with absolutely redundant
parts is very difficult and time consuming.
This is a problem in english but the solution can be achieved also and only in
translations... (a buon intenditor...;-)

So in the following you will find an example of that I think is a good list.
Of course is only my opinion. But, trust me, is a useful one

----- NOW --------------------------------------------------

Conflitti lievi totali: 13.7
Elenco dei conflitti leggeri (in ordine decrescente):
Vincolo di tempo infranto Numero minimo di giorni tra attività: l'attività con id= 290 (I:PANS, M:FRA, S:AMM_1 B) è in conflitto con l'attività con id= 289 (I:PANS, M:FRA, S:AMM_1 B), essendo 1 giorni troppo vicine, nei giorni Martedì e Martedì, incremento dei conflitti= 0.99. Le attività sono collocate consecutive nell'orario, perchè hai scelto questa opzione nel caso che esse capitassero nello stesso giorno
Vincolo di tempo numero massimo 4 ore consecutive infranto per l'insegnante DIRU il giorno Mercoledì durata=5.  Questo incrementa la conflittualità di 0.99
Vincolo di tempo numero massimo 4 ore consecutive infranto per l'insegnante GADO il giorno Sabato durata=5.  Questo incrementa la conflittualità di 0.99
Vincolo di tempo numero massimo 4 ore consecutive infranto per l'insegnante MALG il giorno Sabato durata=5.  Questo incrementa la conflittualità di 0.99
Vincolo di tempo numero massimo 4 ore consecutive infranto per l'insegnante MESS il giorno Sabato durata=5.  Questo incrementa la conflittualità di 0.99
Vincolo di tempo numero massimo 4 ore consecutive infranto per l'insegnante OSIO il giorno Lunedì durata=5.  Questo incrementa la conflittualità di 0.99
Vincolo di tempo numero massimo 4 ore consecutive infranto per l'insegnante POLE il giorno Venerdì durata=5.  Questo incrementa la conflittualità di 0.99
Vincolo di tempo numero massimo 4 ore consecutive infranto per l'insegnante PULI il giorno Mercoledì durata=5.  Questo incrementa la conflittualità di 0.99
Vincolo di tempo numero massimo 4 ore consecutive infranto per l'insegnante RAPE il giorno Sabato durata=5.  Questo incrementa la conflittualità di 0.99
Vincolo di tempo numero massimo 4 ore consecutive infranto per l'insegnante xAZ1 il giorno Sabato durata=5.  Questo incrementa la conflittualità di 0.99
Vincolo di tempo infranto Numero minimo di giorni tra attività: l'attività con id= 416 (I:LUCH, M:DIR, S:IGE_2 C) è in conflitto con l'attività con id= 415 (I:LUCH, M:DIR, S:IGE_2 C), essendo 1 giorni troppo vicine, nei giorni Sabato e Sabato, incremento dei conflitti= 0.95. Le attività sono collocate consecutive nell'orario, perchè hai scelto questa opzione nel caso che esse capitassero nello stesso giorno
Vincolo di tempo infranto Numero minimo di giorni tra attività: l'attività con id= 521 (I:LUZZ, M:EAZ, S:IGE_5 A) è in conflitto con l'attività con id= 517 (I:LUZZ, M:EAZ, S:IGE_5 A), essendo 1 giorni troppo vicine, nei giorni Martedì e Martedì, incremento dei conflitti= 0.95. Le attività sono collocate consecutive nell'orario, perchè hai scelto questa opzione nel caso che esse capitassero nello stesso giorno
Vincolo di tempo infranto Numero minimo di giorni tra attività: l'attività con id= 617 (I:xAZ2, M:EAZ, S:IGE_3 B) è in conflitto con l'attività con id= 615 (I:xAZ2, M:EAZ, S:IGE_3 B), essendo 1 giorni troppo vicine, nei giorni Sabato e Sabato, incremento dei conflitti= 0.95. Le attività sono collocate consecutive nell'orario, perchè hai scelto questa opzione nel caso che esse capitassero nello stesso giorno
Vincolo di tempo infranto Numero minimo di giorni tra attività: l'attività con id= 718 (I:CARU, M:COS_DIS, S:GEO_3 A) è in conflitto con l'attività con id= 715 (I:CARU, M:COS_DIS, ChA:info4, S:GEO_3 A), essendo 1 giorni troppo vicine, nei giorni Sabato e Sabato, incremento dei conflitti= 0.95. Le attività sono collocate consecutive nell'orario, perchè hai scelto questa opzione nel caso che esse capitassero nello stesso giorno

----TOMORROW I HOPE ()IMHO)-------------------------------------------------

Conflitti lievi totali: 13.7
Elenco dei conflitti leggeri (in ordine decrescente):
VT: Num.min.gg, tra attiv.: AttID= 290 (I:PANS, M:FRA, S:AMM_1 B) vs. AttID= 289 (I:PANS, M:FRA, S:AMM_1 B): +1 Mar -Mar : +0.99
VT: Num.max. 4 h consec. :  DIRU : Mer : 5 : +0.99
VT: Num.max. 4 h consec. :  GADO : Sab : 5 : +0.99
VT: Num.max. 4 h consec. :  MALG : Sab : 5 : +0.99
VT: Num.max. 4 h consec. :  MESS : Sab : 5 : +0.99
VT: Num.max. 4 h consec. :  OSIO : Lun : 5 : +0.99
VT: Num.max. 4 h consec. :  POLE : Ven : 5 : +0.99
VT: Num.max. 4 h consec. :  PULI : Mer : 5 : +0.99
VT: Num.max. 4 h consec. :  RAPE : Sab : 5 : +0.99
VT: Num.max. 4 h consec. :  xAZ1 : Sab : 5 : +0.99
VT: Num.min.gg, tra attiv.: id.416 (I:LUCH, M:DIR, S:IGE_2 C) / id.415 (I:LUCH, M:DIR, S:IGE_2 C): +1 Sab-Sab : +0.95
VT: Num.min.gg, tra attiv.: id.521 (I:LUZZ, M:EAZ, S:IGE_5 A) / id.517 (I:LUZZ, M:EAZ, S:IGE_5 A): +1 Mar-Mar : +0.95
VT: Num.min.gg, tra attiv.: id.617 (I:xAZ2, M:EAZ, S:IGE_3 B) / id.615 (I:xAZ2, M:EAZ, S:IGE_3 B): +1 Sab-Sab : +0.95
VT: Num.min.gg, tra attiv.: id.718 (I:CARU, M:COS_DIS, S:GEO_3 A) / id.715 (I:CARU, M:COS_DIS, ChA:info4, S:GEO_3 A): +1 Sab-Sab : +0.95

88---------------------------------------------------------
From Volker Dirr:

students set max gaps per week
and
students set begins early

need a filter/checkbox show only O year O group O subgroup
because there are so many students (subgroups) and it is useful to add
that counstraints for lower years. but the list is so long, so it is very
difficult to find the years.

that filter is also useful for students set not available.

89---------------------------------------------------------
From Paolo (on forum):

Well, for me it would be very very (very) important thinking over the constraints while fet is working.

So i ask, kindly, if it is possible getting a print function of all constraints (at least of time constraints).

Liviu: A temporary solution would be to open two FET programs simultaneously :-)

90---------------------------------------------------------
From daviodan:

Possibility to edit the timetable after generation, drag-drop of activities.

91---------------------------------------------------------
From Yush Yuen:

Sometimes we have 3 teachers available to teach the same "kind" of
class. For example, Teacher A, B C may teach either one of Math for
7A, 7B, and 7C. It is possible that one combination may yield a
timetable that is easier than another. So, it would be nice if we can
have an option to generate "alternative" scenarios with the different
combination.

A possible way to do that may be:
- adding a "teachers-activities pool" dialogue.
- activities of the same pool may swap teacher
- each pool may be enabled or disabled at timetable generating time
(you may not need all combination all the time)
- all generation time, make an option for "generating alternatives"
and save each alternative in a different folder or something

Or:
- activities are created without teachers
- adding a "teacher can teach: activity tag" dialogue
- at generation time, teachers are assigned to activities based on
which teacher has the right "teacher can teach tag"

Or, another way of doing this (perhaps a more elegant way) is to make
a "preferred teacher" constraint like the preferred room constraint.
However, also add an "same room/teacher" option. That is, room/teacher
may be selected from list of preferred rooms/teachers, however, the
same room/teachers must be assigned to the same activities.

92---------------------------------------------------------
From Silver (on forum):

Constraint "Min gaps between activites in the day for teacher".
I mean like this :
when I select Min gaps = 2
Saturday: activity - gap - gap - activity - gap - gap - activity

93---------------------------------------------------------
From George Miliotis (on forum):

I think the ability to renumber the IDs of the activities starting from a specific ID would be very useful in other XML-related work, too.

An advanced option: "renumber activities" with a dialog asking for "new lowest ID" would be ideal for these merge-split issues.

In this case we could renumber the first FET file from 1, the second from 1000, then copy paste directly into the XML file.

This would get all rules and activities, wouldn't it?

But maybe we could use XSL for this.

94---------------------------------------------------------
From aang (on forum):

I have a problem though in the formatting of the html files and consequently the printing. Now, an activity will be printed with six subgroups on the timetable
making it unusually wide(or tall) and the subgroup names do not actually reflect the student set that should be displayed e.g Mwaniki-CRE-4 E BIOCRE1, 4 E PHYCRE1,
4 W BIOCRE1, 4 W PHYCRE1, 4 N BIOCRE1, 4 N PHYCRE1, 4 S BIOCRE1, 4 S PHYCRE1
instead of Mwaniki-CRE-4 CRE1 or Mwaniki-CRE-4. This means i edit the timetable manually after every generation to make this changes. I suggest adding a displayname
tag to the activity which defaults to the current display name (without the activityID) and using this to determine what is displayed for the activity.

The other thing is can i get a subject color propagated to the entire activity td so that i can color the timetable depending on the subject only.
So that every activity of the Subject will have one color and not just the subject span only while the student set, location and teacher spans remain uncolored.

Lastly, for activities with same starting time is it possible to have the in one column/row so that the number of rows/columns is fixed to the either the number
of days or lessons (depending on the selected timetable). This way it is easier to print.

95---------------------------------------------------------
From Volker Dirr:

Activities preferred times constraints need also need "duration".
(because many schools allow activities with duration 2 only at special
times. by this new feature it will be very easy to add (just one
constraint - instead of adding a tag to every activity with duration 2).

96---------------------------------------------------------
From liquid (on forum):

Consider a split activity 2/5 - 1/5 - 1/5 - 1/5. FET places my 2 hour activity part in the same room. However in case of soft conflict when FET cannot place other 3 hours separately, it places them consecutively but not in the same room.
I might agree with FET in some cases when it cannot do desired split but if FET must join some activities consecutively let it do this in the same room. How to tell it to do in such way in case of soft conflict?

97---------------------------------------------------------
From liquid (on forum):

Based on what I experience while creating not an easy timetable I would do suggest to enable more categories than 3. Max number of categories I need years to split to is 7. I do it manually at the moment but it is time and mind consuming. I know it might seem unusual however requirements for the timetable are indeed real not theoretical.

Liviu: Too many categories might slow down the generation and consume too much memory (there will be many empty subgroups). Anyway, anybody can consider as many categories as needed, by adding groups/subgroups manually or using another program to generate the .fet XML file.

liquid: I'd like to mention something that might be worth to consider. As we said earlier we can always make our own division of the year to groups and subgroups which are going to be most suitable to one's needs. It would be good to have the possibility to delete unused (empty) subgroups from all groups. Now, FET kindly informs us that a subgroup belongs to another group and you have to delete it again and again from every other group. 

98---------------------------------------------------------
From Juan Marcos Filgueira Gomis:

One question, the update dialog shows buttons '&No' and '&Yes' that I
couldn't find in fet_gl.ts. How could I translate them?

Liviu: These strings are in the Qt translation. It is a bit difficult to manage also the Qt translations.
(we need some other files, qt_gl.ts, which complicate things). I'll think of some solution maybe in the future.

99---------------------------------------------------------
From Yush Yuen (in collaboration with Liviu Lalescu):

Feature: Allow user to customize the initial order of activities for the
generation.

Benefit: Usually, a few activity converge to be "more difficult" toward the
end of the generation. It might be beneficial (unproven) to put those
activity earlier rather then later. Also, I can force some "important"
activities to be completed first, and some "unimportant" ones to be
completed later.

Suggested solution: Add a "generate order" text box in the add/modify
activity form. Values to be taken are 0-100%. The percentile represent what
percentile out of all the activities should this one be placed. 0 = default
(according to the original order)

Of course, there could be a dedicated form just to manage generation order.

Another solution: add some special activity tags, like: order##1, order##2, etc.
Each activity can have one of this special tags, and those with order##1 will be
placed before those with order##2 and greater orders.

Even better: default order for each activity is 0, then order##1, 2 and so on will
be after them, and order##-1, -2 and so on will be before them
(-2 before -1 before 0 before 1 before 2).

It would be nice if you can make it an "advance feature", so user can turn
on or off the feature. It's useful for cases where I have added a lot of
custom put order, then want to see how it work with or without it. Probably
a setting check/uncheck under the menu.

100---------------------------------------------------------
From Chafik Graiguer (on forum):

I spent much time striving to solve an impossible timetable
I wonder if FET can automatically report it impossible then abort
-First case: a teacher having only 5 hours per week: 1+1+1+2 (Min days between activities=1)
With Min hours per day for teachers = 2
This lead for an impossible timetable, but FET desperately trying to solve it for hours and hours

-Second case:
A teacher has 15 hours

With a maximum of 4 hours per day, given a 6 days week, this would allow him 1 free day or even 2 free days (4+4+4+4)
But activities were split in a rather strange fashion
Group G1: 3+3
Group G2: 2+2+2+3 (Min days between activities = 1)
Activities from G1 alone would occupy him for 2 days
Then come activities form G2 which require additional 4 days
Total is 6 days !!
I set Max days per week = 5
This leads to yet another impossible timetable

My question: can FET automatically report it impossible then abort?

101---------------------------------------------------------
From drew:

Actually the biggest problem was with teacher T1, who was mistakenly scheduled for 7 activities with activity AT1. But, there are only 6 timeslots available for AT1. FET needs a way to detect and report on this kind of error. This is not the first time I made that kind of mistake.

After I deactivated activity id 1, a problem with teacher T2's not available times. Instead of marking him not available for the first two AT1 time slots on Saturday afternoon. After I relaxed it to him just being not available for the 1st time slot FET was able to create a schedule.

I'm not sure how you in on T2's not available time slot as the cause of the problem. I think you need to try to find a way to automate that process and generate warnings about which constraints need to be relaxed.

The problem with activity id 2 was a variation on this problem. T2 had 5 activities for tag AT1, AT1 has 6 preferred time slots, but T2 was unavailable for 2 of them.

You do similar checking for student groups which have too many activities for the available time slots 

102---------------------------------------------------------
From Christian Kemmer:

I have another suggestion which would make things easier for me.
When defining time constraints for activities, I can choose a group of students, let's say "year 05". But no activity belongs to this group, because all activities belong to subgroups of that group, let's say "class 05A" or "class 05B". So choosing a group in those dialogs has no effect for me.
What I really want to do is to define constraints for some activities that all belong to subgroups of a special group, for example all lessons in a certain subject of all classes in "year 05". I cannot use the "choose group"-combo-box at the moment, but I have to use the "subject" or "teacher" combo-boxes. If I use subject, I also get a lot of activities from other years, if I use teacher, I also get those other activities, and I have to change the teacher for each activity I am searching for.

My suggestion is that there is a checkbox "show subgroups of group" with the following effect:
If I choose a group and activate that checkbox, all subgroups of that group are also shown.
So if I choose "year 05" and subject "physics", all activities with subject "physics" in all subgroups like "class 05A", "class 05B", ... of group "year 05" are shown.
If I only choose the group and activate that checkbox while leaving the other comboboxes blank, all activities of all subgroups of that group are shown.

103---------------------------------------------------------
From Silver (on forum):

He needs a constraint to ensure that all activities of each teacher are hosted in different rooms (for exam scheduling).

104---------------------------------------------------------
From Davide G. M. Salvetti (on forum):

Would it be possible to sort on comments the activities list (like sorting the constraints)?

105---------------------------------------------------------
From Davide G. M. Salvetti (on forum):

I wonder if it's sensible to write a .fet file with all placed activities time and space constraints spelled out (i.e., just like the usual
_data_and_timetable.fet, where each activity is (non permanently) blocked in time and space) even when FET gets interrupted, rather than only
if it completes succesfully.  I think it could be useful, because that file could then be reused as a start, maybe manually deleting or adding
some constraint.

106---------------------------------------------------------
From Silver (on forum):

He needs "teachers_rooms.html" in the statistics folder, he thinks it would be useful for the examination timetable.

107---------------------------------------------------------
From Horatiu Halmajan:

He suggests the possibility of selecting more constraints in the all time/space constraints dialogs and
de(activate) them in a single operation.

108---------------------------------------------------------
From skinkone (on forum):

What I realized is that FET won't allocate your students for you, so I will do that by hand. I can only suspect that such a problem increases the
complexity exponentially. However, if you are thinking of going down this road in future developments, I would vote in favor of having such a
feature where students can have "tag preferences". The user would set "minimum or maximum number of tags a student group must have". This would
then be an optimization problem to try to get the most students with their preferences. Essentially FET would form student groups as an output
rather than as an input.

109---------------------------------------------------------
From Jonathan Block (on forum):

It would be nice to have a fourth dimension.

Explanation from Liviu Lalescu: He considers students (1), teachers (2) and rooms (3) as three dimensions. He would like to allocate activities
to teachers (4) (and these teachers should be the fourth dimension, different in concept from the second dimension, but similar to the third dimension).

110---------------------------------------------------------
From Liviu Lalescu:

Possibility (check box, default checked) of safe saving for File/Save and Save as. Maybe even for Timetable/Save data and timetable as.

Safe saving means: create a temporary file (make sure it is truncated), write the data to it, remove the original file and rename the temporary file to the original file.

111---------------------------------------------------------
From kdrosos (bug report on forum):

When working with dual screen, i.e. one extra screen is connected to the main computer, and when choosing the "A teacher's not available time" in the "Teachers" tab under the "Time" tab I had moved the pop up window in the second display.

I chose the teacher that I wanted to work with, and the new window that I specify the free time of the teacher was kept in the main display.

I finished my work, without re-moving all windows to the main display.

After a while, and when I had only one display, I tried to chose again the "A teacher's not available time" but the pop up window did not appeared. 

I connected the second display, chose again the  "A teacher's not available time" and the window appeared in the second display. 

The window in which the free time for a teacher is specified, which I had it in the main display, could be opened from choosing "ALL" (under the "Time" tab) and selecting the desired teacher. 

Thus, I imagine that there might be a bug in the handling of multiple screens. Maybe some preferences of the FET do not refresh when changing from dual screen to single screen display.

Liviu: Maybe a solution would be in restoring geometry, to test if the geometry would be on an invalid screen, and correct this (add a better test than "if(rect.isValid())" in function "restoreFETDialogGeometry(...)" in file centerwidgetonscreen.cpp).

112---------------------------------------------------------
From murad:

Create please, in QComboBox, auto-complete. With a large number of students and teachers it is very difficult to find the necessary students or teachers.

113---------------------------------------------------------
From kdrosos:

In FET there is "School's name", where the school' s name appears in the final .html files.

Maybe the text "School's name" can be parametric and thus to allow changing to "Department's name" or "Institution's name" etc.

This can also allow a "School's name field" as:

"Faculty of FET: Department of FET"

Liviu's note: I think that kdrosos refers to the Greek FET. In the English FET, the string is "Institution name".

114---------------------------------------------------------
From Volker Dirr:

Implement constraint "Activity needs several rooms". (I am not 100% sure if it is enough to have a constraint that adds all selected rooms to a
single activity or if it is also needed to get only some rooms from (a larger) selection. So maybe all current "roomS" constraints "just" need an
option "number of used rooms from the selection". Currently it is always 1. It is needed to increase this number.)

115---------------------------------------------------------
From nouvakis:

I've seen that with html files you save a "xxx_data_and_timetable.fet" file.
In this xml file, you save
<Time_Constraints_List> element which contains many <ConstraintActivityPreferredStartingTime>.

These <ConstraintActivityPreferredStartingTime> elements are the generated timetable data (Activity_Id, Preferred_Day, Preferred_Hour).

So, you could add an option (for example autosave) saving each generated timetable with a unique name (for example name_year_month_day_hour_minute.fet)

This file could easily be loaded from a user just to be able to preview the generated timetable inside FET.

116---------------------------------------------------------
From nouvakis:

I would like to suggest an extra optional field to entities of FET program.

For example:
Teachers_List: name, [id]
Students_List: name, [id]
Subjects_List: name, [id]
Hours_List: Name, [id]
Days_List: Name, [id]

etc

When someone (like me) would like to import FET generated timetable data to another program,
there should be a more accurate way to associate an FET entity with my database records beside the name ...

If you add the id field (as an optional field) there should be no problem to users already using FET ...

117---------------------------------------------------------
From mma:

When adding a constraint, a useful feature would be to check if an identical constraint exists already, and thus not adding the constraint. I just tried to add the same constraint repeatedly (just kept pressing 'Add'), and it kept adding. When there are many constraints it can be difficult to keep track of them all.

Removing identical constraints reduces the clutter, and perhaps also speeds up the timetable generation?

118---------------------------------------------------------
From k1aas:

The new printing feature in 5.17.0 is very nice. Here are a few requests:

1. I can't find a selection to center the text in the boxes. It would be nice to have the text displayed as on the screen in the 'View students/teachers timetable'.

2. Schedules are much easier to read if they are colour-coded. How about a range of selectable colours per teacher or per subject, and having these colours then inserted in the print file? See my attachment.

Klaas

Answer by Volker Dirr, on the first point:

1. It's already included in the FET sources. Sadly it is a Qt bug.

119---------------------------------------------------------
From Yush Yuen:

For printing: It would nice if I can specify a custom css file for the style.

120---------------------------------------------------------
From Yush Yuen:

I find that while the fixed max-room contraint works well, I notice
something with my situation:

I have a teacher, teacher A, uses room A and teaches year 6 classes. Unlike
the more senior years, which are heavily blocked (lots of constraints with
activities with same start time), year 6 classes are pretty free floating.
Therefore, the year 6 classes always appear at the end of the order of
allocation.

I have included room A as one of the available rooms for the preferred room
list for another teacher. room A is almost always chosen. But the problem
is, teacher A and room A become very difficult toward the end of the
allocation. My timetable has about 1280 activities, and most of the year 6
classes are toward the end of the list. The generation always got stuck
toward the end, like 1250, with teacher A not being able to get the right
allocation.

I don't think this is a bug. This is easily solved by removing room A from
the preferredRooms list for that other teacher. But I just want to point
that out to you.

Answer Liviu Lalescu:

I could improve the algorithm to take care of situations like that. So
it will know that in room A there can be only one type of activity
(one type of look-ahead). Or that in room A there can be only teacher A
(another type of look-ahead). But there are contrary reasons:

1) Will make other timetables slower, by the additional look-ahead.

2) Each look-ahead is to be avoided, because of possible new critical
bugs and general slowdown. There are many look-aheads in FET, but they
are necessary and not very time-consuming.

3) The user is advised to help FET towards a solution. The user needs
to collaborate with FET. (Of course, not necessarily us. We want to
push its limits :-)

4) This is the most important reason. Say I solve this problem for a
single preferred room for teacher A. But this is not everything. A user
may invent two preferred rooms for teacher A and go into the same
situation, which now becomes more complicated to manage. I cannot
forecast all situations similar to yours.

Please tell me what you think, I might need to treat situation like
these - I am still thinking. Because I did many look-aheads which are
necessary.