Удачи. Сын отца с такой проблемой - вот что привело меня в исследовательскую группу, в которой я оказался ...
Когда я был ребенком, мой отец назначал официальных матчей на матч в местной спортивной лиге, у него был такой же длинный список ограничений, и я пытался написать что-то, чтобы помочь. Когда я поступил в университет, я даже использовал его как свой последний годовой проект, в конечном итоге остановившись на реализации Монте-Карло (используя модель имитации отжига).
Основная идея заключается в том, что если это не NP, то это довольно близко, поэтому вместо того, чтобы предполагать, что есть решение, я бы решил найти лучшее за определенный период времени. Я бы взвесил все ограничения с затратами на их нарушение: проверки работоспособности будут сопряжены с огромными затратами, предпочтения будут иметь более низкие затраты (но увеличиваться при большем количестве перерывов, поэтому один раз нарушить это будет вдвое дешевле, чем дважды).
Основная идея заключается в том, что я начал с «случайного» решения и оценил его; затем внесли изменения путем замены небольшого числа заданий, переоценили его, а затем, с большой вероятностью, приняли или отклонили изменение.
После тысяч итераций вы приближаетесь к приемлемому решению.
Поверьте, однако, что в этом классе проблем исследовательские группы выпускают кандидатов наук, поэтому вы находитесь в очень хорошей компании.
Вы также можете найти некоторый интерес в области линейного программирования, например, симплекс и т. Д.