Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

fgoalattain

Resolver problemas de consecución de objetivos multiobjetivo

Descripción

resuelve el problema de logro de objetivos, una formulación para minimizar un problema de optimización multiobjetivo.fgoalattain

encuentra el mínimo de un problema especificado porfgoalattain

minimizex,γ γ such that {F(x)weightγgoalc(x)0ceq(x)=0AxbAeqx=beqlbxub.

,, y son vectores, y son matrices, y (), () y (), son funciones que devuelven vectores. (), () y () pueden ser funciones no lineales.weightgoalbbeqAAeqFxcxceqxFxcxceqx

, y se pueden pasar como vectores o matrices; Ver.xlbubArgumentos de matriz

ejemplo

x = fgoalattain(fun,x0,goal,weight) intenta hacer que las funciones objetivas suministradas por alcanzar los objetivos especificados por variando, comenzando en, con el peso especificado por.fungoalxx0weight

Nota

explica cómo pasar parámetros adicionales a las funciones objetivas y las funciones de restricción no lineal, si es necesario.Pasar parámetros adicionales

ejemplo

x = fgoalattain(fun,x0,goal,weight,A,b) resuelve el problema de logro de objetivo sujeto a las desigualdades.A*x ≤ b

x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq) resuelve el problema de logro de objetivo sujeto a las equalidades.Aeq*x = beq Si no existen desigualdades, establezca y.A = []b = []

ejemplo

x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub) resuelve el problema de logro de objetivo sujeto a los límites ≤ ≤.lb  x  ub Si no existen ecualidades, establezca y.Aeq = []beq = [] Si está sin enlazar a continuación, establezca; Si está sin delimitar, establezca.x(i)lb(i) = -Infx(i)ub(i) = Inf

Nota

Si los límites de entrada especificados para un problema son incoherentes, la salida es y la salida es.xx0fval[]

ejemplo

x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon) resuelve el problema de logro de objetivo sujeto a las desigualdades o ecualidades no lineales definidas en. optimiza tal que y.c(x)ceq(x)nonlconfgoalattainc(x) ≤ 0ceq(x) = 0 Si no existen límites, establezca o, o ambos.lb = []ub = []

ejemplo

x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options) resuelve el problema de logro de objetivo con las opciones de optimización especificadas en.Opciones Se usa para establecer estas opciones.optimoptions

x = fgoalattain(problem) resuelve el problema de logro de objetivo, donde se describe una estructura.problemproblemproblem Cree la estructura exportando un problema desde la aplicación de optimización, tal como se describe en.problemExportar su trabajo

ejemplo

[x,fval] = fgoalattain(___), para cualquier sintaxis, devuelve los valores de las funciones objetivas calculadas en la solución.funx

ejemplo

[x,fval,attainfactor,exitflag,output] = fgoalattain(___) Además devuelve el factor de logro en la solución, un valor que describe la condición de salida y una estructura con información sobre el proceso de optimización.xexitflagfgoalattainoutput

ejemplo

[x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(___) Además, devuelve una estructura cuyos campos contienen los multiplicadores de Lagrange en la solución.lambdax

Ejemplos

contraer todo

Consideremos la función de dos objetivos

<math display="block">
<mrow>
<mi>F</mi>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mrow>
<mo>[</mo>
<mrow>
<mfrac linethickness="0">
<mrow>
<mn>2</mn>
<mo>+</mo>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo>-</mo>
<mn>3</mn>
<msup>
<mrow>
<mo stretchy="false">)</mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
<mrow>
<mn>5</mn>
<mo>+</mo>
<msup>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
<mo>/</mo>
<mn>4</mn>
</mrow>
</mfrac>
</mrow>
<mo>]</mo>
</mrow>
<mo>.</mo>
</mrow>
</math>

Esta función minimiza claramente

<math display="block">
<mrow>
<msub>
<mrow>
<mi>F</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo stretchy="false">)</mo>
</mrow>
</math>
En
<math display="block">
<mrow>
<mi>x</mi>
<mo>=</mo>
<mn>3</mn>
</mrow>
</math>
, alcanzando el valor 2, y minimiza
<math display="block">
<mrow>
<msub>
<mrow>
<mi>F</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo stretchy="false">)</mo>
</mrow>
</math>
En
<math display="block">
<mrow>
<mi>x</mi>
<mo>=</mo>
<mn>0</mn>
</mrow>
</math>
, alcanzando el valor 5.

Fije el objetivo [3, 6] y el peso [1, 1], y resuelva el problema de logro del objetivo comenzando en = 1.x0

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 

Busca el valor de

<math display="block">
<mrow>
<mi>F</mi>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo stretchy="false">)</mo>
</mrow>
</math>
en la solución.

fun(x)
ans = 2×1

    3.0000
    6.0000

logre los objetivos exactamente.fgoalattain

La función objetiva es

<math display="block">
<mrow>
<mi>F</mi>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mrow>
<mo>[</mo>
<mrow>
<mfrac linethickness="0">
<mrow>
<mrow>
<mn>2</mn>
<mo>+</mo>
<mo stretchy="false"></mo>
<mi>x</mi>
<mo>-</mo>
<msub>
<mrow>
<mi>p</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<msup>
<mrow>
<mo stretchy="false"></mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
</mrow>
<mrow>
<mn>5</mn>
<mo>+</mo>
<mo stretchy="false"></mo>
<mi>x</mi>
<mo>-</mo>
<msub>
<mrow>
<mi>p</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<msup>
<mrow>
<mo stretchy="false"></mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
<mo>/</mo>
<mn>4</mn>
</mrow>
</mfrac>
</mrow>
<mo>]</mo>
</mrow>
<mo>.</mo>
</mrow>
</math>

Aquí, p _ = [2, 3] y p _ = [4, 1].12 El objetivo es [3, 6], el peso es [1, 1], y la restricción lineal es

<math display="block">
<mrow>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<mo></mo>
<mn>4</mn>
</mrow>
</math>
.

Crea la función objetivo, el objetivo y el peso.

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];

Cree las matrices de restricciones lineales y representarlas.AbA*x <= b

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

Fije un punto inicial [1, 1] y resuelva el problema de logro del objetivo.

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

Busca el valor de

<math display="block">
<mrow>
<mi>F</mi>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo stretchy="false">)</mo>
</mrow>
</math>
en la solución.

fun(x)
ans = 2×1

    3.1484
    6.1484

no cumple con los objetivos.fgoalattain Dado que los pesos son iguales, el solucionador subalcanza cada objetivo en la misma cantidad.

La función objetiva es

<math display="block">
<mrow>
<mi>F</mi>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mrow>
<mo>[</mo>
<mrow>
<mfrac linethickness="0">
<mrow>
<mrow>
<mn>2</mn>
<mo>+</mo>
<mo stretchy="false"></mo>
<mi>x</mi>
<mo>-</mo>
<msub>
<mrow>
<mi>p</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<msup>
<mrow>
<mo stretchy="false"></mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
</mrow>
<mrow>
<mrow>
<mn>5</mn>
<mo>+</mo>
<mo stretchy="false"></mo>
<mi>x</mi>
<mo>-</mo>
<msub>
<mrow>
<mi>p</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<msup>
<mrow>
<mo stretchy="false"></mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
<mo>/</mo>
<mn>4</mn>
</mrow>
</mrow>
</mfrac>
</mrow>
<mo>]</mo>
</mrow>
<mo>.</mo>
</mrow>
</math>

Aquí, p _ = [2, 3] y p _ = [4, 1].12 El objetivo es [3, 6], el peso es [1, 1], y los límites son

<math display="block">
<mrow>
<mn>0</mn>
<mo></mo>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<mo></mo>
<mn>3</mn>
</mrow>
</math>
,
<math display="block">
<mrow>
<mn>2</mn>
<mo></mo>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<mo></mo>
<mn>5</mn>
</mrow>
</math>
.

Crea la función objetivo, el objetivo y el peso.

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];

Cree los límites.

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

Fije el punto inicial a [1, 4] y resuelva el problema de logro del objetivo.

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

Busca el valor de

<math display="block">
<mrow>
<mi>F</mi>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo stretchy="false">)</mo>
</mrow>
</math>
en la solución.

fun(x)
ans = 2×1

    2.8889
    5.8889

más de lo que cumple con los objetivos.fgoalattain Dado que las ponderaciones son iguales, el solucionador supera cada objetivo en la misma cantidad.

La función objetiva es

<math display="block">
<mrow>
<mi>F</mi>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mrow>
<mo>[</mo>
<mrow>
<mfrac linethickness="0">
<mrow>
<mrow>
<mn>2</mn>
<mo>+</mo>
<mo stretchy="false"></mo>
<mi>x</mi>
<mo>-</mo>
<msub>
<mrow>
<mi>p</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<msup>
<mrow>
<mo stretchy="false"></mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
</mrow>
<mrow>
<mrow>
<mn>5</mn>
<mo>+</mo>
<mo stretchy="false"></mo>
<mi>x</mi>
<mo>-</mo>
<msub>
<mrow>
<mi>p</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<msup>
<mrow>
<mo stretchy="false"></mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
<mo>/</mo>
<mn>4</mn>
</mrow>
</mrow>
</mfrac>
</mrow>
<mo>]</mo>
</mrow>
<mo>.</mo>
</mrow>
</math>

Aquí, p _ = [2, 3] y p _ = [4, 1].12 El objetivo es [3, 6], el peso es [1, 1], y la restricción no lineal es

<math display="block">
<mrow>
<mo stretchy="false"></mo>
<mi>x</mi>
<msup>
<mrow>
<mo stretchy="false"></mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
<mo></mo>
<mn>4</mn>
</mrow>
</math>
.

Crea la función objetivo, el objetivo y el peso.

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];

La función de restricción no lineal está en el archivo.norm4.m

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

Cree argumentos de entrada vacíos para las restricciones y los límites lineales.

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

Fije el punto inicial a [1, 1] y resuelva el problema de logro del objetivo.

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

Busca el valor de

<math display="block">
<mrow>
<mi>F</mi>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo stretchy="false">)</mo>
</mrow>
</math>
en la solución.

fun(x)
ans = 2×1

    4.5778
    7.1991

no cumple con los objetivos.fgoalattain A pesar de los pesos iguales,

<math display="block">
<mrow>
<msub>
<mrow>
<mi>F</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo stretchy="false">)</mo>
</mrow>
</math>
es de aproximadamente 1,58 de su objetivo de 3, y
<math display="block">
<mrow>
<msub>
<mrow>
<mi>F</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo stretchy="false">)</mo>
</mrow>
</math>
está a unos 1,2 de su objetivo de 6. La restricción no lineal impide que la solución logre los objetivos por igual.x

Supervise un proceso de solución de consecución de objetivo estableciendo opciones para devolver la visualización iterativa.

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

La función objetiva es

<math display="block">
<mrow>
<mi>F</mi>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mrow>
<mo>[</mo>
<mrow>
<mfrac linethickness="0">
<mrow>
<mrow>
<mn>2</mn>
<mo>+</mo>
<mo stretchy="false"></mo>
<mi>x</mi>
<mo>-</mo>
<msub>
<mrow>
<mi>p</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<msup>
<mrow>
<mo stretchy="false"></mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
</mrow>
<mrow>
<mrow>
<mn>5</mn>
<mo>+</mo>
<mo stretchy="false"></mo>
<mi>x</mi>
<mo>-</mo>
<msub>
<mrow>
<mi>p</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<msup>
<mrow>
<mo stretchy="false"></mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
<mo>/</mo>
<mn>4</mn>
</mrow>
</mrow>
</mfrac>
</mrow>
<mo>]</mo>
</mrow>
<mo>.</mo>
</mrow>
</math>

Aquí, p _ = [2, 3] y p _ = [4, 1].12 El objetivo es [3, 6], el peso es [1, 1], y la restricción lineal es

<math display="block">
<mrow>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<mo></mo>
<mn>4</mn>
</mrow>
</math>
.

Crea la función objetivo, el objetivo y el peso.

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];

Cree las matrices de restricciones lineales y representarlas.AbA*x <= b

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

Cree argumentos de entrada vacíos para las restricciones de igualdad lineales, los límites y las restricciones no lineales.

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

Fije un punto inicial [1, 1] y resuelva el problema de logro del objetivo.

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.747e-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

El valor positivo del factor de logro reportado indica que no encuentra una solución que satisfaga los objetivos.fgoalattain

La función objetiva es

<math display="block">
<mrow>
<mi>F</mi>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mrow>
<mo>[</mo>
<mrow>
<mfrac linethickness="0">
<mrow>
<mrow>
<mn>2</mn>
<mo>+</mo>
<mo stretchy="false"></mo>
<mi>x</mi>
<mo>-</mo>
<msub>
<mrow>
<mi>p</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<msup>
<mrow>
<mo stretchy="false"></mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
</mrow>
<mrow>
<mrow>
<mn>5</mn>
<mo>+</mo>
<mo stretchy="false"></mo>
<mi>x</mi>
<mo>-</mo>
<msub>
<mrow>
<mi>p</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<msup>
<mrow>
<mo stretchy="false"></mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
<mo>/</mo>
<mn>4</mn>
</mrow>
</mrow>
</mfrac>
</mrow>
<mo>]</mo>
</mrow>
<mo>.</mo>
</mrow>
</math>

Aquí, p _ = [2, 3] y p _ = [4, 1].12 El objetivo es [3, 6], el peso es [1, 1], y la restricción lineal es

<math display="block">
<mrow>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<mo></mo>
<mn>4</mn>
</mrow>
</math>
.

Crea la función objetivo, el objetivo y el peso.

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];

Cree las matrices de restricciones lineales y representarlas.AbA*x <= b

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

Fije un punto inicial [1, 1] y resuelva el problema de logro del objetivo. Solicitar el valor de la función objetiva.

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

Los valores de la función objetiva son más altos que el objetivo, lo que significa que no satisface el objetivo.fgoalattain

La función objetiva es

<math display="block">
<mrow>
<mi>F</mi>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mrow>
<mo>[</mo>
<mrow>
<mfrac linethickness="0">
<mrow>
<mrow>
<mn>2</mn>
<mo>+</mo>
<mo stretchy="false"></mo>
<mi>x</mi>
<mo>-</mo>
<msub>
<mrow>
<mi>p</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<msup>
<mrow>
<mo stretchy="false"></mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
</mrow>
<mrow>
<mrow>
<mn>5</mn>
<mo>+</mo>
<mo stretchy="false"></mo>
<mi>x</mi>
<mo>-</mo>
<msub>
<mrow>
<mi>p</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<msup>
<mrow>
<mo stretchy="false"></mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
<mo>/</mo>
<mn>4</mn>
</mrow>
</mrow>
</mfrac>
</mrow>
<mo>]</mo>
</mrow>
<mo>.</mo>
</mrow>
</math>

Aquí, p _ = [2, 3] y p _ = [4, 1].12 El objetivo es [3, 6], el peso es [1, 1], y la restricción lineal es

<math display="block">
<mrow>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<mo></mo>
<mn>4</mn>
</mrow>
</math>
.

Crea la función objetivo, el objetivo y el peso.

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];

Cree las matrices de restricciones lineales y representarlas.AbA*x <= b

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

Fije un punto inicial [1, 1] y resuelva el problema de logro del objetivo. Solicite el valor de la función objetiva, el factor de logro, el indicador de salida, la estructura de salida y los multiplicadores de Lagrange.

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.1442e-13
          algorithm: 'active-set'
      firstorderopt: []
    constrviolation: 6.7468e-13
            message: '...'

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

El valor positivo de indica que los objetivos no se alcanzan; también puede ver esto comparando con.attainfactorfvalgoal

El valor es distinto de cero, lo que indica que la desigualdad lineal restringe la solución.lambda.ineqlin

La función objetiva es

<math display="block">
<mrow>
<mi>F</mi>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mrow>
<mo>[</mo>
<mrow>
<mfrac linethickness="0">
<mrow>
<mrow>
<mn>2</mn>
<mo>+</mo>
<mo stretchy="false"></mo>
<mi>x</mi>
<mo>-</mo>
<msub>
<mrow>
<mi>p</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<msup>
<mrow>
<mo stretchy="false"></mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
</mrow>
<mrow>
<mrow>
<mn>5</mn>
<mo>+</mo>
<mo stretchy="false"></mo>
<mi>x</mi>
<mo>-</mo>
<msub>
<mrow>
<mi>p</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<msup>
<mrow>
<mo stretchy="false"></mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
<mo>/</mo>
<mn>4</mn>
</mrow>
</mrow>
</mfrac>
</mrow>
<mo>]</mo>
</mrow>
<mo>.</mo>
</mrow>
</math>

Aquí, p _ = [2, 3] y p _ = [4, 1].12 El objetivo es [3, 6], y el peso inicial es [1, 1].

Cree la función objetiva, el objetivo y el peso inicial.

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];

Establezca la restricción lineal

<math display="block">
<mrow>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<mo></mo>
<mn>4</mn>
</mrow>
</math>
.

A = [1 1]; b = 4;

Resuelve el problema de logro de objetivo a partir del punto.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

Cada componente está por encima del componente correspondiente, indicando que no se alcanzan los objetivos.fvalgoal

Aumente la importancia de satisfacer el primer objetivo estableciendo un valor más pequeño.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

Ahora el valor de está mucho más cerca, mientras que está más lejos de.fval(1)goal(1)fval(2)goal(2)

Cambie a 7, que está por encima de la solución actual.goal(2) La solución cambia.

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

Ambos componentes son inferiores a los componentes correspondientes de.fvalgoal Pero está mucho más cerca de lo que es.fval(1)goal(1)fval(2)goal(2) Un peso menor es más probable que su componente esté casi satisfecho cuando los objetivos no pueden lograrse, pero hace que el grado de sobrerendimiento sea menor cuando se puede lograr el objetivo.

Cambie las ponderaciones para que sean iguales. Los resultados tienen la misma distancia de sus objetivos.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

Las restricciones pueden mantener el resultado de estar igual de cerca de los objetivos.fval Por ejemplo, establezca un límite superior de 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

En este caso, cumple con su objetivo exactamente, pero es menor que su objetivo.fval(1)fval(2)

Argumentos de entrada

contraer todo

Funciones objetivas, especificadas como un identificador de función o un nombre de función. es una función que acepta un vector y devuelve un vector, las funciones objetivas evaluadas en.funxFx Puede especificar la función como un manejador de funciones para un archivo de función:fun

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

donde se encuentra una función comomyfunMATLAB®

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

también puede ser un identificador de función para una función anónima:fun

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

Si los valores definidos por el usuario para y son matrices, los convierte en vectores mediante la indexación lineal (consulte).xFfgoalattainIndexación de matrices (MATLAB)

Para hacer una función objetiva lo más cerca posible de un valor de objetivo (es decir, no mayor que ni menor que), utilice para establecer la opción en el número de objetivos requeridos para estar en la vecindad de los valores del objetivo.optimoptionsEqualityGoalCount Estos objetivos se dividen en los primeros elementos del vector devuelto por.mustFfun

Supongamos que el degradado de la función objetiva también se puede calcular la opción es, según lo establecido por:and SpecifyObjectiveGradienttrue

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

En este caso, la función debe devolver, en el segundo argumento de salida, el valor de degradado (una matriz) en.funGx El degradado consiste en la derivada parcial de cada uno en el punto.dF/dxFx Si es un vector de longitud y tiene longitud, donde es la longitud de, entonces el gradiente de es una-por-matriz donde es la derivada parcial de con respecto a (es decir, la columna TH de es el degradado de la función objetivo TH).Fmxnnx0GF(x)nmG(i,j)F(j)x(i)jGjF(j)

Nota

Establecer en es eficaz sólo cuando el problema no tiene restricciones no lineales, o el problema tiene una restricción no lineal con establecido en.SpecifyObjectiveGradienttrueSpecifyConstraintGradienttrue Internamente, el objetivo se pliega en las restricciones, por lo que el solucionador necesita tanto degradados (objetivo y restricción) suministrados con el fin de evitar estimar un degradado.

Tipos de datos: char | string | function_handle

Punto inicial, especificado como un vector real o una matriz real. Solvers utilizan el número de elementos en y el tamaño de para determinar el número y el tamaño de las variables que acepta.x0x0fun

Ejemplo: x0 = [1,2,3,4]

Tipos de datos: double

Objetivo a alcanzar, especificado como un vector real. intenta encontrar el multiplicador más pequeño que hace que estas desigualdades se mantenga para todos los valores de la solución:fgoalattainγix

Fi(x)goaliweightiγ.

Suponiendo que es un vector positivo:weight

  • Si el solucionador encuentra un punto que simultáneamente alcanza todos los objetivos, entonces el factor de logro es negativo, y los objetivos se sobrealcanzan.xγ

  • Si el solucionador no puede encontrar un punto que logre simultáneamente todos los objetivos, entonces el factor de logro es positivo y los objetivos son infreperalcanzados.xγ

Ejemplo: [1 3 6]

Tipos de datos: double

Factor de cumplimiento relativo, especificado como un vector real. intenta encontrar el multiplicador más pequeño que hace que estas desigualdades se mantenga para todos los valores de la solución:fgoalattainγix

Fi(x)goaliweightiγ.

Cuando los valores de are, para asegurar el mismo porcentaje de sublogro o sobreconsecución de los objetivos activos, fijado.goalall nonzeroweightabs(goal) (Los objetivos activos son el conjunto de objetivos que son barreras para mejorar aún más los objetivos de la solución.)

Nota

Establecer un componente del vector en cero hace que la restricción de objetivo correspondiente se trate como una restricción rígida en lugar de una restricción de objetivo.weight Un método alternativo para establecer una restricción rígida es usar el argumento de entrada.nonlcon

Cuando es positivo, intenta hacer que el objetivo funcione menos que los valores de objetivo.weightfgoalattain Para que las funciones objetivas sean mayores que los valores de los objetivos, se establece como negativo en lugar de positivo.weight Para ver algunos efectos de pesos en una solución, vea.Efectos de pesos, metas y restricciones en la consecución de objetivos

Para hacer una función objetiva lo más cerca posible de un valor de objetivo, utilice la opción y especifique el objetivo como el primer elemento del vector devuelto por (ver y).EqualityGoalCountfunfunOpciones Para ver un ejemplo, vea.Optimización de logro de objetivos multi-objetivo

Ejemplo: abs(goal)

Tipos de datos: double

Restricciones de desigualdad lineales, especificadas como una matriz real. es un-por-matriz, donde es el número de desigualdades, y es el número de variables (número de elementos en).AMNMNx0 Para problemas grandes, pase como una matriz dispersa.A

codifica las desigualdades linealesAM

,A*x <= b

donde está el vector de columna de variables, y es un vector de columna con elementos.xNx(:)bM

Por ejemplo, para especificar

x1 + 2x2 ≤ 10 3
x1 + 4x2 ≤ 20 5
x1 + 6x2 ≤ 30,

Ingrese estas restricciones:

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

Ejemplo: Para especificar que los componentes x suman 1 o menos, utilice y.A = ones(1,N)b = 1

Tipos de datos: double

Restricciones de desigualdad lineales, especificadas como un vector real. es un vector de elemento relacionado con la matriz.bMA Si se pasa como un vector de fila, los solucionadores se convierten internamente al vector de columna.bbb(:) Para problemas grandes, pase como un vector disperso.b

codifica las desigualdades linealesbM

,A*x <= b

donde está el vector de columna de variables, y es una matriz de tamaño por.xNx(:)AMN

Por ejemplo, para especificar

x1 + 2x2 ≤ 10 3
x1 + 4x2 ≤ 20 5
x1 + 6x2 ≤ 30,

Ingrese estas restricciones:

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

Ejemplo: Para especificar que los componentes x suman 1 o menos, utilice y.A = ones(1,N)b = 1

Tipos de datos: double

Restricciones de igualdad lineales, especificadas como una matriz real. es un-por-matriz, donde es el número de ecualidades, y es el número de variables (número de elementos en).AeqMeNMeNx0 Para problemas grandes, pase como una matriz dispersa.Aeq

codifica las equalidades linealesAeqMe

,Aeq*x = beq

donde está el vector de columna de variables, y es un vector de columna con elementos.xNx(:)beqMe

Por ejemplo, para especificar

x1 + 2x2 + 3x3 = 10 2
x1 + 4x2 +x3 = 20,

Ingrese estas restricciones:

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

Ejemplo: Para especificar que los componentes x suman 1, utilice y.Aeq = ones(1,N)beq = 1

Tipos de datos: double

Restricciones de igualdad lineales, especificadas como un vector real. es un vector de elemento relacionado con la matriz.beqMeAeq Si se pasa como un vector de fila, los solucionadores se convierten internamente al vector de columna.beqbeqbeq(:) Para problemas grandes, pase como un vector disperso.beq

codifica las equalidades linealesbeqMe

,Aeq*x = beq

donde está el vector de columna de variables, y es una matriz de tamaño por.xNx(:)AeqMeN

Por ejemplo, para especificar

x1 + 2x2 + 3x3 = 10 2
x1 + 4x2 +x3 = 20,

Ingrese estas restricciones:

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

Ejemplo: Para especificar que los componentes x suman 1, utilice y.Aeq = ones(1,N)beq = 1

Tipos de datos: double

Límites inferiores, especificados como un vector real o una matriz real. Si el número de elementos en es igual al número de elementos en, a continuación, especifica quex0lblb

para todos.x(i) >= lb(i)i

Si, a continuación, especifica quenumel(lb) < numel(x0)lb

Para.x(i) >= lb(i)1 <= i <= numel(lb)

Si hay menos elementos en que in, los solucionadores emiten una advertencia.lbx0

Ejemplo: Para especificar que todos los componentes x son positivos, utilice.lb = zeros(size(x0))

Tipos de datos: double

Límites superiores, especificados como un vector real o una matriz real. Si el número de elementos en es igual al número de elementos en, a continuación, especifica quex0ubub

para todos.x(i) <= ub(i)i

Si, a continuación, especifica quenumel(ub) < numel(x0)ub

Para.x(i) <= ub(i)1 <= i <= numel(ub)

Si hay menos elementos en que in, los solucionadores emiten una advertencia.ubx0

Ejemplo: Para especificar que todos los componentes x son inferiores a 1, utilice.ub = ones(size(x0))

Tipos de datos: double

Restricciones no lineales, especificadas como un identificador de función o un nombre de función. es una función que acepta un vector o array y devuelve dos matrices, y.nonlconxc(x)ceq(x)

  • es la matriz de restricciones de desigualdad no lineal en.c(x)x fgoalattain intenta satisfacer

    c(x) <= 0 for all entries of c.

  • es la matriz de restricciones de igualdad no lineal en.ceq(x)x fgoalattain intenta satisfacer

    ceq(x) = 0 for all entries of ceq.

Por ejemplo,

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

donde se encuentra una función como la siguiente:myconMATLAB

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

Supongamos que los degradados de las restricciones también se pueden calcular la opción es, según lo establecido por:andSpecifyConstraintGradienttrue

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

En este caso, la función también debe devolver, en el tercer y cuarto argumentos de salida, el degradado de, y, el degradado de.nonlconGCc(x)GCeqceq(x) Consulte para obtener una explicación de cómo "condimentar" los degradados para utilizarlos en solucionadores que no aceptan degradados suministrados.Restricciones no lineales

Si devuelve un vector de componentes y tiene longitud, donde es la longitud de, a continuación, el degradado de es una-por-matriz, donde es la derivada parcial de con respecto a (es decir, la columna TH de es el degradado de la restricción de desigualdad TH).nonlconcmxnnx0GCc(x)nmGC(i,j)c(j)x(i)jGCjc(j) Del mismo modo, si tiene componentes, el gradiente de es una-por-matriz, donde es la derivada parcial de con respecto a (es decir, la columna TH de es el degradado de la restricción de igualdad TH).ceqpGCeqceq(x)npGCeq(i,j)ceq(j)x(i)jGCeqjceq(j)

Nota

Establecer en es eficaz sólo cuando se establece en.SpecifyConstraintGradienttrueSpecifyObjectiveGradienttrue Internamente, el objetivo se pliega en la restricción, por lo que el solucionador necesita tanto degradados (objetivo y restricción) suministrados con el fin de evitar estimar un degradado.

Nota

Dado que las funciones solo aceptan entradas de tipo, las funciones de restricción objetiva y no lineal proporcionadas por el usuario deben devolver salidas de tipo.Optimization Toolbox™doubledouble

Consulte para obtener una explicación de cómo parametrizar la función de restricción no lineal, si es necesario.Pasar parámetros adicionalesnonlcon

Tipos de datos: char | function_handle | string

Opciones de optimización, especificadas como la salida de o una estructura como devoluciones.optimoptionsoptimset

Algunas opciones están ausentes en la pantalla.optimoptions Estas opciones aparecen en cursiva en la tabla siguiente. Para obtener más información, consulte.Ver opciones

Para obtener más información sobre las opciones que tienen nombres diferentes para, vea.optimsetLas tablas de nombres de opciones actuales y heredadas

OpciónDescripción
ConstraintTolerance

Tolerancia de terminación en la infracción de restricción, un escalar positivo. El valor predeterminado es.1e-6 Ver.Tolerancias y criterios de detención

El nombre es.optimsetTolCon

Diagnostics

Visualización de información de diagnóstico sobre la función que se debe minimizar o resolver. Las opciones son o (el valor predeterminado).'on''off'

DiffMaxChange

Cambio máximo en las variables para los degradados de diferencias finitas (un escalar positivo). El valor predeterminado es.Inf

DiffMinChange

Cambio mínimo en las variables para los degradados de diferencias finitas (un escalar positivo). El valor predeterminado es.0

Display

Nivel de visualización (ver):Visualización iterativa

  • o no muestra ninguna salida.'off''none'

  • muestra la salida en cada iteración y proporciona el mensaje de salida predeterminado.'iter'

  • muestra la salida en cada iteración y proporciona el mensaje técnico de salida.'iter-detailed'

  • muestra la salida solamente si la función no converge, y da el mensaje de salida predeterminado.'notify'

  • muestra la salida sólo si la función no converge y da el mensaje técnico de salida.'notify-detailed'

  • (valor predeterminado) muestra solo la salida final y proporciona el mensaje de salida predeterminado.'final'

  • muestra sólo la salida final y da el mensaje técnico de salida.'final-detailed'

EqualityGoalCount

Número de objetivos requeridos para que el objetivo sea igual al objetivo (un entero no negativo).fungoal Los objetivos deben estar divididos en los primeros elementos de.F El valor predeterminado es.0 Para ver un ejemplo, vea.Optimización de logro de objetivos multi-objetivo

El nombre es.optimsetGoalsExactAchieve

FiniteDifferenceStepSize

Factor de tamaño de paso escalar o vectorial para diferencias finitas. Cuando se establece en un vector, las diferencias finitas de avance sonFiniteDifferenceStepSizevdelta

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

donde excepto.sign′(x) = sign(x)sign′(0) = 1 Las diferencias finitas centrales son

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

Escalar se expande a un vector.FiniteDifferenceStepSize El valor predeterminado es para las diferencias finitas de avance y para las diferencias finitas centrales.sqrt(eps)eps^(1/3)

El nombre es.optimsetFinDiffRelStep

FiniteDifferenceType

Tipo de diferencias finitas utilizadas para estimar degradados, ya sea (por defecto) o (centrado). toma el doble de evaluaciones de función, pero es generalmente más precisa.'forward''central''central'

El algoritmo tiene cuidado de obedecer los límites al estimar ambos tipos de diferencias finitas. Por ejemplo, podría tomar un paso atrás, en lugar de un paso adelante, para evitar la evaluación en un punto fuera de los límites.

El nombre es.optimsetFinDiffType

FunctionTolerance

Tolerancia de terminación en el valor de la función (un escalar positivo). El valor predeterminado es.1e-6 Ver.Tolerancias y criterios de detención

El nombre es.optimsetTolFun

FunValCheck

Compruebe que significa si la función objetiva y los valores de restricción son válidos. muestra un error cuando la función objetiva o las restricciones devuelven un valor que es complejo, o.'on'InfNaN El valor predeterminado no muestra ningún error.'off'

MaxFunctionEvaluations

Número máximo de evaluaciones de funciones permitidas (un entero positivo). El valor predeterminado es.100*numberOfVariables Mira y.Tolerancias y criterios de detenciónIteraciones y recuentos de funciones

El nombre es.optimsetMaxFunEvals

MaxIterations

Número máximo de iteraciones permitidas (un entero positivo). El valor predeterminado es.400 Mira y.Tolerancias y criterios de detenciónIteraciones y recuentos de funciones

El nombre es.optimsetMaxIter

MaxSQPIter

Número máximo de iteraciones SQP permitidas (un entero positivo). El valor predeterminado es.10*max(numberOfVariables, numberOfInequalities + numberOfBounds)

MeritFunction

Si esta opción está establecida en (el valor predeterminado), utilice la función de mérito de logro de objetivo.'multiobj' Si esta opción está configurada, utilice la función de mérito.'singleobj'fmincon

OptimalityTolerance

Tolerancia de terminación en la optimalidad de primer orden (un escalar positivo). El valor predeterminado es.1e-6 Ver.Medida de optimalidad de primer orden

El nombre es.optimsetTolFun

OutputFcn

Una o más funciones definidas por el usuario a las que llama una función de optimización en cada iteración. Pasar un identificador de función o una matriz de celdas de identificadores de función. El valor predeterminado es None ().[] Ver.Sintaxis de función de salida

PlotFcn

Parcelas que muestran varias medidas de progreso mientras se ejecuta el algoritmo. Seleccione entre parcelas predefinidas o escriba las suyas propias. Pase un nombre, un identificador de función o una matriz de nombres o identificadores de función de celda. Para las funciones de trazado personalizadas, pase los identificadores de función. El valor predeterminado es None ().[]

  • traza el punto actual.'optimplotx'

  • traza el recuento de funciones.'optimplotfunccount'

  • traza los valores de función objetivo.'optimplotfval'

  • traza la infracción de restricción máxima.'optimplotconstrviolation'

  • traza el tamaño del paso.'optimplotstepsize'

Para obtener información sobre cómo escribir una función de trazado personalizada, consulte.Sintaxis de función de trazado

El nombre es.optimsetPlotFcns

RelLineSrchBnd

Límite relativo (un valor escalar real no negativo) en la longitud del paso de búsqueda de línea, de forma que el desplazamiento total satisfacex x(i)| ≤ relLineSrchBnd· max(|x(i)|,|typicalx(i)|). Esta opción proporciona control sobre la magnitud de los desplazamientos cuando el solucionador toma pasos demasiado grandes.x El valor predeterminado es None ().[]

RelLineSrchBndDuration

Número de iteraciones para las que debe estar activo el enlazado especificado.RelLineSrchBnd El valor predeterminado es.1

SpecifyConstraintGradient

Degradado para las funciones de restricción no lineal definidas por el usuario. Cuando esta opción está establecida en, espera que la función de restricción tenga cuatro salidas, como se describe en.truefgoalattainnonlcon Cuando esta opción está establecida en (el valor predeterminado),false fgoalattain calcula los degradados de las restricciones no lineales utilizando diferencias finitas.

Para, el nombre es y los valores son o.optimsetGradConstr'on''off'

SpecifyObjectiveGradient

Gradiente para la función objetiva definida por el usuario. Consulte la descripción para ver cómo definir el degradado.fun Establezca esta opción para que utilice un degradado definido por el usuario de la función objetiva.truefgoalattain El valor predeterminado, hace que se estimen los degradados utilizando diferencias finitas.falsefgoalattain

Para, el nombre es y los valores son o.optimsetGradObj'on''off'

StepTolerance

Tolerancia de terminación en (un escalar positivo).x El valor predeterminado es.1e-6 Ver.Tolerancias y criterios de detención

El nombre es.optimsetTolX

TolConSQP

Tolerancia de terminación en la infracción de restricción SQP de iteración interna (un escalar positivo). El valor predeterminado es.1e-6

TypicalX

Valores típicos.x El número de elementos en es igual al número de elementos en, el punto de partida.TypicalXx0 El valor predeterminado es.ones(numberofvariables,1) La función utiliza para escalar las diferencias finitas para la estimación de degradado.fgoalattainTypicalX

UseParallel

Indicación de la computación paralela. Cuandotrue fgoalattain estima los degradados en paralelo. El valor predeterminado es.false Ver.Computación paralela

Ejemplo: optimoptions('fgoalattain','PlotFcn','optimplotfval')

Estructura del problema, especificada como una estructura con los campos de esta tabla.

Nombre de campoEntrada

Objetivo

Función objetivafun

x0

Punto inicial parax

goal

Objetivos para alcanzar

weight

Factores de importancia relativa de los objetivos

Aineq

Matriz para las restricciones de desigualdad lineal

bineq

Vector para las restricciones de desigualdad lineal

Aeq

Matriz para las restricciones de igualdad lineal

beq

Vector para las restricciones de igualdad lineales
lbVector de los límites inferiores
ubVector de los límites superiores

nonlcon

Función de restricción no lineal

solver

'fgoalattain'

Opciones

Las opciones creadas conoptimoptions

Debe suministrar al menos los campos,,,, y en la estructura.Objetivox0goalweightsolverOpcionesproblem

La forma más sencilla de obtener una estructura es exportar el problema desde la aplicación de optimización.problem

Tipos de datos: struct

Argumentos de salida

contraer todo

Solución, devuelta como un vector real o una matriz real. El tamaño de es el mismo que el tamaño de.xx0 Normalmente, es una solución local para el problema cuando es positivo.xexitflag Para obtener información sobre la calidad de la solución, consulte.Cuando el Solver se ejecuta correctamente

Valores de función objetiva en la solución, devueltos como una matriz real. Generalmente, =.fvalfun(x)

Factor de logro, devuelto como un número real. contiene el valor de la solución.attainfactorγ Si es negativo, los objetivos han sido sobrealcanzados; Si es positivo, los objetivos se han subalcanzado.attainfactorattainfactor Ver.goal

Razón fgoalattain detenido, devuelto como un entero.

1

La función convergió en una soluciónx

4

La magnitud de la dirección de búsqueda era menor que la tolerancia especificada y la infracción de restricción era menor queoptions.ConstraintTolerance

5

La magnitud del derivado direccional era menor que la tolerancia especificada, y la infracción de restricción era menor queoptions.ConstraintTolerance

0

Se superó el número de iteraciones o se superó el número de evaluaciones de funciónoptions.MaxIterationsoptions.MaxFunctionEvaluations

-1

Detenido por una función de salida o una función de trazado

-2

No se encontró ningún punto factible.

Información sobre el proceso de optimización, devuelta como una estructura con los campos de esta tabla.

iterations

Número de iteraciones tomadas

funcCount

Número de evaluaciones de funciones

lssteplength

El tamaño del paso de búsqueda de línea con respecto a la dirección de búsqueda

constrviolation

Máximo de las funciones de restricción

stepsize

La longitud del último desplazamiento enx

algorithm

Algoritmo de optimización utilizado

firstorderopt

Medida de la optimalidad de primer orden

message

Mensaje de salida

Los multiplicadores de Lagrange en la solución, devueltos como una estructura con los campos en esta tabla.

lower

Los límites inferiores corresponden alb

upper

Los límites superiores corresponden aub

ineqlin

Las desigualdades lineales correspondientes yAb

eqlin

Ecualidades lineales correspondientes a yAeqbeq

ineqnonlin

Las desigualdades no lineales correspondientes alcnonlcon

eqnonlin

Ecualidades no lineales correspondientes a laceqnonlcon

Algoritmos

Para obtener una descripción del algoritmo y una explicación de los conceptos de consecución de objetivo, consulte.fgoalattainAlgoritmos

Capacidades ampliadas

Introducido antes de R2006a