联系我:ligong15 AT foxmail.com
在阅读铁路票额分配问题文献时,发现对嘉义大学游鹏胜教授《An efficient computational approach
for railway booking problems》引用颇多,于是下载阅读
文中首先根据现有成果Clancimino et al. (1999) 建立了非线性整数规划模型,并设计算法进行求解。
算法分两步,先将整数变量松弛并求解,其次根据所求解利用粒子群算法进行求解。
第一步中将原有含有积分的非线性优化模型,转换成对应的线性规划之后,利用求解器求解,游教授给出了数据与所求解。
随后根据文中提到的等式,进行解方程,解方程过程中运用到了牛顿法。
牛顿法解方程,我参考了一下两篇资料
在对牛顿法进行实现的时候,由于需要计算概率累计分布函数,所以采用了Python的sympy进行积分的计算。实现完成。
后续发现sympy进行积分计算过程中速度问题较大,后续发现整体算法计算过程中只需要计算正态分布累积分布函数,网上搜索到快速计算累积分布函数有诸多快速计算方法。
从标准正态分布函数的快速计算方法中,指出有两种计算方法,第一种为对《 Abramowitz and Stegun: Handbook of Mathematical Functions》中方法的实现,具体代码地址为implementation of Φ(x),具体实施后,速度有了明显提升,我选用此方法进行后续的复现工作;第二种方法为插值法,此次复现中并未采用,但据称在保证一定程度误差的情况下,可以在第一种方法的基础上进一步提升5倍的速度。
引用文献
[1] Clancimino, A., Inzerillo, G., Lucidi, S., Palagi, L., 1999. A mathematical programming approach for the solution of the railway yield management problem. Transportation Science 33, 168–181.