Your system should read the input from which you will generate a search instance out of a text file, that contains a few key words and then describes the information as tables. Each line in the input file (that is not a key word line) is a row in such a table. The fields within such a row are separated by commata! The general scheme of the text file is as follows:
TA table: TA-ID, name, program, capacity TA Courses taken: TA-ID, course-ID, result TA Exception list: TA-ID, course-ID1,...,course-IDn TA Unavailability: TA-ID, day, start-time, end-time TA Preference: TA-ID, course-ID1, course-ID2, course-ID3 course-ID4 course-ID5 Instructor table: instructor-ID, name Instructor Preference table: instructor-ID, course-ID, TA-ID, preference Course table: course-ID, section-ID, course-name, lab-ID, instructor-ID, day, start-time, end-time TA Coordinator Partial Assignments: course-ID, lab-ID, TA-ID
Obviously, we have unique IDs for nearly everything. capacity is a natural number, result is either good or not-good, and course-ID1,...,course-IDn means that we do not know how many elements are in this list. Times use the 24-hour format. Regarding the individual tables:
Note that this structure of the input file has some differences to the original, more mathematical, problem description you have used for your paper. The TA coordinator's partial assignments state only these assignments, every lab without an explicit assignment is not mentioned (so that you have to deduce them from the file). Some other questions last semester were, if the format is static, i.e. if the key words occur in the given sequence, which is the case, what to do with additional blanks in inputs (your parser should filter them out) and what kind of GUI I expect. For the later, I do not require much: I am already satisfied, if you start the system with command line parameters and regarding your output, I naturally want at the end the best found solution printed out (with its Eval-value) and I would also like to see a line printed out each time you found a better best solution than the one you has so far (naturally, with the Eval-value of this new best solution). What else you do, is up to you. I usually strongly suggest to have several protocol modes in a search system, so that you can also give more detailed output, which is a good thing to search for bugs!
You also need more precise definitions for the function Eval. In general, for each of the five soft constraints you will compute a value that indicates how good this particular constraint is fulfilled by an assignment. Then you will multiply each of these values with a weight (these weights are an additional input for your system, although you should have some default value for them build into your system; note that I will have examples that require as weight a 0) and sum up the resulting products. This is your Eval-value for an assignment.
The following is a short example input file:
TA table: 1, Peter Miller, MScCS, 3 2, John Farmer, BScCS, 2 3, Anne Lee, PhDSE, 3 TA Courses taken: 1, CPSC333, good 1, CPSC533, not-good TA Exception list: 2, CPSC533, CPSC333, PHIL271 TA Unavailability: 1, T, 9:00, 13:00 1, M, 12:00, 16:00 1, T, 16:03, 16:24 1, F, 10:00, 12:00 1, F, 14:00, 16:00 TA Preference: 1, CPSC333, CPSC533, CPSC573, CPSC231, CPSC413 Instructor table: 1, Otto Mueller 2, Paula Maier Instructor Preference table: 1, CPSC333, 2, 1 2, CPSC533, 3, 2 Course table: CPSC333, S01, Foundations of SE, L01, 1, T, 8:00, 8:50 CPSC333, S01, Foundations of SE, L02, 1, M, 10:00, 10:50 CPSC333, S02, Foundations of SE, L03, 2, T, 17:00, 17:50 CPSC533, S01, AI, L01, 2, M, 12:00, 12:50 CPSC533, S01, AI, L02, 2, M, 12:00, 12:50 TA Coordinator Partial Assignments: CPSC333, L02, 3