Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Выпуклое прогр_2012.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
193.54 Кб
Скачать

8.3. Задачи выпуклого программирования

Пусть дана система неравенств вида

φi (x1, x2, …, xn) ≤ bi, (i=1, 2, …, m) (8.7)

и функция F = f (x1, x2, …, xn) (8.8)

причем все функции φi(Х) являются выпуклыми на некотором выпуклом множестве М, а функция F либо выпукла на множестве М, либо вогнута. Задача выпуклого программирования (ВП) состоит в отыскании такого решения системы ограничений (8.7), при котором либо выпуклая целевая функция F достигает минимального значения, либо вогнутая функция F достигает максимального значения.

В общем случае задачи ВП являются задачами нелинейного программирования. Выделение задач ВП в специальный класс объясняется экстремальными свойствами выпуклых функций: всякий локальный минимум выпуклой функции (локальный максимум вогнутой функции) является одновременно и глобальным; выпуклая (вогнутая) функция, заданная на замкнутом ограниченном множестве, достигает на этом множестве глобального максимума и глобального минимума. Отсюда вытекает, что если целевая функция F является строго выпуклой (строго вогнутой), то задача ВП всегда имеет единственное решение. В этом случае минимум выпуклой (максимум вогнутой) функции достигается внутри области решений, если там имеется стационарная точка, или на границе этой области, если внутри нее нет стационарной точки.

Пример 8.4. . . . . . . . . .

8.4. Приближенное решение задач выпуклого программирования

методом кусочно-линейной аппроксимации

Функция F(X) называется сепарабельной, если ее можно представить в виде суммы функций, каждая из которых зависит только от одной переменной, т.е. если

F(X) = F1(x1) + F2 (x2) + … + Fn (xn) или (8.9)

( не исключено, что Fj(xj) = 0 при некоторых j).

Пусть в задаче ВП (8.7), (8.8) и функция цели Z, и все ограничения φi являются сепарабельными. Тогда задача имеет вид: найти минимум (максимум) функции при ограничениях

(8.10)

Идея метода кусочно-линейной аппроксимации состоит в том, что все fi и все φij заменяются ломаными линиями, состоящими из прямолинейных отрезков. При этом исходная задача ВП заменяется новой, приближенной задачей, которая является задачей линейного программирования.

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

Рассмотрим кусочно-линейную аппроксимацию функции h(x) одной переменной, заданной на отрезке [0, a]. Разобьем этот отрезок на r частей точками x0 < x1 < … < xr так, чтобы x0=0, xr=a (рис. 8.2). Вычислим значения функции hk(x) (k=0, …, r) в этих точках. Соединим попарно точки (xk, hk) и (xk+1, hk+1) отрезками прямых. Состоящая из этих отрезков ломаная аппроксимирует функцию h(x) на отрезке [0, a].

Уравнение участка ломаной между точками (xk, hk) и (xk+1, hk+1) имеет вид (уравнение прямой по двум точкам). Если каждое из отношений в этом равенстве обозначить через λ, то получим:

x= λxk+1 + (1- λ)xk,

= λhk+1 + (1-λ)hk причем 0 ≤ λ ≤ 1 (8.11)

Отметим, что для каждого x [xk, xk+1] существует единственное значение λ, удовлетворяющее условия (8.11). Обозначив 1- λ = λk, λ= λk+1, можно переписать (8.10) в виде:

x = λk xk + λ k+1 xk+1,

= λk hk + λ k+1 hk+1 (8.12)

где λk + λ k+1=1, λk ≥0, λ k+1≥0.

Таким образом, для любого x [0, a] уравнение ломаной можно записать в виде:

и λk ≥ 0, (k=0, …,r) (8.13)

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

Возвращаясь к задаче ВП с сепарабельными функциями, отметим, что, прежде всего (в зависимости от системы ограничений) нужно определить интервал изменения каждой переменной xj. Затем каждый этот интервал разбивается на части точками xjk и с использованием формул (8.13) строится кусочно-линейная аппроксимация для функций fi и φij. После этого можно для исходной задачи (8.10) записать приближенную задачу:

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

при ограничениях (8.14)

xj ≥ 0, j=1, 2, …, n

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

Пример 8.5. . . . . . .

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