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

практикум по математике часть 3

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

теперь уже на плоскости x1Ox2 в направлении вектора grad F . Пересечение этих прямых с проекцией многоугольника A1B1C1D1E1 , каковой является

многоугольник ABCDE, в точках A и C даст решение задачи. Подставив координаты x1, x2 этих точек в формулу целевой функции, определяют

min F и max F .

Сформулируем алгоритм геометрического метода решения задачи линейного программирования (рис.1.2).

1. Строим область допустимых решений для системы ограничений задачи:

a)Строим прямые линии, полученные из системы ограничений (1.5) путем замены неравенств равенствами;

b)Находим полуплоскости, определяемые системой ограничений

(1.5);

c)Строим многоугольник решений системы ограничений (1.5).

 

 

 

F

 

F

 

 

 

 

 

 

2. Строим вектор градиента целевой функции

 

 

,

 

(он

 

x

x

 

grad F =

 

 

 

 

 

1

 

 

2

 

 

указывает на направление возрастания целевой функции). Вектор grad F

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

3.Проводим линию уровня F0 = 0 перпендикулярно вектору grad F .

4.Перемещаем линию уровня параллельно самой себе в направлении вектора grad F .

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

5. Находим координаты указанных точек экстремума и вычисляем значение целевой функции в них.

Система ограничений (1.5)– область допустимых решений задачи

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

этой области: выпуклый многоугольник (а, б), неограниченная выпуклая

многоугольная область (в), единственная точка (г), прямая линия (д), отрезок

прямой (е), луч (ж), пустое множество (з).

10

Рис.1.3.

В результате и решения задачи линейного программирования имеют разные варианты.

Если окажется, что линия уровня параллельна одной из сторон области

допустимых решений (рис.1.3,б), то экстремум F достигается во всех точках

этой стороны, а задача будет иметь бесконечное множество решений.

Говорят, что такая задача имеет альтернативный оптимум, и ее решение находят по формуле

x* = (1 t)x1 + t x2 ,

где 0 t 1, x1 , x2 – оптимальные решения в угловых точках.

Если область допустимых решений неограничена по направлению

вектора grad F (рис.1.3,в), то целевая функция F неограничена сверху в этой области и принимает max F = +∞.

11

Если область допустимых решений неограничена в направлении

противоположном вектору grad F , то min F = −∞.

Если область допустимых решений– пустое множество (рис.1.3, з), то

задача не имеет решения ввиду несовместности системы ограничений.

Пример 1. Найти такие значения неизвестных, которые доставляют

максимум функции

F = −x1 + x2 max

при условиях

2x1 x2 ≥ −2x1 2x2 2x1 + x2 5x1 0, x2 0

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

Решение.

1. Находим допустимую область.

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

Уравнения граничных прямых:

1) 2x1 x2 = −2 ; (l1 )

2) x1 2x2 = 2; (l2 )

 

если x1

= 0 , то x2

= 2 ;

если x1 = 0 , то x2

= −1;

если x2

= 0, то x1

= −1;

если x2 = 0, то x1

= 2 ;

3) x1 + x2 = 5; (l3 )

 

 

если x1

= 0 , то x2

=5;

 

 

если x2

= 0, то x1

= 5;

 

 

Строим прямые по найденным точкам в выбранной системе координат (рис.1.4). Масштабы на осях выбираем, исходя из удобства построения.

12

 

x2

Fmax

 

 

5

 

l1

 

A

 

 

l2

gradF

2

5

x1

l3

 

 

 

Рис.1.4.

Чтобы определить полуплоскость, соответствующую каждому неравенству, подставим в это неравенство пробную точку, например, точку

(0;0). Получим:

2

0 0 ≥ −2

0

≥ −2

 

2 0 2

 

2

0

0

 

+ 0 5

 

5

0

0

Все неравенства верны. Это означает, что каждому неравенству соответствует полуплоскость, содержащая точку (0;0). На чертеже эти полуплоскости отмечены штриховками.

Общая часть всех полуплоскостей, с учетом условий неотрицательности x1 0, x2 0, образует замкнутый выпуклый

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

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

Для нахождения оптимального плана обратимся к целевой функции

F = −x1 + x2 .

На графике целевая функция изображается с помощью линий уровня:

F = С (const) .

Придавая постоянной С различные значения, получим множество линий уровня x1 + x2 =C

Это семейство параллельных прямых, перпендикулярных к вектору gradF = (1;1). Координаты вектора равны коэффициентам при неизвестных в целевой функции F.

13

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

точку (0;0) проведем прямую. Уравнение этой прямой :

x1 + x2 = 0

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

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

Замечание. Для построения вектора gradF описанным выше способом

нужно, чтобы по осям координат Ox1 и Ox2 был выбран одинаковый масштаб. Если это условие не соблюдено, то нужно взять, одну из линий уровня целевой функции F ,например x1 + x2 = 0 и построить ее по двум

выбранным точкам, например (0;0) и (2; 2). Далее следует провести линию уровня через эти точки и перпендикулярно к ней построить вектор gradF .

Линию уровня перемещаем параллельно самой себе в направлении вектора gradF до тех пор, пока позволяет область допустимых планов, т.е. до точки

А.

Найдем координаты точки А, заметив, что она лежит на пересечении прямых (l1) и (l3). Решим систему уравнений:

2x1 x2 = −2x1 + x2 = 5

Координаты точки А (1;4) соответствуют оптимальному плану. Подставляя найденные значения x1 и x2 в целевую функцию, получим

максимальное значение целевой функции:

Fmax = −1 + 4 = 3.

Итак, Fmax =3 при x1 =1; x2 = 4 .

1.1.2. Симплекс-метод

Симплекс-метод (аналитический метод) – самый общий метод решения задач линейного программирования. Его еще называют «методом последовательного улучшения плана». При его использовании задача линейного программирования должна быть приведена к каноническому виду. Если условие (1.2) является системой неравенств со знаком (симметричная задача), то для приведения задачи к каноническому виду (знак

14

преобразовать в знак =) в левых частях каждого неравенства необходимо добавить по дополнительной положительной переменной xn+1 ,..., xn+m.

Тогда задача (1.1) – (1.3) примет следующий вид: требуется найти такие значения переменных x1, x2 ,..., xn , которые доставляют максимум

(минимум) целевой функции

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

F = c1x1 + c2 x2 +...

 

 

 

+ cn xn

= c j x j

(1.6)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j=1

 

при условиях

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a x

+ a x

2

+... + a

 

x

n

+ x

n+1

= b

 

 

11 1

12

 

1n

 

 

 

 

1

 

 

a21 x1 + a22 x2 +... + a2n xn + xn+2

= b2

 

(1.7)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

a

x

+ a

m2

x

2

+... + a

mn

x

n

+ x

n+m

= b

m

 

 

m1 1

 

 

 

 

 

 

 

(1.8)

 

x1 0,

x2

0,..., xn+m 0

 

 

 

Сущность симплекс-метода заключается в следующем.

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

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

Алгоритм симплекс-метода.

1.Математическая модель задачи должна быть канонической (1.6) - (1.8). Если она неканоническая, то ее надо привести к каноническому виду.

2.Составить симплекс-таблицу и выписать начальный план.

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

Последнюю строку, которую назовем индексной, заполняем коэффициентами целевой функции (1.6), представленной в виде уравнения

n

F c1x1 c2 x2 ... cn xn = с0 или F c j x j = с0

j=1

Заполним первую симплекс-таблицу (табл.1.1).

15

Таблица 1.1

Базисные

x1

x2

x3

xn

xn+1

xn+2

xn+3

 

xn+m

Свобод

неизвестные

 

 

ные

 

 

 

 

 

 

 

 

 

 

 

члены

xn+1

a11

a12

a13

a1n

1

0

0

0

b1

xn+2

a21

a22

a23

a2n

0

1

0

0

b2

xn+3

a31

a32

a33

a3n

0

0

1

0

b3

….

xn+m

am1

am2

am3

amn

0

0

0

1

bm

F

c1

c2

c3

cn

0

0

0

0

c0

Допустимое (все члены решения положительные ) базисное ( свободные члены равны нулю) решение системы (1.7) является

начальным опорным планом: (0,0,0,…,0,b1,b2,b3,…,bm).

3.Проверить полученный план на оптимальность по индексной

строке.

Если все ci 0 ( кроме c0 ), то план оптимальный и F = c0 .

4.Если хотя бы одна ci 0, то либо устанавливают неразрешимость

задачи, либо переходят к новому опорному плану. Здесь возможны случаи: a) если хотя бы одна ci 0, но при соответствующей переменной x j

нет ни одного положительного коэффициента aij (i =1, 2, K, m ), то целевая

функция неограничена в области допустимых решений и решение прекращается;

b) если хотя бы одна оценка отрицательна, а при соответствующей

переменной x j

есть хотя бы один положительный

коэффициент,

то

переходят к следующему опорному решению;

 

 

5. Если условие оптимальности не выполнено, то план улучшаем.

 

Для этого выбираем разрешающий столбец и строку:

 

 

a)

разрешающий столбец определяется

наибольшим

по

абсолютной величине из отрицательных чисел (ci ), то есть max ci и если

внем есть хотя бы один положительный элемент;

b)разрешающую строку принимают ту, которой соответствует минимальное отношение свободных членов bi к

положительным элементам разрешающего столбца.

c) Элемент, стоящий на пересечении разрешающей строки и столбца, называется разрешающим элементом.

6. Строим вторую симплекс-таблицу. Для этого:

a) Элементы разрешающей строки делим на разрешающий

элемент;

16

b) Остальные элементы находим по правилу «прямоугольника»: пусть разрешающим элементом является элемент apq ; тогда справедлива

формула

apj

 

 

 

apq

 

 

 

aij

 

aij′ =

apq aij apj aiq

(1.9)

 

 

apq

 

 

 

 

 

aij

 

 

 

aiq

 

где apq , aij , aiq , apj - элементы предыдущего шага, aij- элемент нового шага, apq aij – главная диагональ.

Таким образом, получается новое опорное решение, которое проверяется на оптимальность.

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

1.

7. Записываем новый план и проверяем его на оптимальность. Если план не оптимален и необходимо перейти к новому опорному плану, то возвращаемся к пункту 5. Процесс решения задачи заканчиваем в случае получения оптимального плана, то есть выполнения пункта 3.

Замечания. 1. Если на каком либо шаге окажется, что хотя бы одна нулевая оценка свободной переменной c j = 0 , при всех остальных c j > 0 , то

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

Критерием альтернативного оптимума при решении задач симплексметодом является равенство нулю хотя бы одной оценки свободной переменной (сj = 0 ).

Если только одна оценка свободной переменной равна нулю, то решение

находится по формуле

 

xопт = (1 t)x1опт + t x2опт,

(1.10)

где 0 t 1, x1опт , x2опт - произвольные оптимальные решения.

Если S свободных переменных имеют нулевые оценки, то оптимальное решение определяется по формуле

s

 

xопт = ti xi ,

(1.11)

i=1

s

где ti =1, ti 0 .

i =1

17

Пример 2. Найти такие значения неизвестных, которые доставляют максимум функции

F = −x1 + x2 max

при условиях

2x1 x2 ≥ −2x1 2x2 2x1 + x2 5

x1 0, x2 0

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

Решение.

Приведем задачу к каноническому виду:

F = −x1 + x2 max

при ограничениях

 

 

 

 

2x1 + x2 + x3 = 2

 

 

 

 

 

 

 

 

x

2x

2

+ x

4

= 2

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ x2

 

+ x5 =5

 

 

 

 

 

 

 

 

 

 

 

x1

 

 

 

 

 

 

 

 

 

 

 

 

x

0,

 

x

2

0,

x

3

0,

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,

 

x5 0

 

 

 

 

 

 

 

 

 

 

 

 

x4

 

 

 

 

 

 

 

 

 

 

Составим симплекс-таблицу 1-го шага (табл.1.2).

 

Таблица1.2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Базисные

x1

 

x2

 

 

 

 

 

x3

 

 

 

x4

 

x5

Свободные

 

 

 

 

 

 

 

 

 

 

 

 

члены

 

 

неизвестные

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

-2

 

1

 

 

 

 

 

1

 

 

 

0

 

0

 

2

 

 

3

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

x4

 

1

 

-2

 

 

 

 

 

0

 

 

 

1

 

0

 

2

 

 

x5

 

1

 

1

 

 

 

 

 

0

 

 

 

0

 

1

 

5

 

 

F

 

1

 

-1

 

 

 

 

 

0

 

 

 

0

 

0

 

0

 

 

При этом начальный опорный план (допустимое базисное решение)

является x* = (0,0,2,2,5); F(x* )= 0.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В

индексной строке

c j имеется

 

отрицательная оценка, значит,

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

 

 

 

В

качестве разрешающего

столбца

 

берем столбец при x2 ,

т.к. он

содержит отрицательный

элемент

в

 

индексной

строке.

Для

выбора

18

разрешающей строки рассмотрим отношения и выберем минимальное среди них

min 2 , 5 = min{2,5}= 2 .

1 1

Выбираем строку при x3 (минимальное отношение). Разрешающий элемент равен 1 (элемент, стоящий на пересечении строки при x3 и столбца

при x2 ).

Вводим в столбец базисных переменных x2 и выводим x3 . Составляем

симплекс-таблицу 2-го шага (табл. 1.3). Разрешающую строку делим на разрешающий элемент, остальные строки пересчитываем по правилу прямоугольника (1.9):

 

 

1 1

(2) (

2)

 

 

 

 

 

 

 

 

1 1

1

1

 

 

 

 

 

 

 

 

 

 

1

0 (

2) 1

 

 

 

 

 

a41 =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= −3

, a42

=

 

 

 

 

 

 

=

0 , a43 =

 

 

 

 

 

 

 

 

 

 

= 2 ,

 

 

 

 

 

1

 

 

 

 

 

 

 

1

 

 

 

 

 

1

 

 

 

 

 

 

 

 

1 1 (2) 0

 

 

 

 

 

 

1 0 (2)

0

 

 

 

 

 

 

 

 

 

1 2 (2) 2

 

 

 

 

 

a44

=

 

 

 

 

 

 

 

 

 

 

=1, a45

 

=

 

 

 

 

 

 

 

 

 

 

 

= 0 ,b4 =

 

 

 

 

 

 

 

 

 

 

 

 

 

= 6,

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(2) 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 1

 

 

 

 

 

 

1

1 1

1

 

 

 

 

=

 

0 1 1 1

= −1,

 

 

 

 

a51 =

 

 

 

1

 

 

 

 

 

= 3, a52 =

 

 

1

 

= 0 , a53

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 1 1 0

 

 

 

 

 

 

 

1 1 1 0

 

 

 

 

 

 

5

 

1

1 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a54

=

 

 

 

 

 

 

 

 

= 0 ,

a55 =

 

 

 

 

 

=1

,b5 =

 

 

 

 

 

 

 

 

 

 

 

 

= 3,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

с =

1 1 (2) (1)

= −1, с

 

=

1 1 1 (1)

= 0, с

 

 

 

=

0 1

(1) 1

=1,

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

1

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

с4

=

0 1 (1) 0

 

= 0, с5 =

 

0 1 (1) 0

= 0 ,с0

=

0 1 (1) 2

= 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

Заполняем симплекс-таблицу 1.3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 1.3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Базисные

 

 

 

 

 

x1

 

 

 

 

 

 

x3

 

 

 

 

 

x4

 

 

 

 

x5

 

 

 

Свободные

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

члены

 

 

 

неизвестные

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x2

 

 

 

 

 

 

-2

 

 

 

 

 

1

 

 

 

 

 

0

 

 

 

 

 

0

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

x4

 

 

 

 

 

 

-3

 

 

 

 

 

2

 

 

 

 

 

1

 

 

 

 

 

0

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

3

 

 

 

 

 

-1

 

 

 

 

 

0

 

 

 

 

 

1

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

-1

 

 

 

 

 

1

 

 

 

 

 

0

 

 

 

 

 

0

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

Опорным решением является x* = (0, 2, 0, 6, 3);

 

F(x* )= 2 .

 

 

 

 

 

 

 

 

 

 

При этом в последней строке имеется отрицательный элемент c1 = −1,

поэтому полученное решение можно улучшить.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1 . За

 

Разрешающим столбцом

 

является

столбец

 

 

 

с

 

 

 

переменной

разрешающую строку возьмем строку при x5

(т.к.

в разрешающем столбце

19