![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Пример 21.2.1
Рассмотрим следующую задачу.
Максимизировать z = х, + х\
при ограничениях
Зх, + 2х; < 9, хр х2 > 0.
Точное оптимальное решение этой задачи находится непосредственной проверкой: х, =0, х2 = 2,12 и г* = 20,25. Чтобы продемонстрировать использование метода аппроксимации, рассмотрим отдельные функции
/,(*,) = *„
21.2. Алгоритмы решения задач с ограничениями
g;(x2) = 2xl
Функции/,(*,) и gl(xt) остаются в исходном виде, поскольку они уже являются линейными. В этом случае хх рассматривается как одна из переменных. Для функций /2(дг2) и g~{x,) полагаем, что количество точек разбиения равно четырем (Кг = 4). Так
как значение*,, не может превышать 3, отсюда следуют данные, приведенные ниже.
к | я' | fM) | **№) |
Получаем
fM) = tlJM)+t\L {4)+'1М^)+''Ш) =
= 0 х t\ +1 х /,: +16 х t\ + 81 х t* = i; +16/2 + 8 U*.
Аналогично
gf(x2) = 2t;+Stl + \Stl Следовательно, аппроксимирующая задача принимает вид
максимизировать z = x,+1; +16/, + 8 У*
при ограничениях
Зх,+2/;+8/,3+18/24<9, t\+t;+tl+l' = \,;* >0, * = 1,2,3,4, х,>0.
Исходная симплекс-таблица (в которой осуществлена перестановка столбцов для получения начального решения) выглядит следующим образом.
Базис | Х1 | t; | t}2 | S1 | Решение | ||
z | -1 | -1 | -16 | -81 | |||
S, | |||||||
/: |
Здесь 5, (> 0) — дополнительная (остаточная) переменная. (В этой задаче начальное решение является очевидным. В общем же случае для его получения могут понадобиться искусственные переменные, см. раздел 3.4.)
Коэффициенты г-строки указывают на то, что в число базисных необходимо ввести переменную /4. Поскольку при этом переменная t\ уже входит в базисные в силу
Глава 21. Алгоритмы нелинейного программирования
правила ограниченного ввода в базис, она должна быть выведена из числа базисных перед тем, как базисной станет переменная /,4. Вместе с тем, согласно условию допустимости при введении в базисные переменной t* переменная s, должна выводиться из базиса. Это значит, что t\ нельзя сделать базисной. Следующей подходящей для введения в базисные является переменная t\. Снова при этом переменная t\ должна быть выведена из числа базисных. Условие допустимости на этот раз позволяет вывести из числа базисных переменную t\, что и требуется. Таким образом, получаем новую симплекс-таблицу.
Базис | Xi | '2 | /23 | S1 | t\ | Решение | |
z | -1 | -65 | |||||
S: | -6 | -8 | |||||
tl |
Очевидно, что базисной следует сделать переменную t\. То, что переменная t\ уже
является базисной, не противоречит правилу ограниченного ввода в базис. В соответствии с симплекс-методом переменная s, исключается из числа базисных. Получаем следующую симплекс-таблицу.
Базис | Xi | '2 | t\ | A | S1 | l\ | Решение |
z | 37/2 | -24 | 13/2 | -36 | 45/2 | ||
t\ | 3/10 | -6/10 | 1/10 | -8/10 | 1/10 | ||
t\ | -3/10 | 16/10 | -1/10 | 18/10 | 9/10 |
Из этой таблицы следует, что в базис могут вводиться переменные t\ иг,2. Переменная t\ не может быть базисной, поскольку не является смежной с переменными /2 и /2, которые уже находятся среди базисных. Далее, переменную гг также нельзя сделать базисной, поскольку t* нельзя исключить из числа базисных. Поэтому
процедура решения задачи на этом завершается, и полученное решение является наилучшим допустимым решением аппроксимирующей задачи.
Воспользуемся найденными значениями t\ = 9/10 и('= 1/10, чтобы выразить полученное решение через переменные jc, ид:2. Получаем
х, = 0, х2~ 2t32+3t4=2^j+3^j=2,l, z = 0 + 2,14 = 22,5.
Полученное приближенное оптимальное значение для хг (=2,1) мало отличается от истинного оптимального значения (= 2,12).
Сепарабельное выпуклое программирование. Задача выпуклого сепарабельного программирования возникает в том случае, когда функции #/(х,) являются вы
21.2. Алгоритмы решения задач с ограничениями
пуклыми, обеспечивая, таким образом, выпуклость области допустимых решений. Кроме того, считаем, что функции f,(x:) являются выпуклыми в задаче минимизации и вогнутыми в задаче максимизации (см. табл. 20.2 в разделе 20.2.2). При этих условиях можно использовать следующий упрощенный метод аппроксимации.
Рассмотрим задачу минимизации. Пусть функция ft(x) имеет такой вид, как показано на рис. 21.4. Обозначим точки разбиения для функции f^x) через xt = ам, k = 0,
1, К,. Пусть xhi — величина изменения переменной xt на интервале (ак_,ак), k = 1,
2, К,, apfc — тангенс угла наклона линейного сегмента на том же интервале.
Тогда
Рис. 21.4. Кусочно-линейная аппроксимация выпуклой функции
Здесь предполагается, что 0 < хы < аы - a„_u, k = 1, 2, Кг
Так как функция /Дх,) выпуклая, то р„ < р,; <... < pKil. Это означает, что в задаче
минимизации при р < q большее влияние на значение целевой функции оказывает переменная хр1, чем xql. Следовательно, переменная хр1 всегда будет входить в решение до того, как в него войдет xql При этом значения каждой переменной хк1 должны быть ограничены сверху величиной (akl - ak_hl).
Выпуклые функции ограничений glfa) аппроксимируются аналогичным образом. Пусть p'tl — тангенс угла наклона А-го линейного сегмента, соответствующего функции g!(x{). Тогда функция g!(x,) аппроксимируется формулой
Следовательно, рассматриваемая задача принимает вид
■ I (К:
минимизировать z = ^ ^9и-\ + / {aoi)
при ограничениях
V'-'
0<xkl<aki- ак_и, к=1, 2,...,#„1=1,2,
где
Глава 21. Алгоритмы нелинейного программирования
, _ g/K)-g/K-u)
Задача максимизации преобразуется аналогично. В этом случае р„ >p2l >...>pKl,
откуда следует, что при р < q переменная х всегда будет входить в решение раньше хд1 (см. упражнение 21.2.1.7).
Полученную задачу можно решить симплекс-методом, предназначенным для решения задач с ограниченными сверху переменными (раздел 7.3). При этом исчезает необходимость в соблюдении правила ограниченного ввода в базис, поскольку выпуклость (вогнутость) функций гарантирует надлежащий выбор переменных.
Пример 21.2.2
Рассмотрим задачу
максимизировать z = хх - х2
при ограничениях
3x14+x2<243, х1+2х\<Ъ2, хх > 2,1, jc2>3,5.
Отдельными (сепарабельными) функциями этой задачи являются
у!(*.) = *.. Ь{хг) = ~хг< gl(x,) = 3x*, g\(x2) = x2,
gf(*.) = *.. g\{xi) = l£-Эти функции выпуклые, что и требуется в задачах минимизации.
Область допустимых значений переменных хх и х2, как следует из ограничений задачи, определяется неравенствами 0<xt<3 и 0<;с2<4. Разбиваем эти интервалы изменения переменных х, и х2. Пусть А", = 3 и К2 = 4 при а01 = а02 = 0. Значения тангенсов углов наклона, соответствующих отдельным функциям рассматриваемой задачи, приведены в следующих таблицах.
Для i = 1 имеем
к | зил | U (вил) = вил | Ai | *i'(a*i) = 3a*i | S.2(a*i) = ati | P*. | ХкЛ | |
— | — | — | ||||||
Хц | ||||||||
*21 | ||||||||
X31 |
21.2. Алгоритмы решения задач с ограничениями 813
Для i = 2 имеем
к | Pi, | Хк2 | ||||||
— | — | — | — | |||||
-1 | -1 | |||||||
-2 | -1 | Х22 | ||||||
-3 | -1 | *32 | ||||||
-4 | -1 | *42 |
Теперь задача принимает следующий вид.
Минимизировать z ~ хп + х21 + х31 - хп - х22 - х32 - х42 при ограничениях
Зхи + 45х21 + 195х31 +х12 +х22 + х32 +х42< 243, хп +х21 +х31 + 2х12 + 6х22 + Юх32 + 14х42 < 32, хп +х21 "Ьх31 ^ 2,1,
■*12 + х22 + х}2 + *л2 ^ 3,5,
0<xtl < 1, к= 1, 2, 3, 0<xi2< 1,к= 1,2,3,4. С помощью программы TORA получено следующее оптимальное решение:
z = -0,52, хи = xl2 = 1, х13 = 0,98, х21 = х22 = х23 = 1, х24 = 0,5. Отсюда получаем решение исходной задачи (х,, х2) = (2,98, 3,5).
УПРАЖНЕНИЯ 21.2.1
1. Для следующей задачи постройте аппроксимирующую модель в виде задачи частично-целочисленного программирования.
Максимизировать z = е~х' + х, + (х2 +1)2
при ограничениях
х,2 + х2 < 3, х,, х2>0.
2. Решите аппроксимирующую задачу из предыдущего упражнения, используя правило ограниченного ввода в базис. Затем найдите оптимальное решение исходной задачи.
3. Рассмотрите следующую задачу.
Максимизировать z = х,х2х3
при ограничениях
х,2 + х, + х3 < 4, х,, х2, х3 > 0.
Постройте аппроксимирующую задачу в виде задачи линейного программирования с учетом дальнейшего использования правила ограниченного ввода в базис.
Глава 21. Алгоритмы нелинейного программирования
4. Покажите, каким образом приведенная ниже задача может быть приведена к сепарабельному виду.
Максимизировать г = ххх2 + х3 + xtx3
при ограничениях
xtx2 + хг + ххх3 < 10,
5. Покажите, каким образом следующую задачу можно преобразовать в задачу сепарабельного программирования.
Минимизировать z = е2"'*"*2 + (х3 - 2)2
при ограничениях
jc, + х2 + х3 < 6, xitx2, х3>0.
6. Покажите, как следующую задачу можно преобразовать в задачу сепарабельного программирования.
Максимизировать z = eVl + х2х3 + х4
при ограничениях
л;, + х2х3 + х3< 10,
xt не ограничена в знаке.
7. Покажите, что при реализации метода выпуклого сепарабельного программирования оптимальное решение не содержит переменной хк1 > 0, если переменная xk_u не достигает своей верхней границы.
8. Решите представленную ниже задачу как задачу выпуклого сепарабельного программирования.
Минимизировать z = х,4 + 2х2 + х]
при ограничениях
х2 + х, + х3 < 4, |-*,+х,|<0,
х2 не ограничена в знаке.
9. Решите как задачу выпуклого сепарабельного программирования следующую задачу.
Минимизировать г = (л;, - 2)2 + 4.(х2 - б)2 при ограничениях
6л:, + 3(х2 + 1)2< 12, л:,, л:2>0.
21.2. Алгоритмы решения задач с ограничениями
21.2.2. Квадратичное программирование
Задача квадратичного программирования имеет следующий вид.
Максимизировать (или минимизировать) г = СХ + XTDX при ограничениях
АХ<Ь, Х>0,
где
X — (х,, х2.....xJT,
О = (с,, с2, сь), b = (b,,b2,...,bm)T,
А =
D =
d,-d
Функция X DX, где D — симметрическая матрица, является квадратичной формой (см. раздел А.З). Матрица D будет отрицательно определенной в задаче максимизации и положительно определенной — в задаче минимизации. Это означает, что функция z является строго выпуклой по переменным X в задаче минимизации и строго вогнутой — в задаче максимизации. Ограничения в этой задаче предполагаются линейными, что гарантирует выпуклость области допустимых решений.
Решение сформулированной задачи основано на использовании необходимых условий Куна-Таккера. Так как целевая функция z строго выпуклая (или вогнутая) и область допустимых решений задачи является выпуклым множеством, эти условия (как показано в разделе 20.2.2) также достаточны для установления наличия глобального оптимума.
Задачу квадратичного программирования рассмотрим для ситуации, когда целевая функция подлежит максимизации. Изменение формулировки задачи при минимизации целевой функции является тривиальным. Общая постановка задачи имеет следующий вид.
Максимизировать г = СХ + XTDX
при ограничениях
G(X) =
<0.
Обозначим через X = (Я,, Я2, Яп)Т и U = (//,, р.2, р.п)т множители Лагранжа, связанные с ограничениями АХ - b < 0 и -X < 0 соответственно. Применяя условия Куна-Таккера, получаем
X>0,U>0, Vz - (Х\ UT)VG(X) = 0,
Глава 21. Алгоритмы нелинейного программирования
= 0, I = 1, 2,т,
PjXj = 0,j = l, 2,...,п, АХ<Ь, -Х<0.
Отсюда имеем
VG(X) =
Vz = С + 2XTD,
Обозначим через S = b - АХ > 0 вектор дополнительных (остаточных) переменных. Тогда приведенные выше условия принимают следующий вид.
-2XTD + ХТА - UT = С, AX + S=b, UjXj = 0 = XiSi для всех i и j, X,U,X,S>0.
Так как DT = D, в результате транспонирования первой системы уравнений получим
-2DX + АТХ - U = Ст. Следовательно, необходимые условия можно записать в виде
-2D А -I 0 АО 0 1
X U гс>л
= 0 = XiSi для всех i и j, X, U, X, S > 0.
Все уравнения, за исключением p.xj = 0 = ЯД, являются линейными относительно переменных X, X, U и S. Следовательно, исходная задача сводится к поиску решения системы линейных уравнений, удовлетворяющему дополнительным условиям fipc! = 0 = ЯД. Поскольку функция z строго вогнутая, а область допустимых решений представляет собой выпуклое множество, допустимое решение, удовлетворяющее всем этим условиям, должно быть единственным и оптимальным.
Решение рассматриваемой системы находится путем реализации этапа I двух-этапного метода (раздел 3.4.2). При этом единственным ограничением является необходимость удовлетворения условий ЯД = 0 = цх. Выполнение этого условия означает, что если переменная Я( в базисном решении принимает положительное значение, то переменная S, не может быть базисной и принимать положительное значение. Аналогично переменные ц. и xj не могут одновременно принимать положительные значения. Это обстоятельство подобно правилу ограниченного ввода в базис, которое было использовано в разделе 21.2.1.
Этап1 завершается обращением в нуль всех искусственных переменных только в том случае, если исходная задача имеет непустое множество допустимых решений.
21.2. Алгоритмы решения задач с ограничениями
Пример 21.2.3
Рассмотрим следующую задачу.
Максимизировать г = 4х, + 6х, - 2х\ - 2х,х, - 2х\
при ограничениях
х, + 2х2 < 2, х,,х2>0.
Эту задачу можно записать в матричной форме
r-2 -iy*
максимизировать г = (4, 6) ' +(х,,х2)
-1
при ограничениях
(1,2)^|,2, х„х2>0.
Условия Куна-Таккера принимают следующий вид.
(4 2 1 2 4 2 1 2 О
-1 0 0^ 0-10 0 0 I,
х\ | ||
= | ||
А | ||
Ч51) |
Начальная симплекс-таблица для этапа I строится путем введения искусственных переменных /?, и R2. Имеем
Базис | *1 | хг | Рг | Я, | Я2 | S1 | Решение | ||
г | -1 | -1 | |||||||
Я | -1 | ||||||||
я2 | -1 | ||||||||
S1 |
Итерация 1. Поскольку //, = 0, вводимой в базис переменной может быть х,, при этом из числа базисных исключается переменная Rr Получаем следующую симплекс-таблицу.
Базис | Х1 | хг | Хл | Рг | я. | Я2 | S1 | Решение | |
г | 3/2 | 1/2 | -1 | -3/2 | |||||
1/2 | 1/4 | -1/4 | 1/4 | ||||||
я2 | 3/2 | 1/2 | -1 | -1/2 | |||||
S1 | 3/2 | -1/4 | 1/4 | -1/4 |
Глава 21. Алгоритмы нелинейного программирования
Итерация 2. Так как /и2 = О, вводимой в базис переменной является х2. В результате приходим к следующей таблице.
Базис | Х1 | хг | А1 | М2 | Я, | я2 | Si | Решение | |
г | -1 | -1 | -2 | ||||||
*1 | 1/3 | -1/3 | 1/3 | -1/3 | 2/3 | ||||
Я1 | -1 | -2 | |||||||
х2 | -1/6 | 1/6 | -1/6 | 2/3 | 2/3 | ||||
Итерация 3. | Так как | *i = | 0, в число базисных можно ввести переменную Яг В ре- | ||||||
зультате получаем симплекс-таблицу. | |||||||||
Базис | х, | хг | Л: | я. | Я2 | Si | Решение | ||
г | -1 | -1 | |||||||
-1/3 | 1/6 | 1/3 | -1/6 | 1/3 | |||||
-1/2 | 1/2 | -1 | |||||||
Хг | 1/6 | -1/12 | -1/6 | 1/12 | 1/2 | 5/6 |
Последняя таблица дает оптимальное решение рассматриваемой на этапе I задачи. Так как г = О, полученное решение хх = 1/3, хг = 5/6 является допустимым. Оптимальное значение z вычисляется подстановкой полученного решения в выражение для целевой функции исходной задачи и равняется 4,16.
Средство Excel Поиск решения можно использовать для решения задач квадратичного программирования. На рис. 21.5 показано решение задачи из данного примера (файл ch21SolverQuadraticPrograinrning.xls). Исходные данные для задачи представлены в таком же виде, как и в задачах линейного программирования (см. раздел 2.4.2). Основное отличие состоит в том, что целевая функция сейчас нелинейна. Поскольку в данном примере целевая функция имеет вид
z = 4х, + 6х2 - Ix1 ~ ^х,х2 - 2x1,
в ячейку D5 записывается формула
=4*В10+6*С10-2*В1 (^2-2*810*С10-2*С10*2
Здесь в ячейках В10 и СЮ записаны значения xt и х2. Отметим, что ячейки В5:С5 не используются (в отличие от задач линейного программирования), поэтому мы ввели в них значения NL, показывающие, что ограничения нелинейны. Чтобы указать, что переменные неотрицательны, надо или установить соответствующую опцию в диалоговом окне Параметры или задать нужные ограничения непосредственно в диалоговом окне Поиск решения.
21.2. Алгоритмы решения задач с ограничениями
D5
* =4*В10+6*С10-2*В10Л2-2"В10*С10-2*С10Л2
А | В | el. | i | F | |||
I | Quadratic Programming Model | ||||||
Input data: | |||||||
x1 | x2 | - | |||||
Totals | Limits | ||||||
Objective | NL | NL | 4 16P6R7 | ||||
Constraint | 2, | <= | |||||
>=0 | >=0 | | ||||||
8 ' | Output results: | ||||||
x1 | x2 | z | |||||
Solution | 0 333333 | 0 833333 | 4 166667 | ||||
____ __ |
Поиск. ешения
хстансеить целевую ячейку |$D$5 Равной. минимальному значению г
г" минимальному значению изменяя ячейки
Рис. 21.5. Решение в Excel задачи примера 21.2.3
УПРАЖНЕНИЯ 21.2.2
1. Дана задача, в которой требуется
максимизировать z = 6х, + Ъх2 - 4jc,x2 - 2х2 - Ъх\
Дата публикования: 2014-11-18; Прочитано: 330 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!