CONTACT
时间:2024-04-29 04:15:17 点击量:
现在市面上已经存在了很多的VRP、VRPTW问题代码。但是针对EVRPTW的matlab开源代码却比较少。
github上找到了一个比较相近的代码,分享如下,大家可以下载学习:
https://github.com/jiujiuxia/GOC-EVRPTW
由于是短暂性的学习VRP问题,且python基础较差。因此,我将对上面代码中的思路2进行学习,并在此基础上稍作改动。
遗传算法作为一种经典的启发式算法,在这里不作过多讲解。
值得注意的是,遗传算法的使用场景十分广泛,包括在其基础上衍生的差分进化算法。有兴趣的UU可以进行深入研究。
主程序:
pd.DataFrame()
二维数据结构,表示一个表格,类似于电子表格的数据结构。每一列可以用于储存不同的类型值。
使用该功能时,需要导入包:
import pandas as pd
import numpy as np
代码:
for i in range(3):
print(i)
结果:
0
1
2
所以上面这个代码的目的是遍历目前存在的几个excel表。
包括 “0_0.xlsx”、“0_1.xlsx”、“0_2.xlsx”以及“result_0_0”、“result_0_1”、““result_0_2””
选择ID大于1000的station,放在station列表中。
可以将数组转换为DataFrame格式:
提取第1列中的点,放入node中
循环迭代,保证每个遍历的说station都放在node中。
data为 “0_0.xlsx”、“0_1.xlsx”、“0_2.xlsx”中的数据。
cus_data为type为2的数据
pd.merge,进行表格之间的拼接。
how: One of ‘left’, ‘right’, ‘outer’, ‘inner’. 默认inner。inner是取交集,outer取并集。比如left:[‘A’,‘B’,‘C’];right[’'A,‘C’,‘D’];inner取交集的话,left中出现的A会和right中出现的买一个A进行匹配拼接,如果没有是B,在right中没有匹配到,则会丢失。'outer’取并集,出现的A会进行一一匹配,没有同时出现的会将缺失的部分添加缺失值。
excel中type为2,即为客户点。type为3,则为换电站。
一些参数设定。
其中,晚到惩罚成本很大,即不能晚到。
all_node统计的为type=2下的节点。
计算两个节点之间的距离和驾驶时间。
计算目标函数下的各个成本。
其他代码为遗传算法下的固定代码。不需要任何的修改。
地址:海南省海口市玉沙路58号 电话:0898-88889999 手机:13988889999
Copyright © 2012-2018 天辰-天辰平台-天辰中国加盟站 ICP备案编:琼ICP备88889999号