The algorithms should run on a single processor machine, take as input a problem file in the format described below, and produce as output a feasible timetable (if found) with a minimum number of soft constraint violations in the allowed CPU time.