Contenido principal

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

Minimizar una función no lineal con un solver de inicio múltiple, basado en problemas

Encuentre un mínimo local de la función peaks en el rango -5x,y5 comenzando por el punto [–1,2].

x = optimvar("x",LowerBound=-5,UpperBound=5);
y = optimvar("y",LowerBound=-5,UpperBound=5);
x0.x = -1;
x0.y = 2;
prob = optimproblem(Objective=peaks(x,y));
opts = optimoptions("fmincon",Display="none");
[sol,fval] = solve(prob,x0,Options=opts)
sol = struct with fields:
    x: -3.3867
    y: 3.6341

fval = 
1.1224e-07

Intente encontrar una solución mejor con el solver GlobalSearch. Este solver ejecuta fmincon varias veces, lo que puede proporcionar una solución mejor.

ms = GlobalSearch;
[sol2,fval2] = solve(prob,x0,ms)
Solving problem using GlobalSearch.

GlobalSearch stopped because it analyzed all the trial points.

All 15 local solver runs converged with a positive local solver exit flag.
sol2 = struct with fields:
    x: 0.2283
    y: -1.6255

fval2 = 
-6.5511

GlobalSearch encuentra una solución con un valor mejor (más bajo) de la función objetivo. El mensaje de salida muestra que fmincon, el solver local, se ejecuta 15 veces. La solución devuelta tiene un valor de la función objetivo de aproximadamente –6,5511, que es inferior al valor de la primera solución, 1,1224e–07.

Consulte también

| | |

Temas