fgoalattain

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

Описание

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

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

minimizex,γ γ таким образом , что {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) попытки сделать целевые функции предоставленными 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] и решите целевую задачу достижения. Запросите значение целевой функции, фактора достижения, выходного флага, структуры 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.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- 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)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- 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- 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- 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- 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- m матрица, где GC(i,j) частная производная c(j) относительно x(i) (то есть, jстолбец th GC градиент jограничение неравенства th c(j)). Аналогично, если ceq имеет p компоненты, градиент GCeq из ceq(x) n- 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

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

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

Необходимо предоставить, по крайней мере, objectivex0 , goal, weight, solver, и options поля в problem структура.

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

Типы данных: 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