Re: [tablix-list] Specific (complex) timetabling requirement

From: Tomaž Šolc <tomaz.solc_at_tablix.org>
Date: Wed, 15 Jul 2009 19:43:11 +0200

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Ramen

> Basically we have a number of events in different age categories
> (Juvenile, Junior, Youth, Adult, Senior I, Senior II, Senior III), and
> each one does "Ballroom", "Latin" and possibly "10 Dance". We have
> various numbers of each event to give out - e.g. 9 "Adult Ballroom", 5
> "Junior 10 Dance", etc, totally around 129 events for the year.
>
> These need to be timetabled at many different venues around the country.
> Now the venues are only available on certain fixed weekends.

Before you jump into writing new modules I suggest you first try using
the existing school timetabling schema and see what kind of results you get.

As you suggested, use 'room' and 'time' as variable resources: rooms =
all your locations, time: 51 x 3 (or the maximum number of simultaneous
events per location). You only need one constant resource type, so use
both 'class' and 'teacher' as your age group (duplicate the list of
resources and event assignments for both resource types, so the
timetable will be constrained as if only one resource type was used)

Start with only 'sametime.so' and 'timeplace.so' modules.

> I decided to split time into weekends (0-51) and I'll probably need
> several timeslots because you can have more than one event at a venue on
> the same day (though I need to specify a maximum per venue, which will
> be different for each, as some are small and some are large). There are
> also a lot of other parameters governing whether a venue is suitable for
> certain events, but I won't go into those just now, I'll focus on the
> basics first.
>
> So looking through examples, I thought I would need the venue as a
> variable resource, and the age group (class) as a constant resource.
>
> However, I can't find any way to say that a venue (room?) is only
> available in certain time-slots. There is the available.so module, but
> is 1) when it's not available, and 2) it's not usable for variable
> resources.

I don't believe you can make such a constraint with the current set of
modules directly, but there is a work-around: make fake events, assign
them fake classes and teachers and use fixed.so module to fix them at
time-location pairs that are never available.

> Eventually I'll have to put in various capabilities (e.g. floor size),
> various conflicts (e.g. cannot have "10 dance" on the same day as
> "ballroom" or "latin" for a particular age group), requests from venues
> for particular events, and many other constraints, but would like to get
> it to use the specific days first.

Some of these constraints can probably also be emulated with
school-timetabling modules - but it may start get inefficient. The fake
events workaround I mentioned above will give worse results than a
specialized module.

If things look promising with the workarounds I described above, you'll
eventually want to write your own set of modules for scheduling dance
events.

Best regards
Tomaž
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkpeFS8ACgkQsAlAlRhL9q95iwCfUJkR/4578CxjiQl+X04uqcLT
B1cAoNrt2ODDUHPBsaHoeR5M48xfr9NY
=A6uN
-----END PGP SIGNATURE-----
Received on Wed Jul 15 2009 - 19:43:18 CEST

This archive was generated by hypermail 2.2.0 : Thu Jul 16 2009 - 06:30:20 CEST