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

01-09-2014_14-57-50 / Моделир. Оптим.(з)_Подобие_ЛП_лекц

..pdf
Скачиваний:
121
Добавлен:
29.03.2015
Размер:
3.3 Mб
Скачать

161

Предположим, что в процессе поиска стационарной точки функции f(х) на интервале (a;b) обнаружены две точки c и d, в которых знаки производной различны. В этом случае алгоритм метода секущих позволяет аппроксимировать функцию f '(х) секущей прямой и найти точку, в которой секущая графика f '(х) пересекает ось абсцисс (рисунок 5.14). Таким образом, следующее приближение к стационарной точке х* определяется по формуле:

f '(d )

z d f '(d ) f '(c) /(d c)

f '(x)

 

 

 

 

f '(x)

 

 

 

Секущая

 

d

 

 

 

 

 

c

 

 

 

 

 

 

 

 

 

 

 

z

x*

 

 

 

x

a

b

 

 

 

 

 

 

f '(x)

 

 

 

 

 

 

f '(c)

 

 

 

 

 

Рис. 5.14. Метод секущих.

Если

f '(z)

,

поиск следует закончить. В противном случае необходимо

выбрать одну из точек с или d таким образом, чтобы знаки производной в этой точке и точке z были различны, а затем повторить основной шаг алгоритма. Например, в ситуации, показанной на рисунке 5.14, в качестве двух следующих точек должны быть выбраны точки z и d. Легко видеть, что в отличие от метода средней точки метод секущих основан на исследовании не только знака, но и значений производной в пробных точках и поэтому в ряде случаев позволяет исключить более половины интервала поиска (рисунок 5.14).

Пример 5.7. Метод секущих.

Опять рассмотрим задачу из примера 5.6.

Минимизировать f(x)

2x

2

 

16

 

), в интервале 1

 

(

x

 

 

 

 

 

 

 

 

 

 

F '(x) = df(x)/dx = 4x-16/

Итерация 1.

 

 

 

 

 

 

 

Шаг 1. d=5, c=1, f '(d)= -12.

 

 

 

19.36

 

 

 

 

 

 

 

Шаг 2. Z=5-

 

 

2.53.

 

 

(19.36 12) / 4

 

 

x 5.

x

2

.

 

 

Шаг 3. f '(z)=7,62>0; положить d=2,53.

Итерация 2.

161

162

7.62

 

Шаг 2. z=2,53- (7.62 12) /1.53 1.94.

 

Шаг 3. f '(z)=3,51>0; положим d=1,94. Итерации продолжаются до тех

пор, пока не будет выполняться неравенство

f '(z) . .

7. Многомерная минимизация при наличии ограничений.

7.1. Линейное программирование.

Задачами линейного программирования называются оптимизационные задачи, в которых ограничения представляются в виде равенств или неравенств, целевая функция линейна, все переменные хj удовлетворяют условию не отрицательности хj 0. Линейное программирование представляет собой наиболее часто используемый метод оптимизации ( 74 от общего числа применяемых оптимизационных методов ).

7.1.1. Постановка задач линейного программирования.

Задача минимизации функции n переменных x x1,…, xn на некотором множестве Х Еn не совпадающая со всем пространством Еn и заданном с помощью ограничений (равенств и неравенств ) на координаты хj (j=1:n) точки

х n называется задачей математического программирования. При этом функцию х называют целевой функцией, а множество Х- допустимым множеством.

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

 

n

 

х х1,…,

хn cj xj на множестве

Х n заданном системой линейных

 

j 1

 

ограничений (равенств или неравенств ) на координаты xj j=1:n).

Задача линейного программирования формулируется следующим об-

разом.

 

 

Среди точек х=(х1,…,хn) n, удовлетворяющих

ограничениям:

n

 

 

аij xj =bi ,

i :l

(7.1)

j 1

162

xj =bi ,
n
f(x)= cj x j
j 1

n

j 1

163

аij xj bi i (l ):m

(7.2)

xj

(7.3)

найти те, в которых функция

 

n

 

х

cj xj

j 1

 

принимает минимальное значение, и определить это значение. Это общая или произвольная форма записи.

Отметим, что в условии задачи линейного программирования могут содержаться неравенства и противоположного, чем в (7.2), знака, однако такие неравенства легко сводятся к виду (7.2) умножением на -1.

Если в условии задачи линейного программирования не содержаться ограниченияравенства (7.1), то эта форма записи называется симметричной

или стандартной.

Если в условии задачи линейного программирования не содержаться ограничения-неравенства (7.20), то есть в (7.1) l=m, то она называется задачей линейного программирования в каноническом (основном) виде.

Ограничения – неравенства

n

 

 

 

 

 

 

 

 

j 1

a

x

 

b

i,j

 

j

i

преобразуются в ограничения-равенства путем прибавления (вычитания) к левым частям дополнительных (балансовых) переменных хn+i ≥0, i=(l+1):m. Огра- ничения-неравенства (7.2) можно записать в виде равенств:

n

 

 

 

 

 

 

 

 

a

i,j

x

j

x

b ,

i=1:m.

 

 

n+i

i

 

j 1

 

 

 

 

 

 

 

Таким образом, любая задача линейного программирования может быть записана в каноническом виде:

n

j 1

min

аij i :m,

(7.4)

(7.5)

 

 

 

xj ≥0.

 

 

 

(7.6)

 

 

Если переменная хn не подчинена условию неотрицательности, то ее сле-

дует заменить двумя неотрицательными переменными x'

и

x'

' , приняв х = x' -

 

 

 

n

 

n

n

n

x' ' ,

x'

≥0,

x' ' ≥0.

 

 

 

 

n

n

 

n

 

 

 

 

Часто используется векторная запись задачи (7.3)…(7.5): f(x)=(c,x) min,

163

164

Ax=b,

(7.7)

х≥0,

 

где х=(х1,…, хn)т – вектор независимых переменных, с=(с1,…, сn)т – вектор коэффициентов целевой функции из (7.3), А=( аij) - прямоугольная матрица размера m n, b=(b1,…,bm)т - вектор правых частей (ограничений) системы (7.4), а х -краткая запись условий неотрицательности (7.3).

Ограничения вида хj ≥0 или хj или dj xj pj (двусторонние ограничения) для всех или некоторых j j n называют прямыми ограничениями на переменные. Методы решения задач линейного программирования построены, как правело, с учетом вида прямых ограничений.

Задача линейного программирования, которая имеет допустимые решения (т.е. система ограничений совместна) называется допустимой; задача с несовместной системой ограничений – недопустимой.

Совокупность чисел х=(х1,…,хn) удовлетворяющих ограничениям задачи

(7.1)…(7.2) называется допустимым решением (или планом).

План х*=(х1*,…,хn*), при котором целевая функция задачи (7.3) принимает свое минимальное (максимальное) значение называется оптимальным.

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

Чтобы имело смысл говорить об отыскании оптимального плана задачи система (7.1)…(7.3) должна быть совместна и иметь не единственное неотрицательное решение. Это возможно в случае, если ранг r системы (число линейно

независимых уравнений) меньше числа неизвестных n (r n), при r=n – система допускает единственное решение, и вопрос о выборе оптимального решения

отпадает. Случай r n вообще невозможен.

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

а) f(x)=6х1+5х2

min

 

 

5x 11x

55

 

 

-x

 

 

1

2

 

 

 

 

3

 

 

x

x

8

 

-x

 

 

 

 

 

 

1

2

 

 

 

4

 

 

11x 3x

32

 

 

-x

 

 

1

2

 

 

 

5

 

 

16x 13x

 

210

 

+x

 

 

 

 

 

 

1

2

 

 

6

 

 

17x 12x

2

205

+x

 

 

1

 

 

 

 

7

 

 

x 0,

 

0

 

 

 

 

x

 

 

 

 

 

1

2

 

 

 

 

 

 

 

Решение. Заменяем функцию f(x) на

f

(x) f (x) . Из левых частей огра-

 

 

 

 

 

 

 

'

 

ничений типа ≥ вычитаем неотрицательные переменные х3, х4, ,х5, к левым частям ограничений типа ≤ прибавляем неотрицательные переменные х6, х7. Получаем модель задачи в канонической форме:

164

165

f

'

(x) 6x 5x

max

 

 

 

 

1

 

2

 

 

 

 

5x 11x

-

x

55

 

 

 

1

2

 

3

 

 

 

 

x

x

- x

8

 

 

 

 

 

1

2

 

4

 

 

 

11x 3x

- x

32

 

 

 

1

2

 

5

 

 

 

 

16x 13x +x

210

 

 

 

 

 

 

1

 

2

6

 

 

 

17x 12x +x

205

 

 

 

1

 

2

7

 

 

 

 

xj 0,

j 1: 7.

 

 

 

 

 

 

 

 

 

 

 

б) f(x)=2х1-3х2 +5х3-х4

 

max

x

2x

-

x

 

x

2

 

1

2

 

3

 

4

 

 

2x 3x

-2x

+5 x

4

 

1

2

 

3

 

4

 

3x

x

+3x -

x

3

 

 

1

2

 

 

3

4

 

x

0,

x

0 .

 

 

1

 

 

3

 

 

 

 

Решение. Эта задача не является канонической из-за того, что не от всех переменных требуется неотрицательность. Представим переменные х2, х4 в виде

разностей

x2

x2

x2

 

,

x4

x4

x4

 

, где

x

 

0, x

 

 

0, x

 

0, x

 

 

0

. Подставляя эти

 

 

'

'

'

 

 

'

'

'

 

 

'

 

'

'

 

'

 

'

'

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

2

 

 

4

 

4

 

 

 

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

f(x)=2х1-3(

x

'

 

2

x

'

'

 

 

2

 

) +5х3 -

x

'

x

'

'

 

 

4

4

 

max

x

2(x

'

 

x

'

 

'

) +5x

 

x

'

 

x

'

'

 

 

 

2

 

 

 

 

 

 

 

 

4

4

 

 

 

 

 

 

1

 

 

2

 

 

2

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

2x

3(x

'

 

 

x

'

 

'

) -2x

+5 (x

'

x

'

'

) 4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

2

 

 

2

 

 

 

 

 

3

 

 

 

4

 

4

 

 

 

 

 

 

 

3x

x

'

 

 

x

'

'

 

 

 

+ 3x

-

x

'

 

 

 

 

x

'

'

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

 

 

 

2

 

 

 

 

 

 

 

3

 

4

 

 

 

 

 

4

 

 

 

 

x 0, x

'

 

 

0, x

'

'

0,

x

 

0, x

'

 

0, x

'

'

 

 

 

 

 

 

 

4

4

 

0 .

1

 

2

 

 

 

 

 

 

 

2

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

7.1.2. Метод исключения переменных.

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

n

 

 

f(x)= cj xj

max

 

j 1

 

 

n

 

 

аij xj =bi ,

i :m,

(7.8)

j 1

xj ≥0.

165

166

где число переменных на два больше числа ограничений-равенств, т.е. n-m=2, причем ранг матрицы А=m. Тогда две переменные в указанной системе уравнений, скажем х1 и х2, являются свободными, т.е. через них можно выразить все остальные переменные:

x

 

j1

x

j2

x

 

j

,

j

 

1

2

 

 

j=3,...n

,

(7.9)

где…

 

j1

,

j2

,

j

- некоторые числа. Подставляя эти выражения в целевую

 

 

 

 

функцию, получаем

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

………………

f

x

 

 

 

x

 

,

7.10)

 

 

 

 

 

1 1

 

 

2 2

 

 

 

где 1, 2 ,

- некоторые числа.

 

 

 

 

 

 

 

 

 

 

 

 

Рассмотрим задачу линейного программирования с двумя переменны-

ми:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f

 

 

x

2

x

max

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

1

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

x

j2

x

 

j

0, j=3,...n

 

 

 

 

 

 

 

 

 

 

 

j1 1

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

x

0, x

 

 

0 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

2

 

 

 

 

 

 

 

 

Используя геометрические построения, находим ее решение

(

x

*

,

 

1

 

x

*

 

2

).

Подставляя эти числа в (7.9), (7.10), получаем решение и значение исходной за-

дачи (7.8).

Пример 7.2. Найти максимальное значение функции

f = —16x1 x2 + x3+5x4 + 5x5

при условиях:

 

 

2x

+ x

+ x

=10

 

 

1

2

 

 

3

 

 

- 2x

+ 3x

 

+ x

 

=6

 

 

 

 

1

2

 

 

4

 

 

 

 

2x

+ 4x

 

- x

 

=8

 

 

 

 

 

1

2

 

5

 

 

x

, x

, x ,

x

, x

 

0

 

1

2

3

 

4

5

 

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

166

167

Выше было показано (см. § 1.2), что исходная задача записана в форме основной для задачи, состоящей в нахождении максимального значения функции

f = 2x1 + Зx2;

при условиях:

 

 

2x

+ x

10

 

 

 

1

2

 

 

 

- 2x

+ 3x

6

 

 

 

 

1

2

 

 

 

 

 

2x

+ 4x

 

8

 

 

 

 

 

 

1

2

 

 

x

, x

, x ,

x

, x

0

 

1

2

3

4

5

 

Из целевой функции исходной задачи переменные x3, x4,x5 исключены с помощью подстановки их значений из соответствующих уравнений системы ограничений.

Построим многоугольник решений полученной задачи (рис. 7.1.). Как видно из рис. 7.1., максимальное значение целевая функция задачи принимает в точке С пересечения прямых I и II. Вдоль каждой из граничных прямых значение одной из переменных, исключенной при переходе к соответствующему неравенству, равно нулю. Поэтому в каждой из вершин полученного многоугольника решений последней задачи по крайней мере две переменные исходной задачи принимают нулевые значения. Так, в точке С имеем x3 =0

и x4 =0. Подставляя эти значения в первое и второе уравнения системы ограничений исходной задачи, получаем систему двух уравнений

 

2x1

+ x2

10

,

 

 

+ 3x2

6

- 2x1

 

решая которую, находим x*1 = 3, x*2 = 4.

Подставляя найденные значения x1 и x2 в третье уравнение системы ограничений исходной задачи, определяем значение переменной x5 равное14.

Следовательно, оптимальным планом рассматриваемой задачи является x*= (3, 4, 0, 0, 14). При этом плане значение целевой функции есть Fmax=18.

167

168

7.1.3. Двойственность в линейном программировании

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

Для удобства выпишем еще раз общую задачу ЛП:

 

n

 

 

 

 

 

 

f(x)=

c

x

j

max

,

 

j

 

 

 

j 1

 

 

 

 

 

n

 

 

 

 

 

 

 

аij xj =bi ,

 

 

i :l

 

j 1

 

 

 

 

 

 

n

 

 

 

 

 

 

 

аij xj bi

 

i (l ):m

j 1

 

 

 

 

 

 

xj

Двойственной к задаче (7.11) называется следующая задача:

 

 

 

m

 

b,y bi yi

min,

 

 

 

j 1

 

n

 

 

 

yiai,j

cj ,

j=1: s,

i 1

 

 

 

m

 

 

 

yiai,j

cj ,

j=(s+1):n,

i 1

 

 

 

y

i

0,

i=1:l .

 

 

 

 

(7.11)

(7.12)

При этом задача (7.11) называется прямой.

Переход к двойственной задаче удобно осуществлять с помощью табл. 7.1.

 

х1≥0

хs≥0 хs+1

хn

 

y1≥0

а11

а1s а1,s+1

b1

.

а1n

 

 

 

 

.

168

169

.

.

yl≥0

yl+1

аl1

аls

аl,s+1

.

аln

 

 

 

 

.

аl+1, 1

аl+1,s

аl+1,s+1

.

аl+1,s

 

 

 

 

ym

.

 

 

 

 

 

.

 

 

 

 

 

.

 

 

 

 

 

am1

ams

am,s+1

 

amn

 

 

 

 

=

=

 

 

 

 

с1

cs

cs+1

cn

 

 

 

 

.

.

bk

=bk+1

.

.

.

=bm

Для построения двойственной задачи необходимо пользоваться следующими правилами:

1)если прямая задача решается на максимум, то двойственная – на минимум, и наоборот;

2)в задаче на максимум ограничения – неравенства имеют смысл ≤, а в задаче минимизации – смысл ≥;

3)каждому ограничению прямой задачи соответствует переменная двойственной задачи, и наоборот, каждому ограничению двойственной задачи соответствует переменная прямой задачи ;

4)матрица системы ограничений двойственной задачи получается из матрицы системы ограничений исходной задачи транспонированием ;

5)свободные члены системы ограничений прямой задачи являются коэффициентами при соответствующих переменных целевой функции двойственной задачи, и наоборот ;

6)если на переменную прямой задачи наложено условие не отрицательности (≥), то соответствующее ограничение двойственной задачи записывается как ограничение – неравенство , если же нет, то как ограничение равенство ;

7)если i-e ограничение исходной задачи является неравенством, то i –я

переменная двойственной задачи yi 0. Если же i-е ограничение есть уравнение, то переменная yi может принимать как положительные, так и отрицательные значения, т.е. условие не отрицательности не налагается.

169

170

Сначала в таблицу заносится вся информация о прямой задаче: значения параметров aij ,bi, и сj, знаки неравенств или равенств в ограничениях (справа), условия неотрицательности соответствующих переменных (сверху). Затем каждой i - й строке (i-му ограничению прямой задачи) ставится в соответствие двойственная переменная yi, на которую накладывается условие неотрицательности, если справа в этой строке стоит знак неравенства. Внизу проставляются знаки неравенства или равенства в зависимости от того, наложено или не наложено условие неотрицательности на соответствующую переменную прямой задачи. После этого двойственная задача «считывается» путем умножения вектора у=(yi) на столбцы матрицы А =(аij) и вектор b =(bi).

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

Таблица 7.1

Формы записи прямой и двойственной задач

Форма записи прямой задачи ЛП

Форма записи соответствующей

 

двойственной задачи ЛП

 

 

Основная: <c,x> max,

Каноническая: : <b,y> min,

Ax≤b

yA=c, y≥0

 

 

Стандартная: <c,x> max,

Стандартная: <b,y> min,

Ax≤b, х≥0

yA≥c, y≥0

 

 

Каноническая: c,x> max,

Основная: <b,y> min,

Ax=b, х≥0

yA≥c

 

 

Основные факты теории двойственности.

Теорема 7.1. Задачи (7.11) и (7.12) взаимодвойственны, т. в. двойственной к задаче (7.12) является задача (7.11).

Ниже под Х и У понимаются допустимые множества задач (7.11) и (7.12) соответственно.

Теорема 7.2. Для любых х Х и y Y выполняется неравенство <с, х> <b, у>.

Теорема 7.3. Пусть х* X, у* У. Тогда 1) если

<с, х*>=<b,у*>,

(7.13)

то х* есть решение задачи (7.11), а у* — решение задачи (7.12);

 

2) равенство (7.13) равносильно совокупности условий

 

m

 

x*j ( y*i aij cj ) 0, j=1:s,

(7.14)

i 1

170