Microcity Web介绍:该网站由大连海事大学物流系的孙卓教授自主研发, Microcity Web采用的语言是lua,由于其语法简单,数据结构强大,自由度高,另外,lua也是最快的语言脚本之一,对于优化问题的求解,速度也是十分关键的。Microcity Web可以实现相关运筹问题的求解,在物流交通领域具有较强的适用性,而且具有强大的仿真功能,是新手尝试撰写仿真代码不二选择。
交通分配问题
(一)Frank-Wolfe整体思路
(1)求解BPR导函数,用于泰勒级数展开
(2)近似泰勒展开表达目标函数
ta*x[i]是BPR 函数计算出的平均旅行时间,乘以流量 x[i],得到的是整个路段的总旅行时间。第二部分表示的是“流量变化导致的旅行时间变化”,这里使用了流量的平方差(非线性)来考虑流量变化的大小,并用 BPR 函数的导数乘以这个平方差来估算这种变化对总旅行时间的影响。
(3)二分法求解步长:通过调整收敛精度,可以获得精确的步长。
通过这种逐步的加权平均方法,算法能够在保持稳定的同时逐渐调整流量分配,最终找到一个减少整个网络总旅行时间的最优流量分配方案。这种方法的优点是它既考虑了当前的流量情况,又逐渐引入了基于最快路径的理想化流量分配,从而有效地平衡了现实和理想状态之间的差异。
1、全有全无法确定理想流量分配:
每次迭代中,算法首先使用全有全无法基于当前的路段旅行时间来确定一个理想化的流量分配方案。这个方案假设所有车辆都选择最快的路线。
2、加权平均更新流量分配:
算法使用 weightedAverageMSA 函数来计算当前流量分配和全有全无法得到的流量分配之间的加权平均。这种方法考虑了当前的实际流量分配和理想化的最优流量分配。
逐渐调整流量分配,逐步调整有助于逐步减少总旅行时间。
3、收敛性检查:
算法在每次迭代后检查流量分配是否收敛。如果新的流量分配与前一次迭代的分配相差很小,则可以认为找到了接近最优的流量分配方案。
1、主函数:
这个函数实现了增量分配法。它将totalDemand 分成 N 个小部分,然后逐步将每个小部分的需求分配到旅行时间最短的路段。在每次迭代中,函数首先更新路段的旅行时间,然后比较不同路段的旅行时间,选择旅行时间最短的路段。每次迭代将一小部分需求分配到这条路段上。
2、流量分配:
流量分配是基于当前每条路段的旅行时间。在每次迭代中,都会将一定量的流量分配到旅行时间最短的路段上。分配完流量以后,结束跳出程序,Print出结果。