Tablix is a high school timetable generator. It uses a coarse-grained parallel genetic algorithm to construct sensible timetables from XML-formated school information files. It can run on a single host as well as on a heterogeneous parallel virtual machine by using PVM3.
It operates by trying to fit a number of subject - teacher pairs (called tuples) to the given time table in a most efficient way. Different weights can be given in the input file to control the behavior of the genetic algorithm.
Output is given in form of a XML file. This file can be further processed by
to produce a human readable time table in different formats.
slave processes. This is the number of spawned pvm3 tasks on the virtual machine. Bigger numbers mean bigger total population, steeper convergence graph and smaller chance of premature convergence. However, optimal number depends on the number and speed of computing nodes. For a reasonably fast virtual machine start with
N = 4 * i
is the number of computing nodes. Tablix will try to arrange tasks so that all computing nodes will have equal load. (Be sure to set
field correctly in your pvmrc file). Default is 4.
When a population in a slave process (computing node) reaches local minimum that process will try to execute an algorithm called local search. This is a way to nudge the main genetic algorithm out of a local minimum trap if it gets caught in it. However it is usually not efficient for this algorithm to run simultaneously on many nodes. This option sets the number of computing nodes that are allowed to simultaneously perform local search.
to 0 disables local search and -1 means no limit. Default is 1.
Restore saved populations instead of starting with random ones. Populations are loaded from a number of
files, where <prefix> is the prefix, specified with the -o option. See below.
Specify a prefix for output files. All output files (result, saved populations, convergence graph info) will have PREFIX prepended.
Set the verbosity level, where LEVEL is one of the following:
(only fatal error messages are shown),
(fatal and non-fatal errors),
(errors and a progress indicator),
(all of the above plus some informational messages) or
(all of the above plus debug messages).
Shows a brief help message.
Shows compile time options and copyright information.
Sets a time limit for the genetic algorithm. Tablix will stop if no solution is found after set number of minutes. The effect is same as when Ctrl-C is pressed. Setting
to 0 disables this feature. Default is disabled. Use this option to prevent Tablix to run indefinitely if there is no possible solution.
Set algorithm parameters. This is rarely used. The defaults should work fine in most cases. PARAMETERS is a comma separated string of
pairs. This option is available only if Tablix was compiled with
option. Following parameters are available:
Population size of one node in cluster. Bigger populations mean less generations per minute but also in some cases more optimized results. Default 500.
Tournament size. Bigger tournament sizes result in faster convergence, which can result in finding a local instead of a global minimum. Default 3.
What part of the population will mutate each generation. 2 means one half, 3 means one third, etc. More mutations usually result in slower convergence but can help to avoid local minimums. Default 4.
What part of the population will be randomized each generation. Randomizations have the same effect as mutations. Default 6.
How many equally graded timetables can exist at the same time in a population. Smaller values result in slower convergence but can help to avoid local minimums. Default 20.
How many equally graded populations to wait before finishing. Default 300.
How often do parts of populations migrate between nodes. Smaller value means more migrations, which results in faster convergence. Default 40.
What part of population will migrate between nodes. Default 10.
How many equally graded populations to wait before starting local search (if enabled). Default 100.
When you run
, you actually start the master process that will spawn the requested number of slave processes (kernels) on the virtual machine. It will then multicast the configuration file to all the nodes and start listening for their reports.
You can press Ctrl-C on the TTY (or send SIGINT) to stop the process. Tablix will save its state in a number of files called save?.txt (it will prepend your prefix, if given). You can later resume the process by running Tablix with the -r parameter.
This is an experimental feature. It should currently only work, if you don't change any setting between saving and restoring the process. Nothing in the XML file should be changed, the computing nodes should stay the same, etc.
When all the criteria are satisfied, Tablix will output one XML file for each node (file name will be prefix + result?.xml).
is executable for the slave process. It should not be started by hand, unless you know what your are doing.
Exit status is 0 if solutions were found, and 1 if the time limit was reached or the user has pressed Ctrl-C. Exit status is more or less undefined in case of errors during the execution (ideally it should be 2 in this case).
Tablix will not notify the user if he or she is trying to create an impossible time table.