matlab 遗传算法求解多式联运优化——可考虑中转次数约束、满意度最高和成本最优方案
问题描述:若干城市点之间构成了物流运输网络,每座城市与城市之间都有不超过内河、铁路、公路和航空运输方式;考虑与行驶距离线性相关的旅行成本和每种运输方式之间转换的费用(中转费用),另外考虑行驶时间和中转时间之和的时间成本。其他成本也可以同时考虑。
遗传算法求解思路:
1、编码方式:
一条染色体分成两个部分,第一部分表示运输方式(用1~4表示),第二部分表示所有城市是否经过的0-1编码(0表示不经过,1表示经过),如此就可以表示从起点到终点的任意一种多式联运运输方案。
2、成本计算
将染色体两部分解码转化成(城市1,城市2,运输方式)的矩阵,分别计算不同运输方式下的旅行成本和旅行时间,再计算中转费用和中转时间,最好计算两部分的总成本。
有中转次数约束的情况下,可通过统计中转次数并转变成惩罚成本加入到总成本中,若无此项约束,则无需进行此项操作。
3、适应度值
适应度值一般是越大越好,而目标函数为总成本最低,因此,适应度值取总成本的倒数即可。
3、选择、交叉、变异、重组
(1)选择
按照选择概率从父代种群中按照轮盘赌规整随机选择一定数目的父代作为子代;
(2)交叉
按照交叉概率,按照一定规则选择两个子代进行染色体上相同位置的随机片段进行交换,
并对交换后重复的基因进行替换处理。
(3)变异
按照变异概率,随机选择染色体上两个基因位置进行交换。
(4)重组
将父代和子代种群混合后按照适应度值降序排列,取排在前面的种群数量的染色体作为新的种群,迭代次数加1,开启下一轮新的循环。
4、最优方案可视化输出
满足一定迭代次数后输出全局最优解,并对最优方案的染色体进行解码,并结合城市编号或者城市名,转化成从起点到终点城市途径每个城市的每一条路径。格式为:城市1 经 运输方式 到城市2,依次类推。

感兴趣的朋友们可以给我留言或者私信,进一步互相交流学习进步!谢谢。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)