Лекция 13: Решение задач нелинейного программирования с ограничениями. Геометрическая интерпретация задач нелинейного программирования
2. Метод SUMT Фиакко и Маккормика
Результаты предыдущего раздела показывают, что можно решить
задачу минимизации с ограничениями (минимизировать функцию f(х) при ограничениях , решая для последовательности значений r, стремящейся к нулю, задач без ограничений
следующего вида:
![\text{минимизировать функцию} \quad
\varphi(x,r) = f(x) + к \sum_{j=1}^m \frac{1}{c_j(x)} .](/sites/default/files/tex_cache/00ade7bab6c5cf7540f50a14c78f038b.png)
Метод SUMT
(sequential unconstrained minimisation technique)
был впервые предложен Кэрролом в 1961 году. Его идеи были исследованы
Фиакко и Маккормиком, которые не только рассмотрели теоретические
вопросы и сходимость метода, но создали практическую систему для его
реализации. Редко можно будет использовать данный метод так, как это
делалось в двух примерах из предыдущего раздела, поскольку далеко не
всегда можно найти оптимальную точку для функций в виде функции х*(r),
предел которой при
можно исследовать.
Поэтому для того, чтобы можно было применить настоящий метод на
практике, необходимо построить вычислительный метод, использующий
теоретическое свойство сходимости, рассмотренное в предыдущем разделе.
Теоретически здесь не возникает трудностей. Для заданных функцией f(х) ограничениях ,
необходимо выбрать начальное значение r = r0,
чтобы сформировать функцию
, которая
минимизируется без ограничений методом ДФП. Найдя минимум функции
, необходимо уменьшить значение r. Это можно сделать эффективно и просто, если найти r1 = r0/c, где константа с > 1. Затем необходимо минимизировать функцию
, снова используя метод ДФП. Таким
образом, будет разработана итерационная процедура.
На k -м шаге минимизируется функция
, минимум которой находится в точке
. Важно, что ее можно использовать в дальнейшем
в качестве первой точки в итерационной процедуре минимизации функции
, где rk+1 = гk/с. Теперь ясно, что
последовательность rk убывает и стремится к
нулю, следовательно, последовательность точек минимумов будет
сходиться к решению задачи с ограничениями.
Ниже приведена блок-схема (рис. 13.1) метода SUMT. Остается уточнить некоторые детали.
Предполагается, что в начале процедуры имеется допустимая точка.
Важно, чтобы в процессе последующих вычислений получаемые точки
принадлежали допустимой области.
Метод ДФП является градиентным
методом минимизации, использующим при одномерном поиске кубическую
интерполяцию. Тогда, по мере приближения точки x к
границе внутри допустимой области , а по мере
приближения точки x к границе снаружи допустимой
области
.
Таким образом, если поиск осуществляется вдоль прямой, соединяющей две точки, одна из которых лежит внутри, а другая вне области ограничений, то кубическая интерполяция оказывается неприемлемой, поскольку функция разрывна вдоль данной прямой. Действительно, если минимум будет найден вне допустимой области, то метод ДФП не позволит вновь войти в область ограничений. Необходимо тщательно исследовать такие вопросы при использовании метода ДФП в данной задаче.
Выбор начального значения r может оказаться важным
с точки зрения сокращения числа итераций при минимизации функции . Если сначала r выбрано очень
малым, для того чтобы функция
мало
отличалась от функции f(x), то метод будет сходиться
очень быстро. Однако такой выбор может привести к серьезным
осложнениям при вычислениях. Для малых 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),](/sites/default/files/tex_cache/573262743cd49187853899c187c0f7ee.png)
![\varphi (х, r)](/sites/default/files/tex_cache/971eb75e7ce4d59048ae57613ee9fae1.png)
![]() |
( 2.1) |
![]() |
( 2.2) |
![]() |
( 2.3) |
Это начальное значение r, как предполагает Фиакко и Маккормик, должно давать хорошие результаты в общем случае. Уменьшить значение r очень простo: rk+1 = rk/с, где с = 10.
Для минимизации функции
используется метод ДФП. В качестве начальной точки используется
оптимальная точка функции
, и это
оказывается очень эффективным. Oднако необходимо обратить внимание
на то, чтобы в процессе одномерного поиска не выйти за область
ограничений. Грубым, но вполне эффективным является следующий
метод. Пусть имеются точка p и направление поиска d=-Hg. Следующая точка
необходима для осуществления
кубической интерполяции. Начнем со значения
(удвоенный шаг в методе Ньютона) и
проверим, является ли точка q допустимой, т.е.
выполняется ли неравенство сj(q) > 0
для всех j. Если оно выполняется, то
не меняется, но если неравенство не
выполняется, то
заменяется на
находится новая точка q и вновь производится проверка. В конце концов
допустимая точка q будет найдена, и тогда можно
осуществить интерполяцию. Выбор значения
не вполне очевиден. Выбор
был успешным,
при
длина шага становится близкой к
расстоянию до ближайшей границы области ограничений и поэтому
является "безопасной" для интерполяционной процедуры.
Важно не дать точкам выйти за область ограничений в процессе минимизации.
Функция минимизируется до тех пор,
пока два последовательных значения F1 и F2 не станут такими, что |(F1–F2)/F1|<0,000001.
Это условие, конечно, может быть изменено. В соответствии с
соотношением (1.17) процесс минимизации заканчивается, когда
![r \sum_{j=1}^m \frac{1}{c_j (x_k^*)} < 0,000001 .](/sites/default/files/tex_cache/06ff4050a2231dacd35ca2eb867af945.png)