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.

Optimizar una función usando simulannealbnd, basado en problemas

Este ejemplo muestra cómo minimizar una función utilizando recocido simulado en el enfoque basado en problemas cuando el objetivo es un archivo de función, posiblemente de contenido desconocido (una función de "caja negra"). La función para minimizar, dejong5fcn(x), está disponible cuando ejecuta este ejemplo. Represente la función.

dejong5fcn

Figure contains an axes object. The axes object contains 2 objects of type surface, contour.

Cree una variable de optimización x en 2D. La función dejong5fcn espera que la variable sea un vector de fila, así que especifique x como un vector de fila de 2 elementos.

x = optimvar("x",1,2);

Para utilizar dejong5fcn como función objetivo, convierta la función en una expresión de optimización utilizando fcn2optimexpr.

fun = fcn2optimexpr(@dejong5fcn,x);

Cree un problema de optimización con la función objetivo fun.

prob = optimproblem("Objective",fun);

Establezca límites variables de –50 a 50 en todos los componentes. Cuando se especifican límites escalares, el software expande los límites a todas las variables.

x.LowerBound = -50;
x.UpperBound = 50;

Establezca un punto inicial pseudoaleatorio dentro de los límites. El punto inicial es una estructura con el campo x.

rng default % For reproducibility
x0.x = x.LowerBound + rand(size(x.LowerBound)).*x.UpperBound;

Resuelva el problema, especificando el solucionador simulannealbnd.

[sol,fval] = solve(prob,x0,"Solver","simulannealbnd")
Solving problem using simulannealbnd.
simulannealbnd stopped because the change in best function value is less than options.FunctionTolerance.
sol = struct with fields:
    x: [-32.0371 -31.8792]

fval = 
0.9980

Consulte también

| |

Temas