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.
Resolver problemas de consecución de objetivos multiobjetivo
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
,, y son vectores, y son matrices, y (), () y (), son funciones que devuelven vectores. (), () y () pueden ser funciones no lineales.weight
goal
bbeqAAeqFxcxceqxFxcxceqx
, y se pueden pasar como vectores o matrices; Ver.xlbubArgumentos de matriz
intenta hacer que las funciones objetivas suministradas por alcanzar los objetivos especificados por variando, comenzando en, con el peso especificado por.x
= fgoalattain(fun
,x0
,goal
,weight
)fun
goal
x
x0
weight
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
resuelve el problema de logro de objetivo sujeto a los límites ≤ ≤.x
= fgoalattain(fun
,x0
,goal
,weight
,A
,b
,Aeq
,beq
,lb
,ub
)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) = -Inf
x(i)
ub(i) = Inf
Nota
Si los límites de entrada especificados para un problema son incoherentes, la salida es y la salida es.x
x0
fval
[]
resuelve el problema de logro de objetivo, donde se describe una estructura.x
= fgoalattain(problem
)problem
problem
problem
Cree la estructura exportando un problema desde la aplicación de optimización, tal como se describe en.problem
Exportar su trabajo
[
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.x
,fval
,attainfactor
,exitflag
,output
]
= fgoalattain(___)x
exitflag
fgoalattain
output
Consideremos la función de dos objetivos
Esta función minimiza claramente
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
fun(x)
ans = 2×1
3.0000
6.0000
logre los objetivos exactamente.fgoalattain
La función objetiva es
Aquí, p _ = [2, 3] y p _ = [4, 1].1
2
El objetivo es [3, 6], el peso es [1, 1], y la restricción lineal es
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.A
b
A*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
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
Aquí, p _ = [2, 3] y p _ = [4, 1].1
2
El objetivo es [3, 6], el peso es [1, 1], y los límites son
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
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
Aquí, p _ = [2, 3] y p _ = [4, 1].1
2
El objetivo es [3, 6], el peso es [1, 1], y la restricción no lineal es
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
fun(x)
ans = 2×1
4.5778
7.1991
no cumple con los objetivos.fgoalattain
A pesar de los pesos iguales, 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
Aquí, p _ = [2, 3] y p _ = [4, 1].1
2
El objetivo es [3, 6], el peso es [1, 1], y la restricción lineal es
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.A
b
A*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
Aquí, p _ = [2, 3] y p _ = [4, 1].1
2
El objetivo es [3, 6], el peso es [1, 1], y la restricción lineal es
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.A
b
A*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
Aquí, p _ = [2, 3] y p _ = [4, 1].1
2
El objetivo es [3, 6], el peso es [1, 1], y la restricción lineal es
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.A
b
A*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.attainfactor
fval
goal
El valor es distinto de cero, lo que indica que la desigualdad lineal restringe la solución.lambda.ineqlin
La función objetiva es
Aquí, p _ = [2, 3] y p _ = [4, 1].1
2
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
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.fval
goal
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.fval
goal
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)
fun
— Las funciones objetivasFunciones 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.fun
x
F
x
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 comomyfun
MATLAB®
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).x
F
fgoalattain
Indexación de arreglos
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.optimoptions
EqualityGoalCount
Estos objetivos se dividen en los primeros elementos del vector devuelto por.mustF
fun
Supongamos que el degradado de la función objetiva también se puede calcular la opción es, según lo establecido por:and SpecifyObjectiveGradient
true
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.fun
G
x
El degradado consiste en la derivada parcial de cada uno en el punto.dF/dxF
x
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).F
m
x
n
n
x0
G
F(x)
n
m
G(i,j)
F(j)
x(i)
j
G
j
F(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.SpecifyObjectiveGradient
true
SpecifyConstraintGradient
true
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
x0
— Punto inicialPunto 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.x0
x0
fun
Ejemplo: x0 = [1,2,3,4]
Tipos de datos: double
goal
— Objetivo de alcanzarObjetivo 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
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
weight
— Factor de cumplimiento relativoFactor 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
Cuando los valores de are, para asegurar el mismo porcentaje de sublogro o sobreconsecución de los objetivos activos, fijado.goal
all nonzeroweight
abs(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.weight
fgoalattain
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).EqualityGoalCount
fun
fun
Opciones
Para ver un ejemplo, vea.Optimización de logro de objetivos multi-objetivo
Ejemplo: abs(goal)
Tipos de datos: double
A
— Las restricciones de desigualdad linealesRestricciones 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).A
M
N
M
N
x0
Para problemas grandes, pase como una matriz dispersa.A
codifica las desigualdades linealesA
M
,A*x <= b
donde está el vector de columna de variables, y es un vector de columna con elementos.x
N
x(:)
b
M
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
b
— Las restricciones de desigualdad linealesRestricciones de desigualdad lineales, especificadas como un vector real. es un vector de elemento relacionado con la matriz.b
M
A
Si se pasa como un vector de fila, los solucionadores se convierten internamente al vector de columna.b
b
b(:)
Para problemas grandes, pase como un vector disperso.b
codifica las desigualdades linealesb
M
,A*x <= b
donde está el vector de columna de variables, y es una matriz de tamaño por.x
N
x(:)
A
M
N
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
Aeq
— Las restricciones de igualdad linealesRestricciones 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).Aeq
Me
N
Me
N
x0
Para problemas grandes, pase como una matriz dispersa.Aeq
codifica las equalidades linealesAeq
Me
,Aeq*x = beq
donde está el vector de columna de variables, y es un vector de columna con elementos.x
N
x(:)
beq
Me
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
beq
— Las restricciones de igualdad linealesRestricciones de igualdad lineales, especificadas como un vector real. es un vector de elemento relacionado con la matriz.beq
Me
Aeq
Si se pasa como un vector de fila, los solucionadores se convierten internamente al vector de columna.beq
beq
beq(:)
Para problemas grandes, pase como un vector disperso.beq
codifica las equalidades linealesbeq
Me
,Aeq*x = beq
donde está el vector de columna de variables, y es una matriz de tamaño por.x
N
x(:)
Aeq
Me
N
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
lb
— Los límites inferioresLí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 quex0
lb
lb
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.lb
x0
Ejemplo: Para especificar que todos los componentes x son positivos, utilice.lb = zeros(size(x0))
Tipos de datos: double
ub
— Los límites superioresLí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 quex0
ub
ub
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.ub
x0
Ejemplo: Para especificar que todos los componentes x son inferiores a 1, utilice.ub = ones(size(x0))
Tipos de datos: double
nonlcon
— Las restricciones no linealesRestricciones 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.nonlcon
x
c(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:mycon
MATLAB
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:andSpecifyConstraintGradient
true
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.nonlcon
GC
c(x)
GCeq
ceq(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).nonlcon
c
m
x
n
n
x0
GC
c(x)
n
m
GC(i,j)
c(j)
x(i)
j
GC
j
c(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).ceq
p
GCeq
ceq(x)
n
p
GCeq(i,j)
ceq(j)
x(i)
j
GCeq
j
ceq(j)
Nota
Establecer en es eficaz sólo cuando se establece en.SpecifyConstraintGradient
true
SpecifyObjectiveGradient
true
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™double
double
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
options
— Las opciones de optimizaciónoptimoptions
| estructura, como las devolucionesoptimset
Opciones de optimización, especificadas como la salida de o una estructura como devoluciones.optimoptions
optimset
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.optimset
Las tablas de nombres de opciones actuales y heredadas
Opción | Descripción |
---|---|
ConstraintTolerance | Tolerancia de terminación en la infracción de restricción, un escalar positivo. El valor predeterminado es. El nombre es. |
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). |
DiffMaxChange | Cambio máximo en las variables para los degradados de diferencias finitas (un escalar positivo). El valor predeterminado es. |
DiffMinChange | Cambio mínimo en las variables para los degradados de diferencias finitas (un escalar positivo). El valor predeterminado es. |
| Nivel de visualización (ver):Visualización iterativa
|
EqualityGoalCount | Número de objetivos requeridos para que el objetivo sea igual al objetivo (un entero no negativo). El nombre es. |
FiniteDifferenceStepSize |
Factor de tamaño de paso escalar o vectorial para diferencias finitas. Cuando se establece en un vector, las diferencias finitas de avance son
sign′(x) = sign(x) sign′(0) = 1 Las diferencias finitas centrales son
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. |
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. 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. |
FunctionTolerance | Tolerancia de terminación en el valor de la función (un escalar positivo). El valor predeterminado es. El nombre es. |
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. |
MaxFunctionEvaluations | Número máximo de evaluaciones de funciones permitidas (un entero positivo). El valor predeterminado es. El nombre es. |
MaxIterations | Número máximo de iteraciones permitidas (un entero positivo). El valor predeterminado es. El nombre es. |
MaxSQPIter | Número máximo de iteraciones SQP permitidas (un entero positivo). El valor predeterminado es. |
MeritFunction | Si esta opción está establecida en (el valor predeterminado), utilice la función de mérito de logro de objetivo. |
OptimalityTolerance |
Tolerancia de terminación en la optimalidad de primer orden (un escalar positivo). El valor predeterminado es. El nombre es. |
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 (). |
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 ().
Para obtener información sobre cómo escribir una función de trazado personalizada, consulte.Sintaxis de función de trazado El nombre es. |
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 satisface |
RelLineSrchBndDuration | Número de iteraciones para las que debe estar activo el enlazado especificado. |
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. Para, el nombre es y los valores son o. |
SpecifyObjectiveGradient | Gradiente para la función objetiva definida por el usuario. Consulte la descripción para ver cómo definir el degradado. Para, el nombre es y los valores son o. |
StepTolerance | Tolerancia de terminación en (un escalar positivo). El nombre es. |
TolConSQP | Tolerancia de terminación en la infracción de restricción SQP de iteración interna (un escalar positivo). El valor predeterminado es. |
TypicalX | Valores típicos. |
UseParallel | Indicación de la computación paralela. Cuando |
Ejemplo: optimoptions('fgoalattain','PlotFcn','optimplotfval')
problem
— Estructura problemáticaEstructura del problema, especificada como una estructura con los campos de esta tabla.
Nombre de campo | Entrada |
---|---|
| Función objetivafun |
| Punto inicial parax |
| Objetivos para alcanzar |
| Factores de importancia relativa de los objetivos |
| Matriz para las restricciones de desigualdad lineal |
| Vector para las restricciones de desigualdad lineal |
| Matriz para las restricciones de igualdad lineal |
| Vector para las restricciones de igualdad lineales |
lb | Vector de los límites inferiores |
ub | Vector de los límites superiores |
| Función de restricción no lineal |
| 'fgoalattain' |
| Las opciones creadas conoptimoptions |
Debe suministrar al menos los campos,,,, y en la estructura.Objetivo
x0
goal
weight
solver
Opciones
problem
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
x
— SoluciónSolución, devuelta como un vector real o una matriz real. El tamaño de es el mismo que el tamaño de.x
x0
Normalmente, es una solución local para el problema cuando es positivo.x
exitflag
Para obtener información sobre la calidad de la solución, consulte.Cuando el Solver se ejecuta correctamente
fval
— Valores de función objetiva en la soluciónValores de función objetiva en la solución, devueltos como una matriz real. Generalmente, =.fval
fun(x)
attainfactor
— Factor de logroFactor 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.attainfactor
attainfactor
Ver.goal
exitflag
— Razón fgoalattain
DetenidoRazón fgoalattain
detenido, devuelto como un entero.
| La función convergió en una solución |
| La magnitud de la dirección de búsqueda era menor que la tolerancia especificada y la infracción de restricción era menor que |
| La magnitud del derivado direccional era menor que la tolerancia especificada, y la infracción de restricción era menor que |
| Se superó el número de iteraciones o se superó el número de evaluaciones de función |
| Detenido por una función de salida o una función de trazado |
| No se encontró ningún punto factible. |
output
— Información sobre el proceso de optimizaciónInformació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 en |
algorithm | Algoritmo de optimización utilizado |
firstorderopt | Medida de la optimalidad de primer orden |
message | Mensaje de salida |
lambda
— Los multiplicadores de Lagrange en soluciónLos multiplicadores de Lagrange en la solución, devueltos como una estructura con los campos en esta tabla.
Para obtener una descripción del algoritmo y una explicación de los conceptos de consecución de objetivo, consulte.fgoalattain
Algoritmos
Para ejecutar en paralelo, establezca la opción en.'UseParallel'
true
options = optimoptions('
solvername
','UseParallel',true)
Para obtener más información, consulte.Uso de la computación paralela enOptimization Toolbox
fmincon
| fminimax
| optimoptions
| optimtool
Existe una versión modificada de este ejemplo en su sistema. ¿Prefiere abrir esta versión?
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
Select web siteYou can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.