matlab基于遗传算法的多目标优化算法(附代码获取方法)
介绍
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站
目前的多目标优化算法有很多, Kalyanmoy Deb的带精英策略的快速非支配排序遗传算法( nondominated sorting genetic algorithm Il,NSGA-I)无疑是其中应用最为广泛也是最为成功的一种。
clc;clear;
tic;
%% 初始化
PopSize=200;%种群大小
MaxIteration =300;%最大迭代次数
R=50;
location1=load('location1_100.txt');%优化100个城市
location2=load('A_location2_100.txt');
% location1=load('location1.txt');
% location2=load('location2.txt');
CityNum =size(location1,2);%城市数
V=CityNum;
M=2;
pc=0.8;pm=0.9;
for i=1:PopSizechromosome(i,1:CityNum)=randperm(CityNum);chromosome(i,CityNum+1:CityNum+2)=costfunction(chromosome(i,1:CityNum),location1,location2);
end
chromosome= non_domination_sort_mod(chromosome);%将解分 最后一列为拥挤度 倒数第二列为分级数
index=find(chromosome(:,103)==1);
costrep=chromosome(index,101:102);%第一级即非劣解%% 主循环
pool = round(PopSize/2); %突变池规模for Iteration=1:MaxIterationif ~mod(Iteration,10)fprintf('current iter:%d\n',Iteration)disp([' Number of Repository Particles = ' num2str(size(costrep,1))]);endparent_chromosome = selection_individuals(chromosome,pool,2);parent_var=parent_chromosome(:,1:CityNum);%分离出解向量%% 交叉offspring_var=[];offspring_cost=[];for ic=1:pool/2m1=randi(pool);%选出交叉向量m2=randi(pool);while m1==m2m1=randi(pool);endscro(1,:)=parent_var(m1,:);scro(2,:)=parent_var(m2,:);if rand<pcc1=randi(CityNum);%选出交叉位置c2=randi(CityNum);while c1==c2c1=randi(CityNum);endchb1=min(c1,c2);chb2=max(c1,c2);middle=scro(1,chb1+1:chb2);scro(1,chb1+1:chb2)=scro(2,chb1+1:chb2);scro(2,chb1+1:chb2)=middle;for i=1:chb1while find(scro(1,chb1+1:chb2)==scro(1,i))zhi=find(scro(1,chb1+1:chb2)==scro(1,i));y=scro(2,chb1+zhi);scro(1,i)=y;endwhile find(scro(2,chb1+1:chb2)==scro(2,i))zhi=find(scro(2,chb1+1:chb2)==scro(2,i));y=scro(1,chb1+zhi);scro(2,i)=y;endendfor i=chb2+1:CityNumwhile find(scro(1,1:chb2)==scro(1,i))zhi=find(scro(1,1:chb2)==scro(1,i));y=scro(2,zhi);scro(1,i)=y;endwhile find(scro(2,1:chb2)==scro(2,i))zhi=find(scro(2,1:chb2)==scro(2,i));y=scro(1,zhi);scro(2,i)=y;endendendif rand<pm%逆序变异m1=randi(CityNum);m2=randi(CityNum);while m1==m2m1=randi(CityNum);endloc1=min(m1,m2);loc2=max(m1,m2);scro(1,loc1:loc2)=fliplr(scro(1,loc1:loc2));% tt=scro(1,m2);% scro(1,m2)=scro(1,m1);% scro(1,m1)=tt;endif rand<pm%对换变异m1=randi(CityNum);m2=randi(CityNum);while m1==m2m1=randi(CityNum);endtt=scro(2,m2);scro(2,m2)=scro(2,m1);scro(2,m1)=tt;endscro_cost(1,:)=costfunction(scro(1,:),location1,location2);scro_cost(2,:)=costfunction(scro(2,:),location1,location2);offspring_var=[offspring_var;scro];%解offspring_cost=[offspring_cost;scro_cost];%适应度endoffspring_chromosome(:,1:V)=offspring_var;offspring_chromosome(:,V+1:V+M)=offspring_cost;main_pop = size(chromosome,1);offspring_pop = size(offspring_chromosome,1);intermediate_chromosome(1:main_pop,:) = chromosome;intermediate_chromosome(main_pop + 1 :main_pop + offspring_pop,1 : M+V) = ...offspring_chromosome;intermediate_chromosome = ...non_domination_sort_mod(intermediate_chromosome);%% 选择chromosome = replace_chromosome(intermediate_chromosome,PopSize);index=find(intermediate_chromosome(:,103)==1);costrep=intermediate_chromosome(index,101:102);cost=intermediate_chromosome(:,101:102);if ~mod(Iteration,1)figure (1)plot(costrep(:,1),costrep(:,2),'r*',cost(:,1),cost(:,2),'kx');xlabel('F1');ylabel('F2');title(strcat('Interaction ',num2str(Iteration), ' Pareto non-dominated solutions'));% hold onendif ~mod(Iteration,MaxIteration)% if ~mod(Iteration,1)fun_pf=costrep;[fun_pf,~]=sortrows(fun_pf,1);plot(fun_pf(:,1),fun_pf(:,2),'k*-');title(strcat('Interaction ',num2str(Iteration), ' Pareto non-dominated solutions'));hold on;grid on;end
end
运行过程
运行结果
如需帮助VX:zhangshu2274
代码下载链接
matlab基于遗传算法的多目标优化算法(附代码获取方法)相关推荐
- 《MATLAB智能算法30个案例》:第9章 基于遗传算法的多目标优化算法
<MATLAB智能算法30个案例>:第9章 基于遗传算法的多目标优化算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析> ...
- 基于遗传算法的多目标优化算法(附代码案例)
一.理论基础 多目标优化问题可以描述如下: 其中,f(x) 为待优化的目标函数:x 为 待优化的变量:lb 和 ub 分别为变量 x 的下限和上限约束:Aeq * x = beq 为变量 x 的线性等 ...
- 基于透镜成像学习策略的灰狼优化算法-附代码
基于透镜成像学习策略的灰狼优化算法 文章目录 基于透镜成像学习策略的灰狼优化算法 1.灰狼优化算法 2.基于透镜成像学习的 GWO 算法 2.1修改控制参数*C*策略 2.2 透镜成像反向学习策略 3 ...
- 基于柯西变异的蚁狮优化算法 - 附代码
基于柯西变异的蚁狮优化算法 文章目录 基于柯西变异的蚁狮优化算法 1.蚁狮优化算法 2. 改进蚁狮优化算法 2.1 基于柯西变异算子改进 3.实验结果 4.参考文献 5.Matlab代码 6.Pyth ...
- 基于Levy飞行的飞蛾扑火优化算法-附代码
基于Levy飞行的飞蛾扑火优化算法 文章目录 基于Levy飞行的飞蛾扑火优化算法 1.飞蛾扑火优化算法 2. 改进飞蛾扑火优化算法 2.1 Lévy 飞行 3.实验结果 4.参考文献 5.Matlab ...
- 基于麻雀搜索算法的同步优化特征选择 - 附代码
基于麻雀搜索算法的同步优化特征选择 - 附代码 文章目录 基于麻雀搜索算法的同步优化特征选择 - 附代码 1.数据集 2.SVM模型建立 3.麻雀搜索算法同步优化特征选择 4.测试结果 5.参考文献: ...
- 智能优化算法:正余弦优化算法-附代码
智能优化算法:正余弦优化算法-附代码 文章目录 智能优化算法:正余弦优化算法-附代码 1.算法原理 2.算法流程 3.算法结果 4.参考文献 5.MATLAB代码 6.Python代码 摘要:正 余 ...
- 智能优化算法:多元宇宙优化算法-附代码
智能优化算法:多元宇宙优化算法-附代码 文章目录 智能优化算法:多元宇宙优化算法-附代码 1.算法原理 2.算法流程图 3.算法结果 4.参考文献 5.MATLAB代码 6.python代码 摘要:多 ...
- 智能优化算法:蚁狮优化算法-附代码
智能优化算法:蚁狮优化算法-附代码 文章目录 智能优化算法:蚁狮优化算法-附代码 1.算法原理 1.1 蚂蚁的随机游走 1.2蚁狮对蚂蚁随机游走的影响 1.3自适应机制 1.4 精英策略 2.算法步骤 ...
最新文章
- Mysql多实例配置文档
- N76E003快速上手使用和大坑提示
- linux6.6系统安装,CentOS6.6系统怎么安装
- Mirosoft Office自动化问题
- 制作Scary爬虫步骤
- 发布代码小助手V2.1发布了——Code2HTML工具
- 在eclipse中使用第三方库总结
- 啊哈算法---快速排序(C语言)
- 多质点列车动力学模型
- 正则表达式基础语法大全
- 有哪些值得推荐的数据可视化工具?
- 测试用例方法----正交试验(实验)设计法(黑盒)
- 一流科技登上开源供应商名录
- c#实现 正弦sin、反正弦arcsin,正切tan、反正切arctan:求角度值
- Qt 配置使用IPP库
- FleaPHP 学习笔记2
- jkd1.8 list.stream()练习
- [转]各大银行网银转账手续费一览表
- 巧用SEO技术,速提自然流量
- timewrap 算法
热门文章
- CSS3利用animation动画实现多个图标在指定间隔后再次动作
- 几度苍凉的伤感独特日志发布:想要逃,却怎么也逃不掉
- iOS Core Data 数据迁移 指南 144 作者 一缕殇流化隐半边冰霜 关注 2016.05.09 00:35* 字数 4718 阅读 2931评论 17喜欢 327 前言 Core
- 神探Python程序员,带你千里捉小三!
- ZCMU 1739: 笨鸟先飞
- Xilinx 差分信号 LVDS传输实战
- 超好用PHP函数库~不断更新,欢迎评论补充!(精)
- 从新女同事说百度搜索的问题和方向
- MQTT X v1.8.3 正式发布
- java 读者写者_Java实现生产者消费者问题与读者写者问题详解