Skip to content

In this project a scheduling system is implemented in Prolog to assign the weekly labs of a course to the available TAs

Notifications You must be signed in to change notification settings

YousefElbrolosy/Labs_Scheduling_System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

Labs Scheduling System

In this project a scheduling system is implemented in Prolog to assign the weekly labs of a course to the available TAs

The following should be noted:
-Each lab should be assigned exactly one TA.
-Each TA has a teaching load (the number of labs they are required to teach per week).
-Each TA should not be assigned more labs than their teaching load (but can get less load).
-The number of slots assigned to each TA per day must not exceed a particular specified number.

The project uses the following predicates:

a) week_schedule(WeekSlots,TAs,DayMax,WeekSched) such that:
• WeekSlots is a list of 6 lists with each list representing a working day from Saturday till Thursday. A list representing a day is composed of 5 numbers representing the 5 slots in the day. The number at position i in a day list represents the number of parallel labs at slot i.

b) day_schedule(DaySlots,TAs,RemTAs,Assignment) such that:
• DaySlots is a list of 5 numbers representing the number of parallel labs in the 5 slots of the day. • TAs and RemTAs are lists of TA structures. • Assignment is a list of lists of TA names in TAs representing the assignment of the day. day_schedule/4 succeeds if Assignment is a possible day assignment given the available DaySlots and list of course TAs, while RemTAs is the list of updated TA 2 structures after the day assignment.

c) max_slots_per_day(DaySched,Max) such that:
• DaySched is a day schedule showing the assignment of the TAs in every slot. • Max is a number showing the maximum amount of labs a TA can be assigned in a day. max_slots_per_day/2 succeeds if no TA is assigned more than Max labs in DaySched.

d) slot_assignment(LabsNum,TAs,RemTAs,Assignment) such that:
• LabsNum is a number representing the amount of parallel labs in this slot. • TAs is a list of TAs structures. • RemTAs is the updated list of TAs structures after the assignment to this slot. • Assignment is a list of the names of TAs in TAs assigned to this slot. slot_assignment/4 succeeds if Assignment is a possible assignment to a single slot with LabsNum labs and RemTAs is the list of modified TAs after the assignment.

e) ta_slot_assignment(TAs,RemTAs,Name) such that:
• TAs and RemTAs are lists of TA structures • Name is a name of a TA in TAs. ta_slot_assignment/3 succeeds if RemTAs is the list of TA structures resulting from updating the load of TA Name in TAs.

About

In this project a scheduling system is implemented in Prolog to assign the weekly labs of a course to the available TAs

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages