Back to index

fet  5.18.0
Go to the documentation of this file.
00001 /***************************************************************************
00002                           helpinstructionsform.cpp  -  description
00003                              -------------------
00004     begin                : July 19, 2007
00005     copyright            : (C) 2007 by Lalescu Liviu
00006     email                : Please see for details about contacting Liviu Lalescu (in particular, you can find here the e-mail address)
00007  ***************************************************************************/
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  ***************************************************************************/
00018 #include "helpinstructionsform.h"
00020 #include "timetable_defs.h"
00022 HelpInstructionsForm::HelpInstructionsForm(QWidget* parent): QDialog(parent)
00023 {
00024        setupUi(this);
00026        closePushButton->setDefault(true);
00028        plainTextEdit->setReadOnly(true);
00030        connect(closePushButton, SIGNAL(clicked()), this, SLOT(close()));
00032        centerWidgetOnScreen(this);
00033        restoreFETDialogGeometry(this);
00035        setText();
00036 }
00038 HelpInstructionsForm::~HelpInstructionsForm()
00039 {
00040        saveFETDialogGeometry(this);
00041 }
00043 void HelpInstructionsForm::setText()
00044 {
00045        QString s;
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 4-5 activities per week, difficult lessons (Maths), which you would like to schedule "
00100               "in the beginning of the day (say 3 out of 4-5 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 non-empty 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 Q-1-27-March-2008 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 Q1-5-September-2008).");
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.");
00164        plainTextEdit->setPlainText(s);
00165 }