Scheduling algorithm for a student's study times given assignments, expected time, due dates, and class times 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.