У меня возникли проблемы с конкретной проблемой. Я должен запланировать 5 сотрудников для работы более 14 дней. каждый сотрудник может работать только 9 из 14 дней, и каждый день должно быть запланировано 3 сотрудника. Ключевая часть заключается в том, что каждый сотрудник имеет определенный штраф за работу в определенный день. Так что, если они не могут работать в этот день, его штраф в размере 10, если они могут это сделать, и не возражают против его штрафа в ноль и, наконец, если они могут, но не хотят его штрафа в размере 5.Многим многим «Обобщенному назначению« Проблема »
I имеют матрицу значений штрафа для каждого сотрудника за каждый день. Я пытаюсь найти способ написать свои противопоказания.
Я подумал о матрице A (матрице штрафа) и матрице B (матрице расписания) и матрице C, где C (i, j) = A (i, j) * B (i, j). с учетом этой настройки, если A (i, j) равно 0 (сотрудник не работает), тогда штраф не будет приниматься во внимание и наоборот.
Так тогда я мог бы сказать, как мои ограничения:
А (1,1) + A (1, M) + A (1, п) < = 9
и
A (1,1) + A (m, 1) + A (n, 1) = 3
и я минимизирую: C (1,1) + C (m, m) + C (n, n)
Моя проблема в том, чтобы рассматривать это как это, пытается использовать это в алгоритме оптимизации. Предполагается, что симплекс-алгоритм может решить любую проблему с LP, но он может быть самым медленным. Я застрял, и теперь я уверен, что рассматриваю это неправильно. Если кто-то может дать мне свежий взгляд и, возможно, объяснить, почему я смотрю на это неправильно, я бы это оценил.
Вы застреваете, потому что вам нужно что-то быстрее? –
Неясно, каков ваш вопрос. Вы также не можете использовать метод симплекс для решения этой проблемы, так как A (i, j) являются двоичными переменными.Если размер вашей проблемы достаточно мал, хороший MIP-решатель должен иметь возможность получить достаточную допуск. Дайте больше деталей! – raoulcousins
Эта проблема очень похожа на [соревнование по регистрации медсестер] (http://docs.jboss.org/drools/release/5.5.0.Final/drools-planner-docs/html_single/index.html#d0e1680). Если вы ищете копию с открытым исходным кодом для копирования, [здесь используется одна (а не MIP, но метаэвристика)] (https://github.com/droolsjbpm/drools-planner/tree/master/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain) (см. его в действии в [этом видео] (http://www.youtube.com/watch?v=7nPagqJK3bs)) –