Задача линейного программирования (симплекс-метод)

Автор работы: Пользователь скрыл имя, 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

Файлы: 1 файл

КурсоваяХан.docx

— 435.01 Кб (Скачать файл)

Все вычисления 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

0

х1

х2

х3

х4

х5

х3

х4

х5

0

0

0

40

31

50

1

2

5

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

7/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

Информация о работе Задача линейного программирования (симплекс-метод)