Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по ЭММ 2008.doc
Скачиваний:
169
Добавлен:
11.11.2019
Размер:
4.88 Mб
Скачать

2.2. Специализированные задачи линейного программирования Транспортная задача

Транспортные задачи и задачи о назначениях, которые интерпретируются как частный случай транспортной задачи, являются специальными задачами линейного программирования (задача о назначениях рассматривается как пример задачи дискретной оптимизации). Транспортная задача является одной из наиболее распространенных задач линейного программирования и находит широкое практическое приложение.

В общем виде транспортную задачу можно сформулировать следующим образом: в m пунктах отправления А1,...,Аm находится однородный груз, количество которого равно, соответственно, a1,...,am единиц. Данный груз необходимо доставить потребителям В1,...,Вn спрос которых – b1,…, bn. Стоимость перевозки единицы груза из i-того (i = 1, …, m) пункта отправления в j-ный (j = 1, …, n) пункт назначения равна Cij. Необходимо составить план перевозок, который полностью удовлетворяет спрос потребителей в грузе, и при этом суммарные транспортные издержки были бы минимальны.

Математически транспортную задачу можно записать так:

, (1)

при следующих условиях:

где i = 1, ..., m; (2)

где j = 1, …, n; (3)

(4)

Таким образом, даны система ограничений (2) при условии (3) и линейная функция (1). Требуется среди множества решений системы (2) найти такое неотрицательное решение, которое доставляет минимум линейной функции (1).

Модель транспортной задачи называют закрытой (сбалансированной), если суммарный объем груза, имеющегося у поставщиков, равен суммарному спросу потребителей, т.е. выполняется равенство:

. (5)

Если для транспортной задачи выполняется одно из условий:

(6)

, (7)

то модель задачи называют открытой (несбалансированной).

Для разрешимости транспортную задачу с открытой моделью следует преобразовать в закрытую. Так, если выполняется условие , то необходимо ввести фиктивный (n + 1)-й пункт назначения Bn+1, то есть в матрицу задачи вводится дополнительный столбец. Спрос фиктивного потребителя принимается равным . Стоимость перевозок продукции полагается одинаковой, чаще всего равной нулю (если не задана стоимость складирования продукции), то есть сi, n+1 = 0, .

Если выполняется условие , то необходимо ввести фиктивного (m + 1)-го поставщика Am+1, то есть в матрицу задачи вводится дополнительная строка. Запас груза фиктивного поставщика принимается равным . Стоимость перевозок продукции полагается одинаковой, чаще всего равной нулю (если не задана стоимость штрафов за недопоставку продукции), то есть сm+1, j = 0, .

При преобразовании открытой задачи в закрытую целевая функция не меняется, так как все слагаемые, соответствующие дополнительным перевозкам, равны нулю.

Пример 1. Перед менеджером агропромышленной компании стоит задача создания схемы поставки сельскохозяйственных продуктов от четырех перерабатывающих комплексов компании в пять регионов страны. Одним из основных условий поставленной задачи является минимизация стоимости перевозок, при этом все мощности перерабатывающих комплексов должны быть реализованы и все потребности регионов удовлетворены.

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

Таблица 4

Мощности поставщиков и потребителей, стоимость перевозок

Мощности поставщиков

Мощности потребителей

600

400

700

500

1000

700

4

8

5

1

6

800

3

5

2

3

4

900

2

6

5

4

3

800

1

4

3

5

3

Экономико-математическая модель

В данном случае мощности поставщиков нефтепродуктов и потребности регионов в них совпадают, т.е. имеем дело с закрытой моделью транспортной задачи:

Решение. Ввод условий задачи состоит из следующих основных этапов.

  1. Создание формы для решения задачи.

  2. Ввод граничных условий.

  3. Ввод исходных данных.

  4. Назначение целевой функции.

  5. Ввод зависимостей из математической модели.

  6. Ввод ограничений.

  7. Просмотр результатов и печать отчета.

Рассмотрим более подробно каждый из этих этапов.

1. Создание формы для решения задачи предполагает создание матрицы перевозок.

Для этого необходимо выполнить резервирование изменяемых ячеек: в блок ячеек B3:F6 вводится «1».

Таким образом, резервируется место, где после решения задачи будет находиться распределение поставок, обеспечивающее минимальные затраты на перевозку груза (нефтепродуктов).

2. Ввод граничных условий.

Введение условия реализации мощностей поставщиков, т.е.

,

где ai – мощность i-того поставщика;

xij – объем поставки груза от i-того поставщика к j-ному потребителю;

n – количество потребителей.

Для этого необходимо выполнить следующие операции:

  • курсор в ячейку A3;

  • щелкнуть знак «»;

  • выделить необходимые для суммирования ячейки B3:F3;

  • нажать ENTER – подтверждение ввода формулы для суммирования.

Аналогичные действия выполнить для ячеек А4, А5, А6, т.е. ввести условия реализации мощностей всех поставщиков (для всех строк). Эти действия можно реализовать иначе:

  • курсор в A3;

  • копировать в буфер (т.е. копировать в буфер формулу, введенную для ячейки A3);

  • выделить ячейки А4:А6;

  • вставить из буфера (вставка формулы для суммирования в А4:А6).

Введение условия удовлетворения запросов потребителей, т.е.

,

где bj мощность j-ного потребителя;

m количество поставщиков.

Для этого необходимо выполнить следующие операции:

  • курсор – в В7;

  • щелкнуть знак «». При этом автоматически выделяется весь столбец ВЗ:В6;

  • ENTER – подтверждение суммирования показателей выделенного столбца.

Последовательность этих действий выполнить для ячеек C7-F7 или:

  • курсор в В7;

  • копировать в буфер;

  • выделить C7:F7;

  • вставить из буфера.

Таким образом, введены ограничения для всех поставщиков и всех потребителей.

3. Ввод исходных данных.

В конкретном примере осуществляется ввод мощностей четырех нефтеперерабатывающих предприятий (ячейки А11:А14), потребности регионов в их продукции (B10:F10), а также удельные затраты по доставке нефтепродуктов от конкретного поставщика потребителю (блок B11:F14) (рис. 3).

Рис. 3. Ввод исходных данных и граничных условий

4. Назначение целевой функции.

Для вычисления значения целевой функции, соответствующей минимальным суммарным затратам на доставку груза, необходимо зарезервировать ячейку и ввести формулу для ее вычисления:

,

где Cij – стоимость доставки единицы груза от i-того поставщика к j-ному потребителю;

хij – объем поставки груза от i-того поставщика к j-ному потребителю.

Для этого:

  • курсор в ячейку В15. В данную ячейку будет помещаться значение целевой функции после решения задачи;

  • щелкнуть Мастер функций (значок fx);

  • в окне Категория выбрать Математические;

  • в окне Функция при помощи спинера выбрать СУММПРОИЗВ;

- ОК;

- в окне СУММПРОИЗВ указать адреса массивов, элементы которых обрабатываются этой функцией.

В задаче целевая функция представляет собой произведение удельных затрат на доставку груза (расположенных в блоке ячеек B11:F14) и объемов поставок для каждого потребителя (содержимое ячеек B3:F6). Для этого:

  • в поле Массив 1 указать адреса B11:F 14;

- в поле Массив 2 указать адреса B3:F6;

- OK – подтверждение окончания ввода адресов массивов.

В поле ячейки В15 появится некоторое числовое значение, равное произведению единичных поставок на удельные коэффициенты затрат по доставке грузов (число 77 в данной задаче, рис. 4).

Рис. 4. Назначение целевой функции

5. Ввод зависимостей из математической модели.

Для осуществления этого этапа необходимо выполнить следующий перечень операций:

  • щелкнуть Сервис – Поиск решения;

  • курсор подвести в поле Установить целевую (ячейку);

  • ввести адрес $В$15. Таким образом, производится указание ячейки, куда при решении задачи помещается значение целевой функции (или курсор – в В15, затем щелкнуть Поиск решения. При этом осуществится автоматический ввод адреса $В$15 в поле адреса целевой ячейки);

  • установить направление изменения целевой функции, равное «минимальному значению»;

  • ввести адреса изменяемых ячеек B3:F6. Для этого:

– щелкнуть в поле Изменяя ячейки;

– ввести адреса $B$3:$F$6 (или же щелкнуть на маленькой красной стрелке рядом с этим полем, выйти в таблицу с матрицей перевозок, выделить блок ячеек B3:F6, щелкнуть на красной стрелке и вернуться в блок Поиска решения, при этом нужные адреса будут введены).

Ввести ограничение задачи. В матрицу перевозок, содержащую исходные данные по задаче, необходимо ввести условие реализации мощностей всех поставщиков. Для этого:

  • щелкнуть Добавить ограничения;

  • в поле Ссылка на ячейку ввести адреса $А$3:$А$6;

  • в среднем поле установить знак «=». Для этого щелкнуть спинер и выбрать необходимый знак «=» (для открытой модели знак «=» следует заменить знаком «≤»);

  • в поле Ограничение установить адреса $А$11:$А$14;

  • щелкнуть ОК, т.е. осуществить, подтверждение введенного условия. После этого вернуться в поле Поиск решения.

Далее вводится ограничение, которое реализует условие удовлетворения мощностей всех потребителей. Для этого:

  • щелкнуть Добавить ограничение;

  • в поле Ссылка на ячейку ввести адреса $B$7:$F$7;

  • в поле знака выбрать при помощи спинера знак «=»;

  • в поле Ограничение (третье поле) установить адреса $B$10:$F$10;

  • ОК (рис. 5).

Рис. 5. Ввод зависимостей из математической модели

6. Ввод ограничений.

Далее необходимо установить ограничения на решение задачи. Для этого:

  • щелкнуть Параметры;

  • установить Линейная модель;

  • установить Неотрицательные значения, так как объемы поставок груза отрицательной величиной быть не могут (рис. 6.);

  • ОК. После этого осуществится выход в поле Поиска решений;

  • нажать Выполнить.

Рис. 6. Установление параметров задачи

7. Просмотр результатов и печать отчета. После выполнения всех вышеуказанных действий на экран выводится окно Результаты поиска решения (рис. 7);

Рис. 7. Решение найдено

  • в окне Тип отчета выбрать интересующий вид отчета;

  • ОК.

Внизу страницы экрана содержится сообщение Отчет по результатам 1. Щелкнуть на этом сообщении, на экран выводятся результаты решения задачи, которые можно распечатать.

При нажатии Лист 1 происходит возврат в программу к исходным данным.

В матрице перевозок содержатся оптимальные объемы поставок грузов от поставщика потребителям, дающие минимум затрат на доставку. Значение целевой функции содержится в ячейке В15 и для конкретной задачи равно 7800 (рис. 8).

Рис. 8. Оптимальное решение

Из вышеизложенного можно сделать следующий вывод: минимум затрат на доставку нефтепродуктов, равный 7800 условных денежных единиц, будет обеспечен при следующем плане поставок:

  • от первого поставщика первому потребителю – в объеме 200 единиц и четвертому – в объеме 500 единиц (условных);

  • от второго поставщика второму потребителю – в объеме 100 единиц и третьему потребителю – в объеме 700 единиц (условных);

  • от третьего поставщика пятому потребителю – в объеме 900 единиц (условных);

  • от четвертого поставщика первому потребителю – в объеме 400 единиц, второму – объеме 300 единиц (условных), пятому – в объеме 100 единиц.

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