Commit 51fdb99f authored by Allvey's avatar Allvey

Merge branch 'master' of github.com:Allvey/integrated-scheduling

# Conflicts: # realtime_dispatch.py # settings.py # static_data_process.py # tables.py # traffic_flow_planner.py
parent 188ad10f
Subproject commit ce9ea0115c095fcf55affdae3c20281d8a00aec4
...@@ -991,3 +991,368 @@ ...@@ -991,3 +991,368 @@
2021-08-03 09:45:32,919 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]] 2021-08-03 09:45:32,919 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 09:45:32,919 - settings: ERROR -1 2021-08-03 09:45:32,919 - settings: ERROR -1
2021-08-03 09:45:33,194 - settings: INFO #####################################周期更新结束##################################### 2021-08-03 09:45:33,194 - settings: INFO #####################################周期更新结束#####################################
2021-08-03 10:41:23,179 - settings: INFO 最大产量调度模式
2021-08-03 10:41:23,193 - settings: INFO 最大产量:179.21176
2021-08-03 10:41:23,193 - settings: INFO 各变量取值:
2021-08-03 10:41:23,193 - settings: INFO 重运车流:[[179.21176, 0.0]] 单位: 吨/时
2021-08-03 10:41:23,194 - settings: INFO 空运车流:[[179.21176], [0.0]] 单位: 吨/时
2021-08-03 10:41:23,280 - settings: INFO 可用于动态派车的矿卡:
2021-08-03 10:41:23,280 - settings: INFO {'fa028808-a3f0-47dd-9929-f23e2cac2bf8', '5221a7f5-0a90-482f-b2bd-c902110a792d', 'f68909a0-e644-415f-a140-15c19f162b8f', '1b787c4a-210a-46ce-a32c-73cbc1cd5e39', 'e0118ce2-7644-4f6e-aadc-8e0c33b11241', '31c1c93a-b037-4ab6-88b6-eef6cd23804b', '9b251c39-42e8-4071-9a1f-d36625555513', 'dd8f0405-1ade-4d23-8985-2a1e603c5c2a', '35bd9fcc-e57e-4e6d-854d-b6f1f16f6b19', 'aae4642f-f74b-4514-971e-c800a4182152', 'fb1d5516-9a42-4f6e-84fe-9955723badce', '5f010e86-3398-4f88-a0e7-27d104cc8bbd'}
2021-08-03 10:41:23,330 - settings: INFO
2021-08-03 10:41:23,331 - settings: INFO 调度系统启动
2021-08-03 10:41:23,597 - settings: INFO #####################################周期更新开始#####################################
2021-08-03 10:41:24,412 - settings: INFO 矿卡当前任务:
2021-08-03 10:41:24,412 - settings: INFO {'fa028808-a3f0-47dd-9929-f23e2cac2bf8': -2, '35bd9fcc-e57e-4e6d-854d-b6f1f16f6b19': -2, '9b251c39-42e8-4071-9a1f-d36625555513': -2, '31c1c93a-b037-4ab6-88b6-eef6cd23804b': -2, 'fb1d5516-9a42-4f6e-84fe-9955723badce': -2, 'e0118ce2-7644-4f6e-aadc-8e0c33b11241': -2, '1b787c4a-210a-46ce-a32c-73cbc1cd5e39': -2, 'aae4642f-f74b-4514-971e-c800a4182152': -2, '5f010e86-3398-4f88-a0e7-27d104cc8bbd': -2, 'f68909a0-e644-415f-a140-15c19f162b8f': -2, '5221a7f5-0a90-482f-b2bd-c902110a792d': -2, 'dd8f0405-1ade-4d23-8985-2a1e603c5c2a': -2}
2021-08-03 10:41:25,915 - settings: INFO 最大产量调度模式
2021-08-03 10:41:25,927 - settings: INFO 最大产量:179.21176
2021-08-03 10:41:25,927 - settings: INFO 各变量取值:
2021-08-03 10:41:25,927 - settings: INFO 重运车流:[[179.21176, 0.0]] 单位: 吨/时
2021-08-03 10:41:25,927 - settings: INFO 空运车流:[[179.21176], [0.0]] 单位: 吨/时
2021-08-03 10:41:25,927 - settings: ERROR 矿卡 KK005 派车计划计算异常
2021-08-03 10:41:25,928 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:25,928 - settings: ERROR 矿卡 NTE200-4(18#) 派车计划计算异常
2021-08-03 10:41:25,928 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:25,928 - settings: ERROR 矿卡 KK004 派车计划计算异常
2021-08-03 10:41:25,928 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:25,928 - settings: ERROR 矿卡 KK007 派车计划计算异常
2021-08-03 10:41:25,928 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:25,928 - settings: ERROR 矿卡 KK003 派车计划计算异常
2021-08-03 10:41:25,928 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:25,928 - settings: ERROR 矿卡 XDE120-8 派车计划计算异常
2021-08-03 10:41:25,928 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:25,928 - settings: ERROR 矿卡 验证bug 派车计划计算异常
2021-08-03 10:41:25,928 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:25,928 - settings: ERROR 矿卡 KK002 派车计划计算异常
2021-08-03 10:41:25,928 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:25,929 - settings: ERROR 矿卡 KK006 派车计划计算异常
2021-08-03 10:41:25,929 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:25,929 - settings: ERROR 矿卡 KK010 派车计划计算异常
2021-08-03 10:41:25,929 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:25,929 - settings: ERROR 矿卡 KK001 派车计划计算异常
2021-08-03 10:41:25,929 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:25,929 - settings: ERROR 矿卡 KK008 派车计划计算异常
2021-08-03 10:41:25,929 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:25,929 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:25,929 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:25,929 - settings: ERROR -1
2021-08-03 10:41:25,929 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:25,929 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:25,929 - settings: ERROR -1
2021-08-03 10:41:25,929 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:25,930 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:25,930 - settings: ERROR -1
2021-08-03 10:41:25,930 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:25,930 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:25,930 - settings: ERROR -1
2021-08-03 10:41:25,930 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:25,930 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:25,930 - settings: ERROR -1
2021-08-03 10:41:25,930 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:25,930 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:25,930 - settings: ERROR -1
2021-08-03 10:41:25,930 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:25,930 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:25,930 - settings: ERROR -1
2021-08-03 10:41:25,930 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:25,931 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:25,931 - settings: ERROR -1
2021-08-03 10:41:25,931 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:25,931 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:25,931 - settings: ERROR -1
2021-08-03 10:41:25,931 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:25,931 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:25,931 - settings: ERROR -1
2021-08-03 10:41:25,931 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:25,931 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:25,932 - settings: ERROR -1
2021-08-03 10:41:25,932 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:25,932 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:25,932 - settings: ERROR -1
2021-08-03 10:41:26,028 - settings: INFO #####################################周期更新结束#####################################
2021-08-03 10:41:44,249 - settings: INFO 最大产量调度模式
2021-08-03 10:41:44,260 - settings: INFO 最大产量:179.21176
2021-08-03 10:41:44,260 - settings: INFO 各变量取值:
2021-08-03 10:41:44,261 - settings: INFO 重运车流:[[179.21176, 0.0]] 单位: 吨/时
2021-08-03 10:41:44,261 - settings: INFO 空运车流:[[179.21176], [0.0]] 单位: 吨/时
2021-08-03 10:41:54,219 - settings: INFO 最大产量调度模式
2021-08-03 10:41:54,231 - settings: INFO 最大产量:179.21176
2021-08-03 10:41:54,232 - settings: INFO 各变量取值:
2021-08-03 10:41:54,232 - settings: INFO 重运车流:[[179.21176, 0.0]] 单位: 吨/时
2021-08-03 10:41:54,232 - settings: INFO 空运车流:[[179.21176], [0.0]] 单位: 吨/时
2021-08-03 10:41:54,324 - settings: INFO 可用于动态派车的矿卡:
2021-08-03 10:41:54,324 - settings: INFO {'1b787c4a-210a-46ce-a32c-73cbc1cd5e39', '5221a7f5-0a90-482f-b2bd-c902110a792d', '35bd9fcc-e57e-4e6d-854d-b6f1f16f6b19', 'dd8f0405-1ade-4d23-8985-2a1e603c5c2a', 'aae4642f-f74b-4514-971e-c800a4182152', '9b251c39-42e8-4071-9a1f-d36625555513', '31c1c93a-b037-4ab6-88b6-eef6cd23804b', 'e0118ce2-7644-4f6e-aadc-8e0c33b11241', 'f68909a0-e644-415f-a140-15c19f162b8f', 'fa028808-a3f0-47dd-9929-f23e2cac2bf8', 'fb1d5516-9a42-4f6e-84fe-9955723badce', '5f010e86-3398-4f88-a0e7-27d104cc8bbd'}
2021-08-03 10:41:54,372 - settings: INFO
2021-08-03 10:41:54,373 - settings: INFO 调度系统启动
2021-08-03 10:41:54,644 - settings: INFO #####################################周期更新开始#####################################
2021-08-03 10:41:55,471 - settings: INFO 矿卡当前任务:
2021-08-03 10:41:55,472 - settings: INFO {'fa028808-a3f0-47dd-9929-f23e2cac2bf8': -2, '35bd9fcc-e57e-4e6d-854d-b6f1f16f6b19': -2, '9b251c39-42e8-4071-9a1f-d36625555513': -2, '31c1c93a-b037-4ab6-88b6-eef6cd23804b': -2, 'fb1d5516-9a42-4f6e-84fe-9955723badce': -2, 'e0118ce2-7644-4f6e-aadc-8e0c33b11241': -2, '1b787c4a-210a-46ce-a32c-73cbc1cd5e39': -2, 'aae4642f-f74b-4514-971e-c800a4182152': -2, '5f010e86-3398-4f88-a0e7-27d104cc8bbd': -2, 'f68909a0-e644-415f-a140-15c19f162b8f': -2, '5221a7f5-0a90-482f-b2bd-c902110a792d': -2, 'dd8f0405-1ade-4d23-8985-2a1e603c5c2a': -2}
2021-08-03 10:41:57,098 - settings: INFO 最大产量调度模式
2021-08-03 10:41:57,109 - settings: INFO 最大产量:179.21176
2021-08-03 10:41:57,109 - settings: INFO 各变量取值:
2021-08-03 10:41:57,109 - settings: INFO 重运车流:[[179.21176, 0.0]] 单位: 吨/时
2021-08-03 10:41:57,109 - settings: INFO 空运车流:[[179.21176], [0.0]] 单位: 吨/时
2021-08-03 10:41:57,110 - settings: ERROR 矿卡 KK007 派车计划计算异常
2021-08-03 10:41:57,110 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:57,110 - settings: ERROR 矿卡 NTE200-4(18#) 派车计划计算异常
2021-08-03 10:41:57,110 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:57,110 - settings: ERROR 矿卡 KK006 派车计划计算异常
2021-08-03 10:41:57,110 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:57,110 - settings: ERROR 矿卡 KK002 派车计划计算异常
2021-08-03 10:41:57,110 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:57,110 - settings: ERROR 矿卡 KK010 派车计划计算异常
2021-08-03 10:41:57,110 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:57,110 - settings: ERROR 矿卡 验证bug 派车计划计算异常
2021-08-03 10:41:57,110 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:57,110 - settings: ERROR 矿卡 XDE120-8 派车计划计算异常
2021-08-03 10:41:57,110 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:57,110 - settings: ERROR 矿卡 KK003 派车计划计算异常
2021-08-03 10:41:57,110 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:57,111 - settings: ERROR 矿卡 KK004 派车计划计算异常
2021-08-03 10:41:57,111 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:57,111 - settings: ERROR 矿卡 KK005 派车计划计算异常
2021-08-03 10:41:57,111 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:57,111 - settings: ERROR 矿卡 KK001 派车计划计算异常
2021-08-03 10:41:57,111 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:57,111 - settings: ERROR 矿卡 KK008 派车计划计算异常
2021-08-03 10:41:57,111 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:41:57,111 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:57,111 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:57,111 - settings: ERROR -1
2021-08-03 10:41:57,111 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:57,111 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:57,111 - settings: ERROR -1
2021-08-03 10:41:57,112 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:57,112 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:57,112 - settings: ERROR -1
2021-08-03 10:41:57,112 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:57,112 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:57,112 - settings: ERROR -1
2021-08-03 10:41:57,112 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:57,112 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:57,112 - settings: ERROR -1
2021-08-03 10:41:57,112 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:57,112 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:57,113 - settings: ERROR -1
2021-08-03 10:41:57,113 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:57,113 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:57,113 - settings: ERROR -1
2021-08-03 10:41:57,113 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:57,113 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:57,113 - settings: ERROR -1
2021-08-03 10:41:57,113 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:57,113 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:57,113 - settings: ERROR -1
2021-08-03 10:41:57,113 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:57,114 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:57,114 - settings: ERROR -1
2021-08-03 10:41:57,114 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:57,114 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:57,114 - settings: ERROR -1
2021-08-03 10:41:57,114 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:41:57,114 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:41:57,114 - settings: ERROR -1
2021-08-03 10:41:57,223 - settings: INFO #####################################周期更新结束#####################################
2021-08-03 10:42:22,783 - settings: INFO 最大产量调度模式
2021-08-03 10:42:22,796 - settings: INFO 最大产量:179.21176
2021-08-03 10:42:22,796 - settings: INFO 各变量取值:
2021-08-03 10:42:22,796 - settings: INFO 重运车流:[[179.21176, 0.0]] 单位: 吨/时
2021-08-03 10:42:22,796 - settings: INFO 空运车流:[[179.21176], [0.0]] 单位: 吨/时
2021-08-03 10:42:22,875 - settings: INFO 可用于动态派车的矿卡:
2021-08-03 10:42:22,875 - settings: INFO {'fb1d5516-9a42-4f6e-84fe-9955723badce', '35bd9fcc-e57e-4e6d-854d-b6f1f16f6b19', 'f68909a0-e644-415f-a140-15c19f162b8f', 'aae4642f-f74b-4514-971e-c800a4182152', 'dd8f0405-1ade-4d23-8985-2a1e603c5c2a', '5f010e86-3398-4f88-a0e7-27d104cc8bbd', '5221a7f5-0a90-482f-b2bd-c902110a792d', '9b251c39-42e8-4071-9a1f-d36625555513', 'e0118ce2-7644-4f6e-aadc-8e0c33b11241', '1b787c4a-210a-46ce-a32c-73cbc1cd5e39', '31c1c93a-b037-4ab6-88b6-eef6cd23804b', 'fa028808-a3f0-47dd-9929-f23e2cac2bf8'}
2021-08-03 10:42:22,919 - settings: INFO
2021-08-03 10:42:22,919 - settings: INFO 调度系统启动
2021-08-03 10:42:23,188 - settings: INFO #####################################周期更新开始#####################################
2021-08-03 10:42:23,849 - settings: INFO 矿卡当前任务:
2021-08-03 10:42:23,849 - settings: INFO {'fa028808-a3f0-47dd-9929-f23e2cac2bf8': -2, '35bd9fcc-e57e-4e6d-854d-b6f1f16f6b19': -2, '9b251c39-42e8-4071-9a1f-d36625555513': -2, '31c1c93a-b037-4ab6-88b6-eef6cd23804b': -2, 'fb1d5516-9a42-4f6e-84fe-9955723badce': -2, 'e0118ce2-7644-4f6e-aadc-8e0c33b11241': -2, '1b787c4a-210a-46ce-a32c-73cbc1cd5e39': -2, 'aae4642f-f74b-4514-971e-c800a4182152': -2, '5f010e86-3398-4f88-a0e7-27d104cc8bbd': -2, 'f68909a0-e644-415f-a140-15c19f162b8f': -2, '5221a7f5-0a90-482f-b2bd-c902110a792d': -2, 'dd8f0405-1ade-4d23-8985-2a1e603c5c2a': -2}
2021-08-03 10:42:25,341 - settings: INFO 最大产量调度模式
2021-08-03 10:42:25,352 - settings: INFO 最大产量:179.21176
2021-08-03 10:42:25,352 - settings: INFO 各变量取值:
2021-08-03 10:42:25,353 - settings: INFO 重运车流:[[179.21176, 0.0]] 单位: 吨/时
2021-08-03 10:42:25,353 - settings: INFO 空运车流:[[179.21176], [0.0]] 单位: 吨/时
2021-08-03 10:42:25,353 - settings: ERROR 矿卡 KK001 派车计划计算异常
2021-08-03 10:42:25,353 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:42:25,353 - settings: ERROR 矿卡 KK006 派车计划计算异常
2021-08-03 10:42:25,353 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:42:25,353 - settings: ERROR 矿卡 KK004 派车计划计算异常
2021-08-03 10:42:25,353 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:42:25,354 - settings: ERROR 矿卡 KK010 派车计划计算异常
2021-08-03 10:42:25,354 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:42:25,354 - settings: ERROR 矿卡 KK002 派车计划计算异常
2021-08-03 10:42:25,354 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:42:25,354 - settings: ERROR 矿卡 KK008 派车计划计算异常
2021-08-03 10:42:25,354 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:42:25,354 - settings: ERROR 矿卡 NTE200-4(18#) 派车计划计算异常
2021-08-03 10:42:25,354 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:42:25,354 - settings: ERROR 矿卡 验证bug 派车计划计算异常
2021-08-03 10:42:25,354 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:42:25,354 - settings: ERROR 矿卡 KK003 派车计划计算异常
2021-08-03 10:42:25,354 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:42:25,354 - settings: ERROR 矿卡 KK007 派车计划计算异常
2021-08-03 10:42:25,354 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:42:25,354 - settings: ERROR 矿卡 XDE120-8 派车计划计算异常
2021-08-03 10:42:25,354 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:42:25,355 - settings: ERROR 矿卡 KK005 派车计划计算异常
2021-08-03 10:42:25,355 - settings: ERROR 'WalkManage' object has no attribute 'get_o_time_eq'
2021-08-03 10:42:25,355 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:42:25,355 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:42:25,355 - settings: ERROR -1
2021-08-03 10:42:25,355 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:42:25,355 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:42:25,355 - settings: ERROR -1
2021-08-03 10:42:25,355 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:42:25,355 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:42:25,355 - settings: ERROR -1
2021-08-03 10:42:25,355 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:42:25,355 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:42:25,355 - settings: ERROR -1
2021-08-03 10:42:25,356 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:42:25,356 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:42:25,356 - settings: ERROR -1
2021-08-03 10:42:25,356 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:42:25,356 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:42:25,356 - settings: ERROR -1
2021-08-03 10:42:25,356 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:42:25,356 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:42:25,356 - settings: ERROR -1
2021-08-03 10:42:25,356 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:42:25,356 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:42:25,356 - settings: ERROR -1
2021-08-03 10:42:25,356 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:42:25,356 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:42:25,356 - settings: ERROR -1
2021-08-03 10:42:25,357 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:42:25,357 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:42:25,357 - settings: ERROR -1
2021-08-03 10:42:25,357 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:42:25,357 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:42:25,357 - settings: ERROR -1
2021-08-03 10:42:25,357 - settings: ERROR 调度结果写入异常-redis写入异常
2021-08-03 10:42:25,357 - settings: ERROR 调度结果:[[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
2021-08-03 10:42:25,357 - settings: ERROR -1
2021-08-03 10:42:25,447 - settings: INFO #####################################周期更新结束#####################################
2021-08-03 10:42:53,709 - settings: INFO 最大产量调度模式
2021-08-03 10:42:53,723 - settings: INFO 最大产量:179.21176
2021-08-03 10:42:53,723 - settings: INFO 各变量取值:
2021-08-03 10:42:53,723 - settings: INFO 重运车流:[[179.21176, 0.0]] 单位: 吨/时
2021-08-03 10:42:53,724 - settings: INFO 空运车流:[[179.21176], [0.0]] 单位: 吨/时
2021-08-03 10:42:53,826 - settings: INFO 可用于动态派车的矿卡:
2021-08-03 10:42:53,826 - settings: INFO {'5f010e86-3398-4f88-a0e7-27d104cc8bbd', '1b787c4a-210a-46ce-a32c-73cbc1cd5e39', 'f68909a0-e644-415f-a140-15c19f162b8f', 'fa028808-a3f0-47dd-9929-f23e2cac2bf8', '35bd9fcc-e57e-4e6d-854d-b6f1f16f6b19', 'dd8f0405-1ade-4d23-8985-2a1e603c5c2a', 'aae4642f-f74b-4514-971e-c800a4182152', '9b251c39-42e8-4071-9a1f-d36625555513', 'fb1d5516-9a42-4f6e-84fe-9955723badce', '5221a7f5-0a90-482f-b2bd-c902110a792d', 'e0118ce2-7644-4f6e-aadc-8e0c33b11241', '31c1c93a-b037-4ab6-88b6-eef6cd23804b'}
2021-08-03 10:42:53,865 - settings: INFO
2021-08-03 10:42:53,866 - settings: INFO 调度系统启动
2021-08-03 10:42:54,092 - settings: INFO #####################################周期更新开始#####################################
2021-08-03 10:42:54,737 - settings: INFO 矿卡当前任务:
2021-08-03 10:42:54,737 - settings: INFO {'fa028808-a3f0-47dd-9929-f23e2cac2bf8': -2, '35bd9fcc-e57e-4e6d-854d-b6f1f16f6b19': -2, '9b251c39-42e8-4071-9a1f-d36625555513': -2, '31c1c93a-b037-4ab6-88b6-eef6cd23804b': -2, 'fb1d5516-9a42-4f6e-84fe-9955723badce': -2, 'e0118ce2-7644-4f6e-aadc-8e0c33b11241': -2, '1b787c4a-210a-46ce-a32c-73cbc1cd5e39': -2, 'aae4642f-f74b-4514-971e-c800a4182152': -2, '5f010e86-3398-4f88-a0e7-27d104cc8bbd': -2, 'f68909a0-e644-415f-a140-15c19f162b8f': -2, '5221a7f5-0a90-482f-b2bd-c902110a792d': -2, 'dd8f0405-1ade-4d23-8985-2a1e603c5c2a': -2}
2021-08-03 10:42:56,163 - settings: INFO 最大产量调度模式
2021-08-03 10:42:56,175 - settings: INFO 最大产量:179.21176
2021-08-03 10:42:56,175 - settings: INFO 各变量取值:
2021-08-03 10:42:56,175 - settings: INFO 重运车流:[[179.21176, 0.0]] 单位: 吨/时
2021-08-03 10:42:56,176 - settings: INFO 空运车流:[[179.21176], [0.0]] 单位: 吨/时
2021-08-03 10:42:56,176 - settings: INFO
2021-08-03 10:42:56,176 - settings: INFO 调度矿卡 5f010e86-3398-4f88-a0e7-27d104cc8bbd KK008
2021-08-03 10:42:56,176 - settings: INFO 矿卡状态:矿卡启动或故障恢复
2021-08-03 10:42:56,176 - settings: INFO 矿卡行程:无
2021-08-03 10:42:56,176 - settings: INFO 涉及挖机:['18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e']
2021-08-03 10:42:56,176 - settings: INFO 挖机饱和度:[0.99]
2021-08-03 10:42:56,177 - settings: INFO 行程时间:[3.125]
2021-08-03 10:42:56,177 - settings: INFO 行驶时间:[3.125]
2021-08-03 10:42:56,177 - settings: INFO 目的地:18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e
2021-08-03 10:42:56,177 - settings: INFO
2021-08-03 10:42:56,177 - settings: INFO 调度矿卡 1b787c4a-210a-46ce-a32c-73cbc1cd5e39 KK007
2021-08-03 10:42:56,177 - settings: INFO 矿卡状态:矿卡启动或故障恢复
2021-08-03 10:42:56,177 - settings: INFO 矿卡行程:无
2021-08-03 10:42:56,177 - settings: INFO 涉及挖机:['18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e']
2021-08-03 10:42:56,177 - settings: INFO 挖机饱和度:[0.99]
2021-08-03 10:42:56,177 - settings: INFO 行程时间:[3.125]
2021-08-03 10:42:56,178 - settings: INFO 行驶时间:[3.125]
2021-08-03 10:42:56,178 - settings: INFO 目的地:18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e
2021-08-03 10:42:56,178 - settings: INFO
2021-08-03 10:42:56,178 - settings: INFO 调度矿卡 f68909a0-e644-415f-a140-15c19f162b8f KK004
2021-08-03 10:42:56,178 - settings: INFO 矿卡状态:矿卡启动或故障恢复
2021-08-03 10:42:56,178 - settings: INFO 矿卡行程:无
2021-08-03 10:42:56,178 - settings: INFO 涉及挖机:['18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e']
2021-08-03 10:42:56,178 - settings: INFO 挖机饱和度:[0.99]
2021-08-03 10:42:56,179 - settings: INFO 行程时间:[3.125]
2021-08-03 10:42:56,179 - settings: INFO 行驶时间:[3.125]
2021-08-03 10:42:56,179 - settings: INFO 目的地:18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e
2021-08-03 10:42:56,179 - settings: INFO
2021-08-03 10:42:56,179 - settings: INFO 调度矿卡 fa028808-a3f0-47dd-9929-f23e2cac2bf8 KK005
2021-08-03 10:42:56,179 - settings: INFO 矿卡状态:矿卡启动或故障恢复
2021-08-03 10:42:56,179 - settings: INFO 矿卡行程:无
2021-08-03 10:42:56,179 - settings: INFO 涉及挖机:['18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e']
2021-08-03 10:42:56,180 - settings: INFO 挖机饱和度:[0.99]
2021-08-03 10:42:56,180 - settings: INFO 行程时间:[3.125]
2021-08-03 10:42:56,180 - settings: INFO 行驶时间:[3.125]
2021-08-03 10:42:56,180 - settings: INFO 目的地:18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e
2021-08-03 10:42:56,180 - settings: INFO
2021-08-03 10:42:56,180 - settings: INFO 调度矿卡 35bd9fcc-e57e-4e6d-854d-b6f1f16f6b19 KK006
2021-08-03 10:42:56,180 - settings: INFO 矿卡状态:矿卡启动或故障恢复
2021-08-03 10:42:56,180 - settings: INFO 矿卡行程:无
2021-08-03 10:42:56,180 - settings: INFO 涉及挖机:['18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e']
2021-08-03 10:42:56,181 - settings: INFO 挖机饱和度:[0.99]
2021-08-03 10:42:56,181 - settings: INFO 行程时间:[3.125]
2021-08-03 10:42:56,181 - settings: INFO 行驶时间:[3.125]
2021-08-03 10:42:56,181 - settings: INFO 目的地:18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e
2021-08-03 10:42:56,181 - settings: INFO
2021-08-03 10:42:56,181 - settings: INFO 调度矿卡 dd8f0405-1ade-4d23-8985-2a1e603c5c2a KK002
2021-08-03 10:42:56,181 - settings: INFO 矿卡状态:矿卡启动或故障恢复
2021-08-03 10:42:56,181 - settings: INFO 矿卡行程:无
2021-08-03 10:42:56,181 - settings: INFO 涉及挖机:['18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e']
2021-08-03 10:42:56,181 - settings: INFO 挖机饱和度:[0.99]
2021-08-03 10:42:56,182 - settings: INFO 行程时间:[3.125]
2021-08-03 10:42:56,182 - settings: INFO 行驶时间:[3.125]
2021-08-03 10:42:56,182 - settings: INFO 目的地:18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e
2021-08-03 10:42:56,182 - settings: INFO
2021-08-03 10:42:56,182 - settings: INFO 调度矿卡 aae4642f-f74b-4514-971e-c800a4182152 KK010
2021-08-03 10:42:56,182 - settings: INFO 矿卡状态:矿卡启动或故障恢复
2021-08-03 10:42:56,182 - settings: INFO 矿卡行程:无
2021-08-03 10:42:56,182 - settings: INFO 涉及挖机:['18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e']
2021-08-03 10:42:56,182 - settings: INFO 挖机饱和度:[0.99]
2021-08-03 10:42:56,183 - settings: INFO 行程时间:[3.125]
2021-08-03 10:42:56,183 - settings: INFO 行驶时间:[3.125]
2021-08-03 10:42:56,183 - settings: INFO 目的地:18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e
2021-08-03 10:42:56,183 - settings: INFO
2021-08-03 10:42:56,183 - settings: INFO 调度矿卡 9b251c39-42e8-4071-9a1f-d36625555513 验证bug
2021-08-03 10:42:56,183 - settings: INFO 矿卡状态:矿卡启动或故障恢复
2021-08-03 10:42:56,183 - settings: INFO 矿卡行程:无
2021-08-03 10:42:56,183 - settings: INFO 涉及挖机:['18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e']
2021-08-03 10:42:56,183 - settings: INFO 挖机饱和度:[0.99]
2021-08-03 10:42:56,183 - settings: INFO 行程时间:[3.125]
2021-08-03 10:42:56,184 - settings: INFO 行驶时间:[3.125]
2021-08-03 10:42:56,184 - settings: INFO 目的地:18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e
2021-08-03 10:42:56,184 - settings: INFO
2021-08-03 10:42:56,184 - settings: INFO 调度矿卡 fb1d5516-9a42-4f6e-84fe-9955723badce KK001
2021-08-03 10:42:56,184 - settings: INFO 矿卡状态:矿卡启动或故障恢复
2021-08-03 10:42:56,184 - settings: INFO 矿卡行程:无
2021-08-03 10:42:56,184 - settings: INFO 涉及挖机:['18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e']
2021-08-03 10:42:56,184 - settings: INFO 挖机饱和度:[0.99]
2021-08-03 10:42:56,184 - settings: INFO 行程时间:[3.125]
2021-08-03 10:42:56,185 - settings: INFO 行驶时间:[3.125]
2021-08-03 10:42:56,185 - settings: INFO 目的地:18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e
2021-08-03 10:42:56,185 - settings: INFO
2021-08-03 10:42:56,185 - settings: INFO 调度矿卡 5221a7f5-0a90-482f-b2bd-c902110a792d NTE200-4(18#)
2021-08-03 10:42:56,185 - settings: INFO 矿卡状态:矿卡启动或故障恢复
2021-08-03 10:42:56,185 - settings: INFO 矿卡行程:无
2021-08-03 10:42:56,185 - settings: INFO 涉及挖机:['18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e']
2021-08-03 10:42:56,185 - settings: INFO 挖机饱和度:[0.99]
2021-08-03 10:42:56,185 - settings: INFO 行程时间:[3.125]
2021-08-03 10:42:56,186 - settings: INFO 行驶时间:[3.125]
2021-08-03 10:42:56,186 - settings: INFO 目的地:18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e
2021-08-03 10:42:56,186 - settings: INFO
2021-08-03 10:42:56,186 - settings: INFO 调度矿卡 e0118ce2-7644-4f6e-aadc-8e0c33b11241 KK003
2021-08-03 10:42:56,186 - settings: INFO 矿卡状态:矿卡启动或故障恢复
2021-08-03 10:42:56,186 - settings: INFO 矿卡行程:无
2021-08-03 10:42:56,186 - settings: INFO 涉及挖机:['18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e']
2021-08-03 10:42:56,186 - settings: INFO 挖机饱和度:[0.99]
2021-08-03 10:42:56,186 - settings: INFO 行程时间:[3.125]
2021-08-03 10:42:56,187 - settings: INFO 行驶时间:[3.125]
2021-08-03 10:42:56,187 - settings: INFO 目的地:18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e
2021-08-03 10:42:56,187 - settings: INFO
2021-08-03 10:42:56,187 - settings: INFO 调度矿卡 31c1c93a-b037-4ab6-88b6-eef6cd23804b XDE120-8
2021-08-03 10:42:56,187 - settings: INFO 矿卡状态:矿卡启动或故障恢复
2021-08-03 10:42:56,187 - settings: INFO 矿卡行程:无
2021-08-03 10:42:56,187 - settings: INFO 涉及挖机:['18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e']
2021-08-03 10:42:56,187 - settings: INFO 挖机饱和度:[0.99]
2021-08-03 10:42:56,188 - settings: INFO 行程时间:[3.125]
2021-08-03 10:42:56,188 - settings: INFO 行驶时间:[3.125]
2021-08-03 10:42:56,188 - settings: INFO 目的地:18a8cfc1-0ff6-42ac-bb2a-2d770e42d39e
2021-08-03 10:42:56,632 - settings: INFO #####################################周期更新结束#####################################
...@@ -969,7 +969,7 @@ class Dispatcher(DeviceMap): ...@@ -969,7 +969,7 @@ class Dispatcher(DeviceMap):
unloading_time = self.dump.get_unloading_time() unloading_time = self.dump.get_unloading_time()
# 路网信息 # 路网信息
park_to_load_eq = self.walker.get_park_to_load_eq() park_to_load_eq = self.walker.get_park_to_load_eq()
go_time_eq = self.walker.get_o_time_eq() go_time_eq = self.walker.get_go_time_eq()
com_time_eq = self.walker.get_com_time_eq() com_time_eq = self.walker.get_com_time_eq()
now = float((datetime.now() - self.start_time) / timedelta(hours=0, minutes=1, seconds=0)) now = float((datetime.now() - self.start_time) / timedelta(hours=0, minutes=1, seconds=0))
......
#!E:\Pycharm Projects\Waytous
# -*- coding: utf-8 -*-
# @Time : 2021/8/3 10:41
# @Author : Opfer
# @Site :
# @File : traffic_flow_info.py
# @Software: PyCharm
# import
from static_data_process import *
from settings import *
# 车流规划类
class Traffic_para(object):
def __init__(self, num_of_load_area, num_of_unload_area, num_of_excavator, num_of_dump):
self.load_area_uuid_to_ref_id_dict = {} # 用于保存装载点uuid到id的映射
self.load_area_ref_id_to_uuid_dict = {} # 用于保存装载点id到uuid的映射
self.unload_area_uuid_to_ref_id_dict = {} # 用于保存卸载点uuid到id的映射
self.unload_area_ref_id_to_uuid_dict = {} # 用于保存卸载点id到uuid的映射
self.excavator_uuid_to_ref_id_dict = {} # 用于保存挖机uuid到id的映射
self.excavator_ref_id_to_uuid_dict = {} # 用于保存挖机id到uuid的映射
self.dump_uuid_to_ref_id_dict = {} # 用于保存卸点uuid到id的映射
self.dump_ref_id_to_uuid_dict = {} # 用于保存卸点id到uuid的映射
self.dump_uuid_to_unload_area_uuid_dict = {} # 用于保存卸点与卸载区的绑定关系(uuid)
self.excavator_uuid_to_load_area_uuid_dict = {} # 用于保存挖机与装载区的绑定关系(uuid)
self.dump_ref_id_to_unload_area_ref_id_dict = {} # 用于保存卸点与卸载区的绑定关系(id)
self.excavator_ref_id_to_load_area_ref_id_dict = {} # 用于保存挖机与装载区的绑定关系(id)
self.empty_speed = 25 # 空载矿卡平均时速
self.heavy_speed = 22 # 重载矿卡平均时速
self.goto_load_area_distance = np.zeros((num_of_unload_area, num_of_load_area)) # 空载运输路线距离
self.goto_unload_area_distance = np.zeros((num_of_load_area, num_of_unload_area)) # 重载运输路线距离
# self.avg_goto_excavator_weight = np.zeros((num_of_load_area, num_of_unload_area))
self.avg_goto_excavator_weight = np.full((num_of_load_area, num_of_unload_area), 1)
# self.avg_goto_dump_weight = np.zeros((num_of_load_area, num_of_unload_area))
self.avg_goto_dump_weight = np.full((num_of_load_area, num_of_unload_area), 1)
self.goto_excavator_distance = np.zeros((num_of_dump, num_of_excavator)) # 逻辑空载运输路线距离
self.goto_dump_distance = np.zeros((num_of_excavator, num_of_dump)) # 逻辑重载运输路线距离
self.payload = 100 # 有效载重(不同型号矿卡载重不同,这里暂时认为车队是同质的)
self.min_throughout = 200 # 最小产量约束
self.truck_total_num = 0
self.excavator_strength = np.zeros(num_of_excavator) # 用于保存电铲的工作强度,单位是t/h
self.dump_strength = np.zeros(num_of_dump) # 卸载点的工作强度,单位是t/h
'''
以下参数暂时没用到
'''
self.excavator_priority_coefficient = np.zeros(num_of_excavator) # 每个电铲的优先级系数
self.grade_loading_array = np.zeros(num_of_excavator) # 用于保存电铲挖掘矿石的品位
self.dump_priority_coefficient = np.zeros(num_of_dump) # 每个卸载点的优先级系数
# 卸载道路的运输系数:卸载道路上,每运输1吨货物需要一辆卡车运行时长,等于(该卸载道路上车辆平均运行时长/卡车平均实际装载量)
self.goto_unload_area_factor = np.full((num_of_load_area, num_of_unload_area), 10, dtype=float)
# 装载道路的运输系数,装载道路上,每提供1吨的装载能力需要一辆卡车运行时长,等于(该装载道路上车辆平均运行时长/卡车平均装载能力)
self.goto_load_area_factor = np.full((num_of_unload_area, num_of_load_area), 10, dtype=float)
self.goto_dump_factor = np.full((num_of_excavator, num_of_dump), 10, dtype=float) # 逻辑卸载道路的运输系数
self.goto_excavator_factor = np.full((num_of_dump, num_of_excavator), 10, dtype=float) # 逻辑装载道路的运输系数
self.priority_coefficient = np.zeros((num_of_excavator, num_of_dump)) # 卸载道路的优先级系数
self.grade_lower_dump_array = np.zeros(num_of_dump) # 卸载点矿石品位下限
self.grade_upper_dump_array = np.zeros(num_of_dump) # 卸载点矿石品位上限
# 提取卸载点信息并建立映射
def extract_dump_info(self):
dump_index = 0
for dispatch in session_mysql.query(Dispatch).filter_by(isdeleted=0, isauto=1).all():
unload_area_id = dispatch.unload_area_id
dump_id = dispatch.dump_id
if dump_id not in self.dump_uuid_to_unload_area_uuid_dict:
# dump_uuid <-> dump_id
self.dump_uuid_to_ref_id_dict[dump_id] = dump_index
self.dump_ref_id_to_uuid_dict[dump_index] = dump_id
# dump_uuid -> unload_area_uuid
self.dump_uuid_to_unload_area_uuid_dict[dump_id] = unload_area_id
# dump_id -> unload_area_id
self.dump_ref_id_to_unload_area_ref_id_dict[
self.dump_uuid_to_ref_id_dict[dump_id]] = \
self.unload_area_uuid_to_ref_id_dict[unload_area_id]
self.dump_strength[dump_index] = 300 # 卸载设备最大卸载能力,单位吨/小时
self.grade_upper_dump_array[dump_index] = 100 # 卸点品位上限
self.grade_lower_dump_array[dump_index] = 100 # 卸点品位下限
self.dump_priority_coefficient[dump_index] = 1 # 卸载设备优先级
dump_index += 1
# 提取挖机信息并建立映射
def extract_excavator_info(self):
excavator_index = 0
for dispatch in session_mysql.query(Dispatch).filter_by(isdeleted=0, isauto=1).all():
excavator_id = dispatch.exactor_id
load_area_id = dispatch.load_area_id
if excavator_id not in self.excavator_uuid_to_ref_id_dict:
# excavator_uuid <-> excavator_uuid
self.excavator_uuid_to_ref_id_dict[excavator_id] = excavator_index
self.excavator_ref_id_to_uuid_dict[excavator_index] = excavator_id
# excavator_uuid -> load_area_uuid
self.excavator_uuid_to_load_area_uuid_dict[excavator_id] = load_area_id
# excavator_id -> load_area_id
self.excavator_ref_id_to_load_area_ref_id_dict[
self.excavator_uuid_to_ref_id_dict[excavator_id]] = \
self.load_area_uuid_to_ref_id_dict[load_area_id]
self.excavator_strength[excavator_index] = 300 # 挖机最大装载能力,单位吨/小时
self.grade_loading_array[excavator_index] = 100 # 挖机装载物料品位
self.excavator_priority_coefficient[excavator_index] = 1 # 挖机优先级
excavator_index += 1
def extract_walk_time_info(self):
# load_area_uuid <-> load_area_id
# unload_area_uuid <-> unload_area_id
load_area_index = 0
unload_area_index = 0
for walk_time in session_postgre.query(WalkTime).all():
load_area_id = str(walk_time.load_area_id)
unload_area_id = str(walk_time.unload_area_id)
if load_area_id not in self.load_area_uuid_to_ref_id_dict:
self.load_area_uuid_to_ref_id_dict[load_area_id] = load_area_index
self.load_area_ref_id_to_uuid_dict[load_area_index] = load_area_id
load_area_index += 1
if unload_area_id not in self.unload_area_uuid_to_ref_id_dict:
self.unload_area_uuid_to_ref_id_dict[unload_area_id] = unload_area_index
self.unload_area_ref_id_to_uuid_dict[unload_area_index] = unload_area_id
unload_area_index += 1
# 路网信息读取
for walk_time in session_postgre.query(WalkTime).all():
load_area_id = str(walk_time.load_area_id)
unload_area_id = str(walk_time.unload_area_id)
# 将uuid转为id
load_area_index = self.load_area_uuid_to_ref_id_dict[load_area_id]
unload_area_index = self.unload_area_uuid_to_ref_id_dict[unload_area_id]
# 运输路线距离
self.goto_load_area_distance[unload_area_index][load_area_index] = walk_time.to_load_distance
self.goto_unload_area_distance[load_area_index][unload_area_index] = walk_time.to_unload_distance
# 卸载道路上,每运输1吨货物需要一辆卡车运行时长,等于(该卸载道路上车辆平均运行时长/卡车平均实际装载量)
# 单位为辆小时/吨
# i代表第i个电铲,j代表第j个卸载点
# walktime_goto_dump单位是秒,需要除以3600,转成小时
self.goto_load_area_factor[unload_area_index][load_area_index] = \
(60 / 1000 * walk_time.to_load_distance / self.empty_speed) / self.payload
# / self.avg_goto_excavator_weight[load_area_index][unload_area_index]
# 装载道路上,每提供1吨的装载能力需要一辆卡车运行时长,等于(该装载道路上车辆平均运行时长/卡车平均装载能力)
# 单位为辆小时/吨
# i代表第i个卸载点,j代表第j个电铲
# walktime_goto_excavator单位是秒,需要除以3600,转成小时
self.goto_unload_area_factor[load_area_index][unload_area_index] = \
(60 / 1000 * walk_time.to_unload_distance / self.heavy_speed) / self.payload
# / self.avg_goto_excavator_weight[unload_area_index][load_area_index]
# 初始化车流规划类
def Traffic_para_init(num_of_load_area, num_of_unload_area, num_of_excavator, num_of_dump):
tra_para = Traffic_para(num_of_load_area, num_of_unload_area, num_of_excavator, num_of_dump)
Traffic_para.extract_walk_time_info(tra_para)
Traffic_para.extract_excavator_info(tra_para)
Traffic_para.extract_dump_info(tra_para)
# 全部矿卡设备集合
truck_set = set(update_total_truck())
# 固定派车矿卡集合
fixed_truck_set = set(update_fixdisp_truck())
# 动态派车矿卡集合
tra_para.truck_total_num = len(truck_set.difference(fixed_truck_set))
# 计算逻辑道路因子
for i in range(num_of_excavator):
for j in range(num_of_dump):
# 查找挖机绑定的装载区, 卸载设备绑定的卸载区
load_area_index = tra_para.excavator_ref_id_to_load_area_ref_id_dict[i]
unload_area_index = tra_para.dump_ref_id_to_unload_area_ref_id_dict[j]
# 逻辑道路因子赋值, 来自实际道路因子
tra_para.goto_excavator_factor[j][i] = \
tra_para.goto_load_area_factor[unload_area_index][load_area_index]
tra_para.goto_dump_factor[i][j] = \
tra_para.goto_unload_area_factor[load_area_index][unload_area_index]
# 每条卸载道路的优先级,等于电铲的优先级乘以卸载点的优先级
tra_para.priority_coefficient[i][j] = tra_para.excavator_priority_coefficient[i] \
* tra_para.dump_priority_coefficient[j]
# 逻辑距离赋值,来自实际道路距离
tra_para.goto_excavator_distance[j][i] = \
tra_para.goto_load_area_distance[unload_area_index][load_area_index]
tra_para.goto_dump_distance[i][j] = \
tra_para.goto_unload_area_distance[load_area_index][unload_area_index]
return tra_para
...@@ -9,219 +9,23 @@ ...@@ -9,219 +9,23 @@
# import # import
import numpy as np import numpy as np
import pulp import pulp
from tables import * from traffic_flow_info import *
from urllib.parse import quote # from backstore_traffic_flow_info import *
import logging # import time
import logging.handlers # start = time.time()
from static_data_process import * # much_job = [x**2 for x in range (1, 1000000, 3)]
from settings import *
# 需要提供的值 # 需要提供的值
# traffic_programme_para.excavator_strength[excavator_index] = 200 # 挖机最大装载能力,单位吨/小时 # traffic_programme_para.excavator_strength[excavator_index] = 200 # 挖机最大装载能力,单位吨/小时
# traffic_programme_para.dump_strength[dump_index] = 200 # 卸载设备最大卸载能力,单位吨/小时
# traffic_programme_para.grade_loading_array[excavator_index] = 100 # 挖机装载物料品位 # traffic_programme_para.grade_loading_array[excavator_index] = 100 # 挖机装载物料品位
# traffic_programme_para.excavator_priority_coefficient[excavator_index] = 1 # 挖机优先级 # traffic_programme_para.excavator_priority_coefficient[excavator_index] = 1 # 挖机优先级
# traffic_programme_para.dump_priority_coefficient[dump_index] = 1 # 卸载设备优先级 # traffic_programme_para.dump_strength[dump_index] = 200 # 卸载设备最大卸载能力,单位吨/小时
# traffic_programme_para.grade_upper_dump_array[dump_index] = 100 # 卸点品位上限 # traffic_programme_para.grade_upper_dump_array[dump_index] = 100 # 卸点品位上限
# traffic_programme_para.grade_lower_dump_array[dump_index] = 100 # 卸点品位下限 # traffic_programme_para.grade_lower_dump_array[dump_index] = 100 # 卸点品位下限
# traffic_programme_para.dump_priority_coefficient[dump_index] = 1 # 卸载设备优先级
# 从数据库中读取电铲和卸载点相关参数,并将线性规划所用参数保存在TrafficProgPara类中
class TrafficProgPara(object):
def __init__(self, num_of_load_area, num_of_unload_area, num_of_excavator, num_of_dump):
self.load_area_uuid_to_index_dict = {} # 用于保存装载点uuid到id的映射
self.load_area_index_to_uuid_dict = {} # 用于保存装载点id到uuid的映射
self.unload_area_uuid_to_index_dict = {} # 用于保存卸载点uuid到id的映射
self.unload_area_index_to_uuid_dict = {} # 用于保存卸载点id到uuid的映射
self.excavator_uuid_to_index_dict = {} # 用于保存挖机uuid到id的映射
self.excavator_index_to_uuid_dict = {} # 用于保存挖机id到uuid的映射
self.dump_uuid_to_index_dict = {} # 用于保存卸点uuid到id的映射
self.dump_index_to_uuid_dict = {} # 用于保存卸点id到uuid的映射
self.dump_uuid_to_unload_area_uuid_dict = {} # 用于保存卸点与卸载区的绑定关系(uuid)
self.excavator_uuid_to_load_area_uuid_dict = {} # 用于保存挖机与装载区的绑定关系(uuid)
self.dump_index_to_unload_area_index_dict = {} # 用于保存卸点与卸载区的绑定关系(id)
self.excavator_index_to_load_area_index_dict = {} # 用于保存挖机与装载区的绑定关系(id)
self.excavator_strength = np.zeros(num_of_excavator) # 用于保存挖机的工作强度,单位是t/h
self.excavator_priority_coefficient = np.zeros(num_of_excavator) # 每个挖机的优先级系数
self.grade_loading_array = np.zeros(num_of_excavator) # 用于保存挖机挖掘矿石的品位
self.dump_strength = np.zeros(num_of_dump) # 卸载点的工作强度,单位是t/h
self.dump_priority_coefficient = np.zeros(num_of_dump) # 每个卸载点的优先级系数
# 装载道路上,每提供1吨的装载能力需要一辆卡车运行时长,等于(该装载道路上车辆平均运行时长/卡车平均装载能力)
self.goto_unload_area_factor = np.full((num_of_load_area, num_of_unload_area), 10, dtype=float) # 卸载道路的运输系数
self.goto_unload_point_factor = np.full((num_of_excavator, num_of_dump), 10, dtype=float) # 逻辑卸载道路的运输系数
# 卸载道路上,每运输1吨货物需要一辆卡车运行时长,等于(该卸载道路上车辆平均运行时长/卡车平均实际装载量)
self.goto_load_area_factor = np.full((num_of_unload_area, num_of_load_area), 10, dtype=float) # 装载道路的运输系数
self.goto_excavator_factor = np.full((num_of_dump, num_of_excavator), 10, dtype=float) # 逻辑装载道路的运输系数
self.priority_coefficient = np.zeros((num_of_excavator, num_of_dump)) # 卸载道路的优先级系数
self.grade_lower_dump_array = np.zeros(num_of_dump) # 卸载点矿石品位下限
self.grade_upper_dump_array = np.zeros(num_of_dump) # 卸载点矿石品位上限
self.empty_speed = 25 # 空载矿卡平均时速
self.heavy_speed = 22 # 重载矿卡平均时速
self.goto_load_area_distance = np.zeros((num_of_unload_area, num_of_load_area)) # 空载运输路线距离
self.goto_unload_area_distance = np.zeros((num_of_load_area, num_of_unload_area)) # 重载运输路线距离
# 装载道路权重因子
# self.avg_goto_excavator_weight = np.zeros((num_of_load_area, num_of_unload_area))
self.avg_goto_excavator_weight = np.full((num_of_load_area, num_of_unload_area), 1)
# 卸载道路
# self.avg_goto_unload_point_weight = np.zeros((num_of_load_area, num_of_unload_area))
self.avg_goto_unload_point_weight = np.full((num_of_load_area, num_of_unload_area), 1)
self.goto_excavator_distance = np.zeros((num_of_dump, num_of_excavator)) # 逻辑空载运输路线距离
self.goto_dump_distance = np.zeros((num_of_excavator, num_of_dump)) # 逻辑重载运输路线距离
self.payload = 100 # 有效载重(不同型号矿卡载重不同,这里暂时认为车队是同质的)
self.min_throughout = 200 # 最小产量约束
self.truck_total_num = 0
def extract_excavator_info(traffic_programme_para):
excavator_index = 0
for dispatch in session_mysql.query(Dispatch).filter_by(isdeleted=0, isauto=1).all():
excavator_id = dispatch.exactor_id
load_area_id = dispatch.load_area_id
if excavator_id not in traffic_programme_para.excavator_uuid_to_index_dict:
# excavator_uuid <-> excavator_uuid
traffic_programme_para.excavator_uuid_to_index_dict[excavator_id] = excavator_index
traffic_programme_para.excavator_index_to_uuid_dict[excavator_index] = excavator_id
# excavator_uuid -> load_area_uuid
traffic_programme_para.excavator_uuid_to_load_area_uuid_dict[excavator_id] = load_area_id
# excavator_id -> load_area_id
traffic_programme_para.excavator_index_to_load_area_index_dict[
traffic_programme_para.excavator_uuid_to_index_dict[excavator_id]] = \
traffic_programme_para.load_area_uuid_to_index_dict[load_area_id]
traffic_programme_para.excavator_strength[excavator_index] = 300 # 挖机最大装载能力,单位吨/小时
traffic_programme_para.grade_loading_array[excavator_index] = 100 # 挖机装载物料品位
traffic_programme_para.excavator_priority_coefficient[excavator_index] = 1 # 挖机优先级
excavator_index = excavator_index + 1
def extract_dump_info(traffic_programme_para):
dump_index = 0
for dispatch in session_mysql.query(Dispatch).filter_by(isdeleted=0, isauto=1).all():
unload_area_id = dispatch.unload_area_id
dump_id = dispatch.dump_id
if dump_id not in traffic_programme_para.dump_uuid_to_unload_area_uuid_dict:
# dump_uuid <-> dump_id
traffic_programme_para.dump_uuid_to_index_dict[dump_id] = dump_index
traffic_programme_para.dump_index_to_uuid_dict[dump_index] = dump_id
# dump_uuid -> unload_area_uuid
traffic_programme_para.dump_uuid_to_unload_area_uuid_dict[dump_id] = unload_area_id
# dump_id -> unload_area_id
traffic_programme_para.dump_index_to_unload_area_index_dict[
traffic_programme_para.dump_uuid_to_index_dict[dump_id]] = \
traffic_programme_para.unload_area_uuid_to_index_dict[unload_area_id]
traffic_programme_para.dump_strength[dump_index] = 300 # 卸载设备最大卸载能力,单位吨/小时
traffic_programme_para.grade_upper_dump_array[dump_index] = 100 # 卸点品位上限
traffic_programme_para.grade_lower_dump_array[dump_index] = 100 # 卸点品位下限
traffic_programme_para.dump_priority_coefficient[dump_index] = 1 # 卸载设备优先级
dump_index = dump_index + 1
def extract_walk_time_info(traffic_programme_para):
# load_area_uuid <-> load_area_id
# unload_area_uuid <-> unload_area_id
load_area_index = 0
unload_area_index = 0
for walk_time in session_postgre.query(WalkTime).all():
load_area_id = str(walk_time.load_area_id)
unload_area_id = str(walk_time.unload_area_id)
if load_area_id not in traffic_programme_para.load_area_uuid_to_index_dict:
traffic_programme_para.load_area_uuid_to_index_dict[load_area_id] = load_area_index
traffic_programme_para.load_area_index_to_uuid_dict[load_area_index] = load_area_id
load_area_index = load_area_index + 1
if unload_area_id not in traffic_programme_para.unload_area_uuid_to_index_dict:
traffic_programme_para.unload_area_uuid_to_index_dict[unload_area_id] = unload_area_index
traffic_programme_para.unload_area_index_to_uuid_dict[unload_area_index] = unload_area_id
unload_area_index = unload_area_index + 1
# 路网信息读取
for walk_time in session_postgre.query(WalkTime).all():
load_area_id = str(walk_time.load_area_id)
unload_area_id = str(walk_time.unload_area_id)
# 将uuid转为id
load_area_index = traffic_programme_para.load_area_uuid_to_index_dict[load_area_id]
unload_area_index = traffic_programme_para.unload_area_uuid_to_index_dict[unload_area_id]
# 运输路线距离
traffic_programme_para.goto_load_area_distance[unload_area_index][load_area_index] = walk_time.to_load_distance
traffic_programme_para.goto_unload_area_distance[load_area_index][
unload_area_index] = walk_time.to_unload_distance
# 卸载道路上,每运输1吨货物需要一辆卡车运行时长,等于(该卸载道路上车辆平均运行时长/卡车平均实际装载量)
# 单位为辆小时/吨
# i代表第i个挖机,j代表第j个卸载点
# walktime_goto_unload_point单位是秒,需要除以3600,转成小时
traffic_programme_para.goto_load_area_factor[unload_area_index][load_area_index] = \
(60 / 1000 * walk_time.to_load_distance / traffic_programme_para.empty_speed) / traffic_programme_para.payload
# / traffic_programme_para.avg_goto_excavator_weight[load_area_index][unload_area_index]
# 装载道路上,每提供1吨的装载能力需要一辆卡车运行时长,等于(该装载道路上车辆平均运行时长/卡车平均装载能力)
# 单位为辆小时/吨
# i代表第i个卸载点,j代表第j个挖机
# walktime_goto_excavator单位是秒,需要除以3600,转成小时
traffic_programme_para.goto_unload_area_factor[load_area_index][unload_area_index] = \
(60 / 1000 * walk_time.to_unload_distance / traffic_programme_para.heavy_speed) / traffic_programme_para.payload
# / traffic_programme_para.avg_goto_excavator_weight[unload_area_index][load_area_index]
# 从数据库中读取挖机和卸载点相关参数,并将线性规划所用参数保存在TrafficProgPara类中
def traffic_programme_para_init(num_of_load_area, num_of_unload_area, num_of_excavator, num_of_dump):
# 初始化流量规划参数类
traffic_programme_para = TrafficProgPara(num_of_load_area, num_of_unload_area, num_of_excavator, num_of_dump)
extract_walk_time_info(traffic_programme_para)
extract_excavator_info(traffic_programme_para)
extract_dump_info(traffic_programme_para)
# 全部矿卡设备集合
truck_set = set(update_total_truck())
# 固定派车矿卡集合
fixed_truck_set = set(update_fixdisp_truck())
# 动态派车矿卡集合
traffic_programme_para.truck_total_num = len(truck_set.difference(fixed_truck_set))
# 计算逻辑道路因子
for i in range(num_of_excavator):
for j in range(num_of_dump):
# 查找挖机绑定的装载区, 卸载设备绑定的卸载区
load_area_index = traffic_programme_para.excavator_index_to_load_area_index_dict[i]
unload_area_index = traffic_programme_para.dump_index_to_unload_area_index_dict[j]
# 逻辑道路因子赋值, 来自实际道路因子
traffic_programme_para.goto_excavator_factor[j][i] = \
traffic_programme_para.goto_load_area_factor[unload_area_index][load_area_index]
traffic_programme_para.goto_unload_point_factor[i][j] = \
traffic_programme_para.goto_unload_area_factor[load_area_index][unload_area_index]
# 每条卸载道路的优先级,等于挖机的优先级乘以卸载点的优先级
traffic_programme_para.priority_coefficient[i][j] = traffic_programme_para.excavator_priority_coefficient[i] \
* traffic_programme_para.dump_priority_coefficient[j]
# 逻辑距离赋值,来自实际道路距离
traffic_programme_para.goto_excavator_distance[j][i] = \
traffic_programme_para.goto_load_area_distance[unload_area_index][load_area_index]
traffic_programme_para.goto_dump_distance[i][j] = \
traffic_programme_para.goto_unload_area_distance[load_area_index][unload_area_index]
return traffic_programme_para
# 解决线性规划问题,生成每条道路的流量 # 解决线性规划问题,生成每条道路的流量
...@@ -230,13 +34,13 @@ def transportation_problem_slove(coefficient, w_ij, s_ij, b_excavator, ...@@ -230,13 +34,13 @@ def transportation_problem_slove(coefficient, w_ij, s_ij, b_excavator,
max_unload_weigh_alg_flag, truck_total_num, max_unload_weigh_alg_flag, truck_total_num,
goto_excavator_dis, goto_dump_dis, min_throughout, goto_excavator_dis, goto_dump_dis, min_throughout,
grade_lower_array=None, grade_upper_array=None): grade_lower_array=None, grade_upper_array=None):
row = len(coefficient) # 代表挖机的个数,第i行代表第i台挖机 row = len(coefficient) # 代表电铲的个数,第i行代表第i台电铲
col = len(coefficient[0]) # 代表卸载点的个数,第j行代表第j个卸载点 col = len(coefficient[0]) # 代表卸载点的个数,第j行代表第j个卸载点
# prob = pulp.LpProblem('Transportation Problem', sense=pulp.LpMaximize) # prob = pulp.LpProblem('Transportation Problem', sense=pulp.LpMaximize)
# 卸载道路的流量,单位是吨/小时,i代表起点为第i个挖机,j代表终点为第j个卸载点 # 卸载道路的流量,单位是吨/小时,i代表起点为第i个电铲,j代表终点为第j个卸载点
var_x = [[pulp.LpVariable('x{0}{1}'.format(i, j), lowBound=0) for j in range(col)] for i in range(row)] var_x = [[pulp.LpVariable('x{0}{1}'.format(i, j), lowBound=0) for j in range(col)] for i in range(row)]
# 装载道路的流量,单位是吨/小时,i代表起点为第i个卸载点,j代表终点为第j个挖机 # 装载道路的流量,单位是吨/小时,i代表起点为第i个卸载点,j代表终点为第j个电铲
var_y = [[pulp.LpVariable('y{0}{1}'.format(i, j), lowBound=0) for j in range(row)] for i in range(col)] var_y = [[pulp.LpVariable('y{0}{1}'.format(i, j), lowBound=0) for j in range(row)] for i in range(col)]
flatten = lambda x: [y for l in x for y in flatten(l)] if type(x) is list else [x] flatten = lambda x: [y for l in x for y in flatten(l)] if type(x) is list else [x]
...@@ -267,7 +71,7 @@ def transportation_problem_slove(coefficient, w_ij, s_ij, b_excavator, ...@@ -267,7 +71,7 @@ def transportation_problem_slove(coefficient, w_ij, s_ij, b_excavator,
pulp.lpSum(load_truck_totla_num_array) <= truck_total_num) pulp.lpSum(load_truck_totla_num_array) <= truck_total_num)
# 最大工作强度约束 # 最大工作强度约束
# 约束每个挖机的工作强度 # 约束每个电铲的工作强度
for i in range(row): for i in range(row):
prob += (pulp.lpSum(var_x[i]) <= b_excavator[i]) prob += (pulp.lpSum(var_x[i]) <= b_excavator[i])
# 约束每个卸载点的工作强度 # 约束每个卸载点的工作强度
...@@ -276,7 +80,7 @@ def transportation_problem_slove(coefficient, w_ij, s_ij, b_excavator, ...@@ -276,7 +80,7 @@ def transportation_problem_slove(coefficient, w_ij, s_ij, b_excavator,
''' '''
# 车流基尔霍夫定理约束 # 车流基尔霍夫定理约束
# 进入挖机和从挖机出去的车辆个数需要相同 # 进入电铲和从电铲出去的车辆个数需要相同
for i in range(row): for i in range(row):
prob += (pulp.lpSum(unload_truck_total_num_array[i]) == pulp.lpSum(load_truck_totla_num_array[:,i])) prob += (pulp.lpSum(unload_truck_total_num_array[i]) == pulp.lpSum(load_truck_totla_num_array[:,i]))
# 从装载点离开和进来的车辆个数需要相同 # 从装载点离开和进来的车辆个数需要相同
...@@ -293,7 +97,7 @@ def transportation_problem_slove(coefficient, w_ij, s_ij, b_excavator, ...@@ -293,7 +97,7 @@ def transportation_problem_slove(coefficient, w_ij, s_ij, b_excavator,
prob += (pulp.lpSum((np.array(var_y))[j]) <= pulp.lpSum((np.array(var_x))[:, j])) prob += (pulp.lpSum((np.array(var_y))[j]) <= pulp.lpSum((np.array(var_x))[:, j]))
# 矿石品位约束卸载 # 矿石品位约束卸载
# 去往卸载点的流量使用矩阵乘法乘以每个挖机处矿石的品位,得到每个卸载点的矿石品位总和 # 去往卸载点的流量使用矩阵乘法乘以每个电铲处矿石的品位,得到每个卸载点的矿石品位总和
grade_array = np.dot(grade_loading_array, var_x) grade_array = np.dot(grade_loading_array, var_x)
for j in range(col): for j in range(col):
sum_traffic_unload = pulp.lpSum((np.array(var_x))[:, j]) sum_traffic_unload = pulp.lpSum((np.array(var_x))[:, j])
...@@ -319,7 +123,6 @@ def transportation_problem_slove(coefficient, w_ij, s_ij, b_excavator, ...@@ -319,7 +123,6 @@ def transportation_problem_slove(coefficient, w_ij, s_ij, b_excavator,
'var_y': [[pulp.value(var_y[i][j]) for j in range(row)] for i in range(col)]} 'var_y': [[pulp.value(var_y[i][j]) for j in range(row)] for i in range(col)]}
def traffic_flow_plan(): def traffic_flow_plan():
excavator_list = update_autodisp_excavator() excavator_list = update_autodisp_excavator()
...@@ -348,17 +151,17 @@ def traffic_flow_plan(): ...@@ -348,17 +151,17 @@ def traffic_flow_plan():
print("装载区数量:", load_area_num, "卸载区数量:", unload_area_num, "挖机数量:", excavator_num, "卸点数量:", dump_num) print("装载区数量:", load_area_num, "卸载区数量:", unload_area_num, "挖机数量:", excavator_num, "卸点数量:", dump_num)
# 初始化参量 # 初始化参量
traffic_programme_para = traffic_programme_para_init(load_area_num, unload_area_num, excavator_num, dump_num) traffic_programme_para = Traffic_para_init(load_area_num, unload_area_num, excavator_num, dump_num)
# traffic_programme_para = traffic_programme_para_init(load_area_num, unload_area_num, excavator_num, dump_num)
# 系统是否以最大化产量为目标 # 系统是否以最大化产量为目标
max_unload_weigh_alg_flag = False max_unload_weigh_alg_flag = True
if max_unload_weigh_alg_flag: if max_unload_weigh_alg_flag:
logger.info(f'最大产量调度模式') logger.info(f'最大产量调度模式')
else: else:
logger.info(f'最小成本调度模式') logger.info(f'最小成本调度模式')
coefficient = traffic_programme_para.priority_coefficient coefficient = traffic_programme_para.priority_coefficient
w_ij = traffic_programme_para.goto_unload_point_factor w_ij = traffic_programme_para.goto_dump_factor
s_ij = traffic_programme_para.goto_excavator_factor s_ij = traffic_programme_para.goto_excavator_factor
b_excavator = traffic_programme_para.excavator_strength b_excavator = traffic_programme_para.excavator_strength
b_dump = traffic_programme_para.dump_strength b_dump = traffic_programme_para.dump_strength
...@@ -391,12 +194,13 @@ def traffic_flow_plan(): ...@@ -391,12 +194,13 @@ def traffic_flow_plan():
# 通过矩阵按元素相乘得到每条卸载道路上的车辆个数 # 通过矩阵按元素相乘得到每条卸载道路上的车辆个数
unload_traffic = res['var_x'] unload_traffic = res['var_x']
print((traffic_programme_para.goto_unload_point_factor * unload_traffic).round(3)) print((traffic_programme_para.goto_dump_factor * unload_traffic).round(3))
# 通过矩阵按元素相乘得到每条装载道路上的车辆个数 # 通过矩阵按元素相乘得到每条装载道路上的车辆个数
load_traffic = res['var_y'] load_traffic = res['var_y']
print((traffic_programme_para.goto_excavator_factor * load_traffic).round(3)) print((traffic_programme_para.goto_excavator_factor * load_traffic).round(3))
return res["var_x"], res["var_y"] return res["var_x"], res["var_y"]
traffic_flow_plan() traffic_flow_plan()
# end = time.time()
# print("used {:.5}s".format(end-start))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment