• Регистрация
www300
www300 +0.52
н/д

Задача ЛП. Задача о назначениях.

01.08.2020

Доброго времени всем.

Прошу помощи с постановкой и выбором метода решения.


Пусть есть производственное предприятие. На котором трудятся 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)

 

Но не могу описать мат модель

так как везде используется матрица затрат (стоимостей), у меня же матрица описывает производство, а минимизировать надо отклонение от плана.

Теги

    01.08.2020

    Ответы

    • www300
      www300+0.52
      1.08.2020 15:08

      % Решил переведя матрицу производства в матрицу затрат

      Cost .* repmat(Party, 1, n) - repmat(Plan, 1, n);

      % всё что соответствует выполнению плана, отмечаем как лучшее состояние ( 0 для задачи минимизации)

      Cost( find(osct > 0) ) = 0;

      % за не выполнение плана назначаем штраф

      cost = -cost;

      % спользовал венгрский метод