- •Введение
- •1. Цели и задачи дисциплины
- •1.2. Задачи дисциплины Основными задачами содержания дисциплины являются:
- •2 Инструкция по работе с методическим указанием.
- •3 Программа дисциплины.
- •Раздел 1.. Моделирование и оптимизация одномерной целевой функции
- •4 Примеры задач с примерами решений.
- •Пример решения задачи линейного программирования симплекс-методом
- •Пример решения транспортной задачи в Excel
- •5 Варианты идз №1 Задание 1
- •Задание 2
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Задание 3
- •Задание 4
- •Задание 5
- •Задание 6
- •Задание 7.
- •Задание 8.
- •6.Список рекомендумой литературы
Пример решения задачи линейного программирования симплекс-методом
Пример.
Найти максимум функции
при
ограничениях
Решение.
Шаг
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.
Требуется:
Все запасы изъять.
Все потребности удовлетворить.
Чтобы стоимость доставки грузов была минимальной.
Математическая модель задачи следующая:
Как видим, математическая модель записана в каноническом виде, так как в ней присутствует условие равновесия (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
у.е.
