使用 simulannealbnd 优化函数(基于问题)
此示例说明了当目标是一个函数文件(可能是未知内容(“黑盒”函数)时,如何在基于问题的方法中使用模拟退火最小化一个函数。运行此示例时,最小化函数 dejong5fcn(x) 可用。绘制函数。
dejong5fcn

创建一个二维优化变量 x。dejong5fcn 函数期望变量是行向量,因此将 x 指定为二元素行向量。
x = optimvar("x",1,2);要使用 dejong5fcn 作为目标函数,请使用 fcn2optimexpr 将该函数转换为优化表达式。
fun = fcn2optimexpr(@dejong5fcn,x);
用目标函数 fun 创建一个优化问题。
prob = optimproblem("Objective",fun);在所有分量中,将变量边界设置为从 - 50 到 50。指定标量边界时,软件会将边界扩展到所有变量。
x.LowerBound = -50; x.UpperBound = 50;
在边界内设置一个伪随机初始点。初始点是一个具有字段 x 的结构体。
rng default % For reproducibility x0.x = x.LowerBound + rand(size(x.LowerBound)).*x.UpperBound;
求解问题,指定 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
另请参阅
simulannealbnd | fcn2optimexpr | solve