Задача ЛП. Задача о назначениях.
Доброго времени всем.
Прошу помощи с постановкой и выбором метода решения.
Пусть есть производственное предприятие. На котором трудятся 4 работника и выпускается 4 вида изделий. Каждый работник может изготавливать некоторые виды изделий:
Производство идёт партиями, и в таблице указано сколько партий может обработать работник за смену.
Размеры парий каждого изделия
Изделие1 - 30
Изделие2 - 20
Изделие3 - 50
Изделие4 - 70
План производства на день
Изделие1 - 27
Изделие2 - 31
Изделие3 - 92
Изделие4 - 58
Задача. Расставить работников на изготовление изделий. Так чтобы минимизировать отклонение от плана.
Ограничения:
Работник за смену занимается только одним видом изделий.
Рассматриваю решени задачи венгреским методом, функция munkres (https://www.mathworks.com/matlabcentral/fileexchange/20652-hungarian-algorithm-for-linear-assignment-problems-v2-3)
либо частично целочисленная задача линейного программирования функция intlinprog (https://docs.exponenta.ru/optim/ug/intlinprog.html)
Но не могу описать мат модель
так как везде используется матрица затрат (стоимостей), у меня же матрица описывает производство, а минимизировать надо отклонение от плана.
Ответы
% Решил переведя матрицу производства в матрицу затрат
Cost .* repmat(Party, 1, n) - repmat(Plan, 1, n);
% всё что соответствует выполнению плана, отмечаем как лучшее состояние ( 0 для задачи минимизации)
Cost( find(osct > 0) ) = 0;
% за не выполнение плана назначаем штраф
cost = -cost;
% спользовал венгрский метод