请关注公众号《硬件软件极客部落》,将分享更多内容
模拟退火全局优化举例,环境,windows 、matlab2016a
一、函数选择
求如下二元函数最小值,
y = 5*cos(x1*x2) + x1* x2+ x2*x2*x2;
其中x1∈[-5 5],x2∈[-5 5].
用matlab绘制3维图如下,
>> x1=-5:1:5;
>> x2=-5:1:5;
>> [x1 x2]=meshgrid(x1,x2);
>> y = 5*cos(x1.*x2) + x1 .* x2 + x2.*x2.*x2;
>> mesh(x1,x2,y)
xlabel('x1');
ylabel('x2');
zlabel('y');
axis vis3d % 冻结屏幕高宽比,使得一个三维对象的旋转不会改变坐标轴的刻度显示
hold on % 不关闭图形,继续在上面画图
二、创建函数
在matlab中使用模拟退火算法,必须先创建 函数,然后在matlab工具箱中调用。函数如下
function fitnessVal = SA(x)
%注意 x1,x2,需要表示成x(1),x(2),格式需要
%x0[-5 5] x1[-5 5] x1=4 x2=5 min=-152
fitnessVal = 5*cos(x(1)*x(2)) + x(1) * x(2) + x(1)*x(1)*x(1);
end
然后保存为.m文件,文件名为SA.m
三、模拟退火工具箱调用
①、工具箱调用
命令行窗口输入:>> optimtool
此时会弹出工具箱窗口。
②、参数填写见下图
由图可知,找到的最优点为4,-5,最小值为-152.091,重复性也很好。