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.

Compare yfminimaxfminunc

Un problema de MiniMax minimiza el máximo de un conjunto de funciones objetivas. ¿Por qué no minimizar esta función máxima, que es una función escalar? La respuesta es que el máximo no es suave, y Optimization Toolbox™ solucionadores como requieren suavidad.fminunc

Por ejemplo, defina como tres funciones objetivas lineales en dos variables y como máximo de estos tres objetivos.fun(x)fun2

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]; fun2 = @(x)max(fun(x),[],2);

Trazar el máximo de los tres objetivos.

[X,Y] = meshgrid(linspace(-5,5)); Z = fun2([X(:),Y(:)]); Z = reshape(Z,size(X)); surf(X,Y,Z,'LineStyle','none') view(-118,28)

encuentra fácilmente el punto MINIMAX.fminimax

x0 = [0,0]; [xm,fvalm,maxfval] = 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. 
xm = 1×2

   -2.5000    2.2500

fvalm = 1×3

    1.7500    1.7500    1.7500

maxfval = 1.7500 

Sin embargo, se detiene en un punto que está lejos del punto MINIMAX.fminunc

[xu,fvalu] = fminunc(fun2,x0)
Local minimum possible.  fminunc stopped because it cannot decrease the objective function along the current search direction. 
xu = 1×2

         0    1.0000

fvalu = 3.0000 

encuentra una solución mejor (más pequeña).fminimax

fprintf("fminimax finds a point with objective %g,\nwhile fminunc finds a point with objective %g.",maxfval,fvalu)
fminimax finds a point with objective 1.75, while fminunc finds a point with objective 3. 

Consulte también

Temas relacionados