【需求响应式接驳公交】基于NSGA2算法求解准点情形下需求响应式接驳公交DRFB模型附matlab代码

文章介绍了如何使用Matlab开发需求响应式接驳公交(DRFB)的时刻表优化模型,针对干线公交非准点到达情况,通过时间轴和关键点识别来调整DRFB调度,以降低运营成本和乘客等待时间。以南京市机场专线为例进行仿真分析,确定最优行驶路线和时刻表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信       无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机 

⛄ 内容介绍

在公交客流稀疏地区,需求响应式接驳公交(DRFB)已成为解决“最后一公里”公交服务,提高公交竞争力和吸引力的重要措施。然而,受道路交通影响,干线公交的实际到站与计划到站时间可能会存在偏差,导致DRFB与干线公交时刻表不相协调,影响换乘效率,增加公交出行成本,降低公交系统的服务效能。基于干线公交到达换乘站非准点情景,通过时间轴和关键点的识别,建立时刻表优化模型,以企业运营成本、乘客乘车时间成本为优化目标。根据干线公交运行状态调整DRFB调度方案,优化运行时刻表。最后,以南京市机场专线为例,对两种情景下DRFB的时刻表模型进行仿真分析,确定最优行驶路线及运行时刻表。

⛄ 部分代码

%% 所有数据获取界面

function data = GetData()

    data.nodeNum = 15; % 节点数

    data.K = 3; % 车辆数

    data.lineNum = 3;

    data.dis = [ %节点间距离

         [0.00     849.74   870.74  1542.53   491.49   877.43   906.46  1308.11   349.97  1501.82   549.34  1452.21  507.69  1064.15  1073.06  1332.13]

        [ 849.74     0.00  1328.22  2083.07  1004.32  1478.44   1619.92    33.25   700.24  2279.54  1360.65  2288.20  772.29  1304.10  1914.93  1943.65]

        [ 870.74  1328.22    0.00   755.13   390.00   253.48   512.92   833.87  1196.17  1144.06  1154.08  1355.21 1366.99  1932.11  1374.58  2039.12] 

        [1542.53  2083.07  755.13     0.00  1117.00   665.17   719.60   584.87  1889.46  845.36  1632.02  1240.84 2050.03  2554.83  1588.29  2458.20]

        [ 491.49  1004.32  390.00  1117.00  0.00   476.95   628.73  1035.82   806.87  1303.57   875.86  1398.28  978.62  1555.48  1236.12  1747.63]

        [ 877.43  1478.44  253.48   665.17   476.95   0.00   262.24   596.20  1224.44  897.98  1033.95  1102.93 1385.02  1903.46  1166.94  1906.53]

        [ 906.46  1619.92  512.92   719.60   628.73   262.24     0.00   414.46  1253.98  676.71   912.66   842.42 1397.85  1854.55  939.53  1748.44]

        [1308.11  2033.25  833.87   584.87  1035.82   596.20   414.46  0.00  1650.58  320.76  1211.04   661.68 1785.11  2193.37  1038.21  1956.25]

        [ 349.97   700.24  1196.17  1889.46   806.87  1224.44  1253.98  1650.58   0.00  1827.43   695.87  1733.42  174.52   788.03  1266.68  1262.43]

        [1501.82  2279.54  1144.06   845.36  1303.57   897.98   676.71   320.76  1827.43    0.00  1289.67   430.07 1943.55  2279.94  969.58  1921.43]

        [ 549.34  1360.65  1154.08  1632.02   875.86  1033.95   912.66  1211.04   695.87  1289.67     0.00  1094.79  740.20   991.50  571.49   885.20]

        [1452.21  2288.20  1355.21  1240.84  1398.28  1102.93   842.42   661.68  1733.42  430.07  1094.79  0.00 1817.12  2046.82  633.00  1570.59]

        [ 507.69   772.29  1366.99  2050.03   978.62  1385.02  1397.85  1785.11   174.52  1943.55   740.20  1817.12  0.00   620.37  1307.06  1171.91]

        [1064.15  1304.10  1932.11  2554.83  1555.48  1903.46  1854.55  2193.37   788.03  2279.94   991.50  2046.82  620.37   0.00  1436.12   845.21]

        [1073.06  1914.93  1374.58  1588.29  1236.12  1166.94   939.53  1038.21  1266.68  969.58   571.49   633.00 1307.06  1436.12    0.00   952.74]

        [1332.13  1943.65  2039.12  2458.20  1747.63  1906.53  1748.44  1956.25  1262.43  1921.43   885.20  1570.59 1171.91   845.21  952.74     0.00]

        ];

    data.time = [ % 节点间运行时间

        [0 3 3 6 2 4 4 5 1 6 2 6 2 4 4 5]

        [3 0 5 8 4 6 6 8 3 9 5 9 3 5 8 8]

        [3 5 0 3 2 1 2 3 5 5 5 5 5 8 5 8]

        [6 8 3 0 4 3 3 2 8 3 7 5 8 10 6 10]

        [2 4 2 4 0 2 3 4 3 5 4 6 4 6 5 7]

        [4 6 1 3 2 0 1 2 5 4 4 4 6 8 5 8]

        [4 6 2 3 3 1 0 2 5 3 4 3 6 7 4 7]

        [5 8 3 2 4 2 2 0 7 1 5 3 7 9 4 8]

        [1 3 5 8 3 5 5 7 0 7 3 7 1 3 5 5]

        [6 9 5 3 5 4 3 1 7 0 5 2 8 9 4 8]

        [2 5 5 7 4 4 4 5 3 5 0 4 3 4 2 4]

        [6 9 5 5 6 4 3 3 7 2 4 0 7 8 3 6]

        [2 3 5 8 4 6 6 7 1 8 3 7 0 2 5 5]

        [4 5 8 10 6 8 7 9 3 9 4 8 2 0 6 3]

        [4 8 5 6 5 5 4 4 5 4 2 3 5 6 0 4]

        [5 8 8 10 7 8 7 8 5 8 4 6 5 3 4 0]

        ];

    data.passInf_str=[ % 用户信息字符串表示

        ["1" "7:00" "7:30" "8:10" "8:30"]

        ["1" "7:00" "7:30" "8:10" "8:30"]

        ["2" "7:00" "7:30" "8:10" "8:30"]

        ["3" "7:00" "7:30" "8:10" "8:30"]

        ["2" "7:00" "7:30" "8:10" "8:30"]

        ["1" "7:00" "7:30" "8:10" "8:30"]

        ["1" "7:00" "7:30" "8:10" "8:30"]

        ["3" "7:00" "7:30" "8:10" "8:30"]

        ["4" "7:00" "7:30" "8:10" "8:30"]

        ["2" "7:00" "7:30" "8:10" "8:30"]

        ["1" "7:00" "7:30" "8:10" "8:30"]

        ["2" "7:00" "7:30" "8:10" "8:30"]

        ["2" "7:00" "7:30" "8:10" "8:30"]

        ["1" "7:00" "7:30" "8:10" "8:30"]

        ["4" "7:00" "7:30" "8:10" "8:30"]

        ];

    data.lines=[ % 原站点线路

        "0-10-12-14-2-11-0"

        "0-6-7-9-5-1-13-0"

        "0-8-5-3-4-15-0"

        ];

    data.startTime_str = [ "7:30" "7:30" "7:30"]; % 原站点出发时间

    for i=1:data.nodeNum % 将用户信息字符串表示转成数字表示

        for j = 1:5

            if j == 1 

                data.passInf(i,j) = str2num_my(data.passInf_str(i,j));

            else

                 data.passInf(i,j) = timeToNum(data.passInf_str(i,j));

            end

        end

    end

    for i = 1:data.K

        data.startTime(i) = timeToNum(data.startTime_str(i));

    end

    

    for i = 1:data.lineNum

        line = data.lines(i).split('-');

        for j = 2:length(line)-1

             node = str2num_my(line(j));

             node_pre = str2num_my(line(j-1));

            if j == 2               

                data.node_time(node) = data.startTime(i) + data.time(1, node+1);

            else

                data.node_time(node) = data.node_time(node_pre) + data.time(node_pre + 1, node+1);

            end

        end

    end

    for i =1:data.nodeNum

        data.node_time_str{i} = numToTime(data.node_time(i));

    end

end

⛄ 运行结果

⛄ 参考文献

[1] 宋晓鹏, 韩印, 姚佼. 基于NSGA算法的公交车辆调度优化模型[J]. 上海理工大学学报, 2014, 36(4):6.

[2] 辛怡, 霍娅敏. 基于NSGA-Ⅱ算法的需求响应式公交多目标线网优化模型[J]. 综合运输, 2022(002):044.

[3] 楚小兰, 张进杰. 紧急制动下驾驶员的坐姿仿真变化及损伤研究[J]. 建模与仿真, 2023, 12(2):16.

[4] 黄艳国, 韩亮, 张硕,等. 基于NSGA-Ⅱ算法的多目标公交调度优化模型[J]. 科学技术与工程, 2019, 19(19):6.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值