Spec-Zone.ru › Octave 9

Next: Линейные наименьшие квадраты, Previous: Квадратичное программирование, Up: Оптимизация [Содержание][Индекс]

25.3 Нелинейное программирование ¶

Octave также может выполнять общее нелинейное минимизирование с использованием решателя последовательного квадратичного программирования.

: [x, obj, info, iter, nf, lambda] = sqp (x0, phi) ¶
: […] = sqp (x0, phi, g) ¶
: […] = sqp (x0, phi, g, h) ¶
: […] = sqp (x0, phi, g, h, lb, ub) ¶
: […] = sqp (x0, phi, g, h, lb, ub, maxiter) ¶
: […] = sqp (x0, phi, g, h, lb, ub, maxiter, tolerance) ¶

Минимизируйте целевую функцию с использованием последовательного квадратичного программирования (SQP).

Решите нелинейную задачу

min phi (x)
 x

при условии

g(x)  = 0
h(x) >= 0
lb <= x <= ub

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

Первый аргумент — начальное приближение для вектора x0.

Второй аргумент — ссылка на функцию, указывающую на целевую функцию phi. Целевая функция должна принимать один векторный аргумент и возвращать скалярное значение.

Второй аргумент также может быть массивом ячеек из 2 или 3 элементов, содержащим ссылки на функции. Первый элемент должен указывать на целевую функцию, второй — на функцию для вычисления градиента целевой функции, а третий — на функцию для вычисления матрицы Гессе целевой функции. Если функция градиента не указана, градиент вычисляется с помощью конечных разностей. Если функция Гессе не указана, используется формула обновления BFGS для приближения матрицы Гессе.

При предоставлении функция градиента phi{2} должна принимать один векторный аргумент и возвращать вектор. При предоставлении функция Гессе phi{3} должна принимать один векторный аргумент и возвращать матрицу.

Третьи и четвёртые аргументы g и h — ссылки на функции, вычисляющие ограничения равенства и неравенства соответственно. Если задача не имеет ограничений равенства (или неравенства), используйте пустую матрицу ([]) для g (или h). При предоставлении эти функции ограничений равенства и неравенства должны принимать один векторный аргумент и возвращать вектор.

Третьи и четвёртые аргументы также могут быть массивами ячеек из 2 элементов, содержащими ссылки на функции. Первый элемент должен указывать на функцию ограничения, а второй — на функцию для вычисления градиента функции ограничения:

[ d f(x)   d f(x)        d f(x) ]
transpose ( [ ------   -----   ...   ------ ] )
            [  dx_1     dx_2          dx_N  ]

Пятые и шестые аргументы, lb и ub, содержат нижние и верхние границы для x. Они должны быть согласованы с ограничениями равенства и неравенства g и h. Если аргументы являются векторами, то x(i) ограничен lb(i) и ub(i). Граница также может быть скалярной величиной, в этом случае все элементы x будут иметь одну и ту же границу.

Седьмой аргумент maxiter определяет максимальное количество итераций. Значение по умолчанию равно 100.

Восьмой аргумент tolerance определяет допустимость для критерия остановки. Значение по умолчанию — sqrt (eps).

Значение, возвращаемое в info, может быть одним из следующих:

101

Алгоритм завершился нормально. Все ограничения удовлетворяют заданной допустимости.

102

Обновление BFGS не удалось.

103

Было достигнуто максимальное количество итераций.

104

Размер шага стал слишком малым, т.е. дельта x меньше tol * norm (x).

Пример вызова sqp:

function r = g (x)
  r = [ sumsq(x)-10;
        x(2)*x(3)-5*x(4)*x(5);
        x(1)^3+x(2)^3+1 ];
endfunction

function obj = phi (x)
  obj = exp (prod (x)) - 0.5*(x(1)^3+x(2)^3+1)^2;
endfunction

x0 = [-1.8; 1.7; 1.9; -0.8; -0.8];

[x, obj, info, iter, nf, lambda] = sqp (x0, @phi, @g, [])

x =

  -1.71714
   1.59571
   1.82725
  -0.76364
  -0.76364

obj = 0.053950
info = 101
iter = 8
nf = 10
lambda =

  -0.0401627
   0.0379578
  -0.0052227

См. также: qp.

Next: Линейные наименьшие квадраты, Previous: Квадратичное программирование, Up: Оптимизация [Содержание][Индекс]

© 1996–2023 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v9.2.0/Nonlinear-Programming.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API