找到一条从中心点出发到所有需求点等待时间最短的路径,再根据物资的优先级分配物资。
从excel表中读取需求点分表,供应量总表,车辆类型表、距离表,并且根据需求点分表汇总得到需求点汇总表、物资类型汇总表。
寻找路线使用的衡量标准是需求点等待时间(也就是所有到j点的路线中,耗时最长的那条路线的时间花费为该需求点的等待时间),优化的目标的所有需求点的总等待时间。 寻找路线的算法是基于蚁群算法的改进算法。
该步骤确定一个阈值(体积阈值或者重量阈值),阈值是需求物资的按照一定比例设置的值。该阈值是装载物资的限制,根据阈值匹配合适的蚂蚁。让所有的点的物资都能装至少阈值那么多的物资到蚂蚁上(一只蚂蚁由若干辆车子组合而成),从而保证了公平性。
对选择的蚂蚁装载货物。要在恰好满足阈值的条件下,按照需求点物资的权重由高到低装载。装载时是根据每辆车子体积或者重量限制来装载的。
这一步叫做第二次分配。第一次分配会产生剩余空间,这一次的分配就是利用完这些剩余空间。 蚂蚁剩余空间的分配也遵循按照需求点物资的权重由高到低装载,直至蚂蚁空间用完或者需求点物资装完。
excel文件:各个需求点的数据,以及车辆数据,供应量数据,需求点距离数据。
xunzhaoluxiannew.py文件:在该文件末尾的“手动设置参数区域”可以设置寻找路线相关参数和蚂蚁匹配相关参数。 寻找路线相关参数包括:最大迭代次数N、信息素浓度Taoij的权值alpha、期望Eataij的权值belta、每只蚂蚁继续访问的概率Padd、信息素挥发率rou等。 蚂蚁匹配相关参数包括:公平系数。公平系数可以不自己设置。公平系数是一个数组,长度和车辆组合类型个数相同;假如公平系数元素的值设置得不合理,程序会自动调整成合理系数。
寻找路线迭代过程中最短等待时间的曲线。
第一步:读取数据的相关数据;
在第一步和第二步之间有注意观察最短总等待时间的提醒;
第二步:寻找路线的相关数据;
第三步:自动选择合理公平系数并匹配蚂蚁,并打印出选择的蚂蚁的相关数据;
第四步:初次分配的相关数据;
第五步:最终分配的相关数据;
运行xunzhaoluxiannew.py文件即可。 需要提前安装xlrd包用于读取excel文件,若提示缺少文件,则在windows的cmd中键入pip install xlrd,安装xlrd包。
第二步得到我们寻找的到所有需求点等待时间最短的路径;
第五步得到每个需求点分配多少物资,选择哪只蚂蚁,每辆车装哪些物资,走的什么路线等待多久等。
所有的运行结果都反应在文字输出部分打印出来。