I would like to create an algorithm that advises a student when they should work on certain assignments given the expected time each assignment will take, and the due date of each assignment.

Say that for a students' weekly schedule, there are class times and events that must be attended. With the remaining time slots in the week, how can I assign times to work on each assignment so that the recommended assignment time is fulfilled before the due date.

This is very similar to single-machine scheduling problems, and usually a greedy algorithm of closest-due-date-first would work, but I want to implement constraints based on human factors. For example: don't work on one assignment for more than 2 hours in a row, don't schedule a study time right after a class, etc.

How would I go about including these human factor constraints within my algorithm?


A pragmatic solution might be to use methods from operations research, e.g., formulate this as an integer linear program or an instance of SAT, and use an off-the-shelf solver. It's hard to say exactly what the best solution might be without knowing the specific constraints, but these approaches will be the most flexible in accommodating a wide range of possible constraints.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.