2022年2022年量子遗传算法求解背包问题程序 .pdf

上传人:Che****ry 文档编号:27255477 上传时间:2022-07-23 格式:PDF 页数:7 大小:52.94KB
返回 下载 相关 举报
2022年2022年量子遗传算法求解背包问题程序 .pdf_第1页
第1页 / 共7页
2022年2022年量子遗传算法求解背包问题程序 .pdf_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《2022年2022年量子遗传算法求解背包问题程序 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年量子遗传算法求解背包问题程序 .pdf(7页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、%qga n=100;%群体规模g=100;%进化代数m=50; w=80,82,85,70,72,70,66,50,55,25,50,55,40,48,50,32,22,60,30,32,40,38,35,32,25,28,30,22,50,30,45,30,60,50,20,65,20,25,30,10,20,25,15,10,10,10,4,4,2,1; %物品重量p=220,208,198,192,108,108,165,162,160,158,155,130,125,122,120,118,115,110,105,101,100,100,98,96,95,90,88,82,80,77

2、,75,73,72,70,69,66,65,63,60,58,56,50,30,20,15,10,8,5,3,1; %物品价值% clf clear global m n;% 全局变量, m 为染色体串长,即背包问题中的物品数量,n 为群体规模m=input(please input chromsome length m=:);% 输入串长w=80,82,85,70,72,70,66,50,55,25,50,55,40,48,50,32,22,60,30,32,40,38,35,32,25,28,30,22,50,30,45,30,60,50,20,65,20,25,30,10,20,25,1

3、5,10,10,10,4,4,2,1 p=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,88,82,80,77,75,73,72,70,69,66,65,63,60,58,56,50,30,20,15,10,8,5,3,1 C=1000; save mwpC m w p C %knapsack clf clear global m n;% 全局变量, m 为染色体串长,即背包问题中的物品数量,n 为群体规模m=input(please inp

4、ut chromsome length m=:);% 输入串长for i=1:m w(i)=1+rand()*9;% 物品重量p(i)=w(i)+5; %物品价值end C=sum(w)/2;% 限制重量w,p save mwpc m w p C % 保留数据,重复试验使用相同的数据%初始化群体,规模1,染色体位数10,%n=input(please input population size n=:);% 群体规模%g=input(please input max-generation g=:);% 进化代数for i=1:m a(i)=1/sqrt(2);% 0态系数b(i)=1/sqrt

5、(2); % 1态系数end %MAX=zeros(number,g) % 保持的最高适应度值%BEST=zeros(number,m)% 保持的问题最优解名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - q=zeros(2,m,n);% 定义群体染色体for j=1:n for i=1:m q(:,i,j)=a(i),b(i);%单个染色体。即q(1,i,j) 为第 j 个染色体的第i 位的 0态系数,%q(1,i,j) 为第

6、j 个染色体的第i 位的 1态系数end end functionq=initialize(n,m) t=0; while tq(1,i,j)2 % 如果 ra(i,j)2, 则该位二进制串置为1,即取该物品x(j,i)=1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - else x(j,i)=0;% 该为二进制串置为0,即不取该物品end end end plot(x); %repair 修改超重的问题解,即选择的物品重量

7、不能超过限重C functionoverfiled=repair(n,m,k,x,C) overfiled=0;% 不超重n=100; m=50; x=zeros(n,m); w=80,82,85,70,72,70,66,50,55,25,50,55,40,48,50,32,22,60,30,32,40,38,35,32,25,28,30,22,50,30,45,30,60,50,20,65,20,25,30,10,20,25,15,10,10,10,4,4,2,1; %物品重量c=1000; C=sum(w)/2;% 限制重量for j=1:n if sum(x(j,:)*w)C %超重ov

8、erfiled=1;% 超重符号end while overfiled k=fix(1+rand()*(m-1);%选择其中一个物品放弃,fix 是求最接近0 的整数x(j,k)=0; if sum(x(j,:)*w)C % 超重了overfiled=1; end end x(j,k)=0;% 将刚才选择后导致超重的那个物品丢弃x(j,:); end plot(k,fix(k); hold on; plot(k); plot(x); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3

9、 页,共 7 页 - - - - - - - - - %evaluate 评估%fit=zeros(1,n); functionf,v=observe(n,m,p) n=100; m=50; x=zeros(n,m); p=220,208,198,192,108,108,165,162,160,158,155,130,125,122,120,118,115,110,105,101,100,100,98,96,95,90,88,82,80,77,75,73,72,70,69,66,65,63,60,58,56,50,30,20,15,10,8,5,3,1; %物品价值for j=1:n %n 个

10、个体for i=1:m %m 位。即 m 个物品fit(j)=sum(x(j,:)*p);%问题解的适应度,即选择物品的总价值end end %for j=n:-1:2 %if fit(j)fit(j-1) % t=fit(j); %fit(j)=fit(j-1); % fit(j-1)=t; % end %end f,v=max(fit);%f位 fit 中的最大值,v 为最大 fit 的位置,即本代最优解的对应序号g=100; t=1:g; if t=0 ave0(n)=mean(fit); else ave(n,t)=mean(fit); end plot(f,t); hold on;

11、plot(f); % update 量子门更新策略functionsign,BEST,angle,q=update(n,m,t,z) n=100; m=50; g=100; t=1:g; for j=1:n %n 个个体,依次更新if t=1 if fit(j)=MAX0(number); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 7 页 - - - - - - - - - sign=1; else sign=0; end elseif fit(j)=MAX(num

12、ber,t-1)%本代的最优解比上代保持的最优解sign=1; else sign=0; end i=0; while i0 %上代保持的最优解此位为 1 ,且新解比上代保持的最优解适应度%值高,且新解的0态、1态系数同号,即在一、三象限angle=-0.05*pi;% 顺时针旋转,使下一代系数更靠近0态elseif q(2,i,j)=0 % 上代保持的最优解此位为1 ,且新解比上代保持的最优解适应度值高,%且新解在实轴上,即b(i) 即 0态,不旋转angle=0; else angle=0.05*pi;% 新解比上代保持的最优解适应度高,还包括两种情况,%一是新解在虚轴上,即a(i)处于

13、1态,此时无论顺时针还是逆时针旋转%都可以,使下个状态更靠近0态,本程序使用顺指针逆时针旋转,%第二种情况是在二四象限,此时必须逆时针旋转end elseif BEST(n,i)=0 % 新解状态为1,且保持的最优解状态为0 if sign=0 % 新解适应度值小于保持的最优解适应度值if q(1,i,j)*q(2,i,j)0%一三象限,所以顺时针旋转angle=-0.01*pi; elseif q(2,i,j)=0 % 新解适应度值小于保持的最优值,且新解在实轴上,不旋转?angle=0; else %两种情况。一是新解在虚轴上,即在1态,顺时针逆时针%旋转都可,本程序使用逆时针旋转,二是在

14、三名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - 四象限,逆时针旋转angle=0.01*pi; end elseif q(1,i,j)*q(2,i,j)0 %新解为 1,保持的最优解为0,且新解适应度值比保持的最优解高,%且在一三象限,所以逆时针旋转angle=0.025*pi; elseif q(1,i,j)=0 %新解为 1,保持的最优解为0,且新解适应度值比保持的最优解高,新解在虚轴上,不旋转angle=0; else

15、%新解为 1, 保持的最优解为0, 且新解适应度值比保持的最优解高,两种情况%一是新解在虚轴上,顺时针逆时针旋转都可,本程序使用顺时针旋转,二是在三四象限,顺时针旋转angle=-0.025*pi; end elseif sign=0% 新解和保持的最优解都是1, 且新解适应度值小于保持最优解if q(1,i,j)*q(2,i,j)0 %一三象限,逆时针旋转?angle=0.005*pi; elseif q(1,i,j)=0 %新解在虚轴上angle=0; else %两种情况。一是新解在实轴上,逆时针顺时针旋转都可,本程序采用顺时针,二是三四象限,顺时针旋转angle=-0.005*pi;

16、end elseif q(1,i,j)*q(2,i,j)0 %新解和保持的最优解都是1,且新解适应度值高于保持最优解 ,逆时针旋转angle=0.025*pi; elseif q(1,i,j)=0 %新解和保持的最优解都是1,且新解适应度值高于保持最优解,且新解在虚轴上,不旋转angle=0; else %新解和保持的最优解都是1,且新解适应度值高于保持最优解。包括两种情况%一是新解在实轴上,逆时针旋转顺时针旋转都可以。本程序采用顺时针旋转%二是在二四象限,顺时针旋转angle=-0.025*pi; end z=cos(angle),-sin(angle);sin(angle),cos(ang

17、le)*q(1,i,j),q(2,i,j);%采用量子门更新q(1,i,j)=z(1);q(2,i,j)=z(2);%新的 0态、1态系数end end 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - %store functionMAX,BEST=store(f,v,t) g=100; t=1:g; xdatain=-1:1; ydatain=-1:1; if t=0 %第一次观测,即初始化观测MAX0(number)=f;

18、BEST(number,:)=x(v,:); elseif t=1 % 循环中的第一代if fitMAX0(number) %,如果本代最优解比初始化的最优解适应度高,则第一代保持的最优解即为本代最优解MAX(number,t)=fit; BEST(number,:)=x(v,:); else MAX(number,t)=MAX0(number); BEST(number,:)=BEST(number,:); end elseif fitMAX(number,t-1) %循环中本代最优解比上代保持的最优解适应度高,则本代最优解为本代保持的最优解MAX(number,t)=fit; BEST(number,:)=x(v,:); else MAX(number,t)=MAX(number,t-1);%循环中本代最优解比上代保持的最优解适应度低,则本代保持的最优解认为上代保持的最优解BEST(number,:)=BEST(number,:); end 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com