fet
5.18.0

00001 /*************************************************************************** 00002 helpinstructionsform.cpp  description 00003  00004 begin : July 19, 2007 00005 copyright : (C) 2007 by Lalescu Liviu 00006 email : Please see http://lalescu.ro/liviu/ for details about contacting Liviu Lalescu (in particular, you can find here the email address) 00007 ***************************************************************************/ 00008 00009 /*************************************************************************** 00010 * * 00011 * This program is free software; you can redistribute it and/or modify * 00012 * it under the terms of the GNU General Public License as published by * 00013 * the Free Software Foundation; either version 2 of the License, or * 00014 * (at your option) any later version. * 00015 * * 00016 ***************************************************************************/ 00017 00018 #include "helpinstructionsform.h" 00019 00020 #include "timetable_defs.h" 00021 00022 HelpInstructionsForm::HelpInstructionsForm(QWidget* parent): QDialog(parent) 00023 { 00024 setupUi(this); 00025 00026 closePushButton>setDefault(true); 00027 00028 plainTextEdit>setReadOnly(true); 00029 00030 connect(closePushButton, SIGNAL(clicked()), this, SLOT(close())); 00031 00032 centerWidgetOnScreen(this); 00033 restoreFETDialogGeometry(this); 00034 00035 setText(); 00036 } 00037 00038 HelpInstructionsForm::~HelpInstructionsForm() 00039 { 00040 saveFETDialogGeometry(this); 00041 } 00042 00043 void HelpInstructionsForm::setText() 00044 { 00045 QString s; 00046 00047 s+=tr("Instructions."); 00048 s+="\n\n"; 00049 s+=tr("Last modified on %1.").arg(tr("12 October 2009")); 00050 s+="\n\n"; 00051 s+=tr("These are some small instructions which you have to follow in order to input a solvable data set."); 00052 s+="\n\n"; 00053 s+=tr("If you get an impossible timetable and your institution allows beginning later for students, please reconsider your students (set) early " 00054 "constraints to allow more beginnings at second hour. Also, removing or weakening other constraints might help. If FET cannot find " 00055 "a good timetable for your school, make sure to report this, as FET needs to be improved. Maybe small changes to your datafile " 00056 "can bring good solutions, or maybe there are aspects which have to be changed in FET."); 00057 s+="\n\n"; 00058 s+=tr("An impossible timetable might also be caused by incorrect years division. Please check statistics/students for all subgroups, " 00059 "each subgroup should have the necessary hours, not less. If you have for instance some subgroups with less than say 20 hours per " 00060 "week you might get an impossible timetable, probably because of incorrect division of years and incorrectly added activities. " 00061 "All the subgroups are independent and should have an amount of working hours per week close to the average for all " 00062 "subgroups. Please see FAQ for more information."); 00063 s+="\n\n"; 00064 s+=tr("0) Please select correctly the days and hours (working periods). To ensure best performance, it is best to keep the " 00065 "number of hours (periods) per day to your required needs, not larger. It is a good practice to choose a value for the number " 00066 "of days and number of hours from the beginning (you can change their names anytime you want afterwards)."); 00067 s+="\n\n"; 00068 s+=tr("1) To say that component activities of a larger split activity are not in the same day, FET automatically adds a " 00069 "constraint min days between activities with default 95% weight. If you want to ensure no two activities of same type " 00070 "are in the same day, you will have to modify the weight from 95% to higher values (see these constraints in the Time constraints " 00071 "menu>Activities>Min days between a set of activities constraints. You have there a powerful filter to change many " 00072 "constraints with a few clicks)."); 00073 s+="\n\n"; 00074 s+=tr("To specify that some activities must be in different days, the min days between activities " 00075 "must be 1. To specify that some activities must be separated even more, you can increase the min days to 2 (or even more, " 00076 "but probably not needed). Min days = 2 means that activities will be at least 2 days apart from each other (so there is " 00077 "another day between them). It is recommended that when inputting activities which are split into only 2 subactivities per week, " 00078 "add min days = 2. Or you can, after introducing the activities, to modify the min days value in more constraints at " 00079 "once by using the powerful filter in constraints min days between activities dialog (select old number of activities 2 and " 00080 "new min days 2, maybe also raise weight percentage to 100%)."); 00081 s+="\n\n"; 00082 s+=tr("You can use for the constraint min days the weight you want. It can be 95%, 99.75% or even 100%. If you specify a value below " 00083 "100% (even 99.75% or more) for an impossible constraint, FET will be able to detect that it is impossible and obtain a " 00084 "timetable in the end, so the weight is subjective. So, the best way would be to choose a 99.75% for all constraints, " 00085 "but the time of generation might be larger than with 95%. You could try at first the 95% minimum recommended value, then " 00086 "highten the weight percentage up to maybe 99.75% or 100%. I am not sure here, I have not enough sample files (please contribute with advice)."); 00087 s+="\n\n"; 00088 s+=tr("If you would like to change the default 95% for another value for some constraints of type min days, the easiest way " 00089 "is in Data/Time constraints/Min days between activities dialog, where starting with version 5.6.1 there is a " 00090 "very powerful dialog, where you can specify a filter (old values) and new values for the selected constraints."); 00091 s+="\n\n"; 00092 s+=tr("You might want to choose different weights for different constraint min days (for instance, higher on subjects with less activities per week)"); 00093 s+="\n\n"; 00094 s+=tr("In versions 5.5.8 and higher, you can add 2 constraints min days for the same split activity. In add activity " 00095 "dialog, select min days 2 (or 3) and you get the chance to add another constraint min 1 days (or 2). For instance, if you have 3 " 00096 "activities per week from the same group, you can add 2 constraints, min 2 days and min 1 day, both with 95%. This will ensure that " 00097 "in 99.75% of cases the min 1 day will be respected."); 00098 s+="\n\n"; 00099 s+=tr("2) If you have a course lesson with say 45 activities per week, difficult lessons (Maths), which you would like to schedule " 00100 "in the beginning of the day (say 3 out of 45 need to be in the first half of the day), the best approach is to use constraint " 00101 "subactivities preferred time slots or starting times, specifying possibly the subject and component number: 1, 2 and maybe 3" 00102 ", adding 3 constraints for this subject (see FAQ for more details). You can also add constraints for component numbers 3, 4 " 00103 "and 5 for subject Maths (this way, if activity is split into 4 it will get 2 early, if it is split into 5 it will get 3 " 00104 "early  a nice trick). Similarly, if you have say Bio with 1 or 2 splits per week, you can add constraint with component number = 2."); 00105 s+="\n\n"; 00106 s+=tr("3) From the way the algorithm is conceived, the automatic generation is faster if you use students set (or teacher) " 00107 "not available and/or constraint activity(ies) preferred time slots or preferred starting times to specify impossible slots, " 00108 "in addition to possible use of students (set) or teacher(s) max hours daily, whenever it is possible. For instance, " 00109 "if you know that year 5 will only have hours from 8:00 to 13:00, it is better to add students set not available in " 00110 "addition to students set max hours daily. So, if possible, try to follow this advice. This trick helps guide FET better towards a solution."); 00111 s+="\n\n"; 00112 s+=tr("Each constraint of type not available or preferred times which filters out impossible slots might bring an improvement in speed."); 00113 s+="\n\n"; 00114 s+=tr("4) Constraint students (set) early: if you input only partial data, you might get impossible timetables (see FAQ for details)."); 00115 s+="\n\n"; 00116 s+=tr("5) For teacher(s) gaps: please note that FET will take care of teacher(s) gaps only if you tell it so, by adding constraint " 00117 "teacher(s) max gaps per week. It is normal to add such constraint(s) after you saw that the data is solvable, using for max " 00118 "gaps a value which seems acceptable, lowering it as you find timetables."); 00119 s+="\n\n"; 00120 s+=tr("6) Rooms: You might firstly try to generate a timetable without rooms, to see if it is possible, then add rooms and rooms related constraints."); 00121 s+="\n\n"; 00122 s+=tr("7) It is possible to work with institutions in which the students work in shifts (for instance, lowest forms in the morning and " 00123 "highest forms in the afternoon). Please see the Help/Frequently Asked Questions the solution to how to do that " 00124 "(the essence is to add corresponding constraints students set not available)."); 00125 s+="\n\n"; 00126 s+=tr("8) The new algorithm (after version 5.0.0) does not accept fortnightly activities. But you might apply a trick." 00127 " Please see menu Help/Frequently Asked Questions menu (it has the description of a possible trick) " 00128 "(the essence is to make a weekly activity with the sum of teachers and students of both fortnightly activities)"); 00129 s+="\n\n"; 00130 s+=tr("9) Even if it takes a long time to generate your timetable with a set of constraints, strengthening the constraints might not " 00131 "slow the generation too much. You are adviced to try with stronger constraints after you obtain timetables, because you can " 00132 "obtain better timetables this way."); 00133 s+="\n\n"; 00134 s+=tr("10) If a constraint is allowed values under 100%, you can use any weight, even fractional numbers like 99.75%. " 00135 "It might help in constraints like min days, preferred rooms or max hours daily."); 00136 s+="\n\n"; 00137 s+=tr("11) Each room can host a single activity at the same time. If you have a large room which can host more " 00138 "activities at the same time, you need to use a small trick. You can add more rooms representing this large room " 00139 "and add corresponding constraints preferred rooms. There is an entry in the FAQ about that."); 00140 s+="\n\n"; 00141 s+=tr("12) If teachers are getting days with only one hour of work, you might want to add constraint teacher(s) " 00142 "min hours daily (probably with 2 hours), but please make sure your timetable is possible. This constraint is " 00143 "smart, it only considers nonempty days."); 00144 s+="\n\n"; 00145 s+=tr("13) If you have for instance 7 hours of Maths on a 5 days week (more lessons than days), " 00146 "please respect the correct way to add these as a split activity. See question Q127March2008 from FAQ. It is important!"); 00147 s+="\n\n"; 00148 s+=tr("14) It is recommended to remove redundant min days constraints after adding constraints same starting day or time (read Help/Important tips)."); 00149 s+="\n\n"; 00150 s+=tr("15) If you want for instance teachers (or students) not to have more than 2 times per week " 00151 "activities in the last hours, you have to use new constraint teacher(s) or students (set) hourly interval " 00152 "max days per week. Please read FAQ for more details."); 00153 s+="\n\n"; 00154 s+=tr("16) If you have activities which you want to put in the last slots of a day (like say " 00155 "the meetings with the class master), please use the new constraint a set of activities end students day (or singular activity ends students day)."); 00156 s+="\n\n"; 00157 s+=tr("17) If you have activities split into 3 activities per week and need them to be not " 00158 "in 3 consecutive days, there is an entry in the FAQ explaining how to specify this (question Q15September2008)."); 00159 s+="\n\n"; 00160 s+=tr("18) If you use the not perfect constraints activity tag max hours daily or students max gaps per week (there are 4+2" 00161 " types of constraints in this category), use them with caution not to obtain an impossible timetable. If the timetable is impossible, it may be because of them." 00162 " You are advised to add such constraints only in the end, after you are sure that the other constraints are good and the timetable is possible."); 00163 00164 plainTextEdit>setPlainText(s); 00165 }