fet-5.19.0

所属分类:数值算法/人工智能
开发工具:QT
文件大小:9527KB
下载次数:9
上传日期:2013-03-28 16:24:39
上 传 者liangmanwutong
说明:  gnu排课软件源码,算饭为遗传算法
(This is FET version 5.19.0 Program。FET can mean "Free Educational Timetabling" (the "E" in the middle may also stand for other words, based on your personal preference). )

文件列表:
fet-5.19.0\fet-5.19.0\AUTHORS (301, 2012-04-07)
fet-5.19.0\fet-5.19.0\ChangeLog (89257, 2013-01-21)
fet-5.19.0\fet-5.19.0\COPYING (18092, 2010-10-04)
fet-5.19.0\fet-5.19.0\doc\adding-new-translations\adding-new-translations.txt (8864, 2012-04-01)
fet-5.19.0\fet-5.19.0\doc\adding-new-translations\PaxHeaders.6047\adding-new-translations.txt (50, 2012-04-01)
fet-5.19.0\fet-5.19.0\doc\algorithm\algorithm-code.txt (342, 2010-08-24)
fet-5.19.0\fet-5.19.0\doc\algorithm\algorithm-description.txt (2309, 2012-04-07)
fet-5.19.0\fet-5.19.0\doc\algorithm\algorithm-details.txt (3734, 2011-10-22)
fet-5.19.0\fet-5.19.0\doc\algorithm\algorithm-references.txt (102, 2011-10-23)
fet-5.19.0\fet-5.19.0\doc\algorithm\improve-studentsmaxgapsperday.txt (37179, 2012-03-31)
fet-5.19.0\fet-5.19.0\doc\algorithm\PaxHeaders.6047\algorithm-code.txt (50, 2010-08-24)
fet-5.19.0\fet-5.19.0\doc\algorithm\PaxHeaders.6047\algorithm-description.txt (50, 2012-04-07)
fet-5.19.0\fet-5.19.0\doc\algorithm\PaxHeaders.6047\algorithm-details.txt (50, 2011-10-22)
fet-5.19.0\fet-5.19.0\doc\algorithm\PaxHeaders.6047\algorithm-references.txt (50, 2011-10-23)
fet-5.19.0\fet-5.19.0\doc\algorithm\PaxHeaders.6047\improve-studentsmaxgapsperday.txt (50, 2012-03-31)
fet-5.19.0\fet-5.19.0\doc\fet.1 (1545, 2013-01-01)
fet-5.19.0\fet-5.19.0\doc\installing-compiling-running\instructions.txt (112, 2007-10-26)
fet-5.19.0\fet-5.19.0\doc\installing-compiling-running\PaxHeaders.6047\instructions.txt (50, 2007-10-26)
fet-5.19.0\fet-5.19.0\doc\PaxHeaders.6047\adding-new-translations (50, 2012-04-01)
fet-5.19.0\fet-5.19.0\doc\PaxHeaders.6047\algorithm (50, 2012-04-07)
fet-5.19.0\fet-5.19.0\doc\PaxHeaders.6047\fet.1 (50, 2013-01-01)
fet-5.19.0\fet-5.19.0\doc\PaxHeaders.6047\installing-compiling-running (50, 2007-10-26)
fet-5.19.0\fet-5.19.0\examples\Belize\PaxHeaders.6047\Sacred-Heart-College (50, 2012-05-27)
fet-5.19.0\fet-5.19.0\examples\Belize\Sacred-Heart-College\PaxHeaders.6047\shc-2007 (50, 2009-02-03)
fet-5.19.0\fet-5.19.0\examples\Belize\Sacred-Heart-College\PaxHeaders.6047\shc-2008 (50, 2009-12-29)
fet-5.19.0\fet-5.19.0\examples\Belize\Sacred-Heart-College\PaxHeaders.6047\shc-2012 (50, 2012-05-27)
fet-5.19.0\fet-5.19.0\examples\Belize\Sacred-Heart-College\shc-2007\PaxHeaders.6047\sacred_heart_college.fet (50, 2011-11-14)
fet-5.19.0\fet-5.19.0\examples\Belize\Sacred-Heart-College\shc-2007\PaxHeaders.6047\shc_6_gaps_per_teacher.fet (50, 2011-11-14)
fet-5.19.0\fet-5.19.0\examples\Belize\Sacred-Heart-College\shc-2007\sacred_heart_college.fet (530702, 2011-11-14)
fet-5.19.0\fet-5.19.0\examples\Belize\Sacred-Heart-College\shc-2007\shc_6_gaps_per_teacher.fet (530887, 2011-11-14)
fet-5.19.0\fet-5.19.0\examples\Belize\Sacred-Heart-College\shc-2008\PaxHeaders.6047\shc-prelim-08.fet (50, 2011-11-14)
fet-5.19.0\fet-5.19.0\examples\Belize\Sacred-Heart-College\shc-2008\shc-prelim-08.fet (384613, 2011-11-14)
fet-5.19.0\fet-5.19.0\examples\Belize\Sacred-Heart-College\shc-2012\PaxHeaders.6047\test-2012.fet (50, 2012-05-27)
fet-5.19.0\fet-5.19.0\examples\Belize\Sacred-Heart-College\shc-2012\test-2012.fet (486627, 2012-05-27)
fet-5.19.0\fet-5.19.0\examples\Brazil\Brazil-more-difficult.fet (195881, 2011-11-14)
fet-5.19.0\fet-5.19.0\examples\Brazil\Brazil.fet (195633, 2011-11-14)
fet-5.19.0\fet-5.19.0\examples\Brazil\PaxHeaders.6047\Brazil-more-difficult.fet (50, 2011-11-14)
fet-5.19.0\fet-5.19.0\examples\Brazil\PaxHeaders.6047\Brazil.fet (50, 2011-11-14)
fet-5.19.0\fet-5.19.0\examples\Bulgaria\Lom_high_school_2007-2008.fet (281028, 2011-11-14)
fet-5.19.0\fet-5.19.0\examples\Bulgaria\PaxHeaders.6047\Lom_high_school_2007-2008.fet (50, 2011-11-14)
... ...

This is FET version 5.19.0 Program description: FET is free timetabling software (licensed under GNU GPL v2 or later). This program aims to automatically generate the timetable of a school, high-school or university. It may be used for other timetabling purposes. FET can mean "Free Educational Timetabling" (the "E" in the middle may also stand for other words, based on your personal preference). FET homepage: http://lalescu.ro/liviu/fet/ Requirements: FET is created in the following environment: openSUSE 12.2 GNU/Linux distribution, Linux 3.4.11, Xfce 4.10, Midnight Commander 4.8.1.3, KDiff3 0.9.96, Qt 5.0.0, gcc 4.7.2, g++ 4.7.2, make 3.82, Valgrind 3.7.0, other great free tools. FET can be run on any platform supported by the free software Qt (GNU/Linux, Windows, Mac OS X). GNU/Linux, Mac OS X: Software: make 3.82 or similar (GNU Make) gcc 4.7.2 or similar g++ 4.7.2 or similar (or gcc-g++, or gcc-c++, the name may vary. This program may be included in the gcc package) Qt 5.0.0 or compatible (The authors also tried to maintain backwards source compatibility with Qt 4.v.v). Windows: For running, you need only the archive of FET compiled for Windows (which contains the MinGW and Qt dlls). The Windows precompiled package is based on Qt 4.8.4 for now, because of various problems of Qt 5 under Windows. For compiling, you need Qt and a compatible C++ compiler (MinGW is a possibility). Download: You can download the latest version from the FET homepage, http://lalescu.ro/liviu/fet/ Getting - compiling - installing GNU tools: make, gcc and g++ (or gcc-g++, or gcc-c++): GNU/Linux, Mac OS X: Most probably, your platform has these installed by default or available on the internet as precompiled packages. If you don't have them, please install them using YaST (on openSUSE), Adept Manager (on Ubuntu or Kubuntu) or other package manager. To verify that you have the correct packages, write "make --version", "gcc --version" and "g++ --version". Windows: you need a Qt compatible C++ compiler. Maybe an easy option is the MinGW compiler, available inside the Qt SDK or on the Qt download page. You may alternatively download MinGW from its homepage. Getting - compiling - installing Qt: Qt homepage: http://qt-project.org/ You will need Qt 5.0.0 or compatible to compile FET (The authors also tried to maintain backwards source compatibility with Qt 4.v.v). You can get the corresponding version of Qt with your package manager or from the Qt homepage. Qt can be used with the LGPL, GPL or commercial license. You may choose between the Libraries or SDK versions. Any variant should work. GNU/Linux: It is possible to use YaST (or Adept Manager) or other package managers to get your version of Qt, pre-compiled. Or you can download, (possibly) compile and install Qt from its homepage. A possible name for the precompiled package is libqt5. Windows - Download latest Qt from its homepage. Usually, you can get a precompiled Qt version for your C++ compiler, but sometimes you may need to compile Qt from its sources. For the moment, the authors use the older Qt 4.8.4, because of various problems with Qt 5 under Windows. If you choose the LGPL Qt for MinGW: For the Framework version, you need to install firstly a compatible C++ compiler (see above section "Getting - compiling - installing GNU tools"). The SDK includes the MinGW C++ compiler. The following instructions are for Qt LGPL Framework for MinGW: You may want to use the Qt command prompt, in which case you do not need to care about the environment variables below. If you want to use the Windows command prompt: Set QTDIR environment variable to C:\Qt\4.8.4 Add in the PATH environment variable these directories: C:\Qt\4.8.4\bin and C:\mingw\bin Set QMAKESPEC environment variable to win32-g++ (these are the default directories, but you may have chosen different ones, so use them instead). Mac OS X: Maybe you can get pre-compiled Qt packages for Mac OS X. If not, get Qt from its homepage. Note about the Qt "QMAKESPEC" variable: advanced topic, read this if you get Qt errors about the environment not being set, or environment variable QMAKESPEC not being set, or if the Qt environment is not set correctly: Qt needs to know the environment you are using. It is usually something like: linux-g++, macx-g++ or win32-g++ (platform-compiler). You can find all the supported platforms in the directory "mkspecs" of Qt (some usual locations are /usr/share/qt5/mkspecs or /usr/lib/qt5/mkspecs on GNU/Linux or C:\Qt\5.0.0\mkspecs on Windows). It seems that Qt automatically finds the platform (there is a default configuration in the "default" subdirectory of the "mkspecs" directory, which is created automatically when you install Qt). If the default configuration is not working or is wrong, you may need to set the correct QMAKESPEC variable for your platform. Under Windows, you can create an environment variable QMAKESPEC equal to win32-g++ (if you are using MinGW), under other platforms create an environment variable named QMAKESPEC equal with the correct platform-compiler you are working on (for instance macx-g++ or linux-g++). Compiling FET: Note: compilation takes long (maybe even 1 hour, if you are using an older computer). The file rules.cpp takes the longest time to compile, maybe even 1 minute or more. Note2: the following situation may appear under GNU/Linux, but it could be met also on other platforms. Depending on your Qt installation, it may happen that the FET intermediary files and executables are very large (~100 MB for the fet executable instead of ~10 MB). It is not sure if this affects the FET speed and performance, but anyway it is unpleasant. In this case, you may want to modify some files in your system (Qt files) to improve this. You need to change some Qt configuration files and recompile FET from the beginning (remove any temporary files with make distclean or unpack FET sources again, in an empty location). Notations: mkspecs is a directory and QMAKE_CFLAGS_RELEASE and QMAKE_CXXFLAGS_RELEASE are two sections (text on two lines) contained in a file in a subdirectory of mkspecs (some possible location for these are given in this paragraph, shortly below). If mkspecs files for your platform contain the -g flag (text) in the QMAKE_CFLAGS_RELEASE or QMAKE_CXXFLAGS_RELEASE sections, you need to remove this flag. If they do not contain -g flag in these sections, then you don't need to remove anything (and most probably the intermediary files and fet executable will have normal size). More details about where can you find the mkspecs files: under openSUSE GNU/Linux, it seems that for newer versions of Qt (>=4.7.1), the problem is no longer present. In the past, the location of this minor problem was in the file /usr/share/qt5/mkspecs/common/g++.conf, at lines 10 and 25, you needed to remove the "-g" flag from the QMAKE_CFLAGS_RELEASE and QMAKE_CXXFLAGS_RELEASE sections (root access needed to make this change). Under Fedora GNU/Linux for the same problem, a user reported that you need to modify /usr/lib/qt4/mkspecs/common/g++.conf and /usr/lib/qt4/mkspecs/linux-g++/qmake.conf (remove the -g flag from QMAKE_CFLAGS_RELEASE and QMAKE_CXXFLAGS_RELEASE sections). (The mkspecs directory contains more subdirectories, in the form platform-compiler, you need to search for your corresponding directories/files. For instance, GNU/Linux with gcc compiler is named "linux-g++", and you may also need to modify the "common" section). Note NMkJobs: advice from a user: if you have a multiple core computer, you may be able to split the compilation into more threads, with the -j option for the make command, so that the compilation is faster. This option creates a number of compilation threads equal with the number specified along with the -j option. Under GNU/Linux or Mac OS X, just write "make -j 2" if you have dual core or "make -j 4" if you have quad core (in case you have quad core and you want to keep a core free for other tasks, write "make -j 3"). This is proven to work under GNU/Linux and Mac OS X, but seems not to work under Windows (using mingw32-make, the -j argument seems to be ignored, for the time being). Currently FET can be compiled with a C++ compiler, using Qt version 5.0.0 or compatible. GNU/Linux: - You will need Qt 5.0.0 or compatible to compile this program. - type "qmake fet.pro" or simply "qmake". You have to use qmake from Qt 5 series, which on some systems might be named qmake-qt5 (this command is executed very fast, so don't worry if you get immediate return from it) - type "make" (this takes a long time, maybe even 1 hour). See also note NMkJobs above. To remove the compiled objects/executable: "make clean" and/or "make distclean". Mac OS X: 2 Variants: 1. First variant, if you use gcc compiler: - You will need Qt 5.0.0 or compatible to compile this program. - type "qmake fet.pro" or simply "qmake". You have to use qmake from Qt 5 series. (this command is executed very fast, so don't worry if you get immediate return from it) - IMPORTANT: you might need to write: "qmake -spec macx-g++ fet.pro", if "qmake fet.pro" does not produce a correct makefile. Please see http://lists.trolltech.com/qt-interest/2007-04/thread01126-0.html for details. - type "make" (this takes a long time, maybe even 1 hour). See also note NMkJobs above. To remove the compiled objects/executable: "make clean" and/or "make distclean". 2. Another variant: - Type "qmake fet.pro" and then "xcodebuild". If you encounter problems, please see: http://lists.trolltech.com/qt-interest/2007-04/thread01126-0.html Windows: MinGW C++ compiler: you need Qt 4.8.4 (or the new 5.0.0) or compatible, and MinGW. The authors use the older Qt 4.8.4 because of various problems of Qt 5.0.0 under Windows. You might use other compilers if you want, please see the Qt homepage. for other variants. Any C++ compiler that supports Qt should be good. You need to run "qmake fet.pro" or "qmake" (this command is executed very fast, so don't worry if you get immediate return from it) and then, if you are using MinGW, "mingw32-make" (this takes a long time, maybe even 1 hour) in a command line in the FET directory. See also note NMkJobs above. (You can use the command line prompt of Windows or the Qt command line prompt shortcut in the Qt shortcuts menu.) Then, you can remove the directories "src" and "tmp", to save up space, if you want. For MinGW: you need to copy these 6 files into the FET directory (in the same place as fet.exe): (QTDIR is an abbreviation for C:\Qt\4.8.4 if you use Qt 4.8.4) QTDIR\bin\mingwm10.dll, QTDIR\bin\libgcc_s_dw2-1.dll, QTDIR\bin\QtCore4.dll, QTDIR\bin\QtGui4.dll, QTDIR\bin\QtNetwork4.dll, QTDIR\bin\QtXml4.dll. For fet-cl.exe you don't need QTDIR\bin\QtGui4.dll and QTDIR\bin\QtNetwork4.dll. Installing FET: GNU/Linux, and maybe Mac OS X: Please move the whole directory "fet-v.v.v" into the place where you like, for instance to the directory "/usr/local/". Windows: Move the FET directory in a place of your choice. Running FET: Note: The FET main window contains a menu with the items: File, Data, Statistics, Advanced, Timetable, Settings, Help. Everything is right if you have that. Optionally, on the main window there may be a toolbox containing shortcuts (if selected by the user in the settings. By default it is selected). To run FET in interface mode, you just need to run the executable named fet or fet.exe. GNU/Linux, and maybe Mac OS X: chdir to the directory where the fet executable is (for instance, "cd ~/fet-v.v.v/") and run it with "./fet" or with the suitable command for your platform. Alternatively, you may run the executable named fet from the fet-v.v.v directory, using another method. The fet executable will be located inside the fet-v.v.v directory after a successful compilation. Note for Mac OS X about using translations (if you want to run FET into other language): it seems that you need to copy the contents of the "translations/" directory into the directory fet-v.v.v/fet.app/Contents/MacOS/translations/ or into the directory /usr/share/fet/translations/ (if you compiled/installed FET by yourself). Or copy the whole directory translations/ into fet-v.v.v/fet.app/Contents/MacOS/ or into usr/share/fet/ More notes for the Mac OS X platform, from a user: copying the translations/ directory into the directory fet.app/Contents/MacOS/ is possible from the command line in X11 xterm (but it is not possible with the finder program, because the file extension ".app" is exclusive for applications, so the program finder interprets a directory with the extension ".app" as an application). Windows: Run the executable fet.exe (its location is inside the fet-v.v.v directory, you can find it there if you have FET precompiled for Windows or after you compiled it). COMMAND LINE: no GUI, just run "fet-cl --inputfile=x [--outputdir=d] [--timelimitseconds=y] [--htmllevel=z] [--language=t] [--printnotavailable=u] [--printbreak=b] [--dividetimeaxisbydays=v] [--printsimultaneousactivities=w] [--randomseedx=rx --randomseedy=ry] [--warnifusingnotperfectconstraints=s] [--warnifusingstudentsminhoursdailywithallowemptydays=p]", where x is the input file, for instance "data.fet" d is the path to results directory, without trailing slash or backslash (default is current working path). Make sure you have write permissions there. y is integer (seconds) (default 2000000000, which is practically infinite). z is integer from 0 to 6 and represents the detail level for the generated html timetables (default 2, larger values have more details/facilities and larger file sizes). t is one of en_US, ar, ca, da, de, el, es, fa, fr, gl, he, hu, id, it, lt, mk, ms, nl, pl, pt_BR, ro, ru, si, sk, sr, tr, uk, uz, vi (default en_US). u is either "true" or "false" and represents if you want -x- (for true) or --- (for false) in the generated timetables for the not available slots (default true). b is either "true" or "false" and represents if you want -X- (for true) or --- (for false) in the generated timetables for the break slots (default true). v is either true or false, represents if you want html timetables with time-axis divided by days (default false). w is either true or false, represents if you want html timetables to show related activities which have constraints with same starting time (default false). (for instance, if A1 (T1, G1) and A2 (T2, G2) have constraint activities same starting time, then in T1's timetable will appear also A2, at the same slot as A1). rx is the random seed X component, minimum 1 to maximum 2147483***6, ry is the random seed Y component, minimum 1 to maximum 21474833*** (you can get the same timetable if the input file is identical, if the FET version is the same and if the random seed X and Y components are the same). s is either true or false, represents whether you want a message box to be shown, with a warning, if the input file contains not perfect constraints (activity tag max hours daily or students max gaps per day) (default true). p is either true or false, represents whether you want a message box to be shown, with a warning, if the input file contains nonstandard constraints students min hours daily with allow empty days (default true). Alternatively, you can run "fet-cl --version [--outputdir=d]" to get the current FET version. where d is the path to results directory, without trailing slash or backslash (default is current working path). Make sure you have write permissions there. (If you specify the "--version" argument, FET just prints version number on the command line prompt and in the output directory and exits.) You can ask the FET command line process to stop the timetable generation, by sending it the SIGTERM signal. FET will then write the current timetable and the highest stage timetable and exit. The result of the operation is logged into file outputdir/logs/result.txt. Also, you have in logs the initial order of activities and a list of maximum placed number of activities. If your timetable is impossible, say it stops at maximum n placed activities, look at the n+1-st activity in the initial order, for it or its students/teachers may be the problem. For the command line version, probably the most useful output to use internally in an application might be the activities_timetable.xml. You have of course also the xml timetables for students and teachers and the nicely formatted html timetables to present directly. You'll get a console output to help you with data, along with the files in the directory outputdir/logs/. If you are a programmer, in the file src/engine/messageboxes.cpp you'll find the implementation of the various messages. You can modify these functions, catching them in your program. Also, you can catch the end of the program (successful or unsuccessful) in the file src/interface/fet.cpp, in the command-line code part. If you want to be completely independent from Qt, using only standard C++, you can remove all the Qt includes and reimplement the used Qt classes QString, QList, QSet, and others (only the member functions which are necessary). Or just get the corresponding code from Qt (Please review the Qt licensing options, in this case. Currently, they include LGPL, GPL and commercial). The program should have independence of a particular implementation of QSet and QHash so, if you reimplement these two containers, any order of elements should lead to the same generation results. Contrary behavior should be reported as a bug. Languages (translations): The translation files which the FET executable needs in order to be able to run in other languages are ending in .qm (like fet_**.qm) and they are located in the "translations" directory in the FET distribution. FET will search for translations (fet_**.qm files) in the following order: 1) directly in the directory where the fet executable is, 2) the directory "translations" in the directory where fet executable is, 3) the directory /usr/share/fet/translations (under GNU/Linux or Mac OS X). So, on: Windows: if fet.exe is in C:\fet-v.v.v, fet will search for the file fet_**.qm in C:\fet-v.v.v and then in C:\fet-v.v.v\translations GNU/Linux: if the fet executable is in ~/fet-v.v.v, fet will search for the file fet_**.qm in ~/fet-v.v.v, then in ~/fet-v.v.v/translations and then in /usr/share/fet/translations Mac OS X: the operation is approximately similar to the one for GNU/Linux. The difference is that it seems that the fet application on Mac OS X contains in turn other directories (application directories), so FET will search for the translations inside these application directories, not in the fet-v.v.v directory. The GNU/Linux style fet executable seems to be located in fet-v.v.v/fet.app/Contents/MacOS, so FET will search for the file fet_**.qm in the directory fet-v.v.v/fet.app/Contents/MacOS, then in the directory fet-v.v.v/fet.app/Contents/MacOS/translations, then in the directory /usr/share/fet/translations. Please see also the Mac OS X note from the section "Running FET". More notes for the Mac OS X platform, from a user: copying the translations/ directory into the directory fet.app/Contents/MacOS/ is possible from the command line in X11 xterm (but it is not possible with the finder program, because the file extension ".app" is exclusive for applications, so the program finder interprets a directory with the extension ".app" ... ...

近期下载者

相关文件


收藏者