基于GA遗传优化的离散交通网络双层规划模型设计matlab仿真
1.程序功能描述
基于GA遗传优化的离散交通网络双层规划模型设计.优化输出路段1和路段2的收费情况收敛过程。
2.测试软件版本以及运行结果展示
MATLAB2022a版本运行
3.核心程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | while gen < MAXGEN; rng(gen) gen P1 = 0.9; P2 = 1-P1; FitnV=ranking(Objv); Selch=select( 'sus' ,Chrom,FitnV); Selch=recombin( 'xovsp' , Selch,P1); Selch=mut( Selch,P2); phen1=bs2rv(Selch,FieldD); for a=1:1:NIND if gen == 1 Cost1(a) = Cost1_intial; Cost2(a) = Cost2_intial; else Cost1(a) = phen1(a,1); Cost2(a) = phen1(a,2); end %计算对应的目标值 [errs,a1,a2,eas,tas,xa3] = func_obj(Cost1(a),Cost2(a)); E = errs; JJ(a,1) = E; end Objvsel =(JJ+ eps ); [Chrom,Objv] = reins(Chrom,Selch,1,1,Objv,Objvsel); gen = gen+1; %保存参数收敛过程和误差收敛过程以及函数值拟合结论 Cost1gen(gen) = mean (Cost1); Cost2gen(gen) = mean (Cost2); F(gen) = mean (JJ); if gen <=32 F2(gen) = mean (F(1:gen)); Cost1gen2(gen) = mean (Cost1gen(1:gen)); Cost2gen2(gen) = mean (Cost2gen(1:gen)); else F2(gen) = mean (F(gen-32:gen)); Cost1gen2(gen) = mean (Cost1gen(gen-32:gen)); Cost2gen2(gen) = mean (Cost2gen(gen-32:gen)); end end Cost1f = Cost1gen( end ); Cost2f = Cost2gen( end ); figure ; plot (F2(2: end ), 'linewidth' ,2); xlabel ( '迭代次数' ); ylabel ( '上层目标函数' ); grid on figure ; plot (Cost1gen2(2: end ), 'r' , 'linewidth' ,2); hold on plot (Cost2gen2(2: end ), 'b' , 'linewidth' ,2); xlabel ( '迭代次数' ); ylabel ( '收费情况' ); legend ( '路段1' , '路段2' ); grid on disp ( '流量' ); eas 06_029m |
4.本算法原理
1. 使用一氧化碳作为路网车辆尾气排放的代表指标,计算公式如下:
2. 双层规划模型
上层模型
采用多目标模型,系统总出行时间最小,同时区域排放最小
3.下层模型
采用固定需求的用户平衡(UE),总阻抗最小
N——网络中节点的集合;
L——网络中路段的集合;
R——网络中出发地的集合;
S——网络中目的地的集合;
——出发地 和目的地 之间的所有径路的集合;
——出发地 和目的地 之间的OD交通量;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下