1,mcm 模拟退火算法 有什么用

模拟退火是一种优化算法,它本身是不能独立存在的,需要有一个应用场合,其中温度就是模拟退火需要优化的参数,如果它应用到了聚类分析中,那么就是说聚类
我是来看评论的

mcm 模拟退火算法 有什么用

2,matlab优化工具箱模拟退火法怎么用

从提示看,目标函数写法不正确,一、变量x1,x2,等等,要写成:x(1),x(2),....二、初始值个数,要与变量数相同,有几个x(1),x(2),...,x(5),就要有几个,如5个初始值,而你只写2个,就不对了。
1、在命令窗口中输入,>> optimtool %打开模拟退火工具箱2、在solver选择框中,选择simulannealbnd3、在目标函数栏输入@simple4、在初值栏输入[0.5 0.5]5、在lower栏输入[-64 -64],upper栏输入[64 64]6、点击start,运行7、结果如下

matlab优化工具箱模拟退火法怎么用

3,模拟退火算法 PascalC

 模拟退火的基本思想:   (1) 初始化:初始温度T(充分大),初始解状态S(是算法迭代的起点), 每个T值的迭代次数L   (2) 对k=1,……,L做第(3)至第6步:   (3) 产生新解S′   (4) 计算增量Δt′=C(S′)-C(S),其中C(S)为评价函数   (5) 若Δt′<0则接受S′作为新的当前解,否则以概率exp(-Δt′/T)接受S′作为新的当前解.   (6) 如果满足终止条件则输出当前解作为最优解,结束程序。   终止条件通常取为连续若干个新解都没有被接受时终止算法。   (7) T逐渐减少,且T->0,然后转第2步。

模拟退火算法 PascalC

4,模拟退火算法优化BP神经网络

bp神经元网络的学习过程真正求解的其实就是权值的最优解,因为有可能会得出局部最优解,所以你才会用模拟退火来跳出局部最优解,也就是引入了逃逸概率。在这里你可以把bp的学习过程理解成关于 误差=f(w1,w2...) 的函数,让这个函数在模拟退火中作为目标函数,再加上模拟退火的一些初始参数(初始温度啊,退火速度啊等等),就能找到权值解空间的一个不错的最优解,就是一组权向量。把权向量带入到bp当中去,输入新的对象,自然就能算出新的输出了。算法学习要脚踏实地,你要先学会神经元,在学会退火,两个的结合你才能理解。
“模拟退火”算法是源于对热力学中退火过程的模拟,在某一给定初温下,通过缓慢下降温度参数,使算法能够在多项式时间内给出一个近似最优解。退火与冶金学上的退火相似,而与冶金学的淬火有很大区别,前者是温度缓慢下降,后者是温度迅速下降。“模拟退火”的原理也和金属退火的原理近似:我们将热力学的理论套用到统计学上,将搜寻空间内每一点想像成空气内的分子;分子的能量,就是它本身的动能;而搜寻空间内的每一点,也像空气分子一样带有“能量”,以表示该点对命题的合适程度。算法先以搜寻空间内一个任意点作起始:每一步先选择一个“邻居”,然后再计算从现有位置到达“邻居”的概率。

5,matlab模拟退火用法

matlab自带的模拟退火工具箱算法是simulannealbnd函数,输入参数是fun,x0,lb,ub,没有约束项,所以,你这个不能用。可换别的算法。
function [xo,fo] = opt_simu(f,x0,l,u,kmax,q,tolfun)% 模拟退火算法求函数 f(x)的最小值点, 且 l <= x <= u% f为待求函数,x0为初值点,l,u分别为搜索区间的上下限,kmax为最大迭代次数% q为退火因子,tolfun为函数容许误差%%%%算法第一步根据输入变量数,将某些量设为缺省值if nargin < 7 tolfun = 1e-8;endif nargin < 6 q = 1;endif nargin < 5 kmax = 100;end%%%%算法第二步,求解一些基本变量n = length(x0); %自变量维数x = x0;fx = feval(f,x); %函数在初始点x0处的函数值xo = x;fo = fx;%%%%%算法第三步,进行迭代计算,找出近似全局最小点for k =0:kmax ti = (k/kmax)^q; mu = 10^(ti*100); % 计算mu dx = mu_inv(2*rand(size(x))-1,mu).*(u - l);%步长dx x1 = x + dx; %下一个估计点 x1 = (x1 < l).*l +(l <= x1).*(x1 <= u).*x1 +(u < x1).*u; %将x1限定在区间[l,u]上 fx1 = feval(f,x1); df = fx1- fx; if df < 0||rand < exp(-ti*df/(abs(fx) + eps)/tolfun) %如果fx1x = x1; fx = fx1; end if fx < fo xo = x; fo = fx1; end end function x = mu_inv(y,mu) x = (((1+mu).^abs(y)- 1)/mu).*sign(y);

6,基于matlab的模拟退火法

function [xo,fo] = Opt_Simu(f,x0,l,u,kmax,q,TolFun)% 模拟退火算法求函数 f(x)的最小值点, 且 l <= x <= u% f为待求函数,x0为初值点,l,u分别为搜索区间的上下限,kmax为最大迭代次数% q为退火因子,TolFun为函数容许误差%%%%算法第一步根据输入变量数,将某些量设为缺省值if nargin < 7 TolFun = 1e-8;endif nargin < 6 q = 1;endif nargin < 5 kmax = 100;end%%%%算法第二步,求解一些基本变量N = length(x0); %自变量维数x = x0;fx = feval(f,x); %函数在初始点x0处的函数值xo = x;fo = fx;%%%%%算法第三步,进行迭代计算,找出近似全局最小点for k =0:kmax Ti = (k/kmax)^q; mu = 10^(Ti*100); % 计算mu dx = Mu_Inv(2*rand(size(x))-1,mu).*(u - l);%步长dx x1 = x + dx; %下一个估计点 x1 = (x1 < l).*l +(l <= x1).*(x1 <= u).*x1 +(u < x1).*u; %将x1限定在区间[l,u]上 fx1 = feval(f,x1); df = fx1- fx; if df < 0||rand < exp(-Ti*df/(abs(fx) + eps)/TolFun) %如果fx1x = x1; fx = fx1; end if fx < fo xo = x; fo = fx1; end end function x = Mu_Inv(y,mu) x = (((1+mu).^abs(y)- 1)/mu).*sign(y);
matlab自带的模拟退火工具箱算法是simulannealbnd函数,输入参数是fun,x0,lb,ub,没有约束项,所以,你这个不能用。可换别的算法。

文章TAG:模拟  模拟退火  模拟退火算法  算法  模拟退火  模拟退火算法  有什么用  
下一篇