Wed Aug 31 13:25:01 CEST 2005

Tablix 0.2.3 development release

Fourth and probably the last release of the 0.2 branch is available for download.

This release is mostly focused on updated documentation. User's manual and the second part of the Modules HOW-TO have been rewritten. Some bugs were fixed in the kernel code and a few new modules were ported from the 0.1 branch.

Only some minor tasks need to be done before the first stable release based on this code. Most importantly man pages still need to be updated. I also hope that more module authors will decide to port their modules to the new API before the stable release.


Posted by Tomaž | Permalink | Categories: Development

Fri Aug 26 18:38:06 CEST 2005

Tablix Document Type Definitions

Final versions of the Document Type Definitions for the XML formats that will be used by the next stable release of Tablix are available for download.

Barring any typos or bugs in the DTD documents, these exact two formats will be used to describe the timetabling problems according to the Tablix Timetabling Model and to give machine-readable descriptions of the fitness modules included in the distribution.


Posted by Tomaž | Permalink | Categories: Development

Sat Jun 25 21:12:16 CEST 2005

Tablix 0.2.2 development release

Third development release of the 0.2.x branch is available for download

This release fixes a few critical bugs in the kernel and adds a lot of fitness modules (most of them contributed by Nicholas Robinson). A new automatic module documentation system has been added and I've updated and extended the first part of the Modules HOW-TO. No API changes have been made and modules written for the 0.2.1 release will work with 0.2.2 without modifications.

A lot of modules haven't been ported to the new kernel yet, however this is the first release of the 0.2.x branch that can be used to solve real-life problems. On the other hand a lot of things still need to be done before the first stable release of this branch. Any help is appreciated.


Posted by Tomaž | Permalink | Categories: Development

Fri Apr 29 17:05:32 CEST 2005

Tablix 0.2.1 development release

Second development release of the 0.2.x branch is available for download.

This release features a new XML parser, which means that this is the first release that uses the new format of the XML configuration file and can fully exploit new features in the kernel. Save and restore (the -r flag) should now work correctly. Several bug fixes and improvements (no significant API changes) in the kernel, the master process and modules were also made.

To simplify module development, this release includes two new header files, export.h and module.h, one for export and one for fitness modules. Module source only needs to include one of these to get all needed function prototypes and type definitions.


Posted by Tomaz | Permalink | Categories: Development

Tue Apr 26 20:29:59 CEST 2005

Tablix timetabling model

I've written a formal description of the type of timetabling problems the new kernel is able to solve. This will be a part of the manual for the stable release of the 0.2.x branch.

I would be very happy if someone who is a better writter of mathematical texts than I am could comment on this.


Posted by Tomaz | Permalink | Categories: Development

Sat Apr 9 19:43:10 CEST 2005

Tablix 0.2.0 development release

The first development release of the 0.2.x branch is now available.

The kernel itself should be mostly stable by now, however I have only ported the two base modules sametime.so and timeplace.so so I'm afraid this release isn't very useful to people that do not want get their hands dirty and dig into the code.

On the other hand if you are prepared to fix bugs or port some modules to the new API by all means give it a try. The executables and installation directories are renamed (tablix2, tablix2_output, etc.) so you can install the new branch alongside one of the stable releases. Be sure to read the README file included. It lists things that I know are not working correctly yet. Also I should warn you that from the example files included, only the sample2.xml will work.

Have fun!


Posted by Tomaz | Permalink | Categories: Development

Sun Mar 27 19:59:06 CEST 2005

Kernel reference available

API reference

Reference documentation in HTML format for the 0.2.0 Tablix kernel is now available on-line.


Posted by Tomaz | Permalink | Categories: Development

Fri Mar 25 14:49:22 CET 2005

First module ported to the new kernel

I'm pleased to announce that the first of the 26 modules included in the 0.1.1 release was successfully ported to the new 0.2.0 kernel API. The new kernel still runs only in debug mode without PVM support, but I hope I will be able to fix that soon.

The new code for timeplace.so module is included bellow, to give a demonstration how the new API will look like. You can expect full 0.2.0 API reference to be available on this page soon.

int module_grade(chromo **c, ext **e, slist **s)
{
        int a,b,m;
        int n;
        int sum;
        slist *list;
        chromo *time, *room;

        list=s[0];
        room=c[0];
        time=c[1];

        sum=0;
        for(m=0;m<time->gennum;m++) {
                a=time->gen[m];

                for(n=0;n<list->tuplenum[a];n++)
		if(list->tupleid[a][n]<m) {
                        b=list->tupleid[a][n];
                        if (room->gen[m]==room->gen[b]) {
                                sum++;
                        }
                }
        }

        return(sum);
}

int module_init(moduleoption *opt) 
{
        gradefunc *grade;

        grade=grade_new("time-place", 
                        option_int(opt, "weight"), 
                        option_int(opt, "mandatory"), 
                        module_grade);
        if(grade==NULL) return -1;

        grade_request_chromo(grade, "room");
        grade_request_chromo(grade, "time");

        grade_request_slist(grade, "time");

        return(0);
}

Posted by Tomaz | Permalink | Categories: Development

Sun Mar 20 19:00:59 CET 2005

State of the 0.2.0 branch

Here is the update on the state of 0.2.0 branch of Tablix:

As it was discussed on the mailing list, this version of Tablix will no longer be limited to the solving of high school timetabling problems. The new kernel will be able to solve problems that involve arbitrary number of resource types (0.1.0 branch has hard coded resource types suitable for high school scheduling like "class", "classroom", "teacher", etc.) Of course this will require a completely different XML format and it will break the backward compatibility with modules. I hope this will also make projects like RotterTablix easier, because no changes in the kernel code will be necessary.

The rewrite of the Tablix kernel is approximately 75% finished. The new code is completely documented with Doxygen, which means that module developers for 0.2.0 branch will have much better documentation available. I haven't started yet with the rewrite of the XML parser, which means that the first few development releases will probably still use the old XML configuration format.

Because the new kernel is not finished yet, I can't say much how its performance will compare to 0.1.0. From the changes in the genetic algorithm I can predict that it will find the solution faster for problems that have a high number of restrictions of a certain type (for example "capability-place", "free-period", ...). Also the new kernel will have much better support for more than one teacher per lecture ("more_teachers.so" module will no longer be used).

The 0.2.0 code is currently only available from the CVS server. In a week or two when I clean things a bit I will probably release a .tar.gz package with a snapshot of the code.


Posted by Tomaz | Permalink | Categories: Development