请教编程高手有对模拟退火算法熟悉的么?哪里有相关代码或资料下载?谢谢

热心网友

网络上有很多类似算法的地方,你搜索一下,应该可以找到很多的。下面是我找到的一个,希望对你有所帮助。% 使用模拟退火算法(SAA)解决0-1背包问题 clear; w=[6 5 3 2 1 1]; %物品重量 c=[61 59 31 21 15 5]; %物品价值 M=10; % 背包总容量 x=[0 0 0 0 0 0]; % 初始解 [mm,n]=size(x); f=0; m=0; L=10*n; % Mapkob 链长 for i=1:n f=f+c(i)*x(i); m=m+w(i)*x(i); end t0=200; % 控制参数t的初值 t=t0; tf=0。9; % s0=0; s1=1; tic % 程序运行的初始,此处是为了计算程序运行的时间和程序结尾的toc对应 while s0~=s1 % 产生新解 flag=0; for k=1:L i=round(rand*(n-1))+1; if x(i)==0 if m+w(i)0)|(exp(df/t)rand) x(i)=1;x(j)=0;f=f+df;m=m+dm;flag=1; end end end else j=round(rand*(n-1))+1; while x(j)==1 j=round(rand*(n-1))+1; end df=c(j)-c(i);dm=w(j)-w(i); if m+dm0)|(exp(df/t)rand) x(i)=0;x(j)=1;f=f+df;m=m+dm;flag=1; end end end end t=t*tf; %衰减函数 if flag==0 s0=s0+1; else s0=0; end f_max=f; end f_max toc %程序运行的结尾,得出运行的时间 来自: 。

热心网友

网络上有很多类似算法的地方,你搜索一下,应该可以找到很多的。下面是我找到的一个,希望对你有所帮助。% 使用模拟退火算法(SAA)解决0-1背包问题 clear; w=[6 5 3 2 1 1]; %物品重量 c=[61 59 31 21 15 5]; %物品价值 M=10; % 背包总容量 x=[0 0 0 0 0 0]; % 初始解 [mm,n]=size(x); f=0; m=0; L=10*n; % Mapkob 链长 for i=1:n f=f+c(i)*x(i); m=m+w(i)*x(i); end t0=200; % 控制参数t的初值 t=t0; tf=0。9; % s0=0; s1=1; tic % 程序运行的初始,此处是为了计算程序运行的时间和程序结尾的toc对应 while s0~=s1 % 产生新解 flag=0; for k=1:L i=round(rand*(n-1))+1; if x(i)==0 if m+w(i)0)|(exp(df/t)rand) x(i)=1;x(j)=0;f=f+df;m=m+dm;flag=1; end end end else j=round(rand*(n-1))+1; while x(j)==1 j=round(rand*(n-1))+1; end df=c(j)-c(i);dm=w(j)-w(i); if m+dm0)|(exp(df/t)rand) x(i)=0;x(j)=1;f=f+df;m=m+dm;flag=1; end end end end t=t*tf; %衰减函数 if flag==0 s0=s0+1; else s0=0; end f_max=f; end f_max toc %程序运行的结尾,得出运行的时间来自: 。