Целочисленное программирование.

Лекция №3

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

Целочисленное программирование.

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

Пример 1. Фирма выпускает два набора удобрений для газонов: обычный и улучшенный. В обычный набор входят 3 фунта азотных, 4 фунта фосфорных и один фунт калийных удобрений, а в улучшенный — 2 фунта азотных, 6 фунтов фосфорных и 2 фунта калийных удобрений. Известно, что для некоторого газона требуется, по меньшей мере, 10 фунтов азотных, 20 фунтов фосфорных и 7 фунтов калийных удобрений. Обычный набор стоит 3 долл., а улучшенный — 4 долл. Сколько и каких наборов удобрений надо купить, чтобы обеспечить эффективное питание почвы и минимизировать стоимость?

Решение. Пусть х — количество обычных наборов удобрений, у — количество улучшенных наборов удобрений. L(x, у) = 3х + 4у →min при ограничениях:

Целочисленное программирование. - student2.ru

Воспользуемся возможностями Excel и введем уравнения для ограничений и ЦФ с помощью мастера функций. Здесь выберем из категории Математические функцию СУММПРОИЗВ.

Примечание. Функция СУММПРОИЗВ(массив1; массив2; массив3; …) – перемножает соответствующие элементы заданных массивов и возвращает сумму произведений.

Массив1; массив2; массив3;…- это от 2 до 30 массивов, чьи компоненты нужно перемножить, а затем сложить. Аргументы, которые являются массивами, должны иметь одинаковые размерности. Если это не так, то функция СУММПРОИЗВ возвращает значение ошибки #ЗНАЧ!. СУММПРОИЗВ трактует нечисловые элементы массивов как нулевые.

Используя обозначения соответствующих ячеек формулу для расчета ограничений можно записать как сумму произведений каждой из ячеек, отведенных для значений коэффициентов (B3, В4), на соответствующую ячейку, отведенную для переменных задачи (F3, F4) и вычесть, то есть Целочисленное программирование. - student2.ru . То есть чтобы задать эту формулу необходимо в ячейку В7 ввести следующее выражение и нажать клавишу «Enter»=СУММПРОИЗВ( В3:В4, $F$3:$F$4) – В5. Она скопирована в C7:Е7(в ячейке Е7 она скорректирована, убрано вычитаемое Е5). Выделим ячейку с целевой функцией и вызовем «Сервис/ Поиск решения». В диалоговом окне укажем: «Установить целевую ячейку:» $Е$7, «минимальное значение», «изменяя ячейки» $F$3:$F$4, «ограничения» $B$7:$D$7>=0. В окне «Параметры» установим флажок «Линейная модель» и «Неотрицательные значения». Запустим выполнение. Поиск решения вернет результат: х= 1.5,у = 2.15. Целевая функция равна 15.5. Но наборы удобрений нельзя покупать частями! Нужно наложить еще одно ограничение: х, у — целые числа. Вновь вызываем Решатель, нажимаем кнопку «Добавить» и в диалоговом окне «Добавление ограничения» указываем, что $F$3:$F$4 — целые (в том же выпадающем списке, откуда ранее мы выбирали символ для ограничения). Нажимаем «ОК». Запустим выполнение. На этот раз получим значение целевой функции 17 (естественно, оно ухудшилось), а количество наборов стало таким: х = 3, у = 2.

Целочисленное программирование. - student2.ru

Пример 2.В контейнер упакованы комплектующие изделия трех типов. Стоимость и вес одного изделия составляют 400 руб. и 12 кг для первого типа, 500 руб. и 16 кг для второго типа, 600 руб. и 15 кг для третьего типа. Общий вес комплектующих равен 326 кг. Определить максимальную и минимальную возможную суммарную стоимость находящихся в контейнере комплектующих изделий.

Решение. x, y, z –количество комплектующих 1-го, 2-го и 3-го типа.

L(x, у, z) = 400х + 500у+600z →min(max)

Ограничения Целочисленное программирование. - student2.ru . Целевая функция равна 12600 руб. и 10500 руб.

К задачам целочисленного программирования относят также задачи, где некоторые переменные могут принимать всего два значения: 0 и 1. Такие переменные называют булевыми, двоичными, бинарными.

Пример 3.Имеются 6 предметов, каждый из которых характеризуется весом и ценой (см. рис.). Нужно выбрать из них такие предметы, чтобы их общий вес не превышал 12, а суммарная цена была максимальной (так называемая "задача о рюкзаке").

Решение. В блоке А20:А25 размещены условные названия предметов, а в соседних столбцах — их вес и цена. В блоке D20:D25 фиксируется наличие (1) или отсутствие (0) предмета в наборе. Блокам даны имена в соответствии с их заголовками. В Решателе задаем: максимизировать $А$27 по переменным "наличие" при ограничениях $А$26<=0 и наличие=двоичное. Последнее ограничение задается так. В диалоговом окне "Добавление ограничения" сначала нажимаем F3 и вставляем имя "наличие", в выпадающем списке выбираем "двоич". После запуска Решателя он выдает сообщение – значение целевой ячейки равно 23, а двоичные значения: 0, 1,0, 0, 1, 0, т.е. нужно выбрать второй и пятый предметы.

Целочисленное программирование. - student2.ru

Двухиндексные задачи ЛП.

Выполнить заказ по производству 32 изделий Целочисленное программирование. - student2.ru и 4 изделий Целочисленное программирование. - student2.ru взялись бригады Целочисленное программирование. - student2.ru и Целочисленное программирование. - student2.ru . Производительность бригады Целочисленное программирование. - student2.ru по производству изделий Целочисленное программирование. - student2.ru и Целочисленное программирование. - student2.ru составляет соответственно 4 и 2 изделия в час, фонд рабочего времени этой бригады 9,5 ч. Производительность бригады Целочисленное программирование. - student2.ru – соответственно 1 и 3 изделия в час, а ее фонд рабочего времени – 4 ч. Затраты, связанные с производством единицы изделия, для бригады Целочисленное программирование. - student2.ru равны соответственно 9 и 20 руб., для бригады Целочисленное программирование. - student2.ru – 15 и 30 руб.

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

Решение. Искомыми величинами в задаче являются объемы выпуска изделий. Изделия Целочисленное программирование. - student2.ru будут выпускаться двумя бригадами Целочисленное программирование. - student2.ru и Целочисленное программирование. - student2.ru . Поэтому необходимо различать количество изделий Целочисленное программирование. - student2.ru , произведенных бригадой Целочисленное программирование. - student2.ru , и количество изделий И1, произведенных бригадой Целочисленное программирование. - student2.ru . Аналогично, объемы выпуска изделий Целочисленное программирование. - student2.ru бригадой Целочисленное программирование. - student2.ru и бригадой Целочисленное программирование. - student2.ru также являются различными величинами. Вследствие этого в данной задаче 4 переменные. Для удобства восприятия будем использовать двухиндексную форму записи Целочисленное программирование. - student2.ru – количество изделий Целочисленное программирование. - student2.ru (j=1,2), изготавливаемых бригадой Целочисленное программирование. - student2.ru (i=1,2), а именно,

Целочисленное программирование. - student2.ru – количество изделий Целочисленное программирование. - student2.ru , изготавливаемых бригадой Целочисленное программирование. - student2.ru , [шт.]; Целочисленное программирование. - student2.ru – количество изделий Целочисленное программирование. - student2.ru , изготавливаемых бригадой Целочисленное программирование. - student2.ru , [шт.]; Целочисленное программирование. - student2.ru – количество изделий Целочисленное программирование. - student2.ru , изготавливаемых бригадой Целочисленное программирование. - student2.ru , [шт.]; Целочисленное программирование. - student2.ru – количество изделий Целочисленное программирование. - student2.ru , изготавливаемых бригадой Целочисленное программирование. - student2.ru , [шт.].

Целевая функция

Целью решения задачи является выполнение плана с минимальными затратами, т.е. критерием эффективности решения служит показатель затрат на выполнение всего заказа. Поэтому ЦФ должна быть представлена формулой расчета этих затрат. Затраты каждой бригады на производство одного изделия Целочисленное программирование. - student2.ru и Целочисленное программирование. - student2.ru известны из условия. Таким образом, ЦФ имеет вид

Целочисленное программирование. - student2.ru , Целочисленное программирование. - student2.ru

Ограничения

Возможные объемы производства изделий бригадами ограничиваются следующими условиями:

· общее количество изделий Целочисленное программирование. - student2.ru , выпущенное обеими бригадами, должно равняться 32 шт., а общее количество изделий Целочисленное программирование. - student2.ru – 4 шт.;

· время, отпущенное на работу над данным заказом, составляет для бригады Целочисленное программирование. - student2.ru – 9,5 ч, а для бригады Целочисленное программирование. - student2.ru – 4 ч;

· объемы производства изделий не могут быть отрицательными величинами.

Таким образом, все ограничения задачи делятся на 3 группы, обусловленные:

1) величиной заказа на производство изделий;

2) фондами времени, выделенными бригадам;

3) неотрицательностью объемов производства.

Для удобства составления ограничений запишем исходные данные в виде таблицы

Бригада Производительность бригад, шт/ч Фонд рабочего времени, ч
Целочисленное программирование. - student2.ru Целочисленное программирование. - student2.ru
Целочисленное программирование. - student2.ru 9,5
Целочисленное программирование. - student2.ru
Заказ, шт  

Ограничения по заказу изделий имеют следующий вид

Целочисленное программирование. - student2.ru и

Целочисленное программирование. - student2.ru .

Ограничение по фондам времени содержательную форму

Целочисленное программирование. - student2.ru

и

Целочисленное программирование. - student2.ru .

Проблема заключается в том, что в условии задачи прямо не задано время, которое тратят бригады на выпуск одного изделия Целочисленное программирование. - student2.ru или Целочисленное программирование. - student2.ru , т.е. не задана трудоемкость производства. Но имеется информация о производительности каждой бригады, т.е. о количестве производимых изделий в 1 ч. Трудоемкость Тр и производительность Пр являются обратными величинами, т.е.

Целочисленное программирование. - student2.ru .

Поэтому используя табл, получаем следующую информацию:

® Целочисленное программирование. - student2.ru ч тратит бригада Целочисленное программирование. - student2.ru на производство одного изделия Целочисленное программирование. - student2.ru ;

® Целочисленное программирование. - student2.ru ч тратит бригада Целочисленное программирование. - student2.ru на производство одного изделия Целочисленное программирование. - student2.ru ;

® Целочисленное программирование. - student2.ru ч тратит бригада Целочисленное программирование. - student2.ru на производство одного изделия Целочисленное программирование. - student2.ru ;

® Целочисленное программирование. - student2.ru ч тратит бригада Целочисленное программирование. - student2.ru на производство одного изделия Целочисленное программирование. - student2.ru .

Запишем ограничения по фондам времени в математическом виде

Целочисленное программирование. - student2.ru

и

Целочисленное программирование. - student2.ru .

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

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

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

Пример 1. Три поставщика одного и того же продукта располагают в планируемый период следующими запасами этого продукта: первый- 120 условных единиц, второй- 100 и третий 80 единиц. Этот продукт должен быть перевезен к трем потребителям, спросы которых соответственно равны 90, 90 и 120 условных единиц. Приведенная ниже таблица содержит показатели затрат, связанных с перевозкой продукта из i-го пункта отправления в j-й пункт потребления.

Требуется перевезти продукт с минимальными затратами.

Поставщики Потребители и их спрос Запасы
  А Б В  
I
II
III
Спрос  

Составим математическую модель задачи.

Пусть Целочисленное программирование. - student2.ru –I поставщиком, А-му потребителю, тогда Целочисленное программирование. - student2.ru , Целочисленное программирование. - student2.ru – количество единиц продукта перевозимого этим же поставщиком Б-му и В-му потребителю соответственно.

Целевая функция в этом случае имеет вид: Целочисленное программирование. - student2.ru

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

Целочисленное программирование. - student2.ru

Вид электронной таблицы Excel, созданной для решения задачи, в режиме отображения формул, представлен на рис. 1. Искомые значения Целочисленное программирование. - student2.ru находятся в блоке ячеек B4:D6. Адрес данного блока входит в поле ввода Изменяя ячейки в окне “Поиск решения”. Требования к ограничениям по спросу и запасам представлены соответственно в ячейках B7:D7 и E4:E6. Коэффициенты ЦФ, означающие затраты на доставку расположены в блоке ячеек B12:D14.

Формулы целевой функции и ограничений находятся соответственно в ячейке F8 и ячейках B8:D8 (ограничения по спросу), F4:F6 (ограничения по запасам).

Целочисленное программирование. - student2.ru

Рис.1

Результаты поиска решения представлены на рис. 2. Значение ЦФ=1060.

Целочисленное программирование. - student2.ru

Рис. 2

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

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

Наши рекомендации