优化函数使用simulannealbnd
,具体问题具体分析
这个例子展示了当目标是一个可能包含未知内容的函数文件(一个“黑盒”函数)时,如何在基于问题的方法中使用模拟退火最小化一个函数。函数求最小值,dejong5fcn (x)
,在运行此示例时可用。画出函数。
dejong5fcn
创建一个二维优化变量x
.的dejong5fcn
函数期望变量是行向量,因此指定x
作为一个2元行向量。
X = optimvar(“x”、1、2);
使用dejong5fcn
作为目标函数,将函数转换为优化表达式,使用fcn2optimexpr
.
Fun = fcn2optimexpr(@dejong5fcn,x);
用目标函数创建一个优化问题有趣的
.
问题=优化问题(“客观”、有趣的);
在所有组件中设置变量边界从-50到50。当您指定标量边界时,软件将边界扩展到所有变量。
x.LowerBound = -50;x.UpperBound = 50;
在边界内设置一个伪随机起始点。初始点是一个带场的结构x
.
rng默认的%用于再现性x0。x= x.LowerBound + rand(size(x.LowerBound)).*x.UpperBound;
解决问题,指定simulannealbnd
解算器。
[sol,fval] = solve(prob,x0,“规划求解”,“simulannealbnd”)
用simulannealnd求解问题。优化终止:最佳函数值的更改小于options.FunctionTolerance。
索尔=带字段的结构:X: [-32.0371 -31.8792]
Fval = 0.9980
另请参阅
simulannealbnd
|fcn2optimexpr
|解决