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, который появляется в конце этого примера. Сохраните функцию helper с именем 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