Back to index

fet  5.18.0
helptipsform.cpp
Go to the documentation of this file.
00001 /***************************************************************************
00002                           helptipsform.cpp  -  description
00003                              -------------------
00004     begin                : Feb 20, 2005
00005     copyright            : (C) 2005 by Lalescu Liviu
00006     email                : Please see http://lalescu.ro/liviu/ for details about contacting Liviu Lalescu (in particular, you can find here the e-mail 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 "helptipsform.h"
00019 
00020 #include "timetable_defs.h"
00021 
00022 HelpTipsForm::HelpTipsForm(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 HelpTipsForm::~HelpTipsForm()
00039 {
00040        saveFETDialogGeometry(this);
00041 }
00042 
00043 void HelpTipsForm::setText()
00044 {
00045        QString s;
00046        
00047        s+=tr("Important tips.");
00048        s+="\n\n";
00049        s+=tr("Last modified on %1.").arg(tr("19 August 2009"));
00050        
00051        s+="\n\n";
00052        
00053        s+=tr("1) Say you add a split activity or you add a constraint min days between activities (say na activities),"
00054         " when your week has nd days. Do not add a constraint with na>nd (number of activities strictly greater than number of days per week).");
00055        s+="\n\n";
00056        s+=tr("The correct way: if you want consecutive if same day, consider activities having a longer duration."
00057         " Instead of adding activities 1+1+1+1+1+1+1 in a 5 days week, add them as 2+2+1+1+1. If you don't want "
00058         "consecutive if same day, add 1+1+1+1+1 firstly and 1+1 after that.");
00059        s+="\n\n";
00060        s+=tr("The generation will be much faster and easier using this approach (more than 10 times faster sometimes).");
00061        
00062        s+="\n\n";
00063        
00064        s+=tr("2) When adding constraints activities same starting time (or day), please remove redundant min days constraints. "
00065         "For instance, A1 (at same time with B1 and C1), A2 (same time with B2 and C2) and A3 (same time with B3 and C3)."
00066         " You will normally have 3 or 6 constraints min days between activities (first one or two with A1,A2,A3 and then "
00067         "with B1,B2,B3 and then with C1,C2,C3). These 3 or 6 constraints min days will result in a much stronger constraint, "
00068         "which will make the timetable much harder to find. If you have say 4 groups of activities (A, B, C, D), things will be even harder.");
00069        s+="\n\n";
00070        s+=tr("The correct way is to leave only the constraints min days referring to the first group of activities (A)."
00071         " You will have a much faster generation (maybe 10 times faster or more).");
00072        s+="\n\n";
00073        s+=tr("PS: Suppose there are 2 constraints for activities A1,2,3 and 2 constraints for activities B1,2,3 and 2 "
00074         "constraints for activities C1,2,3. If A and B and C are simultaneous, remove only the constraints referring to B "
00075         "and C (but leave both for A, if for instance you have min 2 days with 95% and min 1 day with 100%).");
00076        s+="\n\n";
00077        s+=tr("More details: the combination of 2 or more redundant constraints min days between activities gives another "
00078         "resultant constraint, much stronger. From 3 redundant constraints with 95%, you get one with 100%-5%*5%*5%=99.9875%, which is not what you want.");
00079        s+="\n\n";
00080        s+=tr("Do not consider redundant constraints with the same activities but different number of days "
00081         "(you may want to add min 2 days 95% and min 1 day 95%, which gives in 95% cases the 2 days will be "
00082         "respected and in 99.75% cases the 1 day will be respected).");
00083        s+="\n\n";
00084        s+=tr("The other constraints (like preferred time(s) constraints) do not have the problem of redundancy like min "
00085         "days constraints, so no need to take care about them.");
00086        s+="\n\n";
00087        s+=tr("It is IMPORTANT to remove redundant min days constraints after you inputted data and before generating "
00088         "(for instance, apply this after adding more constraints of type same starting time/day and before generating)."
00089         " Any modification of the min days constraints should be followed by this removal of redundant min days "
00090         "constraints (well, not all modifications, but better to do it than not). If you modify more constraints "
00091         "at once or apply the balancing of activities, it is important to remove redundant constraints. If you have "
00092         "no redundant constraints, it is no need to remove the redundant constraints, but better to check again than "
00093         "let some redundant constraints active.");
00094        s+="\n\n";
00095        s+=tr("Note: redundant constraints min days with weight 100.0% do not really affect the generation. This is because the resultant of more constraints"
00096         " with weight 100.0% is also 100.0%. So, if your data contains only min days between activities constraints with 100.0% weight, there "
00097         "is no imperative need to remove redundant constraints."
00098         " But, again, better to remove redundant constraints as a precaution.");
00099         
00100        s+="\n\n";
00101        s+=tr("3) About constraints two activities grouped, two activities consecutive and three activities grouped:"
00102         " It is a bad practice to add such constraints if the involved activities are also constrained not to be in the same day"
00103         " by constraints min days between activities.");
00104        s+="\n\n";
00105        s+=tr("If A1 and A2 are constrained not to be in the same day with 95% weight or any other weight, it is a bad practice "
00106        "to add a constraint grouped or consecutive to them. If they are constrained with weight 100% not to be in the same day, "
00107        "the timetable is impossible; if the weight is below 100%, the timetable is more difficult to find than using the correct way."
00108        " The correct way would probably be to consider A1 and A2 = a single activity A12', or to modify the related constraint "
00109        "min days between activities. Or maybe you can find other ways.");
00110        
00111        plainTextEdit->setPlainText(s);
00112 }