最优化算法与matlab应用4:模拟退火算法
本文节选于王正林《精通MATLAB_科学计算》第2版
原理:
通过在退火过程与求最小化的过程之间的模拟,并依概率决定具备最小点的取舍,从而可以跳过局部最小点,最终可得到全局的最小值点。
算法步骤:
程序:
Matlab模拟退火调用格式function [xo,fo] = Opt_Simu(f,x0,l,u,kmax,q,TolFun)
f:函数名
x0:初始搜索值
l:搜索区间上限
u:搜索区间下限
kmax:最大迭代次数
q:退火因子
tolFun:函数的误差阈值
xo为最优化点值
fo为函数在点xo处的函数值
调用函数:
%模拟退火法中的mu^(-1)定理
function x = Mu_Inv(y,mu)
x = (((1+mu).^abs(y)- 1)/mu).*sign(y);
function [xo,fo] = Opt_Simu(