Донецкий национальный технический университет
Опубликован: 09.07.2007 | Доступ: свободный | Студентов: 3114 / 709 | Оценка: 4.34 / 4.12 | Длительность: 13:54:00
Специальности: Программист

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

< Лекция 12 || Лекция 13: 1234

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). ( 2.1)

Квадрат нормы этого вектора

\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) ( 2.2)
и минимум будет достигнут при
r = \frac{-\nabla f(x)^T \nabla P(x)}{\nabla P(x)^T \nabla P(x)} . ( 2.3)

Это начальное значение 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 .

< Лекция 12 || Лекция 13: 1234