Вам стоит почитать про алгоритмы планирования задач в операционных системах (task scheduling). Можно отталкиваться от них.
С другой стороны, у вас нет таких жестких ограничений, как при планировании задач, (время на планирование, дискретные приоритеты) поэтому можно рассмотреть и другие подходы.