fminimax
Resolver un problema de restricción minimax
Sintaxis
Descripción
fminimax
busca un punto que minimice el máximo de un conjunto de funciones objetivo.
El problema incluye cualquier tipo de restricción. En detalle, fminimax
busca el mínimo de un problema especificado por
donde b y beq son vectores, A y Aeq son matrices y c(x), ceq(x) y F(x) son funciones que devuelven vectores. F(x), c(x) y ceq(x) pueden ser funciones no lineales.
x, lb y ub se pueden pasar como vectores o matrices; consulte Argumentos de matriz.
También se pueden resolver problemas max-min con fminimax
, usando la identidad
Puede resolver problemas con el formato
utilizando la opción AbsoluteMaxObjectiveCount
; consulte Resolver un problema minimax utilizando el valor absoluto de un objetivo.
comienza en x
= fminimax(fun
,x0
)x0
y encuentra una solución minimax x
para las funciones descritas en fun
.
Nota
En Pasar parámetros adicionales se explica cómo pasar parámetros adicionales a las funciones objetivo y a las funciones de restricción no lineales, si fuera necesario.
resuelve el problema minimax sujeto a los límites x
= fminimax(fun
,x0
,A
,b
,Aeq
,beq
,lb
,ub
)lb
≤ x
≤ ub
. Si no existen igualdades, establezca Aeq = []
y beq = []
. Si x(i)
está desacotado por abajo, establezca lb(i) = –Inf
; si x(i)
está desacotado por arriba, establezca ub(i) = Inf
.
Nota
Nota
Si los límites de entrada especificados para un problema son inconsistentes, la salida x
es x0
y la salida fval
es []
.
Ejemplos
Minimizar el máximo de sin
y cos
Cree una gráfica de las funciones sin
y cos
y su máximo sobre el intervalo [–pi,pi]
.
t = linspace(-pi,pi); plot(t,sin(t),'r-') hold on plot(t,cos(t),'b-'); plot(t,max(sin(t),cos(t)),'ko') legend('sin(t)','cos(t)','max(sin(t),cos(t))','Location','NorthWest')
La gráfica muestra dos mínimos locales del máximo, uno cerca de 1 y el otro cerca de -2. Encuentre el mínimo cercano a 1.
fun = @(x)[sin(x);cos(x)]; x0 = 1; x1 = fminimax(fun,x0)
Local minimum possible. Constraints satisfied. fminimax 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.
x1 = 0.7854
Encuentre el mínimo cercano a -2.
x0 = -2; x2 = fminimax(fun,x0)
Local minimum possible. Constraints satisfied. fminimax 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.
x2 = -2.3562
Resolver un problema minimax con restricciones lineales
Las funciones objetivo de este ejemplo son lineales con constantes. Para ver una descripción y una gráfica de las funciones objetivo, consulte Comparar fminimax y fminunc.
Establezca las funciones objetivo como tres funciones lineales con el formato para tres vectores y tres constantes .
a = [1;1]; b = [-1;1]; c = [0;-1]; a0 = 2; b0 = -3; c0 = 4; fun = @(x)[x*a+a0,x*b+b0,x*c+c0];
Encuentre el punto minimax sujeto a la desigualdad x(1) + 3*x(2) <= –4
.
A = [1,3]; b = -4; x0 = [-1,-2]; x = fminimax(fun,x0,A,b)
Local minimum possible. Constraints satisfied. fminimax 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
-5.8000 0.6000
Resolver un problema minimax con límites y restricciones
Las funciones objetivo de este ejemplo son lineales con constantes. Para ver una descripción y una gráfica de las funciones objetivo, consulte Comparar fminimax y fminunc.
Establezca las funciones objetivo como tres funciones lineales con el formato para tres vectores y tres constantes .
a = [1;1]; b = [-1;1]; c = [0;-1]; a0 = 2; b0 = -3; c0 = 4; fun = @(x)[x*a+a0,x*b+b0,x*c+c0];
Establezca límites en los que –2 <= x(1) <= 2
y –1 <= x(2) <= 1
, y resuelva el problema minimax partiendo de [0,0]
.
lb = [-2,-1];
ub = [2,1];
x0 = [0,0];
A = []; % No linear constraints
b = [];
Aeq = [];
beq = [];
[x,fval] = fminimax(fun,x0,A,b,Aeq,beq,lb,ub)
Local minimum possible. Constraints satisfied. fminimax 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
-0.0000 1.0000
fval = 1×3
3.0000 -2.0000 3.0000
En este caso, la solución no es única. Muchos puntos satisfacen las restricciones y tienen el mismo valor minimax. Represente la superficie con el máximo de las tres funciones objetivo y represente con una línea roja los puntos que tienen el mismo valor minimax.
[X,Y] = meshgrid(linspace(-2,2),linspace(-1,1)); Z = max(fun([X(:),Y(:)]),[],2); Z = reshape(Z,size(X)); surf(X,Y,Z,'LineStyle','none') view(-118,28) hold on line([-2,0],[1,1],[3,3],'Color','r','LineWidth',8) hold off
Encontrar el minimax sujeto a restricciones no lineales
Las funciones objetivo de este ejemplo son lineales con constantes. Para ver una descripción y una gráfica de las funciones objetivo, consulte Comparar fminimax y fminunc.
Establezca las funciones objetivo como tres funciones lineales con el formato para tres vectores y tres constantes .
a = [1;1]; b = [-1;1]; c = [0;-1]; a0 = 2; b0 = -3; c0 = 4; fun = @(x)[x*a+a0,x*b+b0,x*c+c0];
La función unitdisk
representa la restricción de desigualdad no lineal .
type unitdisk
function [c,ceq] = unitdisk(x) c = x(1)^2 + x(2)^2 - 1; ceq = [];
Resuelva el problema minimax sujeto a la restricción unitdisk
, partiendo de x0 = [0,0]
.
x0 = [0,0];
A = []; % No other constraints
b = [];
Aeq = [];
beq = [];
lb = [];
ub = [];
nonlcon = @unitdisk;
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
Local minimum possible. Constraints satisfied. fminimax 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
-0.0000 1.0000
Resolver un problema minimax utilizando el valor absoluto de un objetivo
fminimax
puede minimizar el máximo de o para los primeros valores de utilizando la opción AbsoluteMaxObjectiveCount
. Para minimizar los valores absolutos de de los objetivos, ordene los valores de la función objetivo de modo que los valores de a sean los objetivos para la minimización absoluta, y establezca la opción AbsoluteMaxObjectiveCount
en k
.
En este ejemplo, minimice el máximo de sin
y cos
, especifique sin
como primer objetivo y establezca AbsoluteMaxObjectiveCount
en 1.
fun = @(x)[sin(x),cos(x)]; options = optimoptions('fminimax','AbsoluteMaxObjectiveCount',1); x0 = 1; A = []; % No constraints b = []; Aeq = []; beq = []; lb = []; ub = []; nonlcon = []; x1 = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
Local minimum possible. Constraints satisfied. fminimax 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.
x1 = 0.7854
Intente empezar desde x0 = –2
.
x0 = -2; x2 = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
Local minimum possible. Constraints satisfied. fminimax 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.
x2 = -3.1416
Represente la función.
t = linspace(-pi,pi); plot(t,max(abs(sin(t)),cos(t)))
Para ver el efecto de la opción AbsoluteMaxObjectiveCount
, compare esta gráfica con la del ejemplo Minimizar el máximo de sin y cos.
Obtener el valor minimax
Obtenga tanto la ubicación del punto minimax como el valor de las funciones objetivo. Para ver una descripción y una gráfica de las funciones objetivo, consulte Comparar fminimax y fminunc.
Establezca las funciones objetivo como tres funciones lineales con el formato para tres vectores y tres constantes .
a = [1;1]; b = [-1;1]; c = [0;-1]; a0 = 2; b0 = -3; c0 = 4; fun = @(x)[x*a+a0,x*b+b0,x*c+c0];
Establezca el punto inicial en [0,0]
y encuentre el punto y el valor minimax.
x0 = [0,0]; [x,fval] = fminimax(fun,x0)
Local minimum possible. Constraints satisfied. fminimax 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.5000 2.2500
fval = 1×3
1.7500 1.7500 1.7500
Las tres funciones objetivo tienen el mismo valor en el punto minimax. Los problemas sin restricciones suelen tener al menos dos objetivos iguales en la solución, porque si un punto no es un mínimo local de ningún objetivo y solo un objetivo tiene el valor máximo, el objetivo máximo puede reducirse.
Obtener todas las salidas minimax
Las funciones objetivo de este ejemplo son lineales con constantes. Para ver una descripción y una gráfica de las funciones objetivo, consulte Comparar fminimax y fminunc.
Establezca las funciones objetivo como tres funciones lineales con el formato para tres vectores y tres constantes .
a = [1;1]; b = [-1;1]; c = [0;-1]; a0 = 2; b0 = -3; c0 = 4; fun = @(x)[x*a+a0,x*b+b0,x*c+c0];
Encuentre el punto minimax sujeto a la desigualdad x(1) + 3*x(2) <= –4
.
A = [1,3]; b = -4; x0 = [-1,-2];
Establezca las opciones para obtener la visualización iterativa y obtenga todas las salidas del solver.
options = optimoptions('fminimax','Display','iter'); Aeq = []; % No other constraints beq = []; lb = []; ub = []; nonlcon = []; [x,fval,maxfval,exitflag,output,lambda] =... fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
Objective Max Line search Directional Iter F-count value constraint steplength derivative Procedure 0 4 0 6 1 9 5 0 1 0.981 2 14 4.889 0 1 -0.302 Hessian modified twice 3 19 3.4 8.132e-09 1 -0.302 Hessian modified twice Local minimum possible. Constraints satisfied. fminimax 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
-5.8000 0.6000
fval = 1×3
-3.2000 3.4000 3.4000
maxfval = 3.4000
exitflag = 4
output = struct with fields:
iterations: 4
funcCount: 19
lssteplength: 1
stepsize: 6.0684e-10
algorithm: 'active-set'
firstorderopt: []
constrviolation: 8.1323e-09
message: 'Local minimum possible. Constraints satisfied....'
lambda = struct with fields:
lower: [2x1 double]
upper: [2x1 double]
eqlin: [0x1 double]
eqnonlin: [0x1 double]
ineqlin: 0.2000
ineqnonlin: [0x1 double]
Analice la información devuelta:
Dos valores de la función objetivo son iguales en la solución.
El solver converge en 4 iteraciones y 19 evaluaciones de función.
El valor
lambda.ineqlin
es distinto de cero, lo que indica que la restricción lineal está activa en la solución.
Argumentos de entrada
fun
— Funciones objetivo
identificador de función | nombre de función
Funciones objetivo, especificadas como un identificador de función o un nombre de función. fun
es una función que acepta un vector x
y devuelve un vector F
, con las funciones objetivo evaluadas en x
. Puede especificar la función fun
como un identificador de función para un archivo de función:
x = fminimax(@myfun,x0,goal,weight)
donde myfun
es una función de MATLAB® como
function F = myfun(x) F = ... % Compute function values at x.
fun
también puede ser un identificador de función para una función anónima.
x = fminimax(@(x)sin(x.*x),x0,goal,weight);
fminimax
pasa x
a la función objetivo y a todas las funciones de restricción no lineales en forma de argumento x0
. Por ejemplo, si x0
es un arreglo de 5 por 3, fminimax
pasa x
a fun
como un arreglo de 5 por 3. Sin embargo, fminimax
multiplica las matrices de restricción lineales A
o Aeq
por x
después de convertir x
en el vector columna x(:)
.
Para minimizar los valores absolutos en el peor de los casos de algunos elementos del vector F(x) (es decir, min{max abs{F(x)} } ), realice la partición de esos objetivos en los primeros elementos de F y utilice optimoptions
para establecer la opción AbsoluteMaxObjectiveCount
en el número de estos objetivos. Deben realizarse particiones en estos objetivos en los primeros elementos del vector F
devuelto por fun
. Para ver un ejemplo, consulte Resolver un problema minimax utilizando el valor absoluto de un objetivo.
Suponga que los gradientes de las funciones objetivo también se pueden calcular y la opción SpecifyObjectiveGradient
es true
, tal y como se establece en:
options = optimoptions('fminimax','SpecifyObjectiveGradient',true)
En este caso, la función fun
debe devolver, en el segundo argumento de salida, los valores del gradiente G
(una matriz) en x
. El gradiente consiste en la derivada parcial dF/dx de cada F
en el punto x
. Si F
es un vector de longitud m
y x
tiene una longitud n
, donde n
es la longitud de x0
, entonces el gradiente G
de F(x)
es una matriz de n
por m
donde G(i,j)
es la derivada parcial de F(j)
con respecto a x(i)
(es decir, la j
-ésima columna de G
es el gradiente de la j
-ésima función objetivo F(j)
). Si define F
como un arreglo, la discusión anterior se aplica a F(:)
, el ordenamiento lineal del arreglo F
. En cualquier caso, G
es una matriz en 2D.
Nota
Establecer SpecifyObjectiveGradient
en true
solo es efectivo cuando el problema no tiene una restricción no lineal o cuando el problema tiene una restricción no lineal con SpecifyConstraintGradient
establecido en true
. Internamente, el objetivo se pliega en las restricciones, por lo que el solver necesita ambos gradientes (objetivo y restricción) suministrados con el fin de evitar estimar un gradiente.
Tipos de datos: char
| string
| function_handle
x0
— Punto inicial
vector real | arreglo real
Punto inicial, especificado como un vector real o un arreglo real. Los solvers utilizan el número de elementos en x0
y el tamaño de x0
para determinar el número y el tamaño de las variables que fun
acepta.
Ejemplo: x0 = [1,2,3,4]
Tipos de datos: double
A
— Restricciones de desigualdad lineales
matriz real
Restricciones de desigualdad lineales, especificadas como una matriz real. A
es una matriz de M
por N
, donde M
es el número de desigualdades y N
es el número de variables (número de elementos de x0
). Para problemas grandes, pase A
como una matriz dispersa.
A
codifica las M
desigualdades lineales
A*x <= b
,
donde x
es el vector columna de N
variables x(:)
y b
es un vector columna con M
elementos.
Por ejemplo, considere estas desigualdades:
x1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,
Especifique las desigualdades introduciendo las siguientes restricciones.
A = [1,2;3,4;5,6]; b = [10;20;30];
Ejemplo: Para especificar que los componentes de x suman 1 o menos, utilice A = ones(1,N)
y b = 1
.
Tipos de datos: double
b
— Restricciones de desigualdad lineales
vector real
Restricciones de desigualdad lineales, especificadas como un vector real. b
es un vector de M
elementos relacionado con la matriz A
. Si pasa b
como un vector fila, los solvers convierten internamente b
en el vector columna b(:)
. Para problemas grandes, pase b
como un vector disperso.
b
codifica las M
desigualdades lineales
A*x <= b
,
donde x
es el vector columna de N
variables x(:)
y A
es una matriz de tamaño M
por N
.
Por ejemplo, considere estas desigualdades:
x1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30.
Especifique las desigualdades introduciendo las siguientes restricciones.
A = [1,2;3,4;5,6]; b = [10;20;30];
Ejemplo: Para especificar que los componentes de x suman 1 o menos, utilice A = ones(1,N)
y b = 1
.
Tipos de datos: double
Aeq
— Restricciones de igualdad lineales
matriz real
Restricciones de igualdad lineales, especificadas como una matriz real. Aeq
es una matriz de Me
por N
, donde Me
es el número de igualdades y N
es el número de variables (número de elementos de x0
). Para problemas grandes, pase Aeq
como una matriz dispersa.
Aeq
codifica las Me
igualdades lineales
Aeq*x = beq
,
donde x
es el vector columna de N
variables x(:)
y beq
es un vector columna con Me
elementos.
Por ejemplo, considere estas desigualdades:
x1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x3 = 20,
Especifique las desigualdades introduciendo las siguientes restricciones.
Aeq = [1,2,3;2,4,1]; beq = [10;20];
Ejemplo: Para especificar que los componentes de x suman 1, utilice Aeq = ones(1,N)
y beq = 1
.
Tipos de datos: double
beq
— Restricciones de igualdad lineales
vector real
Restricciones de igualdad lineales, especificadas como un vector real. beq
es un vector de Me
elementos relacionado con la matriz Aeq
. Si pasa beq
como un vector fila, los solvers convierten internamente beq
en el vector columna beq(:)
. Para problemas grandes, pase beq
como un vector disperso.
beq
codifica las Me
igualdades lineales
Aeq*x = beq
,
donde x
es el vector columna de N
variables x(:)
y Aeq
es una matriz de tamaño Me
por N
.
Por ejemplo, considere estas igualdades:
x1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x3 = 20.
Especifique las igualdades introduciendo las siguientes restricciones.
Aeq = [1,2,3;2,4,1]; beq = [10;20];
Ejemplo: Para especificar que los componentes de x suman 1, utilice Aeq = ones(1,N)
y beq = 1
.
Tipos de datos: double
lb
— Límites inferiores
vector real | arreglo real
Límites inferiores, especificados como un vector real o un arreglo real. Si el número de elementos en x0
es igual al número de elementos en lb
, entonces lb
especifica que
x(i) >= lb(i)
para todo i
.
Si numel(lb) < numel(x0)
, entonces lb
especifica que
x(i) >= lb(i)
para 1 <= i <= numel(lb)
.
Si lb
tiene menos elementos que x0
, los solvers emiten una advertencia.
Ejemplo: Para especificar que todos los componentes de x son positivos, utilice lb = zeros(size(x0))
.
Tipos de datos: double
ub
— Límites superiores
vector real | arreglo real
Límites superiores, especificados como un vector real o un arreglo real. Si el número de elementos en x0
es igual al número de elementos en ub
, entonces ub
especifica que
x(i) <= ub(i)
para todo i
.
Si numel(ub) < numel(x0)
, entonces ub
especifica que
x(i) <= ub(i)
para 1 <= i <= numel(ub)
.
Si ub
tiene menos elementos que x0
, los solvers emiten una advertencia.
Ejemplo: Para especificar que todos los componentes de x son menores que 1, utilice ub = ones(size(x0))
.
Tipos de datos: double
nonlcon
— Restricciones no lineales
identificador de función | nombre de función
Límites no lineales, especificados como un identificador de función o un nombre de función. nonlcon
es una función que acepta un vector o arreglo x
y devuelve dos arreglos, c(x)
y ceq(x)
.
c(x)
es el arreglo de restricciones de desigualdad no lineales dex
.fminimax
intenta satisfacerc(x) <= 0
for all entries ofc
.ceq(x)
es el arreglo de restricciones de igualdad no lineales dex
.fminimax
intenta satisfacerceq(x) = 0
for all entries ofceq
.
Por ejemplo:
x = fminimax(@myfun,x0,...,@mycon)
donde mycon
es una función de MATLAB como la siguiente:
function [c,ceq] = mycon(x) c = ... % Compute nonlinear inequalities at x. ceq = ... % Compute nonlinear equalities at x.
Suponga que los gradientes de las restricciones también pueden calcularse y la opción SpecifyConstraintGradient
es true
, según establece:
options = optimoptions('fminimax','SpecifyConstraintGradient',true)
En este caso, la función nonlcon
también debe devolver, en el tercer y el cuarto argumentos de salida, GC
, el gradiente de c(x)
y GCeq
, el gradiente de ceq(x)
. Consulte Restricciones no lineales para obtener una explicación de cómo "condicionar" los gradientes para usarlos en solvers que no aceptan gradientes suministrados.
Si nonlcon
devuelve un vector c
de m
componentes y x
tiene longitud n
, donde n
es la longitud de x0
, el gradiente GC
de c(x)
es una matriz de n
por m
, donde GC(i,j)
es la derivada parcial de c(j)
con respecto a x(i)
(es decir, la j
-ésima columna de GC
es el gradiente de la j
-ésima restricción de desigualdad c(j)
). Del mismo modo, si ceq
tiene p
componentes, el gradiente GCeq
de ceq(x)
es una matriz de n
por p
, donde GCeq(i,j)
es la derivada parcial de ceq(j)
con respecto a x(i)
(es decir, la j
-ésima columna de GCeq
es el gradiente de la j
-ésima restricción de igualdad ceq(j)
).
Nota
Configurar SpecifyConstraintGradient
como true
solo es efectivo cuando SpecifyObjectiveGradient
se establece en true
. Internamente, el objetivo se pliega en la restricción, por lo que el solver necesita ambos gradientes (objetivo y restricción) suministrados con el fin de evitar estimar un gradiente.
Nota
Dado que las funciones de Optimization Toolbox™ solo aceptan entradas de tipo double
, las funciones objetivo y de restricción no lineal suministradas por el usuario deben devolver salidas de tipo double
.
Consulte Pasar parámetros adicionales para obtener una explicación de cómo parametrizar la función de restricción no lineal nonlcon
, si es necesario.
Tipos de datos: char
| function_handle
| string
options
— Opciones de optimización
salida de optimoptions
| estructura como la que devuelve optimset
Opciones de optimización, especificadas como la salida de optimoptions
o una estructura como la que devuelve optimset
.
Algunas opciones no aparecen en la visualización optimoptions
. Estas opciones se muestran en cursiva en la siguiente tabla. Para obtener más detalles, consulte Consultar las opciones de optimización.
Para obtener más información sobre las opciones que tienen nombres distintos para optimset
, consulte Nombres de opciones actuales y antiguos.
Opción | Descripción |
---|---|
AbsoluteMaxObjectiveCount | Número de elementos de Fi(x) para los que desea minimizar el valor absoluto de Fi. Consulte Resolver un problema minimax utilizando el valor absoluto de un objetivo. Para |
ConstraintTolerance | Tolerancia de terminación en la vulneración de restricciones (un escalar positivo). La opción predeterminada es Para |
Diagnóstico | Visualización de información de diagnóstico sobre la función que se desea minimizar o resolver. Las opciones son |
DiffMaxChange | Cambio máximo en variables para gradientes de diferencias finitas (un escalar positivo). La opción predeterminada es |
DiffMinChange | Cambio mínimo en variables para gradientes de diferencias finitas (un escalar positivo). La opción predeterminada es |
| Nivel de visualización (consulte Visualización iterativa):
|
FiniteDifferenceStepSize | Factor de tamaño de paso de escalar o vector para diferencias finitas. Cuando establece
sign′(x) = sign(x) excepto sign′(0) = 1 . Las diferencias finitas centrales son
FiniteDifferenceStepSize se expande a un vector. La opción predeterminada es sqrt(eps) para diferencias finitas progresivas y eps^(1/3) para diferencias finitas centrales. Para |
FiniteDifferenceType | Tipo de diferencias finitas utilizadas para estimar gradientes, ya sea El algoritmo respeta escrupulosamente los límites cuando estima ambos tipos de diferencias finitas. Por ejemplo, podría seleccionar una diferencia regresiva en lugar de progresiva para evitar realizar la evaluación en un punto fuera de los límites. Para |
FunctionTolerance | Tolerancia de terminación en el valor de la función (un escalar positivo). La opción predeterminada es Para |
FunValCheck | Comprobación que indica si los valores de la función objetivo y de las restricciones son válidos. |
MaxFunctionEvaluations | Número máximo de evaluaciones de función permitidas (un entero positivo). La opción predeterminada es Para |
MaxIterations | Número máximo de iteraciones permitidas (un entero positivo). La opción predeterminada es Para |
MaxSQPIter | Número máximo de iteraciones SQP permitidas (un entero positivo). La opción predeterminada es |
MeritFunction | Si esta opción se establece en |
OptimalityTolerance | Tolerancia de terminación en la optimalidad de primer orden (un escalar positivo). La opción predeterminada es Para |
OutputFcn | Una o varias funciones definidas por el usuario a las que una función de optimización llame en cada iteración. Pase un identificador de función o un arreglo de celdas de identificadores de función. La opción predeterminada es ninguno ( |
PlotFcn | Gráficas que muestran varias medidas de progreso mientras se ejecuta el algoritmo. Seleccione una de las gráficas predefinidas o escriba la suya propia. Pase un nombre, identificador de función o arreglo de celdas de nombres o identificadores de función. Para funciones de gráfica personalizadas, pase identificadores de función. La opción predeterminada es ninguno (
Las funciones de gráfica personalizadas utilizan la misma sintaxis que las funciones de salida. Consulte Funciones de salida para Optimization Toolbox y Sintaxis de función de salida y función de gráfica. Para |
RelLineSrchBnd | Límite relativo (un valor de escalar no negativo real) de la longitud de paso de búsqueda de recta, tal que el desplazamiento total en |
RelLineSrchBndDuration | Número de iteraciones para el cual debe estar activo el límite que se especifica en |
SpecifyConstraintGradient | Gradiente para las funciones de restricción no lineales definidas por el usuario. Cuando esta opción se establece en Para |
SpecifyObjectiveGradient | Gradiente para la función objetivo definida por el usuario. Consulte la descripción de Para |
StepTolerance | Tolerancia de terminación en Para |
TolConSQP | Tolerancia de terminación en la vulneración de restricciones SQP de iteración interior (un escalar positivo). La opción predeterminada es |
TypicalX | Valores |
UseParallel | Opción para utilizar la computación paralela. Cuando esta opción se establece en |
Ejemplo: optimoptions('fminimax','PlotFcn','optimplotfval')
problem
— Estructura de problema
estructura
Estructura de problema, especificada como una estructura con los campos de esta tabla.
Nombre de campo | Entrada |
---|---|
| Función objetivo fun |
| Punto inicial para x |
| Matriz para restricciones de desigualdad lineales |
| Vector para restricciones de desigualdad lineales |
| Matriz para restricciones de igualdad lineales |
| Vector para restricciones de igualdad lineales |
lb | Vector de límites inferiores |
ub | Vector de límites superiores |
| Función de restricción no lineal |
| 'fminimax' |
| Opciones creadas con optimoptions |
Debe proporcionar al menos los campos objective
, x0
, solver
y options
en la estructura problem
.
Tipos de datos: struct
Argumentos de salida
x
— Solución
vector real | arreglo real
Solución, devuelta como un vector real o un arreglo real. El tamaño de x
es el mismo que el tamaño de x0
. Habitualmente, x
es una solución local al problema cuando exitflag
es positivo. Para obtener información sobre la calidad de la solución, consulte Cuando el solver tiene éxito.
fval
— Valores de la función objetivo en la solución
arreglo real
Valores de la función objetivo en la solución, devueltos como un arreglo real. Por lo general, fval
= fun(x)
.
maxfval
— Máximo de los valores de la función objetivo en la solución
escalar real
Máximo de los valores de la función objetivo en la solución, devuelto como un escalar real. maxfval = max(fval(:))
.
exitflag
— Razón por la que fminimax
se ha detenido
valor entero
Razón por la que fminimax
se ha detenido, devuelta como un entero.
| La función ha convergido a una solución |
| La magnitud de la dirección de búsqueda fue inferior a la tolerancia especificada y la vulneración de la restricción fue inferior a |
| La magnitud de la derivada direccional fue inferior a la tolerancia especificada y la vulneración de la restricción fue inferior a |
| El número de iteraciones superó |
| Detenido por una función de salida o una función de gráfica |
| No se ha encontrado ningún punto factible. |
output
— Información sobre el proceso de optimización
estructura
Información sobre el proceso de optimización, devuelta como estructura con los campos de esta tabla.
iterations | Número de iteraciones realizadas |
funcCount | Número de evaluaciones de función |
lssteplength | Tamaño del paso de búsqueda de recta relativo a la dirección de búsqueda |
constrviolation | Máximo de funciones de restricción |
stepsize | Longitud del último desplazamiento en |
algorithm | Algoritmo de optimización utilizado |
firstorderopt | Medida de optimalidad de primer orden |
message | Mensaje de salida |
lambda
— Multiplicadores de Lagrange en la solución
estructura
Multiplicadores de Lagrange en la solución, devueltos como una estructura con los campos de esta tabla.
Algoritmos
fminimax
resuelve un problema minimax convirtiéndolo en un problema de consecución de metas y resolviendo a continuación el problema de consecución de metas convertido utilizando fgoalattain
. La conversión pone todos los objetivos a 0 y todas las ponderaciones a 1. Consulte Ecuación 1 en Multiobjective Optimization Algorithms.
Funcionalidad alternativa
App
La tarea Optimize de Live Editor proporciona una interfaz visual para fminimax
.
Capacidades ampliadas
Soporte paralelo automático
Acelere código mediante la ejecución automática de cálculo paralelo mediante Parallel Computing Toolbox™.
Para ejecutar en paralelo, establezca la opción 'UseParallel'
en true
.
options = optimoptions('
solvername
','UseParallel',true)
Para obtener más información, consulte Usar la computación paralela en Optimization Toolbox.
Historial de versiones
Introducido antes de R2006a
Consulte también
Abrir ejemplo
Tiene una versión modificada de este ejemplo. ¿Desea abrir este ejemplo con sus modificaciones?
Comando de MATLAB
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.
Select a Web Site
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: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)