Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
му по самостоятельной работе студентов2.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.8 Mб
Скачать

Пример решения задачи линейного программирования симплекс-методом

Пример. Найти максимум функции при ограничениях

Решение.

Шаг I. Вводим добавочные неотрицательные переменные и сводим данную систему неравенств к эквивалентной ей системе уравнений

.

Введённые добавочные переменные принимаем за основные, так как в этом случае базисное решение системы легко находится. Тогда и - неосновные переменные.

Выразив основные переменные через неосновные, получим

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

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

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

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

Шаг II.

Основные переменные , неосновные переменные .

Выразим новые основные переменные через новые неосновные, начиная с выделенного на шаге I уравнения. В результате получим

Следовательно, имеем новое базисное решение , которое также является недопустимым, а поэтому не оптимальным. Но в нём, как мы и предвидели, только одна переменная отрицательна (а именно ).

От полученного базисного решения необходимо перейти к другому. Рассмотрим уравнение с отрицательным свободным членом, т. е. второе уравнение. Оно показывает, что в основные переменные можно перевести и . Переведём в основные переменные . Найдём наименьшее из абсолютных величин отношений свободных членов системы к коэффициентам при . Имеем . Значит, в неосновные переменные нужно перенести . Так как наименьшее отношение получено из второго уравнения, то его выделяем. В новом базисном решении уже не окажется отрицательных компонент, т. е. оно является допустимым.

В особых случаях решение завершается на II шаге: это, например, случаи, когда максимум целевой функции - бесконечность и когда система не имеет ни одного решения.

Шаг III.

Основные переменные: , неосновные переменные: . Выразив основные переменные через неосновные, получим

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

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

В некотором особом случае решение завершается на III шаге: это случай, когда оптимальное решение - не единственное.

Шаг IV.

Основные переменные: , неосновные переменные: . Выразив основные переменные через неосновные, получим

Линейная форма, выраженная через те же неосновные переменные, примет вид . Продолжим перебор для поиска максимума.

Увеличение линейной формы возможно при переходе к новому базисному решению, в котором переменная является основной. Находим . Это наименьшее отношение получено из четвёртого уравнения системы и показывает, что при переменная и переходит в число неосновных.

Шаг V.

Основные переменные: , неосновные переменные: . Выразив основные переменные через неосновные, получим

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

Пример решения

Решить задачу линейного программирования с помощью программы «Поиск решения» в MS Excel.

Формулировка задачи: Рацион для питания животных на ферме состоит из двух видов кормов I и II. Один кг корма I стоит 80 д.е. и содержит: 1 ед. жиров, 3 ед. белков, 1 ед. углеводов, 2 ед. нитратов. Один кг корма II стоит 10 д.е. и содержит: 3 ед. жиров, 1 ед. белков, 8 ед. углеводов, 4 ед. нитратов. Составить наиболее дешевый рацион питания, обеспечивающий жиров не менее 6 ед., белков не менее 9 ед., углеводов не менее 8 ед., нитратов не более 16 ед.

содержание пит.веществ

норма

содержания

Химические вещества

I

II

жиры

1

3

6

белки

3

1

9

углеводы

1

8

8

нитраты

2

4

16

Стоимость 1 кг

80

10

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

Пусть Х1 – количество корма I , X2 – количество корма II, тогда суммарная стоимость будет равна:

Z=80X1+10X2 → min (1)

С оставим систему ограничений:

(2) X1, X2 ≥ 0.

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

Ход решения задачи:

Для решения задачи на ПК с использованием Excel необходимо:

1. Ввести исходные данные в ячейки рабочего листа Excel.

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

3. Сформировать на рабочем листе Excel элементы математической модели и целевую функцию.

4. Настроить программу «Поиск решения» и выполнить ее.

Вводим исходные данные:

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

В ыделяем блок ячеек «Оптимальный выпуск» (B12:C12) и заполняем их значениями 0,01

Выделяем первую ячейку «Фактически использовано» (E4), нажимаем на кнопку Автосуммирование, далее нажимаем на кнопку DELETE и выделяем блок B12:C12, нажимаем на кнопку * и выделаем блок B4:C4 (содержание питательных веществ). Нажимаем CTRL+SHIFT+ENTER.

Проделываем эту же операцию с ячейками E5:E7 соответственно.

Выделяем первую ячейку блока «Затраты» (ячейка B14). Вводим с клавиатуры формулу =B8*МАКС(B12;0), нажимаем CTRL+SHIFT+ENTER.

С оответственно заполняем вторую ячейку затрат (С14).

В ыделить ячейку «Итоговая стоимость» (ячейка Е16), нажать кнопку Автосуммирование, затем DELETE. И выделить блок B14:С14, нажать кнопку ENTER.

Далее переходим к настройке «Поиск решения»

Выделяем ячейку E16 нажимаем сервис, далее поиск решения.

Далее устанавливаем целевую ячейку Е16, ставим точку равной минимальному значению, изменяя ячейки В12:С12

далее ставим ограничения: нажимаем кнопку «добавить»

Далее добавляем следующие ограничения:

В12:С12≥0;

D4≤E4;

D5≤E5;

D6≤E6;

D7≥E7.

Нажимаем выполнить,

далее сохранить найденное решение.

Пример решения задачи транспортной задачи методом потенциалов

Транспортная задача является специальной задачей линейного программирования. Суть ее заключается в следующем. Есть m поставщиков грузов А1, А2, …, Аm и n потребителей B1, B2, …, Bn этих грузов. Известны запасы грузов у поставщиков а1, а2, …, аm и потребности в этих грузах b1, b2, …, bn соответственно, а также тарифы перевозок сij.

Требуется:

  1. Все запасы изъять.

  2. Все потребности удовлетворить.

  3. Чтобы стоимость доставки грузов была минимальной.

 Математическая модель задачи следующая:

Как видим, математическая модель записана в каноническом виде, так как в ней присутствует условие равновесия (2), но это идеальный случай. Чаще всего можно столкнуться со следующим:

  1. запасы превышают потребности и тогда приходится вводить фиктивного потребителя с нулевым тарифом;

  2. потребности превышают запасы – вводят фиктивного поставщика с нулевым тарифом.

 Почему тарифы равны нулю? Вывод очевиден – надо следовать критерию задачи. Более подробную информацию по теории транспортной задачи можно посмотреть в учебниках по исследованию операций либо математическому программированию.  Любая задача ЛП, в том числе и транспортная задача, решается в два этапа. Сначала находят опорный план, затем его подвергают анализу и в конечном итоге находят оптимальный план. Для транспортной задачи существуют и прямые методы – это распределительный метод, дельта-метод и метод дифференциальных рент. Но независимо от применяемого математического метода полученное решение проверяют на оптимальность с помощью метода потенциалов.  Рассмотрим задачу: имеются три поставщика грузов и три потребителя этих грузов. Запасы грузов составляют 150, 100 и 300 ед., потребности в них равны 100, 250 и 200 ед. соответственно. Тарифы перевозок также известны:

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

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

 Для решения задачи составляется таблица перевозок:

 

 Правила заполнения таблицы несложные. Заполнение начинают с левой верхней клетки, в которую записывают грузопоставку исходя из наличия груза и потребности в нем. Наличие груза у поставщика А1 составляет 150 ед. а потребность потребителя В1 в грузе равна 100 ед. Запишем этот груз полностью, а остаток 50 ед. запишем следующему потребителю, третью ячейку вычеркнем, так как весь груз у первого поставщика изъят:

 

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

 

 Как видим, при распределении грузов тарифы не учитывались. Расходы на доставку грузов составляют:

f = 3×100 + 2×50 + 1×100 + 3×100 + 3×200 = 1400 у.е. Найдем опорный план методом минимального элемента с учетом тарифов перевозок и сравним решения. Составим такую же таблицу перевозок, но вот порядок заполнения будет отличен от предыдущего случая:

 

 Грузопоставки начнем вписывать в клетку, которая имеет наименьший тариф. Если таких клеток несколько, то начинать записывать можно в любую из них. Минимальный тариф в таблице равен единице, а так как таких клеток три, то выберем первой например ячейку А1В3. Размер грузопоставки определяется исходя из наличия груза у поставщика и потребности потребителя. Наличие груза у первого поставщика равно 150 ед., потребность равна 200 ед. Мы забираем весь груз у А1 и записываем:

 Заполняем следующую клетку с тарифом, равным единице:  

 Оставшиеся клетки с одинаковым тарифом последовательно заполняем:

 

 Вычислим транспортные расходы: f = 1×100 + 3×50 + 1×150 + 3×250 = 1150 у.е. Как видим, опорный план, полученный методом минимального элемента, дает лучший результат, чем диагональный способ. После того, как получено допустимое решение, его надо проверить на оптимальность с помощью метода потенциалов. Перед проверкой убеждаемся, что число заполненных клеток равно соотношению m+n-1. В нашей таблице их 3+3-1=5.

 Признак оптимальности: решение оптимально, если во всех свободных клетках выполняется неравенство: αi + cij ≥ βj, где αi и βj – потенциалы, cij – тарифы перевозок. Вычислим αi и βj с помощью выше указанного неравенства:

 

 Принято считать, что α1 всегда равно 0. Если не сделать это допущение, то задача не будет иметь решение. Вычисления остальных значений потенциалов производят по базовым (заполненным) клеткам: α1 = 0

β1 = 3 + 0 = 3

β2 = 2 + 0 = 2

α2 = 2 — 1 = 1

α3 = 2 — 3 = -1

β3 = -1 + 3 = 2

 Проверку на оптимальность делают по свободным клеткам с помощью этого же неравенства:

А1В3: 0 + 1 ≥ 2 – нет

А2В1: 1 + 1 ≥ 3 – нет

А2В3: 1 + 4 ≥ 2 – да

А3В1: -1 + 2 ≥ 3 – нет

 В результате проверки мы выявили три недостаточные клетки. Находим цикл пересчета:

цикл пересчета – это ход ладьи по базовым клеткам с чередованием знаков «+» и «-», начиная с недостаточной клетки и замыкаясь в ней же.

 

 В клетках с минусовыми отметками выбирает минимальное число. В нашем случае это число равно 100. Пересчет делают следующим образом: где стоит знак «-» это число отнимают, а где «+» то прибавляют. Значения, не входящие в цикл пересчета переписывают без изменений. Получает таблицу, в которой соотношение m+n-1 не выполняется, и поэтому выбираем клетку с минимальным тарифом и, проставляя в ней ноль, считаем ее условно базовой:

 

 Вначале транспортные расходы составляли 1400 у.е. Считаем сейчас: f2 = 2×100 + 2×150 + 1×100 + 3×200 = 1200 у.е. Уменьшение этого показателя говорит о том, что мы на верном пути.  Полученное решение снова проверяем на оптимальность:

 

 Проверка выявляет одну недостаточную клетку, для которой находим цикл пересчета:

А1В1: 0 + 3 ≥ 0 – да

А1В3: 1 + 0 ≥ 1 – да

А2В1: 1 + 1 ≥ 0 – да

А3В2: -2 + 3 ≥ 2 – нет

 В отрицательных клетках из двух значений выбираем число 150, которое отнимаем, где знак «-» и прибавляем где знак «+»:

 

 Транспортные расходы:f3 = 2×100 + 3×150 + 1×100 + 1×150 + 3×50 = 1050 у.е.  Проверяем снова на оптимальность и убеждаемся, что найден оптимальный план:

А1В1: 0 + 3 ≥ 0 – да

А1В2: 0 + 2 ≥ 1 – да

А2В1: 0 + 1 ≥ 0 – да

А2В3: 0 + 4 ≥ 1 – да

 

Ответ: f = 1050 у.е.