200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 【优化求解】基于matlab粒子群与遗传算法混合算法求解切削参数优化问题(以成本和碳排

【优化求解】基于matlab粒子群与遗传算法混合算法求解切削参数优化问题(以成本和碳排

时间:2019-04-27 22:36:14

相关推荐

【优化求解】基于matlab粒子群与遗传算法混合算法求解切削参数优化问题(以成本和碳排

一、获取代码方式

获取代码方式1:

完整代码已上传我的资源:【单目标优化求解】基于matlab粒子群与遗传算法混合算法求解切削参数优化问题(以成本和碳排放量为目标函数)【含Matlab源码 1619期】

获取代码方式2:

通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:

订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、遗传算法简介

1 引言

2 遗传算法理论

2.1 遗传算法的生物学基础

2.2 遗传算法的理论基础

2.3 遗传算法的基本概念

2.4 标准的遗传算法

2.5 遗传算法的特点

2.6 遗传算法的改进方向

3 遗传算法流程

4 关键参数说明

三、部分源代码

%计算机床在进行切削时的碳排放量%遗传算法子程序%a:切削速度,fz:铣刀每齿进给量%Name:Cpaifang.mpopsize = 500;a = 78 + 122 * rand(popsize,1);%a(切削速度)的染色体基因个数[78,200]fz = 8 + 12 * rand(popsize,1);%fz(每齿进给量)的染色体基因个数,在原有机床扩大了100倍[8,20]gp = 1 + 14 * rand(popsize,1);%gp(铣削深度)的染色体基因个数[1,15]ge = 40 + 180 * rand(popsize,1);%ge(铣削宽度)的染色体基因个数[40,220]chromlength1 = 8;%a(切削速度)的染色体基因个数[78,200]chromlength2 = 5;%fz(每齿进给量)的染色体基因个数,在原有机床扩大了100倍[8,20]chromlength3 = 4;%gp(铣削深度)的染色体基因个数[1,15]chromlength4 = 8;%ge(铣削宽度)的染色体基因个数[40,220]chromlength = chromlength1 + chromlength2 + chromlength3 + chromlength4;pop = initpop1(a,fz,gp,ge,popsize,chromlength1,chromlength2,chromlength3,chromlength4,chromlength);%产生初始种群%[newpop] = liselection(popsize,chromlength,pop,chromlength1,chromlength2,chromlength3,chromlength4);pop5=[];for i = 1 : popsize[objvalue] = calobjvalue1(pop);%计算目标函数[fitvalue] = calfitvalue1(objvalue);%计算个体适应度值[newpop] = selection1(pop,fitvalue);%选择%[newpop1] = liselection(popsize,chromlength,newpop,chromlength1,chromlength2,chromlength3,chromlength4);%粒子群算法[newpop1] = crossover1(newpop,popsize,chromlength1,chromlength2,chromlength3,chromlength4,chromlength);%交叉[newpop2] = mutation1(newpop1,popsize,chromlength1,chromlength2,chromlength3,chromlength4,chromlength);%变异[newobjvalue] = newcalobjvalue1(newpop2);%计算最新代目标函数[newfitvalue] = newcalfitvalue1(newobjvalue);%计算新种群适应度值[bestindividual,bestfit] = best(newpop2,newfitvalue);%求出群体中适应值最大的个体及其适应值y(i) = bestfit;%储存最优个体适应值pop5(i,:) = bestindividual;%储存最优个体n(i) = i;%记录最优代位置%解码%x1(i) = 0 + decodechrom(pop5,1,8);%x2(i) = decodechrom(pop5,9,5);%x3(i) = decodechrom(pop5,14,4);%x4(i) = decodechrom(pop5,18,8);pop = newpop2;endC1 = 1.5;%学习因子C2 = 1.5;%学习因子W = 0.8;%惯性权重Vmax = 10;%最大飞行速度Vmin = -10;%最小飞行速度amax = max(decodechrom(pop5,1,8));amin = min(decodechrom(pop5,1,8));fzmax = max(decodechrom(pop5,9,5));fzmin = min(decodechrom(pop5,9,5)); gpmax = max(decodechrom(pop5,14,4));gpmin = min(decodechrom(pop5,14,4));gemax = max(decodechrom(pop5,18,8));gemin = min(decodechrom(pop5,18,8));popv = rand(popsize,4) * (Vmax-Vmin)+Vmin;popx = [decodechrom(pop5,1,8),decodechrom(pop5,9,5),decodechrom(pop5,14,4),decodechrom(pop5,18,8)];%满足参数范围index = find(popx(:,1)>amax | popx(:,1)<amin);popx(index,1) = rand * (amax - amin) + amin;index = find(popx(:,2)>fzmax | popx(:,2)<fzmin);popx(index,2) = rand * (fzmax-fzmin) + fzmin;index = find(popx(:,3)>gpmax | popx(:,3)<gpmin);popx(index,3) = rand * (gpmax-gpmin) + gpmin;index = find(popx(:,4)>gemax | popx(:,4)<gemin);popx(index,4) = rand * (gemax-gemin) + gemin;pBest= popx;pBestValue = calobjvalue12(pBest);[gBestValue,index] = min(calobjvalue12(popx));gBest = popx(index,:);%问题在这for t = 1 : 1000for k = 1:popsize%更新个体的位置和速度popv(k,:) = W * popv(k,:)+C1 * rand *(pBest(k,:)-popx(k,:))+C2 * rand * (gBest - popx(k,:));popx(k,:) = popx(k,:) + popv(k,:);%边界处理,超过定义范围就取改范围极值%p1(i,:) = round(newpop(i,:));index = find(popv(k,:)>Vmax | popv(k,:)<Vmin);popv(k,index) = rand * (Vmax - Vmin) + Vmin;if popx(k,1)>amaxpopx(k,1) = rand * (amax-amin)+amin;endif popx(k,1)<=amin%index = find(popx(i,1)<=amin);popx(k,1) = rand * (amax-amin)+amin;endif popx(k,2)>fzmaxpopx(k,2) = rand * (fzmax-fzmin) + fzmin;endif popx(k,2)<fzminpopx(k,2) = rand * (fzmax-fzmin) + fzmin;end%index = find(popx(i,2)>20);if popx(k,3)>gpmaxpopx(k,3) = rand * (gpmax-gpmin) + gpmin;endif popx(k,3)<gpminpopx(k,3) = rand * (gpmax-gpmin) + gpmin;endif popx(k,4)>gemaxpopx(k,4) = rand * (gemax-gemin) + gemin;endif popx(k,4)<geminpopx(k,4) = rand * (gemax-gemin) + gemin;end%更新粒子历史最优if calobjvalue12(popx(k,:))<pBestValue(k)pBest(k,:) = popx(k,:);pBestValue(k) = calobjvalue12(popx(k,:));endif pBestValue(k) < gBestValuegBest = pBest(k,:);gBestValue = pBestValue(k);endendtBest(t) = calobjvalue12(gBest);pop6(t,:) = gBest; zx(t) = t;end%%绘图figure(1)%最优点变化趋势图i = 1 : 1000;plot(tBest(i),'-b*')xlabel('迭代次数T');ylabel('最优个体适应值(Tw+C)/mm3');title('最优点变化趋势');legend('最优点');grid on[z index] = min(tBest);%计算最小值及其位置PO = zx(index) %最优个体的位置X = pop6(index,1)Y = pop6(index,2)Z = pop6(index,3)R = pop6(index,4)F = z

四、运行结果

五、matlab版本及参考文献

1 matlab版本

a

2 参考文献

《智能优化算法及其MATLAB实例(第2版)》包子阳 余继周 杨杉著 电子工业出版社

【优化求解】基于matlab粒子群与遗传算法混合算法求解切削参数优化问题(以成本和碳排放量为目标函数)【含Matlab源码 1619期】

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。