Прежде всего, я бы выбрал предметы с наибольшей доходностью. Смысл работы, которые имеют
самая большая скорость в значении / времени, которая может соответствовать их крайнему сроку (если сейчас + t1 превышает d1, то это фальшивка). После этого я проверяю время между now + job_time и каждым крайним сроком, получая «шанс закончить» для каждой работы. Работы, которые придут первыми, будут работать с наибольшей доходностью и наименьшим шансом закончить. Идея состоит в том, чтобы выжать самые ценные рабочие места.
СЛУЧАИ:
Если для задания с доходностью 5 требуется 10 секунд, а срок его выполнения наступает через 600 секунд, а для задания с таким же доходом требуется 20 секунд, а срок - через 22 секунды, тогда я запускаю вторую.
Если для задания с доходностью 10 требуется 10 секунд, а срок его выполнения наступает через 100 секунд, в то время как для другого задания с доходностью 5 нужно 10 секунд, а срок - через 100 секунд, я выполню первый один.
Если их доходность идентична, и они требуют того же времени, чтобы закончить, в то время как их крайний срок наступает через 100 секунд, соответственно 101 секунду, я запусту первый, так как он выигрывает больше времени.
.. и так далее и тому подобное ..
Рекурсия в этом случае относится только к переупорядочению заданий по этим параметрам с помощью «Выход» и «Шанс завершить».
Не забудьте всегда увеличивать «сейчас» (+ job_time) после вставки работы в заказ.
Надеюсь, что он отвечает.