exponenta event banner

packfcn

Объединение целевых и нелинейных функций ограничения

Описание

пример

objconstr = packfcn(obj,nlconst) объединяет целевую функцию obj и нелинейная функция ограничения nlconst в функцию objconstr. Функция objconstr(x) возвращает структуру, подходящую для комбинированного surrogateopt объективная и ограничительная функция. Для получения информации о преобразовании между surrogateopt синтаксис структуры и другие решатели см. в разделе Преобразование нелинейных ограничений между формой surrogateopt и другими формами решателя.

Примеры

свернуть все

Объединение цели и ограничения из примера Решение ограниченной нелинейной проблемы на основе решателя в форму, подходящую для surrogateopt.

Создание целевой функции как анонимной функции ros(x).

ros = @(x)100*(x(2) - x(1)^2)^2 + (1 - x(1))^2;

Создание функции поддержки нелинейных ограничений unitdisk, которая появляется в конце этого примера. Сохранить вспомогательную функцию с именем unitdisk.m в текущей папке.

Объединение целевой и нелинейной функций ограничения в одну функцию, подходящую для surrogateopt.

objconstr = packfcn(ros,@unitdisk);

Укажите границы и решите проблему с помощью surrogateopt.

lb = [-2 -2];
ub = -lb;
[x,fval] = surrogateopt(objconstr,lb,ub)

Figure Optimization Plot Function contains an axes. The axes with title Best Function Value: 0.0457939 contains 2 objects of type line. These objects represent Best function value (infeasible), Best function value.

surrogateopt stopped because it exceeded the function evaluation limit set by 
'options.MaxFunctionEvaluations'.
x = 1×2

    0.7860    0.6176

fval = 0.0458

Этот код создает unitdisk функция помощника.

function [c,ceq] = unitdisk(x)
c = x(1)^2 + x(2)^2 - 1;
ceq = [ ];
end

Входные аргументы

свернуть все

Целевая функция, указанная как дескриптор функции или имя функции.

Результирующая функция objconstr содержит поле Fval.

objconstr.Fval = obj

Пример: @rastriginsfcn

Типы данных: char | string | function_handle

Нелинейная функция ограничения, заданная как дескриптор функции или имя функции. Как правило, функция нелинейных ограничений возвращает два выходных сигнала.

[c,ceq] = nlconst(x)

Продукция c является вектором или массивом, записи которого представляют ограничения неравенства c (x) ≤ 0. Продукцияceq является вектором или массивом, записи которого представляют ограничения неравенства c (x) = 0 .packfcn отбрасывает ceq выход.

Результирующая функция objconstr содержит поле Ineq.

objconstr.Ineq = c

Типы данных: char | string | function_handle

Выходные аргументы

свернуть все

Комбинированная целевая функция и функция ограничения, возвращаемые как дескриптор функции. Функция objconstr(x) возвращает структуру с полями Fval и Ineq.

  • objconstr.Fval(x) - целевая функция obj(x).

  • objconstr.Ineq(x) - функция ограничения нелинейного неравенства c(x), первый выход nlconst(x).

Представлен в R2020a