Автор работы: Пользователь скрыл имя, 06 Июня 2012 в 10:39, курсовая работа
Симплекс-метод - это характерный пример итерационных вычислений. используемых при решении большинства оптимизационных задач. Во всех таких задачах требуется найти максимум или минимум линейной функции при условии, что её переменные принимают неотрицательные значения и удовлетворяют некоторой системе линейных уравнений или линейных неравенств либо системе, содержащей как линейные уравнения, так и линейные неравенства. Каждая из этих задач является частным случаем общей задачи линейного программирования.
Введение… …..3
1. Теоретическая часть
1.1 Линейное программирование …..3
1.2 Табличный симплекс-метод …..4
2. Вычислительная процедура симплекс-метода
2.1 Нахождение исходного опорного решения общей задачи линейного программирования (I часть симплекса )……………………………………………5
2.2 Переход от найденного опорного решения к лучшему опорному решению (II часть симплекса)……………………………………………………...7
2.3 Метод искусственного базиса……………………………………………....9
3. Программная реализация
3.1. Блок-схема алгоритма ЗЛП …12
3.2. Описание основных процедур и функций …13
3.3 Листинг программы…………………………………………………………15
4. Контрольный пример …26
5.Руководство пользователя……………………………………………………….29
Заключение …32
Список использованной литературы …32
Все вычисления 5 этапа производятся - в таблице Гаусса.
6. этап. Записываем опорное решение.
2.2 Переход от найденного опорного решения к лучшему опорному решению (II часть симплекса).
Эта часть выполняется с помощью специальных таблиц. В ней выделяют главную часть. Которая представляет из себя таблицу Гаусса, но только в ней столбец свободных членов надо поставить на первое место, а контрольный столбец не писать.
Сверху к главной части
Правило подсчета оценочной строки
Элемент оценочной строки равен сумме парных произведений элементов рассматриваемого столбца на элементы второго столбца слева минус элемент из верхней строки, стоящий в рассматриваемом столбце.
Элементы оценочной строки называют оценками, так как они показывают, можно ли улучшить найденное опорное решение или нет. Если задача решается на максимум, то наличие отрицательных оценок указывает на то, что найденное опорное решение не оптимально и может быть улучшено. Если решается задача на минимум, то наличие положительных оценок указывает, что найденное опорное решение может быть улучшено.
После составления симплекс-таблицы освобождаются от ненужных оценок. При решении задачи на максимум ненужными являются отрицательные оценки, а при решении задачи на минимум ненужными будут положительные оценки.
От ненужных оценок освобождаются с помощью преобразований Жордана-Гаусса по специальному правилу, которое гарантирует, что свободные члены не изменят своих положительных знаков и число ненужных оценок не увеличится.
Правило выбора ведущего элемента
1. За ведущий элемент берут столбец, содержащий ненужную оценку и хотя бы один положительный элемент. Если ненужных оценок несколько, то начинают с наибольшей по абсолютной величине.
Если ведущий столбец не содержит
положительных элементов, то это
указывает на то, что целевая функция
не ограничена сверху (в задачах
на максимум) или не ограничена снизу
(в задачах на минимум). Оптимальное
решение достигается в
2. Ведущая строка выбирается
по наименьшему положительному
отношению свободных членов (3 столбец)
и соответствующим
3. Ведущий элемент выбирается на пересечении ведущего столбца и ведущей строки.
Используя данное правило выбора ведущего элемента, производят шаги методом Жордана - Гаусса до тех пop, пока не освободятся от всех ненужных оценок или установят неограниченность целевой функции.
Пример. Найти оптимальное решение задачи линейного программирования симплексным методом.
|
х1 |
+ |
5 |
х2 |
≤ |
40 |
2 |
х1 |
+ |
3 |
х2 |
≤ |
31 |
5 |
х1 |
+ |
2 |
х2 |
≤ |
50 |
х1, х2≥0
Z(x)=2x1+5x2→max
Решение.
1 этап не нужен, так как модель уже есть.
2 этап. Приводим задачу к каноническому виду. Для этого в ограничения-неравенства вводим неотрицательные балансовые переменные х3, х4, х5. Балансовые переменные входят в целевую функцию Z(x) с нулевыми коэффициентами, в результате получим:
|
х1 |
+ |
5 |
х2 |
+ |
х3 |
= |
40 | ||||
2 |
х1 |
+ |
3 |
х2 |
+ |
х4 |
= |
31 | ||||
5 |
х1 |
+ |
2 |
х2 |
+ |
х5 |
= |
50 |
xj≥0,
Z(x)=2x1+5x2+0 x3+0x4+0 x5→max
3-й этап не нужен, т.к. балансовые переменные одновременно являются базисными.
4-й этап не выполняем, т.к. все свободные члены положительны.
5-й этап не нужен, т.к. не делали 4-й этап.
6-й этап. Записываем начальное опорное решение:
опор={0,0,40,31,50}.
II часть симплекса.
Баз. переем. |
С |
План |
2 |
5 |
0 |
0 |
|
х1 |
х2 |
х3 |
х4 |
х5 | |||
х3 х4 х5 |
0 0 0 |
40 31 50 |
1 2 5 |
3 2 |
1 0 0 |
0 1 0 |
0 0 1 |
Zj |
0 |
-2 |
-5 |
0 |
0 |
0 | |
x2 x4 x5 |
5 0 0 |
8 7 34 |
1/5 23/5 |
1 0 0 |
1/5 -3/5 -2/5 |
0 1 0 |
0 0 1 |
Zj |
40 |
-1 |
0 |
1 |
0 |
0 | |
x2 x1 x5 |
5 2 0 |
7 5 11 |
0 1 0 |
1 0 0 |
2/7 -3/7 11/7 |
-1/7 5/7 -23/7 |
0 0 0 |
Zj |
45 |
0 |
0 |
4/7 |
5/7 |
0 |
Нет отрицательной оценки
По последней симплекс-таблице записываем оптимальное решение. Для этого базисные переменные, указанные в первом столбце, приравниваем к числам, стоящим в столбце «план». Все остальные переменные являются свободными, они приравниваются к нулю. Окончательно оптимальное решение имеет вид: ={5,7,0,0,11}, при этом максимальное значение целевой функции Zmax=45.
2.3 Метод искусственного базиса
Известно, что если система ограничений в задаче линейного программирования, записанной в канонической форме, имеет единичный базис, то легко можно записать начальное опорное решение. Однако для многих задач линейного программирования, записанных в канонической форме, не всегда имеется нужное число единичных векторов. Для того чтобы миновать весь процесс получения единичного базиса, описанного в 1-й части симплексного метода, используют метод искусственного базиса.
В этом случае в каждое из уравнений, не содержащих разрешенной переменной, вводятся искусственная неотрицательная переменная. Искусственные переменные вводятся также в целевую функцию с коэффициентом (-М), если задача решается на максимум, и с коэффициентом (+ М), если задача решается на минимум, где М - некоторое достаточно большое число, конкретное значение которого обычно не задается. В результате такого добавления получаем расширенную задачу.
Исходная задача
Z(x)=c1x1+c2x2+ …+cnxn→max
a11 |
х1 |
− |
a12 |
х2 |
… |
a1n |
хn |
= |
b1 |
a21 |
х1 |
− |
a22 |
х2 |
… |
a2n |
хn |
= |
b2 |
... |
... |
… |
… |
… |
… |
… |
… |
… |
… |
am1 |
х1 |
− |
am2 |
х2 |
… |
amn |
Хn |
= |
bm |
xj≥0, ; bi≥0,
Расширенная задача
Z(x)=c1x1+c2x2+ …+cnxn-Mxn+2-…-Mxn+m→max
a11 |
х1 |
− |
a12 |
х2 |
… |
a1n |
хn |
+ |
xn+1 |
= |
b1 |
a21 |
х1 |
− |
a22 |
х2 |
… |
a2n |
хn |
+ |
xn+2 |
= |
b2 |
... |
... |
… |
… |
… |
… |
… |
… |
… |
… |
… | |
am1 |
х1 |
− |
am2 |
х2 |
… |
amn |
хn |
+ |
xn+m |
= |
bm |
Информация о работе Задача линейного программирования (симплекс-метод)