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

4.3.4. Изменение колонки коэффициентов при небазисной переменной. Оценка эффективности новых способов производства

Изменение технологии выпуска какого-либо вида продукции может привести к изменению колонки коэффициентов в ограничениях и соответствующего коэффициента в ЦФ. Чтобы определить, как это повлияет на решение, рассматривают соответствующее ограничение двойственной задачи. Если оно оказывается непротиворечивым, следовательно, изменение технологических коэффициентов (появление возможности выпуска нового вида продукции), не влияет на текущее оптимальное решение.

Пример 4.2. Пусть в примере 3.2 изменилась технология производства столов: он продается по 43 у.е., но используется 5 м2 древесины и по 2 часа времени на столярном и отделочном участках. Выгодно ли станет их выпускать?

Рассмотрим соответствующее ограничение двойственной задачи:

Подставляя в него оптимальное решение двойственной задачи (0;10;10;0), получим: 40  43, которое противоречиво. То есть текущее решение не оптимально, и x2 нужно ввести в базис. Это и понятно, поскольку фабрика использует ресурсов на 2·10 + 2·10 = 40 у.е., а продает по 43, следовательно, выгодно ввести столы в базис, и на каждом столе иметь дополнительно 3 у.е. дохода. Если бы цена такого стола была 40 грн. и меньше, текущее решение не изменилось бы.

Пример 4.3. Пусть фабрика в примере 3.2. может выпускать еще и скамеечки по цене 15 у.е., затрачивая 1,5 м2 древесины и по 1 часу на столярном и отделочном участках. Выгодно ли запускать скамеечки в производство?

Соответствующее двойственное ограничение имеет бы вид:

1,5

Подставляя в него оптимальное решение двойственной задачи (0;10;10;0), получим: 20  15. Удовлетворение этого ограничения говорит о том, что текущее базисное решение не изменится. Тратить ресурсов на 20 у.е. и продавать по 15 у.е. не выгодно и скамеечки производить не стоит. Минимальная цена, по которой такие скамеечки имеет смысл продавать – 20 у.е.

Тема 5 целочисленное программирование

5.1. Понятие задачи целочисленного программирования

Начнем рассмотрение задач целочисленного программирования с примера.

Пример 5.1. Компания может инвестировать средства по четырем направлениям: инвестиции №1 принесут доход в 16 тыс. грн., инвестиции №2 – в 22 тыс., №3 – 12 тыс., №4 – 8 тыс.

Каждая из инвестиций требует вложения денег в настоящее время: для инвестиции №1 – 5 тыс., №2 – 7 тыс., №3 – 4 тыс., №4 – 3 тыс.

В распоряжении компании имеется 14 тыс. грн. Сформулировать задачу целочисленного программирования, которая бы позволила максимизировать доход компании, полученный от инвестиций.

Определим переменные. Пусть

Тогда доход компании будет описываться выражением

,

которое нужно максимизировать. Поскольку затраты на инвестиции должны быть не больше 14 тыс., имеем модель целочисленного программирования с одним ограничением:

Данную задачу целочисленного программирования с булевыми переменными совершенно не имеет смысла решать симплекс методом: решение z = 44,8 при x1 = 2,8, x2 = x3 = x4 = 0 нас устроить не может, поскольку по смыслу нельзя 2,8 раз осуществить одну и ту же инвестицию.

Можно выйти из положения так: дополнить эту задачу ограничением xj  1, , тогда решение, полученное симплекс-методом, будет z = 44 при x1 = x2 = 1, x3 = 0,5, x= 0. Это решение тоже нас не может удовлетворить, поскольку инвестицию №3 нельзя осуществить наполовину. Если же округлить x3 до 1, получим недопустимое решение (нужно потратить 16 тыс.), округление же x3 до 0 даст решение, далекое от оптимального (z = 38).

Оптимальным же решением будет x1 = 0, x2 = x3 = x4 = 1, которое дает z = 42 тыс.

Сформулируем несколько важных положений.

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

Задача, у которой некоторые переменные могут принимать только целые значения, называется частично-целочисленной задачей.

Задача, у которой некоторые переменные могут принимать значения только 0 или 1, называется задачей с булевыми переменными.

Задача целочисленного программирования, которая получается путем отмены ограничений на целочисленность или ограничений типа «0 или 1», называется линейно-ослабленной задачей.

Утверждение 1. Решение задачи целочисленного программи­рования всегда не лучше, чем решение линейно-ослабленной задачи. Для задачи на максимум , а для задачи на минимум: .

Утверждение 2. Если ОДЗ линейно-ослабленной задачи является ограниченным множеством, то ОДЗ целочисленной задачи содержит конечное число точек.

Отсюда следует 3 подхода к решению целочисленных задач:

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

  2. Путем округления решения линейно-ослабленной задачи до целых. Из примера 5.1 видно, что этот метод тоже далеко не всегда применим, а решение задачи, полученное путем округления, может оказаться далеким от оптимального. Применяется этот метод, если переменные принимают достаточно большие значения, например, если получилось, что нужно выпускать 1003,4 единиц продукции, то округление до 1003 может быть вполне приемлемым.

  3. Путем построения дополнительных ограничений в рамках имеющегося ОДЗ с целью отсечения нецелочисленных значений переменных. На этом подходе основано два метода решения задач целочисленного программирования, которые будут рассмотрены в п.п. 5.2 и 5.3: метод ветвей и границ и метод отсекающих плоскостей.

Пример 5.2. Рассмотрим задачу:

x1,2 – целые.

ОДЗ представляет собой 6 точек: (0;0), (0;1), (0;2), (0;3), (1;0), (1;1). Методом перебора легко получить, что оптимальное решение (0;3) и Z = 66 (рис. 5.1).

Р ис. 5.1. Решение графическим способом задачи примера 5.2

Оптимальное же решение линейно-ослабленной задачи будет (1 6/7; 0) и Z = 78.

Очевидно, что округление решения линейно-ослабленной задачи в меньшую сторону (1; 0) с Z = 42 – далеко от оптималь­ного, округление же в большую сторону (2; 0), вообще является недопустимой точкой.

Пример 5.3.

x1,2 – целые.

Оптимальное решение линейно-ослабленной задачи (2,5; 0), Z = 15. Однако округления (2; 0) и (3; 0) являются недопустимыми точками. Оптимальным же решением данной задачи является точка (1; 1), Z = 7,5.