Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

4-1

.pdf
Скачиваний:
27
Добавлен:
08.01.2021
Размер:
330.1 Кб
Скачать

Федеральное агентство

Государственное образовательное учреждение

высшего профессионального образования

"Воронежская государственная лесотехническая академия"

"Методы оптимизации в расчетах на ЭВМ"

Симплексный метод

Методические указания и задания для студентов 3 курса специальности

150200(190601) – Автомобили и автомобильное хозяйство

Воронеж 2007

УДК 519.8

Котко, Л.А. Симплексный метод. Методические указания и задания для студентов 3 курса специальности 150200(190601) – Автомобили и автомобильное хозяйство / Л.А. Котко, Т.М.Кравец ; Фед. агентство по образованию, ГОУ ВПО "ВГЛТА". – Воронеж, 2007. – 72 с.

Печатается по решению редакционно-издательского совета ГОУ ВПО "ВГЛТА"

Рецензент канд.физ.-мат.наук, доц.кафедры Теории вероятностей и уравнений в частных производных И.В. Михайлова

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

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

Один из наиболее развитых и широко применяемых методов нахождения оптимальных решений изучается в линейном программировании.

Стандартная задача линейного программирования. Стандартная задача линейного программирования состоит в следующем: найти максимум линейной функции

F (X) = c1x1 + c2x2 + ... + cnxn

(1)

для переменных x1, x2, ..., xn, удовлетворяющих системе ограничений - неравенств

anx1 + a12x2 + ... + a1nxn ≤ b1,

a21x1 + a22x2 + ... + a2nxn ≤ b2,

. . . . . . . . . . . . . . .

am1 x1 + am2 x2 + ... + amnxn ≤ bm

иусловиям неотрицательности

x1 ≥ 0, x2 ≥ 0, ..., xn ≥ 0.

(2)

(3)

Если стандартная задача ставится на минимум линейной функции (1), то знаки всех ограничений-неравенств берутся противоположными:

a11x1 + a12x2 + ... + a1nxn ≥ b1,

a21x1 + a22x2 + ... + a2nxn ≥ b2, (4)

. . . . . . . . . . . . . . .

am1 x1 + am2 x2 + ... + amnxn ≥ bm

Условия (3) остаются теми же.

Примеры стандартных задач линейного программирования

I. Задача о составлении производственного плана при ограниченных ресурсах

Имеется производство, которое выпускает различные виды продукции A1, ..., An. Для изготовления продукции необходимы ресурсы S1, ..., Sm. Обозначим через aij количество ресурса Si, необходимое для производства единицы продукции вида Aj i 1, ..., m, j 1, ...n. Производство обладает ограниченными ресурсами. Пусть bi− запас ресурса Si. От реализации единицы продукции Aj производство получает прибыль cj. Требуется составить производственный план так, чтобы он давал максимальную прибыль. Данные задачи представлены в таблице 1.

Таблица 1

Виды ресурсов

Запасы ресурсов

 

Виды продукции

 

 

 

 

 

 

 

 

A1

 

. . . .

An

S1

b1

a11

 

. . . .

a1n

. . . .

. . . .

. . . .

. . . .

 

Sm

bm

am1

 

amn

Прибыль

c1

 

. . . .

cn

Обозначим через xj количество продукции Aj, которое нужно выпустить по плану. От реализации этой продукции получится прибыль cjxj. Реализация всей плановой продукции обеспечит прибыль

F (X) = c1x1 + ... + cnxn.

Конечно, прибыль тем больше, чем больше xj, но беспредельно увеличивать план нам не позволяют ограниченные ресурсы. Действительно, количество ресурса Si, которое потребуется для производства плановой продукции, будет равно ai1x1+...+ainxn и не должно превзойти имеющийся запас bi этого ресурса. Это приводит к ограничениям

a11x1 + a1nxn ≤ b1,

. . . . . . . . . . . . . . .

am1x1 + amnxn ≤ bm.

Кроме того, конечно, x1 ≥ 0, ..., xn ≥ 0.

Таким образом, мы пришли к стандартной задаче линейного программирования типа (1)-(3).

II. Задача о раскрое

На мебельном комбинате из ДСП делают различные заготовки D1, ..., Dm. Имеются различные способы раскроя плит A1, ...An. Через aaij обозначим количество заготовок Di, получаемых из одной плиты при способе раскроя

Aj,

i 1, ..., m, j 1, ....n.

Согласно плановому заданию нужно произвести bi заготовок вида Di. При производстве заготовок остаются отходы: при раскрое плиты по способу Aj получаются отходы площадью cj. Требуется обеспечить выполнение плана с минимальным количеством отходов. Данные задачи представлены в таблице 2.

 

 

 

Таблица 2

 

Виды заготовок

План производства

Способы раскроя

 

 

 

 

 

 

 

 

A1

 

. . . .

An

D1

b1

a11

 

. . . .

a1n

. . . .

. . . .

. . . .

 

. . . .

. . .

Dm

bm

am1

 

amn

Отходы

c1

 

. . . .

cn

Обозначим через xj количество плит, которые предполагается раскраивать по способу Aj. Тогда общее количество отходов

F (X) = c1x1 + ... + cnxn.

Количество заготовок вида Di, которое будет произведено, равно ai1x1+

... + ainxn. Оно должно быть не менее планового задания bi. Таким образом получаются ограничения

a11x1 + ... + a1nxn ≥ b1,

. . . . . . . . . . . . . . .

am1x1 + ... + amnxn ≥ bm.

Кроме того,

x1 ≥ 0, ..., xn ≥ 0.

Итак, мы пришли к стандартной задаче линейного программирования типа (1), (3), (4).

Перейдем теперь к изучению симплексного метода, позволяющего решить поставленные задачи. Для этого нам понадобятся дополнительные сведения из линейной алгебры.

III. Метод Гаусса-Жордана. Базисные системы неизвестных

В дальнейшем будем рассматривать системы линейных уравнений

a11x1 + a12x2 + ... + a1nxn = b1,

a21x1 + a22x2 + ... + a2nxn = b2, (5)

. . . . . . . . . . . . . . .

am1x1 + am2x2 + ... + amnxn = bm,

укоторых число неизвестных больше числа уравнений (n > m). Система из m неизвестных xi называется базисной, если определитель

матрицы, составленной из коэффициентов при этих неизвестных, отличен от нуля. Если выбрана базисная система неизвестных, то остальные неизвестные называются свободными. Мы будем предполагать, что для

Полученная система эквивалентна исходной, так как обратными преобразованиями из нее можно получить исходную. Можно показать, что хотя бы один из коэффициентов a0i2 при x2 в уравнениях с номерами i = 2, 3, ..., m не равен нулю. Пусть a022 6= 0. Сделаем преобразование Гаусса-Жордана: второе уравнение разделим на a022, а затем последовательно умножим его на a0i2 и вычтем из уравнения с номером i (i=1,3,4,...,m).
Продолжая этот процесс далее, приведем систему к виду
x1
x2

рассматриваемых систем существует базисная система неизвестных. Такие системы всегда совместны.

Предположим для простоты, что первые неизвестные x1, x2, ..., xm образуют базисную систему. Можно показать, что хотя бы один из коэффициентов при x1 отличен от нуля. Предположим,что a11 6= 0. Преобразуем систему по методу Гаусса-Жордана: первое уравнение делим на a11, а затем последовательно умножаем его на коэффициенты ai1 и вычитаем из уравнения с номером i. Этим мы добиваемся того, что в первом уравнении при x1 получим коэффициент 1, а в остальных уравнениях членов с x1 не будет, система примет вид

x1

+ a012x2 + ... + a01mxm + a01(m+1)xm+1 + ... + a01nxn = b01, a022x2 + ... + a02mxm + a02(m+1)xm+1 + ... + a02nxn = b02,

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

a0m2x2 + ... + a0mmxm + a0m(m+1)xm+1 + ... + a0mnxn = b0m.

+ h1(m+1)xm+1 + ... + h1nxn = f1, + h2(m+1)xm+1 + ... + h2nxn = f2,

. . . . . . . . . . . . . . . . . . . . . . . . .

xm + hm(m+1)xm+1 + ... + hmnxn = fm.

или иначе

x1 = f1 − h1(m+1)xm+1 − ... − h1nxn,

x2 = f2 − h2(m+1)xm+1 − ... − h2nxn,

. . . . . . . . . . . . . . . . . . . . . . . . .

xm = fm − hm(m+1)xm+1 − ... − hmnxn.

(6)

(7)

Окончательный вывод состоит в том, что методом Гаусса-Жордана систему можно разрешить относительно базисных неизвестных. Обратно: если систему удается разрешить относительно каких-то неизвестных,например, x1, x2, ..., xm, то эта система является базисной.Таким образом система неизвестных будет базисной в том и только том случае, когда систему уравнений можно разрешить относительно этих неизвестных.

Пример 1. Решить систему методом Гаусса-Жордана.

2x1 − x2 − 2x3 − 3x4 = 0

x1 + 2x2 + 3x3 − 5x4 = 2

−3x1 − 5x2 + 2x3 + 2x4 = 2

4x1 + 3x2 − 3x3 − 2x4 = 1

Выпишем расширенную матрицу системы

 

1

2

3

5

 

2

 

2

 

1

2

3

 

0

 

 

 

3

 

5

2

2

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

43 −3 −2 1

Переставим 1-ю и 2-ю строки

 

2

1

2

3

 

0

 

 

1

2

3

5

 

2

 

 

 

3

5

2

2

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

43 −3 −2 1

Умножим 1-ю строку последовательно на (-2), 3, (-4) и сложим соответственно со 2-й, 3-ей и 4-й строками, получим

0

5 −8

7

 

−4

 

1

2

3

5

 

2

 

 

0

1

11

13

8

 

 

 

 

 

18

 

 

 

 

0

5

15

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Переставим местами 2-ю и 3-ю строки

 

0

1

11

13

 

8

 

 

1

2

3

5

 

2

 

 

0

5

8

7

4

 

 

 

5

15 18

 

7

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Умножим 2-ю строку на (-2), 5, 5 и сложим соответственно с 1-й, 3-ей и 4-й строками. Получим

 

0

1

11

13

 

8

 

 

1

0

19

21

 

 

14

 

 

0

0

47

58

36

 

 

 

 

 

47

 

 

 

 

0

0

40

 

33

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Далее, разделим 3-ю строку на 47 и получим нули в 3-м столбце

 

0

1

0

47

 

47

 

 

1

0

0

115

 

26

 

 

47

47

 

 

0

0

1

58

36

 

 

 

 

 

27

 

20

 

0

0

0

111

111

 

 

 

 

47

 

47

 

 

 

 

 

47

 

47

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Наконец, разделив 4-ю строку на 11147 и получив нули в 4-м столбце, приходим к матрице

 

0

1

0

0

 

1

 

 

1

0

0

0

 

3

 

 

0

0

1

0

2

 

 

 

 

 

 

 

 

 

0

0

0

1

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Восстановленная по последней матрице система имеет вид

x1 = 3

x2 = −1x3 = 2

x4 = 1.

Ответ: x1 = 3, x2 = −1, x3 = 2, x4 = 1.

IV. Базисные решения. Метод последовательного замещения для нахождения всех базисных решений

После приведения системы (5) к виду (7) неизвестным xm+1, ..., xn можно давать произвольные числовые значения и находить из уравнений

x1, x2, ...xm (поэтому неизвестные xm+1, ..., xn и называются свободными). Отсюда видно, что наша система имеет бесчисленное множество решений. Из них выделяется одно, для которого все свободные неизвестные равны нулю: xm+1 = 0, ..., xn = 0. Тогда x1 = f1, x2 = f2, ..., xm = fm. Полученное решение называется базисным. Итак, каждой базисной системе неизвестных отвечает одно базисное решение, для которого значения свободных неизвестных равны нулю.

Базисное решение называется невырожденным, если значения всех базисных неизвестных отличны от нуля: f1 6= 0, f2 6= 0, ...fm 6= 0. В противном случае базисное решение называется вырожденным.

Система уравнений (5) имеет лишь конечное число базисных решений. Действительно, число таких решений не превосходит числа базисных систем неизвестных, а последнее - числа всех возможных комбинаций из n неизвестных x1, x2, ..., xn по m, то есть Cnm. Итак, система (5) имеет не более Cnm базисных решений.

Пример 2. Найти одно базисное решение системы уравнений

2x1

− x2

+ x3

+ 3x4

= 0,

 

x1

 

+ x3

+ 4x4

= 2,

2x1 + x2 + x3 + 7x4 = 2.

 

 

 

 

 

 

Выпишем расширенную матрицу системы

 

2

−1

1

3

 

0

.

 

1

0

1

4

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

21 1 7 2

Прибавляя ко второй строке третью, получим

 

 

 

 

 

 

 

 

 

1

0

1

4

 

2

 

 

2

1

1

7

2 .

 

4

0

2

10

 

2

 

 

 

 

 

 

 

 

 

Умножим первую строку на (-4), а затем на (-2) и сложим соответственно со второй и третьей строками

0

0

−2

−6

−6 .

1

0

1

4

 

2

 

0

1

1

1

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Поделим вторую строку на (-2)

 

0

0

1

3

 

3

.

 

1

0

1

4

 

2

 

 

0

1

1

1

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Прибавим к третьей строке вторую и к первой вторую, умноженную на (-1), тогда матрица примет вид

 

 

0

0

1

3

3

.

 

 

 

1

0

0

1

1

 

 

 

 

0

1

0

2

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Восстановленная по матрице система имеет вид

 

 

 

 

x3

+ 3x4

= 3,

 

x1

 

 

 

+ x4

=

1,

 

 

x2 +

+2x4 =

1,

или

 

 

 

 

 

 

 

 

 

 

 

 

 

x3

=

3

3x4,

 

 

x1

 

 

=

−1 − x4

,

 

 

x2

 

=

1

2x4.

 

 

 

 

 

 

 

 

 

 

Так как система разрешена относительно неизвестных x1, x2, x3, то эти неизвестные базисные. Давая свободной неизвестной x4 значение нуль, получим базисное решение системы (-1, 1, 3, 0).

Для нахождения различных базисных решений не нужно каждый раз заново решать систему (5) относительно базисных неизвестных. Достаточно применить метод последовательного замещения неизвестных. Пусть мы нашли базисную систему неизвестных и решили систему (5) относительно этих неизвестных, то есть привели ее к виду (6). Предположим, что теперь мы хотим вывести из числа базисных неизвестную xr и ввести xs. Это можно сделать с помощью одного шага метода Гаусса-Жордана, если коэффициент hrs 6= 0. Делим r − e уравнение системы (6) на hrs, а затем последовательно умножаем его на his и вычитаем из уравнения с номером i. В результате получим:

 

.x1.+.h10.rx.r

.+.h1(0.m.+1.xm.

+1. .+ .....+ 0 · xs + ... + h10

nxn = f10,

hrr0 xr + hr0

(m+1)xm+1 + ... + xs + ... + hrn0 xn = fr0,

(8)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. . . . . . . . . . . . . . .

 

 

 

 

 

 

 

 

 

hmr0 xr + xm + hm0

(m+1)xm+1 + ... + 0 · xs + ... + hmn0

xn = fm0 .

 

 

 

 

 

 

 

Система (8) уже будет разрешена относительно переменных x1, ..., xr−1, xs, xr+1, ..., xm. Таким образом с помощью одного шага

преобразований Гаусса-Жордана мы переходим от одного базисного решения

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

Вописанном преобразовании s− тый столбец, r−тая строка и коэффициент hrs называются ключевыми.

Если коэффициент hrs = 0, то можно показать, что система x1, ..., xr−1, xs, xr+1, ..., xm не является базисной.

Итак, для перехода от одного базисного решения к другому за ключевой можно принимать любой коэффициент hrs 6= 0.

Выпишем формулы перехода от системы (6) к системе (8):

 

 

hrj

 

 

fr

 

hrj

 

fr

hrj0

=

 

, fr0

=

 

, hij0

= hij

 

his, fi0

= fi

 

his (i 6= r) (9)

hrs

hrs

hrs

hrs

Пример 3. Найти все базисные решения системы линейных уравнений

2x1

− x2

+ x3

+ 3x4

= 0,

 

x1

 

+ x3

+ 4x4

= 2,

2x1 + x2 + x3 + 7x4 = 2.

 

 

 

 

 

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]