Введение в математическое программирование

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

Разбить на страницы
Показывать лекцию целиком

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

1. Метод штрафных функций

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

Основная идея метода штрафной функции состоит в преобразовании задачи минимизации функции

z=f(x)

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

Z=f(x)+P(x).

Функция Р(х) является штрафной. Необходимо, чтобы при нарушении ограничений она "штрафовала" функцию Z, т.е. увеличивала ее значение. В этом случае минимум Z будет находиться внутри области ограничений. Функция Р(х), удовлетворяющая этому условию, может быть не единственной. Задачу минимизации можно сформулировать следующим образом:$$\text{минимизировать функцию } z=f(x)$$ $$\text{при ограничениях } c_j(x) > 0, \; j=1,2,\ldots,m.$$

Замечание. Ограничение вида "меньше или равно", $$h(х) \le 0$$, всегда может быть записано как $$-h(x) \ge 0$$, поэтому в приведенной выше формулировке нет потери общности.

Функцию Р(х) удобно записать следующим образом:$$P(x) = r \sum_{j=1}^m \frac{1}{c_j(x)} .$$ где r - положительная величина. Тогда функция $$Z = \varphi(х,r)$$ принимает вид$$Z = \varphi (x, r) = f(x) + \sum_{j=1}^m \frac{1}{c_j(x)} .$$

Если x принимает допустимые значения, т.е. значения, для которых $$c_j(х) \ge 0$$, то Z принимает значения, которые больше соответствующих значений f(х) (истинной целевой функции данной задачи), и разность можно уменьшить за счет того, что r может быть очень малой величиной. Но если x принимает значения, которые хотя и являются допустимыми, но близки к границе области ограничений, и по крайней мере одна из функций cj(x) близка к нулю, тогда значения функции Р(х) и, следовательно, значения функции Z станут очень велики. Таким образом, влияние функции Р(х) состоит в создании "гребня с крутыми краями" вдоль каждой границы области ограничений. Следовательно, если поиск начинается из допустимой точки и осуществляется поиск минимума функции $$\varphi(х,r)$$ без ограничений, то минимум, конечно, будет достигаться внутри допустимой области для задачи с ограничениями. Полагая r достаточно малой величиной, для того чтобы влияние Р(х) было малым в точке минимума, мы можем сделать точку минимума функции $$\varphi(х,r)$$ без ограничений совпадающей с точкой минимума функции f(х) с ограничениями.

В общем случае невозможно аналитически определить положение минимума функции $$\varphi (x,r)$$, рассматривая ее как обычную функцию от r. Для его определения необходимо обратиться к численным методам.

Следует отметить, что если целевая функция f(х) выпукла, а функция сj(х) вогнута, то функция $$\varphi (х, r)$$, заданная уравнением (1.4), также является выпуклой функцией в области ограничений, которая сама является выпуклой. Следовательно, $$\varphi (х, r)$$ имеет для данного значения r единственный минимум.

Если x1 и x2 - точки, принадлежащие допустимой области, т.е. $$с_j(х_1) \ge 0$$ и $$c_j(х_2) \ge 0$$ для j = 1,2,...,m, то при $$0 < \Theta < 1$$ справедливо неравенство$$c_j (\Theta x_2 + (1 - \Theta)x) \ge \Theta c_j (x_2) + (1 - \Theta) c_j (x_1) \ge 0 ,$$ так как функция сj(х) выпукла. Следовательно, допустимая область является выпуклой.

Таким образом, точка $$х_2 + (1 - \Theta) x_1$$ при $$0 < \Theta < 1$$ также является допустимой. Кроме того, функция 1/сj(х) является выпуклой для всех x, которые удовлетворяют неравенству $$c_j(х) \ge 0$$. Если h(х) = 1/сj(х), то$$\nabla h (x) = \frac{-\nabla c_j (x)}{[c_j(x)]^2} .$$ где $$c(х)_{ik} = \partial^2 с_j(x)/\partial x_i \partial x_k$$ есть гессиан функции сj(х). Тогда, если p - произвольный вектор, то справедливо равенство$$p^T \mathbf{H} (x) p = -\frac{p^T C(x)p}{[c_j (x)]^2} + \frac{2[p^T \nabla c_j (x)]^2}{[c_j (x)]^3} ,$$

где всегда рTН(х)р > 0, так как С(х) - отрицательно определенная матрица ввиду того, что сj(х) - выпуклая функция и $$c_j(х) \ge 0$$. Тогда матрица Н(х) положительно определена и 1/сj(х) выпукла во вcей области. Eсли r > 0, то функция Р(х), заданная уравнением (1.3), и функция $$\varphi (х, r)$$, заданная уравнением (1.4), также выпуклы.

Предположим, что $$x^*_1, х^*_2, \ldots , х^*_k$$ - минимальные точки функции $$\varphi (х, r)$$ для убывающей последовательности значений r1, r2, ..., rk, ..., стремящейся к нулю. Тогда последовательность точек $$x^*_1, х^*_2, \ldots , х^*_k$$, сходится к оптимальному решению задачи с ограничениями (см. уравнения (1.1) и (1.2)) при $$r_k \rightarrow 0$$. Следовательно,$$\lim x_k^* = x^*$$ и$$\lim_{r_k \rightarrow 0} [\min \varphi (x, r_k)] = f(x^*)$$

Полученный результат можно доказать следующим образом. Поскольку f(х) непрерывная функция и $$f(х^*) \le f(х)$$ для всех допустимых точек, то, задав произвольное достаточно малое значение $$\varepsilon$$, можно найти допустимую точку х', такую, что$$f(x') < f(x^*) + \varepsilon / 2 .$$

Поскольку rk - убывающая последовательность, стремящаяся к нулю, можно найти такое значение K, что для $$k \ge K$$ справедливо неравенство$$r_k \leqslant \left\{ \frac{\varepsilon}{2m} \min_j \left[ \frac{1}{c_j (x')} \right] \right\}.$$

Поскольку P(x) > 0 из определения функции $$\varphi(x, r)$$, имеем$$f(x^*) \leqslant \min \varphi (x, r_k) = \varphi (x_k^*, r_k) .$$ где $$х^*_k$$ - минимальная точка функции $$\varphi(х, r_k)$$ для задачи без ограничений. Кроме того, если k > К, то rk < rK и справедливо неравенство$$\varphi(x_k^*, r_k) \leqslant \varphi(x_K^*, r_k).$$

Это следует из того, что, поскольку $$х^*_k$$ минимизирует функцию $$\varphi(х, r_k)$$ в любой другой точке области x, в частности в точке $$х^*_k$$, функция будет принимать значение, большее чем $$\varphi(х_k^*, r_k)$$. Поэтому$$\begin{aligned} \varphi(x_K^*, r_K) = f(x_K^*) + r_K \sum_{j=1}^m \frac{1}{c_j(x_K^*)} > \\ > f(x_K^*) + r_k \sum_{j=1}^m \frac{c_j}{x_K^*} , \end{aligned}$$ поскольку rk<rK.

Следовательно,$$\varphi(x_K^*,r_K) > \varphi(x_K^*,r_k)$$

Тогда$$f(x^*) \leqslant \varphi(x_k^*,r_k) \leqslant \varphi(x_K^*,r_k) < \varphi(x_K^*,r_K).$$

Но так как значение $$x^*_K$$ минимизирует функцию $$\varphi(x, r_K)$$, то$$\varphi(x_K^*,r_K) \leqslant \varphi(x',r_K) = f(x') + r_K \sum_{j=1}^m \frac{1}{c_j(x')} .$$

Следовательно, из уравнений (1.11) и (1.12) получим$$f(x^*) \leqslant \varphi (x_k^*,r_k) \leqslant f(x') +r_K \sum_{j=1}^m \frac{1}{c_j(x')}$$

Из уравнения (1.8) следует, что$$f(x') + r_K \sum_{j=1}^m \frac{1}{c_j(x')} \leqslant f(x') + \frac{\varepsilon}{2} .$$

Тогда из уравнения (1.7) следует, что$$f(x^*) \leqslant \varphi (x_k^*, r_k) < f(x^*) + \frac{\varepsilon}{2} + \frac{\varepsilon}{2} .$$ и$$\varphi (x_k^*, t_k) - f(x^*) < \varepsilon .$$

Поскольку $$\varepsilon$$ может быть выбрано произвольно малым, всегда можно найти такое значение k, при котором$$f(x^*) < \varphi (x_k^*,r_k) < f(x^*) + \varepsilon$$

Таким образом, при $$k \rightarrow \infty \; (r_k \rightarrow 0)$$$$\lim_{r_k \rightarrow 0} \varphi(x_k^*,r_k)=f(x^*).$$

Из приведенного выше доказательства следует, что при $$r_k \rightarrow 0$$$$f(x_k^*) \rightarrow f(x^*) \quad \text{и} \quad r_k \sum_{j=1}^m \frac{1}{c_j(x_k^*)} \rightarrow 0.$$

В качестве упражнения оставлено доказательство того, что $$f(х^*_1), f(х^*_2), \ldots, f(x^*_3)$$ образуют убывающую последовательность, такую, что$$f(x_{k+1}^*) < f(x_k^*).$$

Очевидно, что если функция f(х) выпукла, а функция cj(х) при j = 1,...,n вогнута, то функция f(х) при наличии ограничении имеет единственный минимум.

2. Метод SUMT Фиакко и Маккормика

Результаты предыдущего раздела показывают, что можно решить задачу минимизации с ограничениями (минимизировать функцию f(х) при ограничениях $$c_j(x) \ge 0$$, решая для последовательности значений r, стремящейся к нулю, задач без ограничений следующего вида:$$\text{минимизировать функцию} \quad \varphi(x,r) = f(x) + к \sum_{j=1}^m \frac{1}{c_j(x)} .$$

Метод SUMT (sequential unconstrained minimisation technique) был впервые предложен Кэрролом в 1961 году. Его идеи были исследованы Фиакко и Маккормиком, которые не только рассмотрели теоретические вопросы и сходимость метода, но создали практическую систему для его реализации. Редко можно будет использовать данный метод так, как это делалось в двух примерах из предыдущего раздела, поскольку далеко не всегда можно найти оптимальную точку для функций $$\varphi (х, r)$$ в виде функции х*(r), предел которой при $$r \rightarrow 0$$ можно исследовать.

Поэтому для того, чтобы можно было применить настоящий метод на практике, необходимо построить вычислительный метод, использующий теоретическое свойство сходимости, рассмотренное в предыдущем разделе. Теоретически здесь не возникает трудностей. Для заданных функцией f(х) ограничениях $$с_j(х) \ge 0, j = 1,\ldots, n$$, необходимо выбрать начальное значение r = r0, чтобы сформировать функцию $$\varphi(х, r_0)$$, которая минимизируется без ограничений методом ДФП. Найдя минимум функции $$\varphi(х, r_0)$$, необходимо уменьшить значение r. Это можно сделать эффективно и просто, если найти r1 = r0/c, где константа с > 1. Затем необходимо минимизировать функцию $$\varphi(х, r_k)$$, снова используя метод ДФП. Таким образом, будет разработана итерационная процедура. На k -м шаге минимизируется функция $$\varphi(х, r_k)$$, минимум которой находится в точке $$х^*_k$$. Важно, что ее можно использовать в дальнейшем в качестве первой точки в итерационной процедуре минимизации функции $$\varphi(х, г_{k-1})$$, где rk+1 = гk. Теперь ясно, что последовательность rk убывает и стремится к нулю, следовательно, последовательность точек минимумов будет сходиться к решению задачи с ограничениями.

Ниже приведена блок-схема (рис. 13.1) метода SUMT. Остается уточнить некоторые детали.

Предполагается, что в начале процедуры имеется допустимая точка. Важно, чтобы в процессе последующих вычислений получаемые точки принадлежали допустимой области. Метод ДФП является градиентным методом минимизации, использующим при одномерном поиске кубическую интерполяцию. Тогда, по мере приближения точки x к границе внутри допустимой области $$\varphi(х, r) \rightarrow \infty$$, а по мере приближения точки x к границе снаружи допустимой области $$\varphi(х, r) \rightarrow -\infty$$.

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

(рис 13.1)

Выбор начального значения r может оказаться важным с точки зрения сокращения числа итераций при минимизации функции $$\varphi (х, r)$$. Если сначала r выбрано очень малым, для того чтобы функция $$\varphi (х, r)$$ мало отличалась от функции f(x), то метод будет сходиться очень быстро. Однако такой выбор может привести к серьезным осложнениям при вычислениях. Для малых r функция $$\varphi (х, r)$$ будет быстро меняться в окрестности минимума, что может вызвать затруднения при использовании градиентного метода. Слишком же большое значение r может привести к тому, что штрафная функция Р(х) в уравнении (1.4) станет доминирующей. Поэтому "разумный" выбор начальной точки очень важен. Для многих задач "разумным" значением для начальной точки является значение r0 = 1. Более рациональный подход состоит в том, чтобы понять, что если начальная точка x будет лежать вблизи минимума функции$$\varphi(x,r)=f(x)+r \sum_{j=1}^m \frac{1}{c_j(x)} =f(x)+rP(x),$$ то градиент функции $$\varphi (х, r)$$ будет мал:$$\nabla \varphi (x,r) = \nabla f(x) + r \nabla P(x).$$

Квадрат нормы этого вектора$$\nabla f(x)^T \nabla f(x) + 2 r \nabla f(x)^T \nabla P(x) + r^2 \nabla P(x)^T \nabla p(x)$$ и минимум будет достигнут при$$r = \frac{-\nabla f(x)^T \nabla P(x)}{\nabla P(x)^T \nabla P(x)} .$$

Это начальное значение r, как предполагает Фиакко и Маккормик, должно давать хорошие результаты в общем случае. Уменьшить значение r очень простo: rk+1 = rk, где с = 10.

Для минимизации функции $$\varphi (x,r_{k+})$$ используется метод ДФП. В качестве начальной точки используется оптимальная точка функции $$\varphi (x,r_{r})$$, и это оказывается очень эффективным. Oднако необходимо обратить внимание на то, чтобы в процессе одномерного поиска не выйти за область ограничений. Грубым, но вполне эффективным является следующий метод. Пусть имеются точка p и направление поиска d=-Hg. Следующая точка $$q=р+\lambda d$$ необходима для осуществления кубической интерполяции. Начнем со значения $$\lambda =2$$ (удвоенный шаг в методе Ньютона) и проверим, является ли точка q допустимой, т.е. выполняется ли неравенство сj(q) > 0 для всех j. Если оно выполняется, то $$\lambda$$ не меняется, но если неравенство не выполняется, то $$\lambda$$ заменяется на $$\lambda /\alpha$$ находится новая точка q и вновь производится проверка. В конце концов допустимая точка q будет найдена, и тогда можно осуществить интерполяцию. Выбор значения $$\alpha$$ не вполне очевиден. Выбор $$\alpha =2$$ был успешным, при $$\alpha =1,05$$ длина шага становится близкой к расстоянию до ближайшей границы области ограничений и поэтому является "безопасной" для интерполяционной процедуры.

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

Функция $$\varphi (х,r)$$ минимизируется до тех пор, пока два последовательных значения F1 и F2 не станут такими, что |(F1–F2)/F1|<0,000001. Это условие, конечно, может быть изменено. В соответствии с соотношением (1.17) процесс минимизации заканчивается, когда$$r \sum_{j=1}^m \frac{1}{c_j (x_k^*)} < 0,000001 .$$

3. Метод барьерных поверхностей (метод Кэррола)

Если ограничения в задаче имеют вид чистых неравенств, т.е.$$a_i < g_i (\overline{X}) < b_i , \quad i=\overline{1,m} ,$$ то присоединенная функция может быть построена в виде так называемого барьера:$$G(\overline{X}) = \sum_{i=1}^m \frac{1}{(b_i - g_i (\overline{X}))(g_i(\overline{X})-a_i)} .$$

Как только одна из функций $$g_i(\overline{X})$$ достигнет своего предела ( ai или bi ), штраф $$G(\overline{X})) \rightarrow \infty$$, т.е. возникнет т.н. "барьер".

Метод был предложен Кэрролом, и получил название метода барьерных поверхностей (МБП) Кэррола.

При этом ограничения в виде равенств и неравенств всегда можно преобразовать в ограничения в виде чистых неравенств, если к величине ограничения добавить очень малое число (например, 10-5 ).

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

Пусть требуется спроектировать контейнер в форме прямоугольного параллелепипеда объемом V=1м3. Желательно, чтобы при изготовлении контейнеров затрачивалось как можно меньше материалов. Чтобы его было удобно брать автопогрузчиком, ширина должна быть не менее 1,5 м.

Строим математическую модель контейнера.

1) Формируем вектор переменных $$\overline{X}$$. Параметрами вектора переменных являются: длина x1, ширина x2 и высота x3 контейнера, т.е.$$\overline{X} = [x_1,x_2,x_3].$$ Размерность задачи n=3.

2) Строим целевую функцию $$F(\overline{X})$$. При условии постоянства толщины стенок контейнера требование минимизировать количество материала можно свести к минимизации площади боковой поверхности контейнера.

Тогда$$F(\overline{X}) = S(\overline{X}) = 2(x_1 x_2 + x_2 x_3 + x_1 x_3).$$

3) Формируем ограничения.

Ограничение-равенство:$$\text{Объем } V = x_1 \cdot x_2 \cdot x_3 = 1\text{м}^2 .$$ Ограничение-неравенство:$$\text{Ширина } x_2 \ge 1,5 \text{м}.$$

Упростим математическую модель контейнера. Ограничение – равенство (3.3) в задаче, благодаря своей простоте, позволяет уменьшить размерность задачи, т.е.

x3 = 1/x1x2 .

В результате параметр x3 можно исключить из вектора проектных параметров, и из трехмерной задачи мы получим двумерную. Тогда вектор $$\overline{X}$$ будет иметь вид:$$\overline{X}=[x_1,x_2].$$ Целевая функция также упростится:$$F(\overline{X}) = 2(x_1 x_2 + 1/x_1 + 1/x_2).$$ Ограничения будут иметь вид:$$x_1 > 0, \quad x_2 \ge 1,5\text{м}.$$

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

Найти вектор $$\overline{X} = [x_1, x_2]$$, доставляющий минимум целевой функции$$F(\overline{X}) = 2(x_1 x_2 + 1/x_1 + 1/x_2),$$ при ограничениях в виде неравенств$$x_1 > 0, \quad x_2 \ge 1,5\text{м}.$$

В данной задаче барьерная функция может иметь вид:$$G(\overline{X}) = \frac{1}{x_1 - 1,5} + \frac{1}{x_2} .$$

Как только один из параметров x1 или x2 достигнет своего предела, штраф $$G(\overline{X}) \rightarrow \infty$$, т.е. возникнет т.н. "барьер".

Штрафная функция в задаче проектирования контейнера будет иметь вид:$$P(\overline{X},RC)=F(\overline{X})+RC \cdot G(\overline{X}) = 2 \left( x_1 \cdot x_2 + \frac{1}{x_1} + \frac{1}{x_2} \right) + RC \left( \frac{1}{x_1 - 1,5} + \frac{1}{x_2} \right).$$

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

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

Задачи нелинейного программирования самого различного физического смысла допускают геометрическую интерпретацию. Рассмотрим такую интерпретацию для наиболее наглядного и простого случая двух переменных, $$\overline{X}=[x_1,x_2], \; E^n$$ - плоскость.

Пример.

Найти вектор $$\overline{X}=[x_1,x_2]$$, доставляющий минимум$$F(\overline{X}) = x_1^2 + x_2 ,$$ при ограничениях$$\begin{gathered} g_1(\overline{X}) \rightarrow -(x_1^2 + x_2^2) + 9 \ge 0, \\ g_2(\overline{X}) \rightarrow -x_1 - x_2 + 1 \ge 0. \end{gathered}$$

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

Ограничение $$g_1(\overline{X})$$ будет иметь вид:$$x_1^2 + x_2^2 \le 9.$$ Тогда ограничение $$g_1(\overline{X})$$ отсекает на плоскости круг радиусом r=3.

Ограничение $$g_2(\overline{X})$$ будет иметь вид:$$x_1 + x_2 \le 1 .$$ Тогда ограничение $$g_2(\overline{X})$$ отсекает на плоскости полуплоскость, ограниченную уравнением x1+x2=1.

В результате область допустимых решений G будет иметь вид, представленный на рис 13.2.

Строим линии уровня целевой функции (4.1). Линией уровня называется множество точек, с координатами [x1,x2] для которых целевая функция $$F(\overline{X})$$ имеет постоянное значение, т.е.$$x_1^2 + x_2 = C .$$ Отсюда $$x_2 = C- x_1^2$$.

Меняя значения C, получим различные линии уровня.$$\begin{aligned} \text{Если } C=\phantom{-}0, \; \text{то} \; x_2 = -x_1^2, \\ C=-1, \; \text{то} \; x_2 = -1 -x_1^2, \\ C=-2, \; \text{то} \; x_2 = -2 -x_1^2, \\ C=-3, \; \text{то} \; x_2 = -3 -x_1^2. \end{aligned}$$

Как видно, линии уровня целевой функции (4.1) - это квадратичные параболы, симметричные относительно x2. Положение каждой параболы зависит от значения константы C (рис 13.2.). Исследуя полученные линии уровня получим что минимальное значение целевой функции (4.1) находится на границе области G, в точке с координатами [0,-3].

(рис 13.2)
Страницы:

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

1. Метод штрафных функций

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

Основная идея метода штрафной функции состоит в преобразовании задачи минимизации функции

z=f(x)

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

Z=f(x)+P(x).

Функция Р(х) является штрафной. Необходимо, чтобы при нарушении ограничений она "штрафовала" функцию Z, т.е. увеличивала ее значение. В этом случае минимум Z будет находиться внутри области ограничений. Функция Р(х), удовлетворяющая этому условию, может быть не единственной. Задачу минимизации можно сформулировать следующим образом:$$\text{минимизировать функцию } z=f(x)$$ $$\text{при ограничениях } c_j(x) > 0, \; j=1,2,\ldots,m.$$

Замечание. Ограничение вида "меньше или равно", $$h(х) \le 0$$, всегда может быть записано как $$-h(x) \ge 0$$, поэтому в приведенной выше формулировке нет потери общности.

Функцию Р(х) удобно записать следующим образом:$$P(x) = r \sum_{j=1}^m \frac{1}{c_j(x)} .$$ где r - положительная величина. Тогда функция $$Z = \varphi(х,r)$$ принимает вид$$Z = \varphi (x, r) = f(x) + \sum_{j=1}^m \frac{1}{c_j(x)} .$$

Если x принимает допустимые значения, т.е. значения, для которых $$c_j(х) \ge 0$$, то Z принимает значения, которые больше соответствующих значений f(х) (истинной целевой функции данной задачи), и разность можно уменьшить за счет того, что r может быть очень малой величиной. Но если x принимает значения, которые хотя и являются допустимыми, но близки к границе области ограничений, и по крайней мере одна из функций cj(x) близка к нулю, тогда значения функции Р(х) и, следовательно, значения функции Z станут очень велики. Таким образом, влияние функции Р(х) состоит в создании "гребня с крутыми краями" вдоль каждой границы области ограничений. Следовательно, если поиск начинается из допустимой точки и осуществляется поиск минимума функции $$\varphi(х,r)$$ без ограничений, то минимум, конечно, будет достигаться внутри допустимой области для задачи с ограничениями. Полагая r достаточно малой величиной, для того чтобы влияние Р(х) было малым в точке минимума, мы можем сделать точку минимума функции $$\varphi(х,r)$$ без ограничений совпадающей с точкой минимума функции f(х) с ограничениями.

В общем случае невозможно аналитически определить положение минимума функции $$\varphi (x,r)$$, рассматривая ее как обычную функцию от r. Для его определения необходимо обратиться к численным методам.

Следует отметить, что если целевая функция f(х) выпукла, а функция сj(х) вогнута, то функция $$\varphi (х, r)$$, заданная уравнением (1.4), также является выпуклой функцией в области ограничений, которая сама является выпуклой. Следовательно, $$\varphi (х, r)$$ имеет для данного значения r единственный минимум.

Если x1 и x2 - точки, принадлежащие допустимой области, т.е. $$с_j(х_1) \ge 0$$ и $$c_j(х_2) \ge 0$$ для j = 1,2,...,m, то при $$0 < \Theta < 1$$ справедливо неравенство$$c_j (\Theta x_2 + (1 - \Theta)x) \ge \Theta c_j (x_2) + (1 - \Theta) c_j (x_1) \ge 0 ,$$ так как функция сj(х) выпукла. Следовательно, допустимая область является выпуклой.

Таким образом, точка $$х_2 + (1 - \Theta) x_1$$ при $$0 < \Theta < 1$$ также является допустимой. Кроме того, функция 1/сj(х) является выпуклой для всех x, которые удовлетворяют неравенству $$c_j(х) \ge 0$$. Если h(х) = 1/сj(х), то$$\nabla h (x) = \frac{-\nabla c_j (x)}{[c_j(x)]^2} .$$ где $$c(х)_{ik} = \partial^2 с_j(x)/\partial x_i \partial x_k$$ есть гессиан функции сj(х). Тогда, если p - произвольный вектор, то справедливо равенство$$p^T \mathbf{H} (x) p = -\frac{p^T C(x)p}{[c_j (x)]^2} + \frac{2[p^T \nabla c_j (x)]^2}{[c_j (x)]^3} ,$$

где всегда рTН(х)р > 0, так как С(х) - отрицательно определенная матрица ввиду того, что сj(х) - выпуклая функция и $$c_j(х) \ge 0$$. Тогда матрица Н(х) положительно определена и 1/сj(х) выпукла во вcей области. Eсли r > 0, то функция Р(х), заданная уравнением (1.3), и функция $$\varphi (х, r)$$, заданная уравнением (1.4), также выпуклы.

Предположим, что $$x^*_1, х^*_2, \ldots , х^*_k$$ - минимальные точки функции $$\varphi (х, r)$$ для убывающей последовательности значений r1, r2, ..., rk, ..., стремящейся к нулю. Тогда последовательность точек $$x^*_1, х^*_2, \ldots , х^*_k$$, сходится к оптимальному решению задачи с ограничениями (см. уравнения (1.1) и (1.2)) при $$r_k \rightarrow 0$$. Следовательно,$$\lim x_k^* = x^*$$ и$$\lim_{r_k \rightarrow 0} [\min \varphi (x, r_k)] = f(x^*)$$

Полученный результат можно доказать следующим образом. Поскольку f(х) непрерывная функция и $$f(х^*) \le f(х)$$ для всех допустимых точек, то, задав произвольное достаточно малое значение $$\varepsilon$$, можно найти допустимую точку х', такую, что$$f(x') < f(x^*) + \varepsilon / 2 .$$

Поскольку rk - убывающая последовательность, стремящаяся к нулю, можно найти такое значение K, что для $$k \ge K$$ справедливо неравенство$$r_k \leqslant \left\{ \frac{\varepsilon}{2m} \min_j \left[ \frac{1}{c_j (x')} \right] \right\}.$$

Поскольку P(x) > 0 из определения функции $$\varphi(x, r)$$, имеем$$f(x^*) \leqslant \min \varphi (x, r_k) = \varphi (x_k^*, r_k) .$$ где $$х^*_k$$ - минимальная точка функции $$\varphi(х, r_k)$$ для задачи без ограничений. Кроме того, если k > К, то rk < rK и справедливо неравенство$$\varphi(x_k^*, r_k) \leqslant \varphi(x_K^*, r_k).$$

Это следует из того, что, поскольку $$х^*_k$$ минимизирует функцию $$\varphi(х, r_k)$$ в любой другой точке области x, в частности в точке $$х^*_k$$, функция будет принимать значение, большее чем $$\varphi(х_k^*, r_k)$$. Поэтому$$\begin{aligned} \varphi(x_K^*, r_K) = f(x_K^*) + r_K \sum_{j=1}^m \frac{1}{c_j(x_K^*)} > \\ > f(x_K^*) + r_k \sum_{j=1}^m \frac{c_j}{x_K^*} , \end{aligned}$$ поскольку rk<rK.

Следовательно,$$\varphi(x_K^*,r_K) > \varphi(x_K^*,r_k)$$

Тогда$$f(x^*) \leqslant \varphi(x_k^*,r_k) \leqslant \varphi(x_K^*,r_k) < \varphi(x_K^*,r_K).$$

Но так как значение $$x^*_K$$ минимизирует функцию $$\varphi(x, r_K)$$, то$$\varphi(x_K^*,r_K) \leqslant \varphi(x',r_K) = f(x') + r_K \sum_{j=1}^m \frac{1}{c_j(x')} .$$

Следовательно, из уравнений (1.11) и (1.12) получим$$f(x^*) \leqslant \varphi (x_k^*,r_k) \leqslant f(x') +r_K \sum_{j=1}^m \frac{1}{c_j(x')}$$

Из уравнения (1.8) следует, что$$f(x') + r_K \sum_{j=1}^m \frac{1}{c_j(x')} \leqslant f(x') + \frac{\varepsilon}{2} .$$

Тогда из уравнения (1.7) следует, что$$f(x^*) \leqslant \varphi (x_k^*, r_k) < f(x^*) + \frac{\varepsilon}{2} + \frac{\varepsilon}{2} .$$ и$$\varphi (x_k^*, t_k) - f(x^*) < \varepsilon .$$

Поскольку $$\varepsilon$$ может быть выбрано произвольно малым, всегда можно найти такое значение k, при котором$$f(x^*) < \varphi (x_k^*,r_k) < f(x^*) + \varepsilon$$

Таким образом, при $$k \rightarrow \infty \; (r_k \rightarrow 0)$$$$\lim_{r_k \rightarrow 0} \varphi(x_k^*,r_k)=f(x^*).$$

Из приведенного выше доказательства следует, что при $$r_k \rightarrow 0$$$$f(x_k^*) \rightarrow f(x^*) \quad \text{и} \quad r_k \sum_{j=1}^m \frac{1}{c_j(x_k^*)} \rightarrow 0.$$

В качестве упражнения оставлено доказательство того, что $$f(х^*_1), f(х^*_2), \ldots, f(x^*_3)$$ образуют убывающую последовательность, такую, что$$f(x_{k+1}^*) < f(x_k^*).$$

Очевидно, что если функция f(х) выпукла, а функция cj(х) при j = 1,...,n вогнута, то функция f(х) при наличии ограничении имеет единственный минимум.

2. Метод SUMT Фиакко и Маккормика

Результаты предыдущего раздела показывают, что можно решить задачу минимизации с ограничениями (минимизировать функцию f(х) при ограничениях $$c_j(x) \ge 0$$, решая для последовательности значений r, стремящейся к нулю, задач без ограничений следующего вида:$$\text{минимизировать функцию} \quad \varphi(x,r) = f(x) + к \sum_{j=1}^m \frac{1}{c_j(x)} .$$

Метод SUMT (sequential unconstrained minimisation technique) был впервые предложен Кэрролом в 1961 году. Его идеи были исследованы Фиакко и Маккормиком, которые не только рассмотрели теоретические вопросы и сходимость метода, но создали практическую систему для его реализации. Редко можно будет использовать данный метод так, как это делалось в двух примерах из предыдущего раздела, поскольку далеко не всегда можно найти оптимальную точку для функций $$\varphi (х, r)$$ в виде функции х*(r), предел которой при $$r \rightarrow 0$$ можно исследовать.

Поэтому для того, чтобы можно было применить настоящий метод на практике, необходимо построить вычислительный метод, использующий теоретическое свойство сходимости, рассмотренное в предыдущем разделе. Теоретически здесь не возникает трудностей. Для заданных функцией f(х) ограничениях $$с_j(х) \ge 0, j = 1,\ldots, n$$, необходимо выбрать начальное значение r = r0, чтобы сформировать функцию $$\varphi(х, r_0)$$, которая минимизируется без ограничений методом ДФП. Найдя минимум функции $$\varphi(х, r_0)$$, необходимо уменьшить значение r. Это можно сделать эффективно и просто, если найти r1 = r0/c, где константа с > 1. Затем необходимо минимизировать функцию $$\varphi(х, r_k)$$, снова используя метод ДФП. Таким образом, будет разработана итерационная процедура. На k -м шаге минимизируется функция $$\varphi(х, r_k)$$, минимум которой находится в точке $$х^*_k$$. Важно, что ее можно использовать в дальнейшем в качестве первой точки в итерационной процедуре минимизации функции $$\varphi(х, г_{k-1})$$, где rk+1 = гk. Теперь ясно, что последовательность rk убывает и стремится к нулю, следовательно, последовательность точек минимумов будет сходиться к решению задачи с ограничениями.

Ниже приведена блок-схема (рис. 13.1) метода SUMT. Остается уточнить некоторые детали.

Предполагается, что в начале процедуры имеется допустимая точка. Важно, чтобы в процессе последующих вычислений получаемые точки принадлежали допустимой области. Метод ДФП является градиентным методом минимизации, использующим при одномерном поиске кубическую интерполяцию. Тогда, по мере приближения точки x к границе внутри допустимой области $$\varphi(х, r) \rightarrow \infty$$, а по мере приближения точки x к границе снаружи допустимой области $$\varphi(х, r) \rightarrow -\infty$$.

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

(рис 13.1)

Выбор начального значения r может оказаться важным с точки зрения сокращения числа итераций при минимизации функции $$\varphi (х, r)$$. Если сначала r выбрано очень малым, для того чтобы функция $$\varphi (х, r)$$ мало отличалась от функции f(x), то метод будет сходиться очень быстро. Однако такой выбор может привести к серьезным осложнениям при вычислениях. Для малых r функция $$\varphi (х, r)$$ будет быстро меняться в окрестности минимума, что может вызвать затруднения при использовании градиентного метода. Слишком же большое значение r может привести к тому, что штрафная функция Р(х) в уравнении (1.4) станет доминирующей. Поэтому "разумный" выбор начальной точки очень важен. Для многих задач "разумным" значением для начальной точки является значение r0 = 1. Более рациональный подход состоит в том, чтобы понять, что если начальная точка x будет лежать вблизи минимума функции$$\varphi(x,r)=f(x)+r \sum_{j=1}^m \frac{1}{c_j(x)} =f(x)+rP(x),$$ то градиент функции $$\varphi (х, r)$$ будет мал:$$\nabla \varphi (x,r) = \nabla f(x) + r \nabla P(x).$$

Квадрат нормы этого вектора$$\nabla f(x)^T \nabla f(x) + 2 r \nabla f(x)^T \nabla P(x) + r^2 \nabla P(x)^T \nabla p(x)$$ и минимум будет достигнут при$$r = \frac{-\nabla f(x)^T \nabla P(x)}{\nabla P(x)^T \nabla P(x)} .$$

Это начальное значение r, как предполагает Фиакко и Маккормик, должно давать хорошие результаты в общем случае. Уменьшить значение r очень простo: rk+1 = rk, где с = 10.

Для минимизации функции $$\varphi (x,r_{k+})$$ используется метод ДФП. В качестве начальной точки используется оптимальная точка функции $$\varphi (x,r_{r})$$, и это оказывается очень эффективным. Oднако необходимо обратить внимание на то, чтобы в процессе одномерного поиска не выйти за область ограничений. Грубым, но вполне эффективным является следующий метод. Пусть имеются точка p и направление поиска d=-Hg. Следующая точка $$q=р+\lambda d$$ необходима для осуществления кубической интерполяции. Начнем со значения $$\lambda =2$$ (удвоенный шаг в методе Ньютона) и проверим, является ли точка q допустимой, т.е. выполняется ли неравенство сj(q) > 0 для всех j. Если оно выполняется, то $$\lambda$$ не меняется, но если неравенство не выполняется, то $$\lambda$$ заменяется на $$\lambda /\alpha$$ находится новая точка q и вновь производится проверка. В конце концов допустимая точка q будет найдена, и тогда можно осуществить интерполяцию. Выбор значения $$\alpha$$ не вполне очевиден. Выбор $$\alpha =2$$ был успешным, при $$\alpha =1,05$$ длина шага становится близкой к расстоянию до ближайшей границы области ограничений и поэтому является "безопасной" для интерполяционной процедуры.

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

Функция $$\varphi (х,r)$$ минимизируется до тех пор, пока два последовательных значения F1 и F2 не станут такими, что |(F1–F2)/F1|<0,000001. Это условие, конечно, может быть изменено. В соответствии с соотношением (1.17) процесс минимизации заканчивается, когда$$r \sum_{j=1}^m \frac{1}{c_j (x_k^*)} < 0,000001 .$$

3. Метод барьерных поверхностей (метод Кэррола)

Если ограничения в задаче имеют вид чистых неравенств, т.е.$$a_i < g_i (\overline{X}) < b_i , \quad i=\overline{1,m} ,$$ то присоединенная функция может быть построена в виде так называемого барьера:$$G(\overline{X}) = \sum_{i=1}^m \frac{1}{(b_i - g_i (\overline{X}))(g_i(\overline{X})-a_i)} .$$

Как только одна из функций $$g_i(\overline{X})$$ достигнет своего предела ( ai или bi ), штраф $$G(\overline{X})) \rightarrow \infty$$, т.е. возникнет т.н. "барьер".

Метод был предложен Кэрролом, и получил название метода барьерных поверхностей (МБП) Кэррола.

При этом ограничения в виде равенств и неравенств всегда можно преобразовать в ограничения в виде чистых неравенств, если к величине ограничения добавить очень малое число (например, 10-5 ).

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

Пусть требуется спроектировать контейнер в форме прямоугольного параллелепипеда объемом V=1м3. Желательно, чтобы при изготовлении контейнеров затрачивалось как можно меньше материалов. Чтобы его было удобно брать автопогрузчиком, ширина должна быть не менее 1,5 м.

Строим математическую модель контейнера.

1) Формируем вектор переменных $$\overline{X}$$. Параметрами вектора переменных являются: длина x1, ширина x2 и высота x3 контейнера, т.е.$$\overline{X} = [x_1,x_2,x_3].$$ Размерность задачи n=3.

2) Строим целевую функцию $$F(\overline{X})$$. При условии постоянства толщины стенок контейнера требование минимизировать количество материала можно свести к минимизации площади боковой поверхности контейнера.

Тогда$$F(\overline{X}) = S(\overline{X}) = 2(x_1 x_2 + x_2 x_3 + x_1 x_3).$$

3) Формируем ограничения.

Ограничение-равенство:$$\text{Объем } V = x_1 \cdot x_2 \cdot x_3 = 1\text{м}^2 .$$ Ограничение-неравенство:$$\text{Ширина } x_2 \ge 1,5 \text{м}.$$

Упростим математическую модель контейнера. Ограничение – равенство (3.3) в задаче, благодаря своей простоте, позволяет уменьшить размерность задачи, т.е.

x3 = 1/x1x2 .

В результате параметр x3 можно исключить из вектора проектных параметров, и из трехмерной задачи мы получим двумерную. Тогда вектор $$\overline{X}$$ будет иметь вид:$$\overline{X}=[x_1,x_2].$$ Целевая функция также упростится:$$F(\overline{X}) = 2(x_1 x_2 + 1/x_1 + 1/x_2).$$ Ограничения будут иметь вид:$$x_1 > 0, \quad x_2 \ge 1,5\text{м}.$$

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

Найти вектор $$\overline{X} = [x_1, x_2]$$, доставляющий минимум целевой функции$$F(\overline{X}) = 2(x_1 x_2 + 1/x_1 + 1/x_2),$$ при ограничениях в виде неравенств$$x_1 > 0, \quad x_2 \ge 1,5\text{м}.$$

В данной задаче барьерная функция может иметь вид:$$G(\overline{X}) = \frac{1}{x_1 - 1,5} + \frac{1}{x_2} .$$

Как только один из параметров x1 или x2 достигнет своего предела, штраф $$G(\overline{X}) \rightarrow \infty$$, т.е. возникнет т.н. "барьер".

Штрафная функция в задаче проектирования контейнера будет иметь вид:$$P(\overline{X},RC)=F(\overline{X})+RC \cdot G(\overline{X}) = 2 \left( x_1 \cdot x_2 + \frac{1}{x_1} + \frac{1}{x_2} \right) + RC \left( \frac{1}{x_1 - 1,5} + \frac{1}{x_2} \right).$$

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

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

Задачи нелинейного программирования самого различного физического смысла допускают геометрическую интерпретацию. Рассмотрим такую интерпретацию для наиболее наглядного и простого случая двух переменных, $$\overline{X}=[x_1,x_2], \; E^n$$ - плоскость.

Пример.

Найти вектор $$\overline{X}=[x_1,x_2]$$, доставляющий минимум$$F(\overline{X}) = x_1^2 + x_2 ,$$ при ограничениях$$\begin{gathered} g_1(\overline{X}) \rightarrow -(x_1^2 + x_2^2) + 9 \ge 0, \\ g_2(\overline{X}) \rightarrow -x_1 - x_2 + 1 \ge 0. \end{gathered}$$

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

Ограничение $$g_1(\overline{X})$$ будет иметь вид:$$x_1^2 + x_2^2 \le 9.$$ Тогда ограничение $$g_1(\overline{X})$$ отсекает на плоскости круг радиусом r=3.

Ограничение $$g_2(\overline{X})$$ будет иметь вид:$$x_1 + x_2 \le 1 .$$ Тогда ограничение $$g_2(\overline{X})$$ отсекает на плоскости полуплоскость, ограниченную уравнением x1+x2=1.

В результате область допустимых решений G будет иметь вид, представленный на рис 13.2.

Строим линии уровня целевой функции (4.1). Линией уровня называется множество точек, с координатами [x1,x2] для которых целевая функция $$F(\overline{X})$$ имеет постоянное значение, т.е.$$x_1^2 + x_2 = C .$$ Отсюда $$x_2 = C- x_1^2$$.

Меняя значения C, получим различные линии уровня.$$\begin{aligned} \text{Если } C=\phantom{-}0, \; \text{то} \; x_2 = -x_1^2, \\ C=-1, \; \text{то} \; x_2 = -1 -x_1^2, \\ C=-2, \; \text{то} \; x_2 = -2 -x_1^2, \\ C=-3, \; \text{то} \; x_2 = -3 -x_1^2. \end{aligned}$$

Как видно, линии уровня целевой функции (4.1) - это квадратичные параболы, симметричные относительно x2. Положение каждой параболы зависит от значения константы C (рис 13.2.). Исследуя полученные линии уровня получим что минимальное значение целевой функции (4.1) находится на границе области G, в точке с координатами [0,-3].

(рис 13.2)
Вернуться к учебному плану