Tablix modules HOW-TO, part 1

Tomaž Šolc

Modules are pieces of code that are dynamically linked with the Tablix kernel at run time and provide most of the functionality of Tablix. This document describes in detail how to write and build new fitness modules. It explains how to use kernel API interfaces for this kind of modules, module documentation utilities and testing framework.

Copyright (C) 2005 by Tomaž Šolc.


Table of Contents
1. Introduction
Introduction to modules
Brief theoretical background on fitness functions
2. Kernel API
A basic module
Compiling your module
Testing your module
Fitness function, chromosomes, event restriction
Module initialization
Event restriction
Fitness function
Testing the module
Possible improvements
Matrices, domains
About matrices
Modified module
Module initialization
Restriction handler
Testing the module
Discussion
Resource conflicts, slist, resource restriction
About slists
About conflicts
sametime.so module source code
Module initialization
Resource restriction handler
Fitness function
Timetable extensions
About extensions
holes.so module source code
Module initialization
Fitness function
Discussion
Dependent events
Some theory
About updater functions
Dependency solving
consecutive.so module
Registering updater functions
Updater function
Updater functions and resource domains
Porting modules from 0.3.1 to 0.3.2
Miscellaneous
Order of calling
Multiple instances of a module in a single XML file
3. Module documentation
Introduction
Comment block syntax
Module information block
Restriction and module option information blocks
4. Tablix Testing Framework
Introduction
How a test is processed
A basic test
How to write scheme code
A test case for the fixed.so module
A test case for the consecutive.so module
List of Tables
2-1. Example order of resources in a matrix (height = 4)
List of Figures
2-1. Timetable representation in the Tablix kernel.
2-2. Resource domains in Tablix kernel.
2-3. Visualization of a timetable extension in school scheduling.
2-4. Updater functions in Tablix kernel.