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 object. The axes object with title Best Function Value: 0.0477844 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.7822    0.6100

fval = 0.0478

Этот код создает 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