5.П.2. Простая транспортная задача
Постановка задачи
Минимизируйте суммарные транспортные издержки для задачи, приведенной в таблице. Знак вопроса означает,
что клиент недоступен для источника.
источники\клиенты | К01 | К02 | К03 | К04 | К05 | К06 | К07 | К08 | К09 | К10 | ресурсы |
И1 | 14 | 6 | 5 | 12 | 17 | 14 | 14 | 11 | ? | 12 | 17 |
И2 | 13 | 10 | 3 | 15 | 14 | 9 | 8 | 16 | 4 | 17 | 23 |
И3 | 15 | 13 | 11 | ? | 9 | 2 | 6 | 7 | 14 | 17 | 10 |
И4 | 12 | 17 | 4 | 12 | 14 | 6 | 11 | 7 | 9 | 18 | 24 |
И5 | 18 | 12 | 11 | 4 | 8 | 17 | ? | 11 | 8 | 9 | 5 |
заказ | 6 | 11 | 11 | 3 | 12 | 12 | 8 | 3 | 2 | 11 | |
Решение задачи
Параметры задачи приведены в таблице в постановке задачи.
Для решения задачи можно использовать следующую модель.
Ресурсы источников (тип "Приобретение") и Заказ клиентов (тип "Приобретение") поступают в
Распределение (тип "Производство"), где происходит распределение источников по заказчикам.
В Распределении используется по одному процессу на каждое возможное распределение, т.е. создается
процесс для каждой пары (клиент, источник). Название процесса образуется соединением обозначения клиента
и обозначения источника, например, К05И2 для пары клиент = К05, источник = И2. Это может показаться
неудобным и громоздким, но данные по каждой паре все равно куда-то должны вводиться. Если построить
модель с меньшим количеством процессов, в ней все равно где-то будет список со всеми парами и
соответствующими им данными. Поэтому, эта громоздкость - только кажущаяся, неизбежная. Для каждого
процесса задается его цена - издержки из параметров задачи.
При реальной практической работе с полнофункциональной версией GEM все данные извлекались бы из внешней
базы данных, а имена процессов создавались бы автоматически. В данном примере мы делаем это вручную.
Для пар, для которых в таблице стоит вопросительный знак, можно было бы не создавать процесс. Но в
дальнейшем ситуация может измениться, вместо вопросительного знака появится число. Чтобы не менять модель,
процесс создается, но его цена делается очень высокой, настолько, что процесс не может войти в решение.
Для дополнительной уверенности для этого процесса задается Мах(ед) = 0.
Вставим в модель объект типа "Приобретение" с именем "Ресурсы", объект типа "Приобретение" с именем
"Заказ", объект типа "Производство" с именем "Распределение". Проведем связи-потоки из Ресурсов в
Распределение и из Заказа в Распределение.
В Ресурсах, в таблице закупок, введем материалы - источники И1,...,И5. Зададим для них Мах кол-во
из параметров задачи.
В Заказе, в таблице закупок, введем 10 материалов - клиентов К01,...,К10. Зададим для них Min кол-во
= Мах кол-во = заказу из параметров задачи.
В Распределение, в процессах, добавим 50 процессов-пар: KiИj, где i=01,...,10, j=1,...,5. Во
входящих материалах для каждого из процессов-пар введем пару материалов - начало пары и конец пары (т.е.
для К03И4 материалы К03 и И4), потребление = 1.
Решим модель. Общие затраты = 605. Для удобства просмотра какой источник какому клиенту сколько
отправил, в модель добавлена панель данных, с которой пользователю предлагается познакомиться
самостоятельно.