fgoalattain

Решите многообъективные задачи достижения цели

Описание

fgoalattain решает задачу достижения цели, формулировку для минимизации мультиобъективной задачи оптимизации.

fgoalattain находит минимум задачи, заданной в

minimizex,γ γ таким , что {F(x)весγцельc(x)0ceq(x)=0AxbAeqx=beqlbxub.

weight, goalb, и beq являются векторами, A и Aeq являются матрицами, и F (x), c (x) и ceq (x), являются функциями, которые возврат векторы. F (x), c (x) и ceq (x) могут быть нелинейными функциями.

x, lb и ub могут быть переданы как векторы или матрицы; см. Матричные аргументы.

пример

x = fgoalattain(fun,x0,goal,weight) пытается сделать целевые функции, предоставляемые fun достигнуть целей, заданных goal путем изменения x, начиная с x0, с весом, заданным weight.

Примечание

Передача дополнительных параметров объясняет, как передать дополнительные параметры целевым функциям и нелинейным ограничительным функциям, если это необходимо.

пример

x = fgoalattain(fun,x0,goal,weight,A,b) решает задачу достижения цели, удовлетворяющую неравенствам   A*x ≤ b.

x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq) решает задачу достижения цели, удовлетворяющую равенствам   Aeq*x = beq. Если неравенства не существует, задайте A = [] и b = [].

пример

x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub) решает задачу достижения цели, удовлетворяющую границам lb  x  ub. Если равенств не существует, задайте Aeq = [] и beq = []. Если x(i) неограниченно внизу, установите lb(i) = -Inf; если x(i) неограниченно выше, задайте ub(i) = Inf.

Примечание

Если заданные входные ограничения для задачи несогласованны, выход x является x0 и выходные fval является [].

пример

x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon) решает задачу достижения цели, удовлетворяющую нелинейным неравенствам c(x) или равенств ceq(x) определено в nonlcon. fgoalattain оптимизирует так, что   c(x) ≤ 0 и   ceq(x) = 0. Если никаких границ не существует, задайте lb = [] или ub = [], или и то, и другое.

пример

x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options) решает задачу достижения цели с опциями оптимизации, заданными в options. Использовать optimoptions чтобы задать эти опции.

x = fgoalattain(problem) решает задачу достижения цели для problem, структуру, описанную в problem.

пример

[x,fval] = fgoalattain(___)для любого синтаксиса возвращает значения целевых функций, вычисленных в fun в решении x.

пример

[x,fval,attainfactor,exitflag,output] = fgoalattain(___) дополнительно возвращает коэффициент достижения в решении x, значение exitflag который описывает условие fgoalattain, и структуру output с информацией о процессе оптимизации.

пример

[x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(___) дополнительно возвращает структуру lambda поля которого содержат множители Лагранжа в решении x.

Примеры

свернуть все

Рассмотрим двухцелевую функцию

F(x)=[2+(x-3)25+x2/4].

Эта функция явно минимизирует F1(x) в x=3, достигая значения 2, и минимизирует F2(x) в x=0, достигая значения 5.

Установите цель [3,6] и вес [1,1], и решите задачу достижения цели, начиная с x0 = 1.

fun = @(x)[2+(x-3)^2;5+x^2/4];
goal = [3,6];
weight = [1,1];
x0 = 1;
x = fgoalattain(fun,x0,goal,weight)
Local minimum possible. Constraints satisfied.

fgoalattain stopped because the size of the current search direction is less than
twice the value of the step size tolerance and constraints are 
satisfied to within the value of the constraint tolerance.
x = 2.0000

Найдите значение F(x) в решении.

fun(x)
ans = 2×1

    3.0000
    6.0000

fgoalattain достигает целей в точности.

Целевая функция является

F(x)=[2+x-p125+x-p22/4].

Здесь, p_<reservedrangesplaceholder0 > = [2,3] и p_<reservedrangesplaceholder0 > = [4,1]. Цель - [3,6], вес - [1,1], и линейное ограничение является x1+x24.

Создайте целевую функцию, цель и вес.

p_1 = [2,3];
p_2 = [4,1];
fun = @(x)[2 + norm(x-p_1)^2;5 + norm(x-p_2)^2/4];
goal = [3,6];
weight = [1,1];

Создайте линейные матрицы ограничений A и b представление A*x <= b.

A = [1,1];
b = 4;

Установите начальную точку [1,1] и решите задачу достижения цели.

x0 = [1,1];
x = fgoalattain(fun,x0,goal,weight,A,b)
Local minimum possible. Constraints satisfied.

fgoalattain stopped because the size of the current search direction is less than
twice the value of the step size tolerance and constraints are 
satisfied to within the value of the constraint tolerance.
x = 1×2

    2.0694    1.9306

Найдите значение F(x) в решении.

fun(x)
ans = 2×1

    3.1484
    6.1484

fgoalattain не отвечает целям. Поскольку веса равны, решатель недооценивает каждую цель на одну и ту же величину.

Целевая функция является

F(x)=[2+x-p125+x-p22/4].

Здесь, p_<reservedrangesplaceholder0 > = [2,3] и p_<reservedrangesplaceholder0 > = [4,1]. Цель - [3,6], вес - [1,1], и границы 0x13, 2x25.

Создайте целевую функцию, цель и вес.

p_1 = [2,3];
p_2 = [4,1];
fun = @(x)[2 + norm(x-p_1)^2;5 + norm(x-p_2)^2/4];
goal = [3,6];
weight = [1,1];

Создайте границы.

lb = [0,2];
ub = [3,5];

Установите начальную точку на [1,4] и решите задачу достижения цели.

x0 = [1,4];
A = []; % no linear constraints
b = [];
Aeq = [];
beq = [];
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)
Local minimum possible. Constraints satisfied.

fgoalattain stopped because the size of the current search direction is less than
twice the value of the step size tolerance and constraints are 
satisfied to within the value of the constraint tolerance.
x = 1×2

    2.6667    2.3333

Найдите значение F(x) в решении.

fun(x)
ans = 2×1

    2.8889
    5.8889

fgoalattain больше, чем соответствует целям. Поскольку веса равны, решатель перехватывает каждую цель на одну и ту же величину.

Целевая функция является

F(x)=[2+x-p125+x-p22/4].

Здесь, p_<reservedrangesplaceholder0 > = [2,3] и p_<reservedrangesplaceholder0 > = [4,1]. Цель - [3,6], вес - [1,1], и нелинейное ограничение является x24.

Создайте целевую функцию, цель и вес.

p_1 = [2,3];
p_2 = [4,1];
fun = @(x)[2 + norm(x-p_1)^2;5 + norm(x-p_2)^2/4];
goal = [3,6];
weight = [1,1];

Нелинейная функция ограничения находится в norm4.m файл.

type norm4
function [c,ceq] = norm4(x)
ceq = [];
c = norm(x)^2 - 4;

Создайте пустые входные параметры для линейных ограничений и границ.

A = [];
Aeq = [];
b = [];
beq = [];
lb = [];
ub = [];

Установите начальную точку на [1,1] и решите задачу достижения цели.

x0 = [1,1];
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,@norm4)
Local minimum possible. Constraints satisfied.

fgoalattain stopped because the size of the current search direction is less than
twice the value of the step size tolerance and constraints are 
satisfied to within the value of the constraint tolerance.
x = 1×2

    1.1094    1.6641

Найдите значение F(x) в решении.

fun(x)
ans = 2×1

    4.5778
    7.1991

fgoalattain не отвечает целям. Несмотря на равные веса, F1(x) составляет около 1,58 от своей цели 3, и F2(x) находится примерно в 1,2 от своей цели 6. Нелинейное ограничение препятствует решению x от достижения целей в равной степени.

Отслеживайте процесс решения задачи достижения путем установки опций, чтобы вернуть итеративное отображение.

options = optimoptions('fgoalattain','Display','iter');

Целевая функция является

F(x)=[2+x-p125+x-p22/4].

Здесь, p_<reservedrangesplaceholder0 > = [2,3] и p_<reservedrangesplaceholder0 > = [4,1]. Цель - [3,6], вес - [1,1], и линейное ограничение является x1+x24.

Создайте целевую функцию, цель и вес.

p_1 = [2,3];
p_2 = [4,1];
fun = @(x)[2 + norm(x-p_1)^2;5 + norm(x-p_2)^2/4];
goal = [3,6];
weight = [1,1];

Создайте линейные матрицы ограничений A и b представление A*x <= b.

A = [1,1];
b = 4;

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

Aeq = [];
beq = [];
lb = [];
ub = [];
nonlcon = [];

Установите начальную точку [1,1] и решите задачу достижения цели.

x0 = [1,1];
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options)
                 Attainment        Max     Line search     Directional 
 Iter F-count        factor    constraint   steplength      derivative   Procedure 
    0      4              0             4                                            
    1      9             -1           2.5            1          -0.535     
    2     14     -5.194e-09        0.2813            1           0.883     
    3     19         0.1452      0.005926            1           0.883     
    4     24         0.1484     2.868e-06            1           0.883     
    5     29         0.1484     6.839e-13            1           0.883    Hessian modified  

Local minimum possible. Constraints satisfied.

fgoalattain stopped because the size of the current search direction is less than
twice the value of the step size tolerance and constraints are 
satisfied to within the value of the constraint tolerance.
x = 1×2

    2.0694    1.9306

Положительное значение сообщенного фактора достижения указывает, что fgoalattain не находит решение, удовлетворяющее целям.

Целевая функция является

F(x)=[2+x-p125+x-p22/4].

Здесь, p_<reservedrangesplaceholder0 > = [2,3] и p_<reservedrangesplaceholder0 > = [4,1]. Цель - [3,6], вес - [1,1], и линейное ограничение является x1+x24.

Создайте целевую функцию, цель и вес.

p_1 = [2,3];
p_2 = [4,1];
fun = @(x)[2 + norm(x-p_1)^2;5 + norm(x-p_2)^2/4];
goal = [3,6];
weight = [1,1];

Создайте линейные матрицы ограничений A и b представление A*x <= b.

A = [1,1];
b = 4;

Установите начальную точку [1,1] и решите задачу достижения цели. Запросите значение целевой функции.

x0 = [1,1];
[x,fval] = fgoalattain(fun,x0,goal,weight,A,b)
Local minimum possible. Constraints satisfied.

fgoalattain stopped because the size of the current search direction is less than
twice the value of the step size tolerance and constraints are 
satisfied to within the value of the constraint tolerance.
x = 1×2

    2.0694    1.9306

fval = 2×1

    3.1484
    6.1484

Значения целевой функции выше цели, что означает fgoalattain не удовлетворяет цели.

Целевая функция является

F(x)=[2+x-p125+x-p22/4].

Здесь, p_<reservedrangesplaceholder0 > = [2,3] и p_<reservedrangesplaceholder0 > = [4,1]. Цель - [3,6], вес - [1,1], и линейное ограничение является x1+x24.

Создайте целевую функцию, цель и вес.

p_1 = [2,3];
p_2 = [4,1];
fun = @(x)[2 + norm(x-p_1)^2;5 + norm(x-p_2)^2/4];
goal = [3,6];
weight = [1,1];

Создайте линейные матрицы ограничений A и b представление A*x <= b.

A = [1,1];
b = 4;

Установите начальную точку [1,1] и решите задачу достижения цели. Запросите значение целевой функции, коэффициент достижения, выходной флаг, структуру output и множители Лагранжа.

x0 = [1,1];
[x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(fun,x0,goal,weight,A,b)
Local minimum possible. Constraints satisfied.

fgoalattain stopped because the size of the current search direction is less than
twice the value of the step size tolerance and constraints are 
satisfied to within the value of the constraint tolerance.
x = 1×2

    2.0694    1.9306

fval = 2×1

    3.1484
    6.1484

attainfactor = 0.1484
exitflag = 4
output = struct with fields:
         iterations: 6
          funcCount: 29
       lssteplength: 1
           stepsize: 4.1263e-13
          algorithm: 'active-set'
      firstorderopt: []
    constrviolation: 6.8393e-13
            message: '...'

lambda = struct with fields:
         lower: [2x1 double]
         upper: [2x1 double]
         eqlin: [0x1 double]
      eqnonlin: [0x1 double]
       ineqlin: 0.5394
    ineqnonlin: [0x1 double]

Положительное значение attainfactor указывает, что цели не достигнуты; Вы также можете увидеть это путем сравнения fval с goal.

The lambda.ineqlin значение ненулевое, что указывает на то, что линейное неравенство ограничивает решение.

Целевая функция является

F(x)=[2+x-p125+x-p22/4].

Здесь, p_<reservedrangesplaceholder0 > = [2,3] и p_<reservedrangesplaceholder0 > = [4,1]. Цель - [3,6], а начальный вес - [1,1].

Создайте целевую функцию, цель и начальный вес.

p_1 = [2,3];
p_2 = [4,1];
fun = @(x)[2 + norm(x-p_1)^2;5 + norm(x-p_2)^2/4];
goal = [3,6];
weight = [1,1];

Установите линейное ограничение x1+x24.

A = [1 1];
b = 4;

Решите задачу достижения цели, начиная с точки x0 = [1 1].

x0 = [1 1];
[x,fval] = fgoalattain(fun,x0,goal,weight,A,b)
Local minimum possible. Constraints satisfied.

fgoalattain stopped because the size of the current search direction is less than
twice the value of the step size tolerance and constraints are 
satisfied to within the value of the constraint tolerance.
x = 1×2

    2.0694    1.9306

fval = 2×1

    3.1484
    6.1484

Каждый компонент fval выше соответствующего компонента goal, что указывает на то, что цели не достигнуты.

Повысить важность достижения первой цели путем установки weight(1) к меньшему значению.

weight(1) = 1/10;
[x,fval] = fgoalattain(fun,x0,goal,weight,A,b)
Local minimum possible. Constraints satisfied.

fgoalattain stopped because the size of the current search direction is less than
twice the value of the step size tolerance and constraints are 
satisfied to within the value of the constraint tolerance.
x = 1×2

    2.0115    1.9885

fval = 2×1

    3.0233
    6.2328

Теперь значение fval(1) намного ближе к goal(1), тогда как fval(2) находится дальше от goal(2).

Изменение goal(2) до 7, что выше текущего решения. Решение меняется.

goal(2) = 7;
[x,fval] = fgoalattain(fun,x0,goal,weight,A,b)
Local minimum possible. Constraints satisfied.

fgoalattain stopped because the size of the current search direction is less than
twice the value of the step size tolerance and constraints are 
satisfied to within the value of the constraint tolerance.
x = 1×2

    1.9639    2.0361

fval = 2×1

    2.9305
    6.3047

Оба компонента fval меньше соответствующих компонентов goal. Но fval(1) намного ближе к goal(1) чем fval(2) является goal(2). Меньший вес, скорее всего, сделает его компонент почти удовлетворенным, когда цели не могут быть достигнуты, но делает степень перехвата меньше, когда цель может быть достигнута.

Измените веса равными. The fval результаты имеют равное расстояние от их целей.

weight(2) = 1/10;
[x,fval] = fgoalattain(fun,x0,goal,weight,A,b)
Local minimum possible. Constraints satisfied.

fgoalattain stopped because the size of the current search direction is less than
twice the value of the step size tolerance and constraints are 
satisfied to within the value of the constraint tolerance.
x = 1×2

    1.7613    2.2387

fval = 2×1

    2.6365
    6.6365

Ограничения могут сохранить полученную fval от равной близости к целям. Например, установите верхнюю границу 2 на x(2).

ub = [Inf,2];
lb = [];
Aeq = [];
beq = [];
[x,fval] = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)
Local minimum possible. Constraints satisfied.

fgoalattain stopped because the size of the current search direction is less than
twice the value of the step size tolerance and constraints are 
satisfied to within the value of the constraint tolerance.
x = 1×2

    2.0000    2.0000

fval = 2×1

    3.0000
    6.2500

В этом случае fval(1) точно достигает своей цели, но fval(2) меньше своей цели.

Входные параметры

свернуть все

Целевые функции, заданные как указатель на функцию или имя функции. fun является функцией, которая принимает вектор x и возвращает вектор F, целевые функции, оцениваемые в x. Можно задать функцию fun как указатель на функцию для файла функции:

x = fgoalattain(@myfun,x0,goal,weight)

где myfun является MATLAB® функция, такая как

function F = myfun(x)
F = ...         % Compute function values at x.

fun может также быть указателем на функцию для анонимной функции:

x = fgoalattain(@(x)sin(x.*x),x0,goal,weight);

Если заданные пользователем значения для x и F являются массивами, fgoalattain преобразует их в векторы с помощью линейной индексации (см. «Массив»).

Чтобы сделать целевую функцию как можно ближе к значению цели (то есть ни больше, ни меньше, чем), используйте optimoptions для установки EqualityGoalCount опция для количества целей, необходимых для соседства значений целей. Такие цели должны быть разбиты на первые элементы вектора F возвращается по fun.

Предположим, что градиент целевой функции также может быть вычислен и SpecifyObjectiveGradient опция true, как задано:

options = optimoptions('fgoalattain','SpecifyObjectiveGradient',true)

В этом случае функция fun должен вернуть во втором выходном аргументе значение градиента G (матрица) в x. Градиент состоит из частной производной dF/dx каждого F в точке x. Если F является вектором длины m и x имеет длину n, где n - длина x0, затем градиент G от F(x) является n-by- m матрица, где G(i,j) - частная производная F(j) относительно x(i) (то есть j1-й столбец G - градиент jВторая целевая функция F(j)).

Примечание

Настройка SpecifyObjectiveGradient на true эффективен только, когда задача не имеет нелинейных ограничений, или задача имеет нелинейное ограничение с SpecifyConstraintGradient установлено на true. Внутренне цель складывается в ограничения, поэтому решателю нужны оба градиента (цель и ограничение), предоставленные в порядок, чтобы избежать оценки градиента.

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

Начальная точка, заданная как вектор действительных чисел или вещественный массив. Решатели используют количество элементов в x0 и размер x0 для определения количества и размера переменных, которые fun принимает.

Пример: x0 = [1,2,3,4]

Типы данных: double

Цель достижения, заданная как вектор действительных чисел. fgoalattain пытается найти наименьший множитель γ который заставляет эти неравенства удерживать для всех значений i в x решения:

Fi(x)goaliweightiγ.

Принимая, что weight является положительным вектором:

  • Если решатель находит точку x что одновременно достигает всех целей, тогда коэффициент достижения γ отрицателен, и цели обобщены.

  • Если решатель не может найти точку x что одновременно достигает всех целей, тогда фактор достижения γ положителен, и цели недостаточно изучены.

Пример: [1 3 6]

Типы данных: double

Относительный коэффициент достижения, заданный как вектор действительных чисел. fgoalattain пытается найти наименьший множитель γ который заставляет эти неравенства удерживать для всех значений i в x решения:

Fi(x)goaliweightiγ.

Когда значения goal являются ненулевыми, чтобы гарантировать одинаковый процент недоучета или переопределения активных целей, установить weight на abs(goal). (Активными целями являются набор задач, которые являются барьерами для дальнейшего улучшения целей в решении.)

Примечание

Установка компонента weight вектор в нуле приводит к тому, что соответствующее ограничение цели рассматривается как жесткое ограничение, а не как ограничение цели. Альтернативным методом установки жесткого ограничения является использование входного параметра nonlcon.

Когда weight положительно, fgoalattain пытается сделать целевые функции меньше, чем целевые значения. Чтобы сделать целевые функции больше, чем значения цели, установите weight быть отрицательным, а не положительным. Чтобы увидеть некоторые эффекты весов на решении, смотрите Эффекты весов, Целей и Ограничений в Достижении Цели.

Чтобы сделать целевую функцию как можно ближе к значению цели, используйте EqualityGoalCount Опция и задайте цель как первый элемент вектора, возвращенного fun (см. fun и options). Для получения примера смотрите Мультиобъектную Оптимизацию Достижения Цели.

Пример: abs(goal)

Типы данных: double

Линейные ограничения неравенства, заданные как действительная матрица. A является M-by- N матрица, где M количество неравенств и N - количество переменных (количество элементов в x0). Для больших задач передайте A как разреженная матрица.

A кодирует M линейное неравенство

A*x <= b,

где x является вектор-столбец N переменные x(:), и b - вектор-столбец с M элементы.

Для примера, чтобы задать

<reservedrangesplaceholder1> 1 + 2 <reservedrangesplaceholder0> 2  10
3 <reservedrangesplaceholder1> 1 + 4 <reservedrangesplaceholder0> 2  20
5 <reservedrangesplaceholder1> 1 + 6 <reservedrangesplaceholder0> 2  30,

введите следующие ограничения:

A = [1,2;3,4;5,6];
b = [10;20;30];

Пример: Чтобы указать, что компоненты x равны 1 или менее, используйте A = ones(1,N) и b = 1.

Типы данных: double

Линейные ограничения неравенства, заданные как вектор действительных чисел. b является M-элементный вектор, относящийся к A матрица. Если вы сдаете b как векторы-строки решатели внутренне преобразуют b в вектор-столбец b(:). Для больших задач передайте b как разреженный вектор.

b кодирует M линейное неравенство

A*x <= b,

где x является вектор-столбец N переменные x(:), и A - матрица размера M-by- N.

Для примера рассмотрим эти неравенства:

<reservedrangesplaceholder1> 1 + 2 <reservedrangesplaceholder0> 2  10
3 <reservedrangesplaceholder1> 1 + 4 <reservedrangesplaceholder0> 2  20
5 <reservedrangesplaceholder1> 1 + 6 <reservedrangesplaceholder0> 2  30.

Задайте неравенства, введя следующие ограничения.

A = [1,2;3,4;5,6];
b = [10;20;30];

Пример: Чтобы указать, что компоненты x равны 1 или менее, используйте A = ones(1,N) и b = 1.

Типы данных: double

Линейные ограничения равенства, заданные как действительная матрица. Aeq является Me-by- N матрица, где Me количество равенств и N - количество переменных (количество элементов в x0). Для больших задач передайте Aeq как разреженная матрица.

Aeq кодирует Me линейные равенства

Aeq*x = beq,

где x является вектор-столбец N переменные x(:), и beq - вектор-столбец с Me элементы.

Для примера, чтобы задать

<reservedrangesplaceholder2> 1 + 2 <reservedrangesplaceholder1> 2 + 3 <reservedrangesplaceholder0> 3 = 10
2 <reservedrangesplaceholder2> 1 + 4 <reservedrangesplaceholder1> 2 + <reservedrangesplaceholder0> 3 = 20,

введите следующие ограничения:

Aeq = [1,2,3;2,4,1];
beq = [10;20];

Пример: Чтобы указать, что компоненты x равны 1, используйте Aeq = ones(1,N) и beq = 1.

Типы данных: double

Линейные ограничения равенства, заданные как вектор действительных чисел. beq является Me-элементный вектор, относящийся к Aeq матрица. Если вы сдаете beq как векторы-строки решатели внутренне преобразуют beq в вектор-столбец beq(:). Для больших задач передайте beq как разреженный вектор.

beq кодирует Me линейные равенства

Aeq*x = beq,

где x является вектор-столбец N переменные x(:), и Aeq - матрица размера Me-by- N.

Для примера рассмотрим эти равенства:

<reservedrangesplaceholder2> 1 + 2 <reservedrangesplaceholder1> 2 + 3 <reservedrangesplaceholder0> 3 = 10
2 <reservedrangesplaceholder2> 1 + 4 <reservedrangesplaceholder1> 2 + <reservedrangesplaceholder0> 3 = 20.

Задайте равенства путем ввода следующих ограничений.

Aeq = [1,2,3;2,4,1];
beq = [10;20];

Пример: Чтобы указать, что компоненты x равны 1, используйте Aeq = ones(1,N) и beq = 1.

Типы данных: double

Нижние границы, заданные как вектор действительных чисел или вещественный массив. Если количество элементов в x0 равно количеству элементов в lb, затем lb определяет, что

x(i) >= lb(i) для всех i.

Если numel(lb) < numel(x0), затем lb определяет, что

x(i) >= lb(i) для 1 <= i <= numel(lb).

Если элементов меньше в lb чем в x0, решатели выдают предупреждение.

Пример: Чтобы указать, что все компоненты x положительны, используйте lb = zeros(size(x0)).

Типы данных: double

Верхние границы, заданные как вектор действительных чисел или действительный массив. Если количество элементов в x0 равно количеству элементов в ub, затем ub определяет, что

x(i) <= ub(i) для всех i.

Если numel(ub) < numel(x0), затем ub определяет, что

x(i) <= ub(i) для 1 <= i <= numel(ub).

Если элементов меньше в ub чем в x0, решатели выдают предупреждение.

Пример: Чтобы указать, что все компоненты x меньше 1, используйте ub = ones(size(x0)).

Типы данных: double

Нелинейные ограничения, заданные как указатель на функцию или имя функции. nonlcon является функцией, которая принимает вектор или массив x и возвращает два массива, c(x) и ceq(x).

  • c(x) - массив нелинейных ограничений неравенства в x. fgoalattain попытки удовлетворить

    c(x) <= 0 для всех записей c.

  • ceq(x) - массив нелинейных ограничений равенства в x. fgoalattain попытки удовлетворить

    ceq(x) = 0 для всех записей ceq.

Для примера,

x = fgoalattain(@myfun,x0,...,@mycon)

где mycon является функцией MATLAB, например:

function [c,ceq] = mycon(x)
c = ...     % Compute nonlinear inequalities at x.
ceq = ...   % Compute nonlinear equalities at x.

Предположим, что градиенты ограничений также могут быть вычислены и SpecifyConstraintGradient опция true, как задано:

options = optimoptions('fgoalattain','SpecifyConstraintGradient',true)

В этом случае функция nonlcon должен также вернуться в третьем и четвертом выходных аргументах GC, градиент c(x), и GCeq, градиент ceq(x). См. нелинейные ограничения для объяснения того, как «обусловить» градиенты для использования в решателях, которые не принимают поставленные градиенты.

Если nonlcon возвращает вектор c от m компоненты и x имеет длину n, где n - длина x0, затем градиент GC от c(x) является n-by- m матрица, где GC(i,j) - частная производная c(j) относительно x(i) (то есть j1-й столбец GC - градиент jограничение неравенства c(j)). Точно так же, если ceq имеет p компоненты, градиент GCeq от ceq(x) является n-by- p матрица, где GCeq(i,j) - частная производная ceq(j) относительно x(i) (то есть j1-й столбец GCeq - градиент jth-е ограничение равенства ceq(j)).

Примечание

Настройка SpecifyConstraintGradient на true эффективно только тогда, когда SpecifyObjectiveGradient установлено в true. Внутренне цель складывается в ограничение, поэтому решателю нужны оба градиента (цель и ограничение), предоставленные в порядок, чтобы избежать оценки градиента.

Примечание

Потому что функции Optimization Toolbox™ принимают только входы типа double, поставляемые пользователем целевые и нелинейные функции ограничения должны возвращать выходы типа double.

Смотрите «Передачу дополнительных параметров» для объяснения того, как параметризовать нелинейную функцию ограничения nonlcon, при необходимости.

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

Опции оптимизации, заданные как выход optimoptions или структуру, такую как optimset возвращает.

Некоторые опции отсутствуют в optimoptions отображение. Эти опции выделены курсивом в следующей таблице. Для получения дополнительной информации см. раздел «Опции представления».

Для получения дополнительной информации об опциях, которые имеют различные имена для optimset, см. «Текущие и устаревшие имена опций».

ОпцияОписание
ConstraintTolerance

Допуск завершения на нарушение ограничений, положительную скалярную величину. Значение по умолчанию является 1e-6. См. «Допуски и критерий остановки».

Для optimset, имя TolCon.

Диагностика

Отображение диагностической информации о функции, которая будет минимизирована или решена. Выбор следующий 'on' или 'off' (значение по умолчанию).

DiffMaxChange

Максимальное изменение переменных для градиентов конечных различий (a положительной скалярной величины). Значение по умолчанию является Inf.

DiffMinChange

Минимальное изменение переменных для градиентов с конечной разностью (a положительной скалярной величины). Значение по умолчанию является 0.

Display

Level of display (см. Итеративное отображение):

  • 'off' или 'none' не отображает выход.

  • 'iter' отображает выход при каждой итерации и выдает выходное сообщение по умолчанию.

  • 'iter-detailed' отображает выход при каждой итерации и выдает техническое выходное сообщение.

  • 'notify' отображает вывод только, если функция не сходится, и выдает выходное сообщение по умолчанию.

  • 'notify-detailed' отображает вывод только, если функция не сходится, и выдает техническое выходное сообщение.

  • 'final' (по умолчанию) отображает только окончательный выход и выдает выходное сообщение по умолчанию.

  • 'final-detailed' отображает только окончательный выход и выдает техническое выходное сообщение.

EqualityGoalCount

Количество целей, необходимых для достижения цели fun чтобы равняться цели goal (неотрицательное целое число). Цели должны быть разбиты на несколько первых элементов F. Значение по умолчанию является 0. Для получения примера смотрите Мультиобъектную Оптимизацию Достижения Цели.

Для optimset, имя GoalsExactAchieve.

FiniteDifferenceStepSize

Скаляр или векторный коэффициент размера для конечных различий. Когда вы задаете FiniteDifferenceStepSize в вектор v, прямые конечные различия delta являются

delta = v.*sign′(x).*max(abs(x),TypicalX);

где sign′(x) = sign(x) кроме sign′(0) = 1. Центральные конечные различия

delta = v.*max(abs(x),TypicalX);

Скалярные FiniteDifferenceStepSize расширяется до вектора. Значение по умолчанию является sqrt(eps) для прямых конечных различий и eps^(1/3) для центральных конечных различий.

Для optimset, имя FinDiffRelStep.

FiniteDifferenceType

Тип конечных различий, используемых для оценки градиентов, либо 'forward' (по умолчанию), или 'central' (с центром). 'central' принимает в два раза больше вычислений функции, но, как правило, более точно.

Алгоритм осторожен, чтобы подчиниться границам при оценке обоих типов конечных различий. Например, это может сделать шаг назад, а не вперед, чтобы избежать оценки в точке за пределами границ.

Для optimset, имя FinDiffType.

FunctionTolerance

Допуск завершения функции (a положительной скалярной величины). Значение по умолчанию является 1e-6. См. «Допуски и критерий остановки».

Для optimset, имя TolFun.

FunValCheck

Проверяйте, что означает, действительны ли целевая функция и значения ограничений. 'on' отображает ошибку, когда целевая функция или ограничения возвращают комплексное значение Inf, или NaN. Значение по умолчанию 'off' не отображает ошибок.

MaxFunctionEvaluations

Максимально допустимое количество вычислений функции (положительное целое число). Значение по умолчанию является 100*numberOfVariables. См. Допуски и критерий остановки и итерации и счетчики функций.

Для optimset, имя MaxFunEvals.

MaxIterations

Максимально допустимое количество итераций (положительное целое число). Значение по умолчанию является 400. См. Допуски и критерий остановки и итерации и счетчики функций.

Для optimset, имя MaxIter.

MaxSQPIter

Максимально допустимое количество итераций SQP (положительное целое число). Значение по умолчанию является 10*max(numberOfVariables, numberOfInequalities + numberOfBounds).

MeritFunction

Если для этой опции задано значение 'multiobj' (по умолчанию), используйте функцию заслуг достижения цели. Если для этой опции задано значение 'singleobj', использовать fmincon функции заслуг.

OptimalityTolerance

Допуск завершения по оптимальности первого порядка (a положительной скалярной величины). Значение по умолчанию является 1e-6. См. «Мера оптимальности первого порядка».

Для optimset, имя TolFun.

OutputFcn

Одна или несколько пользовательских функций, которые вызываются оптимизационными функциями при каждой итерации. Передайте указатель на функцию или cell-массив указателей на функцию. Значением по умолчанию является none ([]). Смотрите Выходные функции и Синтаксис функции построения графика.

PlotFcn

Графики, показывающие различные показатели прогресса во время выполнения алгоритма. Выберите из предопределенных графиков или напишите свои собственные. Передайте имя, указатель на функцию или массив ячеек из имен или указателей на функцию. Для пользовательских функций построения графика передайте указатели на функцию. Значением по умолчанию является none ([]).

  • 'optimplotx' строит графики текущей точки.

  • 'optimplotfunccount' строит график счетчика функций.

  • 'optimplotfval' строит графики значений целевой функции.

  • 'optimplotconstrviolation' строит график максимального нарушения ограничений.

  • 'optimplotstepsize' строит графики размера шага.

Пользовательские функции построения графика используют тот же синтаксис, что и выходные функции. Смотрите Выходные функции для Optimization Toolbox™ и синтаксиса выходной функции и функции построения графика.

Для optimset, имя PlotFcns.

RelLineSrchBnd

Относительная граница (действительное неотрицательное скалярное значение) в длине шага поиска линии такой, что общее перемещение в x удовлетворяет | Δ <reservedrangesplaceholder6>   (<reservedrangesplaceholder5>) | ≤ relLineSrchBnd · макс. (| x (<reservedrangesplaceholder3>) |, | typicalx (<reservedrangesplaceholder1>) |). Эта опция обеспечивает управление величиной перемещений в x когда решатель делает слишком большие шаги. Значением по умолчанию является none ([]).

RelLineSrchBndDuration

Количество итераций, для которых граница задана в RelLineSrchBnd должен быть активен. Значение по умолчанию является 1.

SpecifyConstraintGradient

Градиент для нелинейных функций ограничений, заданный пользователем. Когда для этой опции задано значение true, fgoalattain ожидает, что функция ограничения будет иметь четыре выхода, как описано в nonlcon. Когда для этой опции задано значение false (по умолчанию), fgoalattain оценивает градиенты нелинейных ограничений с помощью конечных различий.

Для optimset, имя GradConstr и значения 'on' или 'off'.

SpecifyObjectiveGradient

Градиент для целевой функции, заданный пользователем. См. описание fun чтобы увидеть, как задать градиент. Установите эту опцию равной true иметь fgoalattain использовать пользовательский градиент целевой функции. Значение по умолчанию, false, причины fgoalattain для оценки градиентов с помощью конечных различий.

Для optimset, имя GradObj и значения 'on' или 'off'.

StepTolerance

Допуск завершения на x (положительный скаляр). Значение по умолчанию является 1e-6. См. «Допуски и критерий остановки».

Для optimset, имя TolX.

TolConSQP

Допуск завершения на внутренней итерации SQP нарушения ограничений (a положительной скалярной величины). Значение по умолчанию является 1e-6.

TypicalX

Типичные x значения. Количество элементов в TypicalX равно количеству элементов в x0, а начальная точка. Значение по умолчанию ones(numberofvariables,1). fgoalattain функция использует TypicalX для масштабирования конечных различий для оценки градиента.

UseParallel

Индикация параллельных вычислений. Когда true, fgoalattain оценивает градиенты параллельно. Значение по умолчанию является false. См. Параллельные вычисления.

Пример: optimoptions('fgoalattain','PlotFcn','optimplotfval')

Структура задачи, заданная как структура с полями в этой таблице.

Имя поляВход

objective

Целевая функция fun

x0

Начальная точка для x

goal

Цели для достижения

weight

Относительные факторы важности целей

Aineq

Матрица для линейных ограничений неравенства

bineq

Вектор для линейных ограничений неравенства

Aeq

Матрица для линейных ограничений равенства

beq

Вектор для линейных ограничений равенства
lbВектор нижних границ
ubВектор верхних границ

nonlcon

Нелинейная функция ограничения

solver

'fgoalattain'

options

Опции, созданные с optimoptions

Вы должны поставить по крайней мере objective, x0, goal, weight, solver, и options поля в problem структура.

Типы данных: struct

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

свернуть все

Решение, возвращенное как вектор действительных чисел или действительный массив. Размер x совпадает с размером x0. Как правило, x является локальным решением проблемы, когда exitflag положительно. Для получения информации о качестве решения см., Когда решатель преуспевает.

Значения целевой функции в решении, возвращенные как действительный массив. Обычно fval = fun(x).

Коэффициент достижения, возвращенный как действительное число. attainfactor содержит значение γ в решении. Если attainfactor отрицательно, цели были пересмотрены; если attainfactor положительно, цели недостаточно изучены. См. goal.

Причина fgoalattain stop, возвращается как целое число.

1

Функция сходится к решению x

4

Величина направления поиска была меньше заданного допуска, а нарушение ограничений меньше options.ConstraintTolerance

5

Величина производной по направлению была меньше заданного допуска, и нарушение ограничений было меньше options.ConstraintTolerance

0

Превышено количество итераций options.MaxIterations или превышено количество вычислений функции options.MaxFunctionEvaluations

-1

Остановлен выходной функцией или функцией построения графика

-2

Допустимая точка не найдена.

Информация о процессе оптимизации, возвращенная как структура с полями в этой таблице.

iterations

Количество проделанных итераций

funcCount

Количество вычислений функции

lssteplength

Размер шага поиска линии относительно направления поиска

constrviolation

Максимум функций ограничения

stepsize

Длина последнего перемещения в x

algorithm

Используемый алгоритм оптимизации

firstorderopt

Мера оптимальности первого порядка

message

Выходное сообщение

Множители Лагранжа в решении, возвращенные как структура с полями в этой таблице.

lower

Нижние границы, соответствующие lb

upper

Верхние границы, соответствующие ub

ineqlin

Линейное неравенство, соответствующее A и b

eqlin

Линейные равенства, соответствующие Aeq и beq

ineqnonlin

Нелинейные неравенства, соответствующие c в nonlcon

eqnonlin

Нелинейные равенства, соответствующие ceq в nonlcon

Алгоритмы

Описание fgoalattain алгоритм и обсуждение концепций достижения цели, см. Алгоритмы.

Альтернативная функциональность

Приложение

Задача Optimize Live Editor обеспечивает визуальный интерфейс для fgoalattain.

Расширенные возможности

Представлено до R2006a