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 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
GlobalSearch
| MultiStart
| run
| solve