• PUDN用户
    了解作者
  • matlab
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 33
    下载次数
  • 2010-04-13 18:55
    上传日期
一个解决0-1背包问题的模拟退火程序,希望给有需要的人帮助
simulateanneal.rar
  • main.m
    2.8KB
内容介绍
% 用模拟退火算法解决0-1背包问题 clc; clear; t1=600; % 控制参数t1的初值 L1=150; % 马尔可夫链的长度 p=0.9; % 衰减系数 tmin=0.00000001; % t的终止准则 a=[92, 4, 43, 83, 84, 68, 92, 82, 6, 44, 32, 18, 56, 83, 25, 96, 70, 48, 14, 58]; %物品体积 c=[44, 46, 90, 72, 91, 40, 75, 35, 8, 54, 78, 40, 77, 15, 61, 17, 75, 29, 75, 63];%物品价值 b=878; % 背包总体积 sw=size(a); n=sw(1,2); x1=zeros(1,n);% 产生初始解 L=L1*n; % 马尔可夫链的长度 f1=0; m=0;t=t1; g1=1; while(t>tmin) g1=g1+1; for k=1:1 i=round(rand*(n-1))+1; if x1(i)==0 if m+a(i)<=b x1(i)=1; f1=f1+c(i); m=m+a(i); else uu=0; for u=1:n if x1(u)==1; uu=uu+1; flag1(uu)=u; end end sf=size(flag1); j=round(rand*(sf(1,2)-1))+1; j=flag1(j); clear flag1; df=c(i)-c(j); dm=a(i)-a(j); if m+dm<=b if (df>0) x1(i)=1; x1(j)=0; f1=f1+df; m=m+dm; else if (exp(df/t))>rand x1(i)=1; x1(j)=0; f1=f1+df; m=m+dm; end end end end else uu=0; for u=1:n if x1(u)==0; uu=uu+1; flag2(uu)=u; end end sf=size(flag2); j=round(rand*(sf(1,2)-1))+1; j=flag2(j); clear flag2; df=c(j)-c(i); dm=a(j)-a(i); if m+dm<=b if (df>0) x1(i)=0; x1(j)=1; f1=f1+df; m=m+dm ; else if (exp(df/t))>rand x1(i)=0; x1(j)=1; f1=f1+df; m=m+dm; end end end end end t=t*p; %衰减函数 f_max(1)=0; f_max(g1)=f1; %记录每一代最优解 end g=size(f_max); generation=g(1,2); %所需的进化代数 lx=1:1:generation; plot(lx,f_max,'-bo','LineWidth',1,... 'MarkerFaceColor',[1,0,0],... 'MarkerSize',3.0) title('模拟退火算法解决0-1背包问题的进化曲线'); xlabel('进化代数(Generation)'); ylabel('总价值(Value)'); grid on f1 x1
评论
    相关推荐
    • matlab背包问题.zip
      通过遗传算法实现背包问题最优解求解,包括代码文档。
    • matlab背包问题代码.zip
      使用matlab语言,遗传算法编写的简单程序,内含源码和运行结果,写有详细注释。matlab课程作业之一
    • 遗传算法解决背包问题 MATLAB可运行代码
      假设:背包最大重量为1000,物品的数量为50, 物品的价值:[220 208 198 192 180 180 165 162 160 158 155 130 125 122 120 118 115 110 105 101 100 100 98 96 95 90 ...利用遗传算法解决背包问题MATLAB可运行的代码
    • 背包问题Matlab求解
      初始化背包容量、价值等必要因素,Matlab求解最优解。代码模块清晰,简单明了。
    • 动态规划解决背包问题 MATLAB
      本资源为 MATLAB 代码,代码中用动态规划解决了0-1背包问题。具体问题为:物品价值:v=[90 75 83 32 56 31 21 43 14 65 12 24 42 17 60];物品重量:w=[30 27 23 24 21 18 16 14 12 10 9 8 6 5 3]; 背包容量:120。...
    • 背包问题 Matlab 求解
      背包问题 Matlab 求解 有详细的说明的和解释 值得一看
    • 背包问题MATLAB完整的程序
      一个完整可运行的关于背包问题MATLAB程序
    • matlab遗传算法解决背包问题
      matlab遗传算法解决背包问题,价值比为目标函数,matlab软件编程实现,没有采用工具包,按照C格式编写
    • matlab遗传算法解决背包问题
      matlab遗传算法解决背包问题,价值比为目标函数,matlab软件编程实现,没有采用工具包,按照C格式编写
    • 背包问题遗传算法matlab源程序代码
      部分代码: function Population1=GA_tubian(Population,pe_tubian) %遗传算法突变算子 %pe为突变概率 Population1=Population; n=length(Population(:,1)); m=length(Population(1,:)); for i=1:n ...