《2022年2022年进化算法程序 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年进化算法程序 .pdf(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、进化算法作业名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 20 页 - - - - - - - - - 1 全局优化问题(1)422221614121144311.24minxxxxxxxxf.ts55ix,2,1i此问题的全局最优值min1.0316f。一程序(1)主函数:main.m clear all; clc; popsize=60; %种群规模chromlength=34; %二进制编码,编码精度为0.0001,所以串长l 为 17 pc=0.7; %杂交概率
2、pm=0.1; %变异概率t=0; %进化代数初始为0 pop=initpop(popsize,chromlength); %随机产生初始种群while ty(t) newpop3(1,:)=bestindividual; %保留最佳个体end pop=newpop3; %产生新种群end y; %每代的最佳目标函数值x1; %每代的最佳目标函数值对应的自变量名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 20 页 - - - - - - - - - x2; gy,k=m
3、in(y) %gy 为全局最优值,k 为最优值对应的进化代数gx1=x1(k) %全局最优值对应的自变量gx2=x2(k) plot(y) %最优值收敛曲线title( 收敛性曲线 ); xlabel(进化代数 ); ylabel(函数值 ); axis(0,500,-1.5,1.5); (2)初始种群: initpop.m function pop=initpop(popsize,chromlength) pop=round(rand(popsize,chromlength); %rand 随机产生 0,1区间的一个小数, rand 四舍五入取整end (3)计算目标函数值::calobjv
4、alue.m function objvalue =calobjvalue( pop ) temp1=decodechrom(pop,1,14); temp2=decodechrom(pop,15,14); x1=-5+(10*temp1)/(pow2(14)-1); %将二值域中的数转化为变量域中的数x2=-5+(10*temp2)/(pow2(14)-1); objvalue=4*x1.2-2.1*x1.4+1/3*x1.6+x1.*x2-4*x2.2+4*x2.4; %计算目标函数end a二进制转换为十进制:decodechrom.m function temp=decodechrom
5、(pop,spoint,length ) pop1=pop(:,spoint:spoint+length-1); %按变量个数分组转换,spoint 为起始点, length 为一个变量的长度temp=decodebinary(pop1); end b求二进制串对应的十进制数:decodebinary.m function temp =decodebinary( pop) px,py=size(pop); %求 pop 行数和列数for i=1:py pop1(:,i)=2.(py-i).*pop(:,i); end temp=sum(pop1,2); %每一行求和end (4)计算个体适应度
6、:calfitvalue.m function fitvalue= calfitvalue( objvalue ) fitvalue=1./(1+exp(objvalue); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 20 页 - - - - - - - - - end (5)种群中最大适应度个体及其值:best.m function bestindividual,bestfit = best(pop,fitvalue ) px,py=size(pop); best
7、individual=pop(1,:); bestfit=fitvalue(1); for i=2:px; if fitvaluebestfit bestindividual=pop(i,:); best=fitvalue(i); end end end (6)选择算子: selection.m function newpop1=selection(pop,fitvalue) totalfit=sum(fitvalue); %适应度和ps=fitvalue./totalfit; %单个个体被选择的概率pss=cumsum(ps); %前几项累积和px,py=size(pop); ms=sort
8、(rand(px,1); %随机产生px 个 0,1 之间的数,并按升序排列fitin=1; newin=1; while newin=px if(ms(newin)pss(fitin) newpop1(newin,:)=pop(fitin,:); newin=newin+1; else fitin=fitin+1; end end end (7)交叉算子: crossover.m function newpop2 = crossover( pop,pc ) px,py=size(pop); newpop2=ones(size(pop); for i=1:2:px-1 if randpc cp
9、oint=round(rand*py); %随机产生一个交叉位newpop2(i,:)=pop(i,1:cpoint),pop(i+1,cpoint+1:py); %交换相邻两个个体交叉位之后的基因newpop2(i+1,:)=pop(i+1,1:cpoint),pop(i,cpoint+1:py); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 20 页 - - - - - - - - - else nwepop2(i,:)=pop(i,:); newpop2(i+1
10、,:)=pop(i+1,:); end end end (8)变异算子: mutation.m function newpop3 = mutation( pop,pm ) px,py=size(pop); newpop3=pop; for i=1:px if(randpm) mpoint=round(rand*py); %随机产生一个变异位if mpoint=0 mpoint=1; end if (newpop3(i,mpoint)=0) %变为等为基因newpop3(i,mpoint)=1; else newpop3(i,mpoint)=0; end end end end 二独立运行程序3
11、0 次的结果x1 0.1590 -0.0900 -0.0888 -0.0894 -0.0809 0.0772 0.0876 0.1175 -0.1578 -0.0778 x2 -0.7016 0.7126 0.7102 0.6421 0.7120 -0.6247 -0.7023 -0.7138 0.7029 0.7090 y -1.0115 -1.0316 -1.0316 -0.9751 -1.0313 -0.9763 -1.0308 -1.0287 -1.0125 -1.0310 x1 0.0900 -0.0015 -0.1566 -0.0888 -0.0882 -0.0089 0.1004
12、 0.0766 -0.0900 -0.0876 x2 -0.7126 -0.7065 0.7169 0.7126 0.7029 -0.6931 -0.7029 -0.7132 0.7151 0.7102 y -1.0316 -0.9989 -0.10147 -1.0316 -1.0309 -0.9922 -1.0303 -1.0309 -1.0316 -1.0316 x1 -0.919 0.0778 0.0906 0.0906 0.0931 0.0906 0.0906 -0.0925 -0.0705 -0.0919 x2 0.7126 -0.7114 -0.7138 -0.7126 -0.78
13、16 -0.7132 -0.7096 0.7163 0.6986 0.7126 y -1.0316 -1.0331 -1.0316 -1.0316 -0.9891 -1.0316 -1.0315 -1.0315 -1.0288 -1.0316 最好目标函数值:-1.0316 最差目标函数值:-0.9751 平均目标函数值:-0.9914 标准方差: 0.0286 三最好的一次结果最好解: x1=0.0919 x2=-0.7126 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页
14、,共 20 页 - - - - - - - - - 最好值: -1.0316 运行结果及收敛性曲线如下图:运行结果收敛性曲线(2)10cos81110)6541.5(min12121222xxxxxf.ts55ix,2,1i此问题的全局最优值min0.398f。一程序(1)主函数:main.m clear all; clc popsize=40; %种群规模chromlength=28; %二进制编码,编码精度为0.001,所以串长l 为 14 pc=0.8; %杂交概率pm=0.2; %变异概率t=0; pop=initpop(popsize,chromlength); %随机产生初始种群w
15、hile ty(t) newpop3(1,:)=bestindividual; %保留最佳个体end pop=newpop3; %产生新种群end y; %每代的最佳目标函数值x1; %每代的最佳目标函数值对应的自变量x2; gy,k=min(y); %全局最优值gy=vpa(gy,3) %设置输出精度gx1=x1(k); %全局最优值对应的自变量x1=vpa(gx1,4) gx2=x2(k); x2=vpa(gx2,4) plot(y) %最优值收敛曲线title( 收敛性曲线 ); xlabel(进化代数 ); ylabel(函数值 ); axis(0,500,0.2,1.5); (2)初
16、始种群: initpop.m function pop=initpop(popsize,chromlength) pop=round(rand(popsize,chromlength); %rand 随机产生 0,1区间的一个小数, rand 四舍五入取整end (3)计算目标函数值::calobjvalue.m function objvalue =calobjvalue( pop ) temp1=decodechrom(pop,1,14); temp2=decodechrom(pop,15,14); x1=-5+(10*temp1)/(pow2(14)-1); %将二值域中的数转化为变量域
17、中的数x2=-5+(10*temp2)/(pow2(14)-1); objvalue=(x2-5.1/(4*pi*pi).*x1.2+5/pi.*x1-6).2+10.*(1-1/(8*pi).*cos(x1)+10; end a二进制转换为十进制:decodechrom.m 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 20 页 - - - - - - - - - function temp=decodechrom(pop,spoint,length ) pop1=p
18、op(:,spoint:spoint+length-1); %按变量个数分组转换,spoint 为起始点, length 为一个变量的长度temp=decodebinary(pop1); end b求二进制串对应的十进制数:decodebinary.m function temp =decodebinary( pop) px,py=size(pop); %求 pop 行数和列数for i=1:py pop1(:,i)=2.(py-i).*pop(:,i); end temp=sum(pop1,2); %每一行求和end (4)计算个体适应度:calfitvalue.m function fit
19、value= calfitvalue( objvalue ) fitvalue=1./(1+exp(objvalue); end (5)种群中最大适应度个体及其值:best.m function bestindividual,bestfit = best(pop,fitvalue ) px,py=size(pop); bestindividual=pop(1,:); bestfit=fitvalue(1); for i=2:px; if fitvaluebestfit bestindividual=pop(i,:); best=fitvalue(i); end end end (6)选择算子:
20、 selection.m function newpop1=selection(pop,fitvalue) totalfit=sum(fitvalue); %适应度和ps=fitvalue./totalfit; %单个个体被选择的概率pss=cumsum(ps); %前几项累积和px,py=size(pop); ms=sort(rand(px,1); %随机产生px 个 0,1 之间的数,并按升序排列fitin=1; newin=1; while newin=px if(ms(newin)pss(fitin) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -
21、 - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 20 页 - - - - - - - - - newpop1(newin,:)=pop(fitin,:); newin=newin+1; else fitin=fitin+1; end end end (7)交叉算子: crossover.m function newpop2 = crossover( pop,pc ) px,py=size(pop); newpop2=ones(size(pop); for i=1:2:px-1 if randpc cpoint=round(rand*py); %随机产生一
22、个交叉位newpop2(i,:)=pop(i,1:cpoint),pop(i+1,cpoint+1:py); %交换相邻两个个体交叉位之后的基因newpop2(i+1,:)=pop(i+1,1:cpoint),pop(i,cpoint+1:py); else nwepop2(i,:)=pop(i,:); newpop2(i+1,:)=pop(i+1,:); end end end (8)变异算子: mutation.m function newpop3 = mutation( pop,pm ) px,py=size(pop); newpop3=pop; for i=1:px if(randpm
23、) mpoint=round(rand*py); %随机产生一个变异位if mpoint=0 mpoint=1; end if (newpop3(i,mpoint)=0) %变为等为基因newpop3(i,mpoint)=1; else newpop3(i,mpoint)=0; end end end end 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 20 页 - - - - - - - - - 二独立运行程序30 次的结果x1 3.125 3.145 3.128
24、3.145 3.141 3.124 3.125 3.145 3.145 3.125 x2 2.285 2.265 2.500 2.265 2.276 2.290 2.305 2.265 2.273 2.287 y 0.399 0.398 0.445 0.398 0.398 0.399 0.400 0.398 0.398 0.399 x1 3.125 3.125 3.145 3.140 3.108 3.146 3.111 3.165 3.145 3.145 x2 2.265 2.287 2.265 2.265 2.500 2.276 2.500 2.187 2.270 2.265 y 0.400
25、 0.399 0.398 0.398 0.443 0.398 0.443 0.405 0.398 0.398 x1 3.122 3.125 3.125 3.142 3.134 3.125 3.125 3.143 3.141 3.125 x2 2.284 2.286 2.285 2.274 2.286 2.344 2.285 2.275 2.276 2.288 y 0.400 0.399 0.399 0.398 0.398 0.402 0.399 0.398 0.398 0.399 最好目标函数值:0.398 最差目标函数值:0.445 平均目标函数值:0.403 标准方差: 1.886e-00
26、4 三最好的一次结果最好解: x1=3.145 x2=2.265 最好值: 0.398 运行结果及收敛性曲线如下图:运行结果收敛性曲线(3)10123miniixxf.ts100100ix,10,2, 1i此问题的全局最优值min0f。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 20 页 - - - - - - - - - 本题采用十进制编码方式,与二进制编码方式相比较,效率不如二进制,但程序相比简单一些。多次运行,自变量去平均值可得到最好结果。一程序(1)主函数:
27、main.m clear all; clc popsize=40; %种群规模chromlength=10; %变量个数,十进制编码pc=0.8; %杂交概率pm=0.1; %变异概率t=0; %进化代数pop=initpop(popsize,chromlength); %初始种群while ty(t) newpop3(1,:)=bestindividual; %保留最佳个体end pop=newpop3; %产生新种群end y; %每代的最佳目标函数值x; %每代的最佳目标函数值对应的自变量gy,k=min(y) %gy 为全局最优值,k 为最优值对应的进化代数x=x(k,:) %全局最优
28、值对应的自变量plot(y) %最优值收敛曲线title( 收敛性曲线 ); xlabel(进化代数 ); ylabel(函数值 ); axis(0,5000,0,1); (2)初始种群: initpop.m function pop=initpop(popsize,chromlength) pop=-100+200.*rand(popsize,chromlength); %随机产生 -100,100 之间的数end 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 20
29、 页 - - - - - - - - - (3)计算目标函数值::calobjvalue.m function objvalue =calobjvalue( pop ) px,py=size(pop); for i=1:py x(:,i)=pop(:,i); end objvalue=sum(x.*x,2); end (4)计算个体适应度:calfitvalue.m function fitvalue= calfitvalue( objvalue ) fitvalue=1./objvalue; end (5)种群中最大适应度个体及其值:best.m function bestindividua
30、l,bestfit = best(pop,fitvalue ) px,py=size(pop); bestindividual=pop(1,:); bestfit=fitvalue(1); for i=2:px; if fitvaluebestfit bestindividual=pop(i,:); best=fitvalue(i); end end end (6)选择算子: selection.m function newpop1=selection(pop,fitvalue) totalfit=sum(fitvalue); %适应度和if(fitvalue=0) newpop1=pop;
31、else ps=fitvalue./totalfit; %单个个体被选择的概率pss=cumsum(ps); %前几项累积和px,py=size(pop); ms=sort(rand(px,1); %随机产生px 个0,1 之间的数,并按升序排列fitin=1; newin=1; while newin=px if(ms(newin)pss(fitin) newpop1(newin,:)=pop(fitin,:); newin=newin+1; else 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -
32、- - - - 第 12 页,共 20 页 - - - - - - - - - fitin=fitin+1; end end end end (7)交叉算子: crossover.m function newpop2 = crossover( pop,pc ) px,py=size(pop); newpop2=ones(size(pop); for i=1:2:px-1 for j=1:py if randpc a=rand(); newpop2(i,j)=a*pop(i,j)+(1-a)*pop(i+1,j); %算数交叉newpop2(i+1,j)=a*pop(i+1,j)+(1-a)*p
33、op(i,j); else newpop2(i,j)=pop(i,j); newpop2(i+1,j)=pop(i+1,j); end end end end (8)变异算子: mutation.m function newpop3 = mutation( pop,pm ) px,py=size(pop); newpop3=pop; for i=1:px %每一个点以概率pm 变为等为基因for j=1:py if(randpm) r=-100+200*rand; while(r=pop(i,j) r=-100+200*rand; end newpop3(i,j)=r; else newpop
34、3(i,j)=pop(i,j); end end end 二独立运行程序30 次的结果名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 20 页 - - - - - - - - - y 0.0042 0.0074 0.0080 0.0079 0.0068 0.0063 0.0020 0.0075 0.0099 0.0120 x1 0.0460 -0.0249 0.0108 -0.0224 -0.0067 0.0215 0.0034 0.0035 0.0119 0.0266
35、 x2 -0.0264 0.0250 0.0188 -0.0431 0.0222 0.0071 -0.0184 -0.0262 0.0302 0.0388 x3 0.0078 0.0080 0.0316 -0.0030 0.0058 -0.0311 -0.0080 -0.0134 -0.0382 -0.0416 x4 -0.0184 -0.0097 -0.0386 -0.0285 -0.0167 -0.0296 0.0156 0.0357 0.0105 0.0216 x5 -0.0160 -0.0454 -0.0332 0.0006 0.0169 -0.0556 -0.0127 -0.0030
36、 0.0545 -0.0067 x6 -0.0024 -0.0491 0.0108 -0.0498 -0.0467 -0.0014 0.0000 -0.0303 0.0276 0.0243 x7 -0.0131 -0.0180 -0.0048 -0.0332 -0.0328 0.0144 -0.0234 0.0512 -0.0366 -0.0260 x8 -0.0051 -0.0135 0.0227 -0.0110 0.0069 -0.0057 0.0131 -0.0067 0.0440 -0.0310 x9 -0.0193 0.0275 -0.0369 0.0304 0.0439 0.022
37、0 0.0079 -0.0392 -0.0153 -0.0710 x10 -0.0112 0.0151 0.0405 -0.0111 -0.0204 -0.0103 0.0208 0.0253 0.0053 -0.0162 y 0.0094 0.0111 0.0109 0.0048 0.0066 0.0048 0.0071 0.0055 0.0112 0.0072 x1 -0.0343 -0.0218 0.0301 -0.0309 -0.0319 -0.0037 0.0186 0.0166 0.0626 -0.0349 x2 0.0310 -0.0030 -0.0368 -0.0271 -0.
38、0312 0.0338 0.0354 -0.0302 0.0089 -0.0115 x3 0.0424 0.0329 -0.0188 0.0049 0.0214 -0.0293 -0.0098 0.0069 -0.0098 -0.0193 x4 -0.0415 0.0392 -0.0544 0.0074 0.0129 0.0037 0.0514 0.0310 0.0039 -0.0151 x5 0.0324 0.0198 -0.0236 -0.0042 -0.0133 -0.0161 0.0116 -0.0228 -0.0207 0.0090 x6 0.0479 0.0330 -0.0581
39、-0.0111 0.0103 -0.0379 -0.0030 0.0224 -0.0344 0.0076 x7 -0.0012 -0.0427 0.0313 -0.0418 0.0249 0.0027 -0.0436 0.0204 -0.0504 0.0340 x8 0.0065 -0.0231 -0.0007 0.0158 0.0049 -0.0205 0.0243 -0.0232 0.0350 -0.0466 x9 -0.0063 -0.0452 -0.0112 0.0296 0.0380 0.0092 -0.0096 0.0050 0.0408 -0.0173 x10 -0.0188 0
40、.0454 -0.0168 -0.0058 -0.0406 -0.0226 -0.0055 -0.0363 -0.0030 -0.0384 y 0.0042 0.0074 0.0080 0.0079 0.0068 0.0063 0.0020 0.0075 0.0099 0.0094 x1 0.0460 -0.0249 0.0108 -0.0224 -0.0067 0.0215 0.0034 0.0035 0.0119 -0.0343 x2 -0.0264 0.0250 -0.0188 -0.0431 0.0222 0.0071 -0.0184 -0.0262 0.0302 0.0310 x3
41、0.0078 0.0080 0.0316 -0.0030 0.0058 -0.031 -0.0080 -0.0134 -0.0382 0.0424 x4 -0.0184 -0.0097 -0.0386 -0.0285 -0.0167 -0.0296 0.0156 0.0357 0.0105 -0.0415 x5 -0.0160 -0.0454 -0.0332 0.0006 0.0169 -0.0556 -0.0127 -0.0030 0.0545 0.0324 x6 -0.0024 -0.0491 0.0108 -0.0498 -0.0467 -0.0014 0.0000 -0.0303 0.
42、0276 0.0479 x7 -0.0131 -0.0180 -0.0048 -0.0332 -0.0328 0.0144 -0.0234 0.0512 -0.0366 -0.0012 x8 -0.0051 -0.0135 0.0277 -0.0110 0.0069 -0.0057 0.0131 -0.0067 0.0440 0.0065 x9 -0.0193 0.0275 -0.0369 0.0304 0.0439 0.0220 0.0079 -0.0329 -0.0153 -0.0063 x10 -0.0112 0.0151 0.0405 -0.0111 -0.0204 -0.0103 0
43、.0208 0.0253 -0.0053 -0.0188 最好目标函数值:0.0020 最差目标函数值:0.0120 平均目标函数值:0.0073 标准方差: 6.3099e-006 三最好的一次结果最好解: x1=0.0034 x2=-0.0184 x3=-0.0080 x4=0.0156 x5=-0.0127 x6=0.0000 x7=-0.0234 x8=0.0131 x9=0.0079 x10=0.0208 最好值: 0.0020 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - -
44、第 14 页,共 20 页 - - - - - - - - - 运行结果及收敛性曲线如下图:运行结果收敛性曲线2 组合优化问题多背包问题maxxfxcx.stAxb12,nxx xx0,1ix,1,2,in测试算例:15nc100, 220, 90, 400, 300, 400, 205, 120, 160, 580, 400, 140, 100, 1300, 650; A82413807080451528901303220120408441310010090752528 1201303240160403642020308312144063205596403040165182460161130
45、25511750404019718297021173025511755404021918297021173525001104100606323070103452014206121018429121002036930292012121030421818110203893529201615103042201812020550, 700, 130, 240, 280, 310, 110, 205, 260, 275b. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 20 页
46、 - - - - - - - - - 最优值为:4015 一程序(1)主函数:main.m clear all; clc c=100 220 90 400 300 400 205 120 160 580 400 140 100 1300 650; A=8 24 13 80 70 80 45 15 28 90 130 32 20 120 40 8 44 13 100 100 90 75 25 28 120 130 32 40 160 40 3 6 4 20 20 30 8 3 12 14 40 6 3 20 5 5 9 6 40 30 40 16 5 18 24 60 16 11 30 25 5
47、 11 7 50 40 40 19 7 18 29 70 21 17 30 25 5 11 7 55 40 40 21 9 18 29 70 21 17 30 25 0 0 1 10 4 10 0 6 0 6 32 3 0 70 10 3 4 5 20 14 20 6 12 10 18 42 9 12 100 20 3 6 9 30 29 20 12 12 10 30 42 18 18 110 20 3 8 9 35 29 20 16 15 10 30 42 20 18 120 20; b=550;700;130;240;280;310;110;205;260;275; popsize=20;
48、 %种群规模chromlength=15; %变量个数pc=0.9; %杂交概率pm=0.2; %变异概率t=0; pop=initpop(popsize,chromlength); %随机产生初始种群while t500 %迭代次数t=t+1; pop=repair(pop,A,b,c); %修补算子,修补不满足约束的解objvalue=calobjvalue(pop,c); %计算目标函数值fitvalue=calfitvalue(objvalue); %计算适应度bestindividual,bestfit=best(pop,fitvalue); %最近个体及其适应度值x(t,:)=be
49、stindividual; %最佳个体y(t)=sum(c.*bestindividual); %计算最佳个体的目标函数值newpop1=selection(pop,fitvalue); %选择算子newpop2=crossover(newpop1,pc); %交叉算子newpop3=mutation(newpop2,pm); %变异算子objvalue1=calobjvalue(newpop3(1,:),c); if objvalue11&y(t)b(i) %判断每一约束,当不满足约束时,将该背包中利润密度最小的物资拿出ty,I=min(t(i,:); pop(k,I)=0; t(i,I)=
50、Inf; end end end end (4)计算目标函数值::calobjvalue.m function objvalue =calobjvalue( pop,c) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 20 页 - - - - - - - - - px,py=size(pop); for i=1:px objvalue(i)=sum(c.*pop(i,:); end end (5)计算个体适应度:calfitvalue.m function fitva