Hi,
I wonder if anyone could offer some advice with two particular problems
I am having.
I am in the process of completing my undergraduate final year project in
Oz.
The project goal is to allocate a list of students to module groups.
The number of groups for each module is predefined, as is the location
and start time. My job is *simply* to allocate students to groups so
that no student appears twice in any group, no students grouping clashes
with any of his other groups (by start time) and that the maximum number
of students in each group is less than a fixed limit depending upon group.
Problem 1 - the representation
I have made one approach using a record with features for each student
and each corresponding field being a FD.record. This 'sub-record' has
module group codes as features and a finite domain representing the
group within that module. After a long period of perseverance, I have
come to the conclusion that this is a cumbersome method.
I wonder if anyone has an opinion on this new possible method:
A record with features for each module-group and a finite set to hold
the students allocated to that group?
Also, I have read about creating 'holes' in finite domains and I think
in principal I appreciate the significance of this, but does this apply
to finite sets also? And is it a problem?
Problem 2 - cross-referencing
I found with my first attempt that I needed to express relationships
between the fields of different records.
For example,
if I have records which have finite domains as fields thus
record1(A:1#5 B:7#9 F:12#15 J:20#25) and
record2(B:7#9 J:20#25)
record3(.......... etc
if the numbers above refer to module groups and each record is a
student, how can I represent the following constraints:
The start time of any group in record1 must not equal the start time of
any other group in the same record.
The total number of students in group B must be less than 20 for example.
I have had some suggestions along the lines of creating some structure
to hold the values relevant to each relationship and then posting
constraints on that new structure, but I have 1500 students and 626
different groups to deal with which seems like an awfully large number
of new data structures.
I have also attempted to understand some of the more involved scheduling
examples, but to be honest I got very lost,very quickly.
My university has many experts on prolog, lisp and logic programming in
general, but sadly none whatsoever on the finer points of FD programming
in Oz.
I think my main hurdle is with posting constraints on record fields with
only the feature name to refer to.
So any help on this in particular would be really appreciated (or a
pointer to some example I can actually understand?)
Kind regards
Mark
--
Mark Richardson
Final year undergraduate
University of Teesside
_________________________________________________________________________________
mozart-users mailing list
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users