Microcity Web介绍:该网站由大连海事大学物流系的孙卓教授自主研发, Microcity Web采用的语言是lua,由于其语法简单,数据结构强大,自由度高,另外,lua也是最快的语言脚本之一,对于优化问题的求解,速度也是十分关键的。Microcity Web可以实现相关运筹问题的求解,在物流交通领域具有较强的适用性,而且具有强大的仿真功能,是新手尝试撰写仿真代码不二选择。
第一部分:需求调查+预测未来空箱需求
一、问题重述
集装箱生产企业有客户分布在全球,每周需要将生产的空集装箱运输到母港,然后再使用集装箱船(10000TEU)给各个港口运输空集装箱。需解决如下问题:
- 需求调研
- 母港选址问题建模及求解
- 车辆路径问题建模及求解
- 配送仿真及可视化(2D或3D)
二、需求调研与数据准备
1、需求调研
本研究涉及空箱调运的问题,具体考虑了空箱需求的时间序列特性,包括季节性、周期性、趋势性和随机性。因此,不能简单地将每年的集装箱吞吐量与空箱调运需求进行等比例等价。本文以2023年15个港口1-11月的吞吐量数据及去年12月吞吐量为基础,旨在预测这些港口2023年12月的集装箱吞吐量。为实现这一目标,本文假设各港口在12月内每周的空箱需求保持稳定,并根据这一假设计算每周的空箱需求量。进一步地,根据各港口的占比,将母港的10000个TEU的空箱按比例分配。考空箱吞吐量一般占集装箱吞吐量的30%,但本文考虑了按百分比进行分配,故空箱比例会被约掉,不影响最终的分配结果。
(1)数据来源与处理
为了保证数据的准确与可靠性,本文主要是调查了该15个港口的官方网站2023年的月吞吐量数据,未查找到的数据将参考第三方权威网站数据。网站及数据汇总如下:
表1 数据来源表
港口 | 数据网站 | 港口 | 数据网站 |
SHANGHAI | https://www.portshanghai.com.cn/ | MELBOURNE | https://www.portofmelbourne.com/ |
SINGAPORE | https://www.mpa.gov.sg/ | DURBAN | https://www.transnet.net/ |
COLOMBO | http://www.slpa.lk/ | SYDNEY | https://www.portauthoritynsw.com.au/ |
MANILA | http://www.ppa.com.ph/ | OAKLAND | https://www.portofoakland.com/ |
SANTOS | https://www.portodesantos.com.br/ | CALLAO | https://www.apmterminals.com/en/callao |
PORT SAID | https://www.suezcanal.gov.eg/ | SINES | https://www.portodesines.pt/ |
YOKOHAMA | https://www.city.yokohama.lg.jp/yokohamaport/ | GDANSK | https://www.portgdansk.pl/ |
BALBOA | https://www.pancanal.com/eng/op/index.html | All Ports |
表2 各个港口年集装箱统计表
NAME | COUNTRY | LON | LAT | Annual Throughput(TEU) |
SHANGHAI | CHINA | 121.5 | 31.2167 | 47303000 |
SINGAPORE | SINGAPORE | 103.85 | 1.2833 | 37289600 |
COLOMBO | SRI LANKA | 79.85 | 6.95 | 6860000 |
MANILA | PHILIPPINES | 120.97 | 14.5833 | 5474483 |
...... | ...... | ...... | ..... | ...... |
CALLAO | PERU | -77.15 | -12.0385954 | 2461393 |
SINES | PORTUGAL | -8.86 | 37.9575108 | 1800000 |
GDANSK | POLAND | 18.67 | 54.35 | 2072000 |
2、代码设计思路
考虑季节性的时间序列预测.lua |
Step1: 定义12个月的时间序列数据 time_series_data = [数据列表] Step2: 初始化季节平均值和标准差列表 season_averages = [] season_stds = [] Step3: 对每个季节(共4个季节,每季节3个月) for 每个季节 in 1 到 4: # 计算季节的平均值 season_average = 计算季节的平均值 Step4: 计算季节的标准差 season_std = 计算季节的标准差 Step5: 将平均值和标准差添加到列表 添加 season_average 到 season_averages 添加 season_std 到 season_stds Step6:计算调整后的季节性差异 adjusted_seasonal_differences = [] for 每个月份值 in time_series_data: # 计算调整后的季节性差异 adjusted_difference = 计算与季节平均值的差异并进行标准化 添加 adjusted_difference 到 adjusted_seasonal_differences Step7: 计算趋势(一阶差分的平均值) average_trend = 计算趋势 Step8: 使用最后一个月的值,加上平均趋势和12月的季节性差异,预测下一个12月的值 next_december_prediction = 最后一个月的值 + 平均趋势 + 调整后的12月季节性差异 Step9: 输出预测结果 输出 next_december_prediction |
3 、上海港与新加坡港预测实例
2023年月份 | SHANGHAI Containerised(万TEU) | SINGAPORE Containerised(万TEU) |
12月/Dec | 406.2 | 233.76 |
1月/Jan | 380.3 | 224.27 |
2月/Feb | 365.4 | 209.61 |
3月/Mar | 401.6 | 256.03 |
4月/Apr | 401.2 | 247.52 |
5月/May | 410.2 | 249.41 |
6月/Jun | 415.0 | 242.08 |
7月/Jul | 420.1 | 256.97 |
8月/Aug | 420.5 | 249.46 |
9月/Sep | 405.2 | 243.24 |
10月/Oct | 400.1 | 243.15 |
11月/Nov | 420.7 | 251.49 |
Predicted value | 413.02 | 246.06 |
4、总的预测汇总
表3预测汇总表
NAME | COUNTRY | Annual Throughput(TEU) | 月平均(万) | 周平均(万) | 比例 | 分配箱数 |
SHANGHAI | CHINA | 47303000 | 413 | 103 | 40% | 3987 |
SINGAPORE | SINGAPORE | 37289600 | 246 | 62 | 24% | 2375 |
...... | ...... | ...... | ..... | ...... | ...... | ...... |
GDANSK | POLAND | 2072000 | 17 | 4 | 2% | 167 |