У нас есть приложение, которое требует назначения ресурсов ресурсам. Ресурсы имеют ряд атрибутов, которые определяют их пригодность для конкретной работы - некоторые из них являются предпочтениями, некоторые из них являются жесткими ограничениями (все разновидности членства, например "ресурс A подходит для заданий с цветом X, Y или Z".
Ресурсы имеют связанную с ними стоимость (продолжительность, которую они проводят в режиме онлайн). У нас есть возможность набирать ресурсы - это занимает много времени. Мы можем набирать в течение фиксированного интервала времени.
Чтобы дать представление о масштабе: в любой момент времени будет доступно около 20 ресурсов, 100 выдающихся заданий. Завершение работы занимает 5-15 секунд. Рекрутинг ресурса занимает около 1-2 минут, и мы можем набирать с 1 до 30 минут времени (разрешается повторная передача). У нас не так много хедз-ап на поданных работах, может быть, несколько секунд.
Целью является выполнение заданий с наименьшей стоимостью (использование ресурсов) для заданной средней латентности (время завершения задания).
Я хотел бы обратить внимание на алгоритмы, библиотеки программного обеспечения или подходы к решению этой проблемы.