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

Математика Сизов 2011

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

В точке С имеем максимум целевой функции :

max F x1C , x2C C1C .

На рис.19.1 наглядно видно решение рассматриваемой задачи. Но решать ее подобным образом ( строить геометрические тела в трехмерном пространстве) достаточно не просто. Реально задачу линейного программирования геометрическим методом решают на плоскости x1Ox2 .

Прямая c1 x1 c2 x2

0 , проведенная на плоскости

x Ox

2

 

 

1

одновременно является линией уровня плоскости F c1 x1 c2 x2 0 ,

т.к. все точки на этой линии имеют равные аппликаты в данном случае равные нулю. Одновременно эта линия показывает значение целевой функции равной нулю. Изменение местоположения линии уровня показывает изменение значения целевой функции.

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

известно, что если F F x1, x2 – скалярная функция, как в нашем

случае, то градиент скалярного поля F

 

F

F

 

 

F

 

 

или

grad

i

j

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

x

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

F

 

F

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

 

укажет

направление

наинтенсивнейшего

 

 

x

x

 

 

grad F

 

 

 

 

 

1

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

изменения (наибольшего возрастании) этой функции в точке, где он определен. Вектор grad F всегда перпендикулярен линиям уровня.

В

нашем

случае:

F c1x1 c2 x2 ;

grad F F i F j c1i c2 j .

x1 x2

Вектор grad F стационарен, т.е. он не изменяется ни по

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

происходит только в одном направлении. С другой стороны это

значит: чтобы увеличить значение целевой функции от F 0 и более линию уровня– прямую F 0 нужно перемещать по плоскости

параллельно самой себе в направлении grad F .

На рис. 19.1 показан процесс перемещения прямой F 0 параллельно самой себе по плоскости в направлении grad F . При пересечении с боковой поверхностью прямой призмы в точке A1 эта прямая покажет значение целевой функции min F A1 A, а двигаясь дальше при пересечении с поверхностью призмы в точке C1 – max F C1C .

311

Если теперь всю эту задачу и динамику исследования

спроектировать на плоскость x1Ox2 , то получим необходимый метод

решения.

Система ограничений (19.8) будет иметь такое же аналитическое выражение как и прежде, но геометрически будет выражаться многоугольником ABCDE (рис.19.1 и 19.2).

Рисунок 19.2

Вектор grad F F i F j остается неизменным.

x1 x2

Параллельное перемещение прямых– линий уровня по плоскости F проектируется в такое же параллельное перемещение прямой F 0 но теперь уже на плоскости x1Ox2 в направлении

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

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

max F .

Сформулируем алгоритм геометрического метода решения

задачи линейного программирования (рис.19.2).

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

ограничений задачи:

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

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

312

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

(19.8).

 

 

 

 

 

 

 

 

 

 

 

 

2. Строим

 

 

вектор

градиента

целевой

функции

 

 

 

F

 

F

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(он указывает направление возрастания целевой

 

 

x

, x

 

 

grad F

 

 

 

 

 

1

 

 

2

 

 

 

 

 

 

функции).

Вектор

 

F

– свободный

вектор, т.е.

его можно

grad

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

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

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

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

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

Система ограничений (19.8)– область допустимых решений задачи линейного программирования может быть представлена не только многоугольником решений. На рисунке 19.3. представлены возможные варианты этой области: выпуклый многоугольник (а, б), неограниченная выпуклая многоугольная область (в), единственная точка (г), прямая линия (д), отрезок прямой (е), луч (ж), пустое множество (з).

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

Если окажется, что линия уровня параллельна одной из сторон области допустимых решений (рисунок 19.3,б), то экстремум F достигается во всех точках этой стороны, а задача будет иметь бесконечное множество решений. Говорят, что такая задача имеет альтернативный оптимум, и ее решение находят по формуле

x* 1 t x1 t x2 ,

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

направлению вектора grad F (рисунок 19.3,в), то целевая функция F

неограниченна сверху в этой области и принимает max F .

Если область допустимых решений неограниченна в направлении противоположном вектору grad F , то min F .

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

313

Рисунок 19.3

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

F x1 x2 max

при условиях

2x1 x2 2,x1 2x2 2,x1 x2 5,

x1 0, x2 0.

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

Решение.

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

314

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

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

 

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.

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

 

x2

Fmax

 

 

5

 

l1

 

A

 

 

l2

gradF

2

5

x1

 

l3

Рисунок 19.4

Чтобы определить полуплоскость, соответствующую каждому неравенству, подставим в это неравенство пробную точку, например, точку (0;0). Получим:

2

0 0 2,

0

2,

 

2 0 2,

 

2,

0

0

 

0 5.

 

5.

0

0

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

315

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

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

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

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

F x1 x2 .

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

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

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

Построим нормальный вектор 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). Решим систему уравнений:

316

2x

 

x

 

2

,

x 1

.

 

1

 

 

2

 

 

1

 

x

x

2

5

 

x2 4

 

1

 

 

 

 

 

 

 

 

Координаты точки А (1;4) соответствуют оптимальному плану.

Подставляя найденные

значения

x1

и

x2 в целевую функцию,

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

Fmax 1 4 3.

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

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

Симплекс-метод (аналитический метод) – самый общий метод решения задач линейного программирования. Его еще называют

«методом последовательного улучшения плана». При его использовании задача линейного программирования должна быть приведена к каноническому виду. Если условие (19.5) является системой неравенств со знаком (симметричная задача), то для приведения задачи к каноническому виду (знак преобразовать в знак =) в левых частях каждого неравенства необходимо добавить по дополнительной положительной переменной xn 1 ,..., xn m.

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

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

n

F c1x1 c2 x2 ... cn xn c j x j , (19.9)

j 1

при условиях

a11x1 a12 x2 ... a1n xn xn 1 b1,a21x1 a22 x2 ... a2n xn xn 2 b2 ,

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

am1x1 am2 x2 ... amn xn xn m bm . x1 0, x2 0,..., xn m 0 .

(19.10)

(19.11)

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

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

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

317

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

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

2.Составить симплекс-таблицу и выписать начальный план. Все строки первой таблицы, за исключением последней

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

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

 

 

 

 

 

 

 

 

 

n

 

 

 

 

F c1x1 c2 x2

... cn xn с0

или F c j x j с0 .

 

 

 

 

 

 

 

 

 

 

j 1

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 19.1

Базис-

x1

x2

x3

xn

xn+

 

xn+

xn+

xn+

Сво-

ные не-

 

 

 

 

 

1

 

2

3

 

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

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

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

3.

Проверить

полученный

план

 

на оптимальность по

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

 

 

 

F c0 .

Если все cj 0 , то план оптимальный и

4.

Если хотя

бы одна

cj 0 ,

то

либо устанавливают

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

a) если

хотя бы одна

cj 0 , но при

соответствующей

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

нет ни одного

положительного

коэффициента aij

 

 

318

 

(i 1, 2, , m ), то целевая функция неограниченна в области

допустимых решений и решение прекращается;

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

коэффициент, то переходят к следующему опорному решению; 5. Если условие оптимальности не выполнено, то план

улучшаем.

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

a) разрешающий столбец определяется наименьшим значением из отрицательных чисел cj , то есть min cj и если в

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

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

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

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

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

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

элемент;

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

apj

 

 

 

 

apq

aij

 

apq aij apj aiq

.

(19.12)

 

 

aij

 

 

apq

 

 

 

 

 

 

 

 

aij

 

 

aiq

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

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

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

319

остальных c j 0 , то имеем альтернативный оптимум. Это случай,

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

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

Если только одна оценка свободной переменной равна нулю, то решение находится по формуле, xопт 1 t x1опт t x2опт где 0 t 1, x1опт , x2опт - произвольные оптимальные решения.

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

s

s

 

xопт ti xi ,

где ti 1,

ti 0 .

i 1

i 1

 

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

F x1 x2 max

при условиях

2x1 x2 2,x1 2x2 2,x1 x2 5,

x1 0, x2 0.

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

Решение.

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

F x1 x2 max

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

2x1 x2 x3 2,

 

x

2x

2

x 2,

 

 

1

 

 

4

 

 

 

x2

x5 5,

 

x1

 

x

0,

 

x

0, x

0,

 

1

0,

 

2

3

 

x

 

x

0.

 

 

4

 

 

5

 

 

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

320