fgoalattain

Решите многоцелевые целевые проблемы достижения

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

fgoalattain находит минимум проблемы заданным

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

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

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

Синтаксис

x = fgoalattain(fun,x0,goal,weight)
x = fgoalattain(fun,x0,goal,weight,A,b)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options)
x = fgoalattain(problem)
[x,fval] = fgoalattain(___)
[x,fval,attainfactor,exitflag,output] = fgoalattain(___)
[x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(___)

Описание

пример

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 является структурой, описанной в 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.

Примеры

свернуть все

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

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_1 = [2,3] и p_2 = [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_1 = [2,3] и p_2 = [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_1 = [2,3] и p_2 = [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_1 = [2,3] и p_2 = [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     -1.115e-08        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.748e-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_1 = [2,3] и p_2 = [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_1 = [2,3] и p_2 = [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,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.1454e-13
          algorithm: 'active-set'
      firstorderopt: []
    constrviolation: 6.7482e-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.

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

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

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

Здесь, p_1 = [2,3] и p_2 = [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). Меньший вес, более вероятно, сделает свой компонент почти удовлетворенным, когда цели не смогут быть достигнуты, но делают степень сверхдостижения меньше, когда цель может быть достигнута.

Измените веса, чтобы быть равными. Результаты 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 преобразовывает их в векторы, использующие линейную индексацию (см. Индексацию массива (MATLAB)).

Сделать целевую функцию почти возможной к целевому значению (то есть, ни больше, чем, ни меньше, чем), 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) (то есть, j th столбец G является градиентом j th целевая функция F(j)).

Примечание

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

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

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

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

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

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

Fi(x)цельiвесiγ.

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

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

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

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

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

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

Fi(x)цельiвесiγ.

Когда значения 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.

Например, чтобы задать

x 1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 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.

Например, чтобы задать

x 1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 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.

Например, чтобы задать

x 1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x 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.

Например, чтобы задать

x 1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x 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). Смотрите Нелинейные Ограничения для объяснения того, как к “conditionalize” градиенты для использования в решателях, которые не принимают предоставленные градиенты.

Если nonlcon возвращает векторный c компонентов m, и x имеет длину n, где n является длиной x0, то градиент, GC c(x) является n-by-m матрица, где GC(i,j) является частной производной c(j) относительно x(i) (то есть, j th столбец GC является градиентом j th ограничение неравенства c(j)). Аналогично, если ceq имеет компоненты p, градиент, GCeq ceq(x) является n-by-p матрица, где GCeq(i,j) является частной производной ceq(j) относительно x(i) (то есть, j th столбец GCeq является градиентом j th ограничение равенства 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

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

DiffMinChange

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

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

Допуск завершения на значении функции (положительная скалярная величина). Значением по умолчанию является 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

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

Для optimset именем является TolFun.

OutputFcn

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

PlotFcn

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

  • 'optimplotx' строит текущую точку.

  • 'optimplotfunccount' строит функциональное количество.

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

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

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

Для получения информации о записи пользовательской функции построения графика смотрите Синтаксис Функции построения графика.

Для optimset именем является PlotFcns.

RelLineSrchBnd

Родственник связал (действительное неотрицательное скалярное значение) на длине шага поиска строки, таким образом, что общее смещение в x удовлетворяет | Δx (i) |  ≤ relLineSrchBnd · макс. (|x (i) |, |typicalx (i) |). Эта опция обеспечивает управление значением смещений в x, когда решатель предпринимает шаги, которые являются слишком большими. Значение по умолчанию не ни один ([]).

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 (положительная скалярная величина). Значением по умолчанию является 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.

Самым простым способом получить структуру problem является экспорт задачи из Optimization app.

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

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

свернуть все

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

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

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

Обоснуйте, что остановленный fgoalattain, возвратился как целое число.

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 и обсуждения целевых концепций достижения, см. Алгоритмы.

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

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