Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Антонов. Системный анализ. Учебник для вузов.doc
Скачиваний:
449
Добавлен:
19.02.2016
Размер:
3.82 Mб
Скачать
  1. Задача линейного программирования

Постановка задачи линейного программирования. Задачи ли­нейного программирования (ЗЛП) - простейший тип оптимизационных задач. Постановка данной задачи выглядит следующим образом.

Имеется множество переменныхX = (X1, X2,..., хп). Целевая функ­ция линейно зависит от управляемых параметров:

F=Idtr

I= 1

Имеются ограничения, которые представляют собой линейные фор­мы:

JajiXi <bj, где j = \,m.

і

Задача линейного программирования формулируется так: определить максимум линейной формы

F(x1,x2,...,A:„) = max(clxl -Vc1X1 +... + сплс„) (Ю.З)

при условии, что точка (дс}, X1,..., хл) принадлежит некоторому множе­ству D, которое определяется системой линейных неравенств

*11*1 +*12*2 +- + flL*.

O21X1+U11X1+... +UlltXn2;

IanlXl+OmlX1+...+OmnXaт.

Любое множество значений (х['2,...,х*а), которое удовлетворяет системе неравенств (10.4) задачи линейного программирования, явля­ется допустимым решением данной задачи. Если при этом выполняет­ся неравенство

C1-C10 +C2X01 +...+CnX0n ZcxXl +C2X1 +...+Cnхл

для всего множества значений X1, х,..., хп, то значение х1'°2,...,хп явля­ется оптимальным решением задачи линейного программирования.

Задачу линейного программирования удобно представлять в вектор­ной форме, тогда она будет выглядеть следующим образом: найти max F(x) = max (cTx) при условии AX < P0; Х> 0,

где с = (с,, C2,..., сп) представляет собой л-мерный вектор, составлен­ный из коэффициентов целевой функции, причем ст-транспонированная вектор-строка; х = (xp Jt2,...,хп) - и-мерный вектор переменных решений;

'ьА

P0 = - m-мерный вектор свободных членов ограничений;

AJ

матрица А размером (тхп) - матрица, составленная из коэффициен­тов всех линейных ограничений:

A =

aMl flV2 -а.

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

Каноническая форма задачи линейного программирования.

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

Пусть

п

хп+х - дополнительная переменная, которая численно равна Ьх - JjflUjcI;

і=і

п

хп+2 - дополнительная переменная, которая численно равна ъ2 -Ja2iXi,

і

И т.д.;

п

х - дополнительная переменная, которая численно равна Ът - JamiXr В результате получаем новую систему ограничений: 1=1

UnXl +Q11X1 +... + аихп +1*„+1 + 0jc„+2 + ... + Ojc„+m = Ь,;

*21*1 +^22X2 + ...+а1пхп+0хп+1 + Lret2 +...+0 хп+т2;

flmi*i +ашіх г +-+OmnXn + Ojc+) +0хп+2 +...+Ц, т\

X1 >0, i = l, 2,..., и, п +1,..., п + т.

Целевая функция будет иметь вид

шахFixlгхп) = max(c,jc, +C1X1+...,спхп+0хп+1+ 0хп+2+...+0хп+т). Или в матричной форме:

maxF(jc) = max(cTjc) (Ю-5)

при условии AX1+ BX2=P0, X1 > 0, X1 > 0,

где X1 - вектор первоначальных переменных; X2-вектор свободных переменных; В - единичная матрица тх.п.

fi о-0I

I0 о -Ij

Такую форму записи называют канонической формой задачи линей­ного программирования. В канонической форме ограничения записыва­ются в виде равенств.

При записи задачи линейного программирования в стандартной или канонической форме число линейно независимых уравнений, как прави­ло, меньше числа переменных (на практике всегда т<п, где т - число уравнений). Отметим некоторые свойства, касающиеся системы огра­ничений:

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

  2. если число независимых уравнений больше числа переменных, то такая система не имеет решения и называется несовместимой;

  3. если число независимых уравнений равно числу переменных, то такая система имеет единственное решение, которое либо оптималь­но, если все компоненты положительны, либо недопустимо, если хотя бы одна из компонент отрицательна;

  4. если удается найти множество неотрицательных значений X= (Jr1, X2,..., хп), которое является решением системы т линейных уравнений с п+т неизвестными, то такое решение называют базисным, а ненуле­вые переменные - базисными переменными.

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

Пусть требуется найти максимум линейной формы

InaxFOcpX2) = тах(*, +2jc2)

при условии

+X1<120,

0< Jc1 <100,

  1. < JC2 < 75.

Изобразим область, описываемую совокупностью ограничений на плоскости Jt1 Ojc2 (рис. 10.1). Переменные X1 ил:2 неотрицательные, по­этому множество точек (JT1, JC2), являющихся возможными решениями задачи, находятся в I квадранте. Заменим знак в Jc1 + х2 <, 120 на знак равенства, получим уравнение прямой: Jr1 +Jr2 = 120. Эта прямая делит плоскость на две полуплоскости. Все точки одной полуплоскости удов­летворяют неравенству Jr1 + Jr2 > 120, другой - неравенству Jr1 + Jr2 < 120.

Построив аналогичные прямые Jr1 =100 и Jr2 = 75, получим много­угольник, множество точек которого (Jc1, х2) удовлетворяет всем нера­венствам системы ограничений. Этот многоугольник и представляет собой область допустимых решений D.

Из множества точек (дг,, дг2) многоугольника необходимо выбрать такую, в которой функция F(X1, Jr2) = (jc( + 2jc2) принимает максимальное

Рис. 10.1. Геометрическая интерпретация задачи линейного программирования

значение. Для некоторого фиксированного значения F * линейная функ­ция F *(х,, л2) = (Jc1 + Ix2) представляет собой прямую линию. Задава­ясь различными значениями F*, получим семейство параллельных пря­мых. Увеличение значений линейной функции соответствует перемеще­нию прямой параллельно самой себе вверх. Следовательно, как видно из рис. 10.1, максимальное значение целевой функции на допустимом множестве точек соответствует прямой, проходящей через точку 2 пе­ресечения прямых Jc1 +X2= 120 и х2 = 75.

Решив эту систему, получим Jc1 = 45. Тогда максимальное значение функции F = max(x, + 2jc2) = 195.

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

Метод полного исключения. Перейдем к изложению методов решения задач линейного программирования. Рассмотрим вначале один из вспомогательных методов, иллюстрирующий возможность преобра­зования системы линейных уравнений, а именно, приведения матрицы, составленной из параметров уравнений ограничений, к единичному виду. Переобозначим свободные коэффициенты ограничений ^0=Ь-

Пусть имеется система ограничений в виде

п

^aijXi=aJ0, j = 1, т.

1*1

Перепишем данную систему уравнений в матричной форме: AX=A0, и А = [A, A0], где Ap - расширенная матрица.

ЇУІетод полного исключения состоит из конечного числа однотипных шагов и заключается в приведении матрицы А к единичному виду. Метод основан на следующих двух операциях.

Одну из строк расширенной матрицы умножают на число, отлич­ное от нуля.

Из каждой строки расширенной матрицы (Ap) вычитают данную строку. Каждое такое преобразование называется преобразованием Гаусса. В результате получаем новую систему линейных уравнений, эквивалентную исходной.

Рассмотрим более подробно метод полного исключения.

  1. Среди элементов матрицы А выбирают произвольный элемент, отличный от нуля. Этот элемент называют направляющим элементом шага. Строку и столбец, содержащие направляющий элемент, называ­ют направляющей строюй и направляющим столбцом данного преоб­разования.

  2. Все элементы направляющей строки расширенной матрицы (Ap) делят на направляющий элемент. В результате получают направляю­щую строку с направляющим элементом, равным единице. Далее из каждой строки матрицы А вычитают новую направляющую строку, умноженную на элемент, который расположен на пересечении строки и направляющего столбца. Итак, пусть исходная система уравнений имеет вид

а11*1

<*21*1

+ CI12X2 + •• + U22X2 +.

+ аых10;

.+ а2Хп =<*20’

ашХХ

+ ат2Х2 +

■■+aVnXn=a^O-


Возьмем в качестве направляющей строки вторую строку, в каче­стве направляющего столбца второй столбец, тогда направляющий эле­мент будет Jc2 (коэффициент при нем равен а22). Разделим направляю­щую строку на этот коэффициент и перепишем вновь полученную сис­тему ограничений:

#21

а,.-а,

#21

а*—а„

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

/ \

+

^21

аы —-Ou

її

#2i

а—~ап

\ 22 )

CL12

\ 22 у

\ Ґ їх. =



го шага главная часть матрицы Ap** не содержит ни одного элемента или содержит только нулевые элементы, то процесс исключения пере­менных заканчивается. После проведения преобразований в системе может оказаться / уравнений, 1<т. Пусть это первые по порядку I урав­нений тогда система уравнений может быть записана в виде

(Ю.6)

Примем, что i-й направляющей строке соответствует г-й направляю­щий столбец, тогда #(,) =|°’ ^ \ j = 1, 2,..., I.

[1; 1 = j

п

Следовательно, (10.6) можно записать в виде х. = aj„ - J aIl0Xj, причем

j=i+і

переменные х. являются базисными, а переменные xs (s = /+I, ..., п) - небазисными.

Пример применения метода полного исключения. Рассмот­рим пример применения метода полного исключения Гаусса для иссле­дования системы уравнений

#21

а —21-а.

Pt. =

Расширенная матрица имеет вид

#2і

GLn—— а_

Матрицу, в которую преобразовалась расширенная матрица Ap пос­ле первого шага, обозначим Ар\ В полученной матрице все элементы направляющего столбца, отличные от направляющего элемента, стали равными нулю. Совокупность элементов первых п столбцов матрицы Ap, лежащих вне направляющей строки и столбца предыдущего шага,

называют главной частью матрицы А'1’ данного преобразования. На­правляющий элемент второго шага выбирают среди ненулевых элемен­тов главной части матрицы Ap0, полученной после проведенного пре­образования.

Второй и дальнейший шаги метода проводят аналогично первому шагу. Последовательность действий продолжается до тех пор, пока 310

1

2

1

1

3

2

1

1

3

3

АР =

4

5

3

5

9

Л

A2

аі

A4

А>

X1 +2*2+^34 =3;

Ixl + х2 + Xi + 3 = 3;

4 X1 + Sx2 + Зх3 + Sx4 = 9.



Первый шаг. В качестве первого направляющего элемента возьмем ап=1. Умножив первую строку матрицы А на 2, вычтем результат из второго уравнения и, умножив на 4, вычтем результат из третьего урав­нения; получим

А2 А0 12 113 0-3-1 1 -З

А0) =

aP

0-3-1 1 -з

Второй шаг. Поскольку главная часть матрицы AJ10 содержит от­личные от нуля элементы, продолжим процесс исключения. Выберем

элемент а22 = -3 в качестве направляющего элемента на втором шаге преобразования. Разделим вторую строку на -3, получим

где ос3, OC4 - произвольные скаляры.

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

A1X1 +... + AnXn +е,хп+, +...+еяхл+я =A0,

Далее умножим вторую строку на 2 и вычтем результат из первой строки, умножим вторую строку на -3, результат вычтем из третьей

1 0 К K і'

0 1K-K1

1

о

о

3

1

-3

АР =

строки, в итоге А‘2) =

0

0

0

0

2 I 1

1 Уз

-3 -1 1

0

'1'

'0'

'0

0

1

0

где ех =

0

, є2

0

> Єт

0

0

0

I

единичный базис, элементы а > 0 для

всех г = 1, 2, ..., т.

Будем применять метод полного исключения к расширенной мат­рице ограничений. Выбираем направляющий элемент а на данной ите­рации. В результате преобразования Гаусса, методика которого была только что описана, получим новые значения коэффициентов:

ВВЕДЕНИЕ 5