一、获取代码方式

获取代码方式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.m
popsize = 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版本
2014a

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

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

  1. 【Matlab电力负荷预测】粒子群优化支持向量机短期电力负荷预测【含GUI源码 751期】

    一.代码运行视频(哔哩哔哩) [Matlab电力负荷预测]粒子群优化支持向量机短期电力负荷预测[含GUI源码 751期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...

  2. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  3. 【Matlab路径规划】改进的遗传算法机器人避障路径规划【含GUI源码 703期】

    一.代码运行视频(哔哩哔哩) [Matlab路径规划]改进的遗传算法机器人避障路径规划[含GUI源码 703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  4. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  5. 【Matlab指纹识别】指纹识别门禁系统【含GUI源码 1692期】

    一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别门禁系统[含GUI源码 1692期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继 ...

  6. 【Matlab指纹识别】指纹识别匹配门禁系统【含GUI源码 587期】

    一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别匹配门禁系统[含GUI源码 587期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  7. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  8. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  9. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  10. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

最新文章

  1. 零基础是学java还是python-零基础自学编程,学Java难还是Python难?
  2. 数组中子数组运算常见写法
  3. 浅谈MIPS地址对齐问题
  4. LeetCode 286. 墙与门(BFS)
  5. [转]迭代、集合、字典表和列表
  6. ubuntu 报错E: Unable To Locate Package Software-properties-common
  7. 专题导读:空天大数据
  8. 中文编程语言Z语言开源正式开源!!!
  9. C++中如何使用大整数__int 128
  10. C# 子类实例化基类 基类使用不了子类的方法_C#中的类、方法和属性
  11. Android数据加载和Json解析——蓝本
  12. android图片视频图片封装,详解android 视频图片混合轮播实现
  13. 第二篇、python进阶篇
  14. 图谱实战 | 开源知识图谱融合工具剖析:Dedupe与OpenEA工具实现思想、关键环节与实操分析...
  15. 【电脑删不掉文件或文件夹】总结7种方法永久删除!
  16. IT常用职位缩写总结
  17. 上海云盾技术贴趣味性讲解DDoS防御
  18. SSD1963芯片引脚分布及其功能
  19. 科大讯飞语音离线命令识别
  20. scikit-learn : LASSO

热门文章

  1. ubuntu安装ROBOWARE
  2. IMCASH:2019年区块链不会风平浪静,至少还有10件事值得期待
  3. Yii2实现自定义独立验证器的方法
  4. 关于只针对ie7浏览器的css问题
  5. MVC4 Model ValueProvider
  6. Objective-C词汇表
  7. ipq_read(3)
  8. 结构化编程:跳转控制break、continue
  9. Python 操作快捷键
  10. just show up失败让我们成长