Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
I
integrated-scheduling-v3
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张晓彤
integrated-scheduling-v3
Commits
435b229f
Commit
435b229f
authored
Nov 23, 2021
by
张晓彤
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复索引溢出异常
parent
2f1f9dca
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
563 additions
and
382 deletions
+563
-382
truck.py
equipment/truck.py
+11
-5
realtime_dispatch.py
realtime_dispatch.py
+463
-342
tables.py
tables.py
+67
-28
traffic_flow_info.py
traffic_flow/traffic_flow_info.py
+22
-7
No files found.
equipment/truck.py
View file @
435b229f
...
...
@@ -3,7 +3,7 @@
# @Time : 2021/8/24 11:28
# @Author : Opfer
# @Site :
# @File : truck.py
# @File : truck.py
# @Software: PyCharm
from
para_config
import
*
...
...
@@ -132,11 +132,12 @@ class TruckInfo(WalkManage):
self
.
truck_current_task
=
{}
device_name_set
=
redis2
.
keys
()
print
(
"tast_truck_set"
)
print
(
get_value
(
"dynamic_truck_set"
))
## 两个
# print("tast_truck_set")
# print(get_value("dynamic_truck_set")) ## 两个
#
# print(self.dynamic_truck_set)
# print(self.truck_uuid_to_index_dict)
print
(
self
.
dynamic_truck_set
)
print
(
self
.
truck_uuid_to_index_dict
)
for
item
in
device_name_set
:
try
:
...
...
@@ -156,6 +157,11 @@ class TruckInfo(WalkManage):
logger
.
info
(
"矿卡当前任务:"
)
logger
.
info
(
self
.
truck_current_task
)
# logger.info("device_name_set,大小")
# logger.info(len(device_name_set))
# logger.info("device_name_set")
# logger.info(device_name_set)
# self.truck_current_task = {}
#
# dynamic_truck_set = get_value("dynamic_truck_set")
...
...
realtime_dispatch.py
View file @
435b229f
...
...
@@ -458,342 +458,404 @@ class Dispatcher(WalkManage):
def
truck_schedule
(
self
,
truck_id
):
rule3
=
session_mysql
.
query
(
DispatchRule
)
.
filter_by
(
id
=
3
)
.
first
()
.
disabled
rule4
=
session_mysql
.
query
(
DispatchRule
)
.
filter_by
(
id
=
4
)
.
first
()
.
disabled
rule3
=
session_mysql
.
query
(
DispatchRule
)
.
filter_by
(
id
=
3
)
.
first
()
.
disabled
rule4
=
session_mysql
.
query
(
DispatchRule
)
.
filter_by
(
id
=
4
)
.
first
()
.
disabled
# cost_to_excavator, cost_to_dump, cost_park_to_excavator = self.path.walk_cost()
# try:
excavator_priority_coefficient
=
excavator
.
excavator_priority_coefficient
excavator_priority_coefficient
=
excavator
.
excavator_priority_coefficient
excavator_material_priority
=
excavator
.
excavator_material_priority
# 矿卡对应序号
truck_index
=
truck
.
truck_uuid_to_index_dict
[
truck_id
]
# 矿卡行程
trip
=
truck
.
get_truck_current_trip
()[
truck_index
]
# 矿卡当前任务
task
=
truck
.
get_truck_current_task
()[
truck
.
truck_index_to_uuid_dict
[
truck_index
]]
# 挖机装载时间
loading_time
=
excavator
.
get_loading_time
()
# 路网信息
walk_time_park_to_excavator
=
walk_manage
.
get_walk_time_park_to_excavator
()
\
*
(
empty_speed
/
float
(
truck
.
empty_speed
[
truck_id
]))
if
truck_id
not
in
self
.
group
.
dispatch_truck_group
:
logger
.
error
(
"无该矿卡"
)
return
-
1
# 矿卡调度分组
group_id
=
self
.
group
.
dispatch_truck_group
[
truck_id
]
excavator_material_priority
=
excavator
.
excavator_material_priority
dynamic_dump_num
=
dump
.
get_dump_num
()
dynamic_excavator_num
=
excavator
.
get_excavator_num
()
# 矿卡对应序号
truck_index
=
truck
.
truck_uuid_to_index_dict
[
truck_id
]
# 矿卡行程
trip
=
truck
.
get_truck_current_trip
()[
truck_index
]
# 矿卡当前任务
task
=
truck
.
get_truck_current_task
()[
truck
.
truck_index_to_uuid_dict
[
truck_index
]]
# 挖机装载时间
loading_time
=
excavator
.
get_loading_time
()
# 路网信息
walk_time_park_to_excavator
=
walk_manage
.
get_walk_time_park_to_excavator
()
\
*
(
empty_speed
/
float
(
truck
.
empty_speed
[
truck_id
]))
now
=
float
(
(
datetime
.
now
()
-
self
.
start_time
)
/
timedelta
(
hours
=
0
,
minutes
=
1
,
seconds
=
0
))
if
truck_id
not
in
self
.
group
.
dispatch_truck_group
:
logger
.
error
(
"无该矿卡"
)
return
-
1
# 矿卡调度分组
group_id
=
self
.
group
.
dispatch_truck_group
[
truck_id
]
logger
.
info
(
"=========================================================="
)
logger
.
info
(
f
"调度矿卡 {truck_id} {truck_index} {truck_uuid_to_name_dict[truck_id]}"
)
dynamic_dump_num
=
dump
.
get_dump_num
(
)
dynamic_excavator_num
=
excavator
.
get_excavator_num
(
)
target
=
0
now
=
float
(
(
datetime
.
now
()
-
self
.
start_time
)
/
timedelta
(
hours
=
0
,
minutes
=
1
,
seconds
=
0
))
if
task
==
-
2
:
try
:
logger
.
info
(
"矿卡状态:矿卡启动或故障恢复"
)
logger
.
info
(
"矿卡行程:无"
)
logger
.
info
(
f
"涉及挖机:{list(excavator.excavator_uuid_to_index_dict.keys())}"
)
logger
.
info
(
f
"行程时间:{(np.maximum(self.sim_excavator_ava_time, now + walk_time_park_to_excavator[0, :]) + loading_time - now)}"
)
logger
.
info
(
f
"行驶时间:{walk_time_park_to_excavator[0, :] + loading_time}"
)
logger
.
info
(
"物料类型"
)
if
truck_id
in
truck
.
truck_material_bind
:
logger
.
info
(
truck
.
truck_material_bind
[
truck_id
])
logger
.
info
(
"挖机物料优先级"
)
logger
.
info
(
excavator_material_priority
)
logger
.
info
(
"挖机设备优先级"
)
logger
.
info
(
excavator_priority_coefficient
)
logger
.
info
(
"分组车流"
)
logger
.
info
(
self
.
group
.
group_actual_goto_dump_traffic_flow
[
group_id
])
logger
.
info
(
self
.
group
.
group_opt_goto_dump_traffic_flow
[
group_id
])
logger
.
info
(
"=========================================================="
)
logger
.
info
(
f
"调度矿卡 {truck_id} {truck_index} {truck_uuid_to_name_dict[truck_id]}"
)
except
Exception
as
es
:
logger
.
error
(
f
"矿卡{truck_id}状态不匹配"
)
logger
.
error
(
es
)
target
=
0
# 矿卡是否存在绑定挖机
if
truck_id
in
truck
.
truck_excavator_bind
:
target
=
excavator
.
excavator_uuid_to_index_dict
[
truck
.
truck_excavator_bind
[
truck_id
]]
else
:
if
task
==
-
2
:
try
:
logger
.
info
(
"矿卡状态:矿卡启动或故障恢复"
)
logger
.
info
(
"矿卡行程:无"
)
logger
.
info
(
f
"涉及挖机:{list(excavator.excavator_uuid_to_index_dict.keys())}"
)
logger
.
info
(
f
"行程时间:{(np.maximum(self.sim_excavator_ava_time, now + walk_time_park_to_excavator[0, :]) + loading_time - now)}"
)
logger
.
info
(
f
"行驶时间:{walk_time_park_to_excavator[0, :] + loading_time}"
)
logger
.
info
(
"物料类型"
)
if
truck_id
in
truck
.
truck_material_bind
:
logger
.
info
(
truck
.
truck_material_bind
[
truck_id
])
logger
.
info
(
"挖机物料优先级"
)
logger
.
info
(
excavator_material_priority
)
logger
.
info
(
"挖机设备优先级"
)
logger
.
info
(
excavator_priority_coefficient
)
logger
.
info
(
"分组车流"
)
logger
.
info
(
self
.
group
.
group_actual_goto_dump_traffic_flow
[
group_id
])
logger
.
info
(
self
.
group
.
group_opt_goto_dump_traffic_flow
[
group_id
])
transport_value
=
self
.
group
.
group_park_to_excavator
[
group_id
]
except
Exception
as
es
:
logger
.
error
(
f
"矿卡{truck_id}状态不匹配"
)
logger
.
error
(
es
)
excavator_exclude_modify
=
self
.
group
.
group_excavator_exclude_modify
[
truck_id
]
excavator_material_bind_modify
=
self
.
group
.
group_excavator_material_bind_modify
[
truck_id
]
# 矿卡是否存在绑定挖机
try
:
if
truck_id
in
truck
.
truck_excavator_bind
:
target
=
excavator
.
excavator_uuid_to_index_dict
[
truck
.
truck_excavator_bind
[
truck_id
]]
else
:
logger
.
info
(
"transport_value"
)
# logger.info(transport_value)
# target = np.argmin(
# transport_value
# + truck.excavator_exclude_modify[truck_index]
# + truck.excavator_material_bind_modify[truck_index])
logger
.
info
(
transport_value
)
target
=
np
.
argmin
(
transport_value
+
excavator_exclude_modify
)
# + excavator_material_bind_modify)
target
=
self
.
excavator_uuid_to_index_dict
[
self
.
group
.
group_excavator_index_to_uuid_dict
[
group_id
][
target
]]
transport_value
=
self
.
group
.
group_park_to_excavator
[
group_id
]
logger
.
info
(
f
"目的地:{excavator.excavator_index_to_uuid_dict[target]}"
)
excavator_exclude_modify
=
self
.
group
.
group_excavator_exclude_modify
[
truck_id
]
excavator_material_bind_modify
=
self
.
group
.
group_excavator_material_bind_modify
[
truck_id
]
if
task
in
[
0
,
1
,
2
]:
try
:
logger
.
info
(
"矿卡状态:矿卡空载"
)
logger
.
info
(
f
"涉及卸载设备:{list(dump.dump_uuid_to_index_dict.keys())}"
)
except
Exception
as
es
:
logger
.
error
(
f
"矿卡{truck_id}状态不匹配"
)
logger
.
error
(
es
)
logger
.
info
(
"transport_value"
)
# logger.info(transport_value)
# target = np.argmin(
# transport_value
# + truck.excavator_exclude_modify[truck_index]
# + truck.excavator_material_bind_modify[truck_index])
logger
.
info
(
transport_value
)
target
=
np
.
argmin
(
transport_value
+
excavator_exclude_modify
)
# + excavator_material_bind_modify)
target
=
self
.
excavator_uuid_to_index_dict
[
self
.
group
.
group_excavator_index_to_uuid_dict
[
group_id
][
target
]]
try
:
assert
np
.
array
(
self
.
actual_goto_dump_traffic_flow
)
.
shape
==
(
dynamic_excavator_num
,
dynamic_dump_num
,)
assert
np
.
array
(
self
.
opt_goto_dump_traffic_flow
)
.
shape
==
(
dynamic_excavator_num
,
dynamic_dump_num
,)
except
Exception
as
es
:
logger
.
warning
(
es
)
self
.
actual_goto_dump_traffic_flow
=
np
.
array
(
self
.
actual_goto_dump_traffic_flow
)
.
reshape
((
dynamic_excavator_num
,
dynamic_dump_num
))
self
.
opt_goto_dump_traffic_flow
=
np
.
array
(
self
.
opt_goto_dump_traffic_flow
)
.
reshape
((
dynamic_excavator_num
,
dynamic_dump_num
))
logger
.
info
(
f
"目的地:{excavator.excavator_index_to_uuid_dict[target]}"
)
except
Exception
as
es
:
logger
.
error
(
"error07"
)
logger
.
error
(
es
)
if
task
in
[
0
,
1
,
2
]:
try
:
logger
.
info
(
"矿卡状态:矿卡空载"
)
logger
.
info
(
f
"涉及卸载设备:{list(dump.dump_uuid_to_index_dict.keys())}"
)
except
Exception
as
es
:
logger
.
error
(
f
"矿卡{truck_id}状态不匹配"
)
logger
.
error
(
es
)
self
.
actual_goto_dump_traffic_flow
=
np
.
array
(
self
.
actual_goto_dump_traffic_flow
)
self
.
opt_goto_dump_traffic_flow
=
np
.
array
(
self
.
opt_goto_dump_traffic_flow
)
try
:
assert
np
.
array
(
self
.
actual_goto_dump_traffic_flow
)
.
shape
==
(
dynamic_excavator_num
,
dynamic_dump_num
,)
assert
np
.
array
(
self
.
opt_goto_dump_traffic_flow
)
.
shape
==
(
dynamic_excavator_num
,
dynamic_dump_num
,)
except
Exception
as
es
:
logger
.
warning
(
es
)
self
.
actual_goto_dump_traffic_flow
=
np
.
array
(
self
.
actual_goto_dump_traffic_flow
)
.
reshape
((
dynamic_excavator_num
,
dynamic_dump_num
))
self
.
opt_goto_dump_traffic_flow
=
np
.
array
(
self
.
opt_goto_dump_traffic_flow
)
.
reshape
((
dynamic_excavator_num
,
dynamic_dump_num
))
try
:
logger
.
info
(
"挖机id:"
)
logger
.
info
(
excavator
.
excavator_uuid_to_index_dict
)
logger
.
info
(
"卸点id:"
)
logger
.
info
(
dump
.
dump_uuid_to_index_dict
)
logger
.
info
(
f
"卸载点实际车流:"
)
logger
.
info
(
self
.
actual_goto_dump_traffic_flow
)
logger
.
info
(
f
"卸载点理想车流:"
)
logger
.
info
(
self
.
opt_goto_dump_traffic_flow
)
logger
.
info
(
"卸载点实际车流"
)
logger
.
info
(
self
.
actual_goto_dump_traffic_flow
[
int
(
trip
[
1
]),
:])
logger
.
info
(
"卸载点理想车流"
)
logger
.
info
(
self
.
opt_goto_dump_traffic_flow
[
int
(
trip
[
1
]),
:])
logger
.
info
(
"空载trip"
)
logger
.
info
(
trip
)
logger
.
info
(
"物料类型"
)
if
truck_id
in
truck
.
truck_material_bind
:
logger
.
info
(
truck
.
truck_material_bind
[
truck_id
])
logger
.
info
(
"驶往卸点的运输成本"
)
logger
.
info
(
self
.
cost_to_dump
)
logger
.
info
(
"卸点物料修正"
)
logger
.
info
(
truck
.
dump_material_bind_modify
)
self
.
actual_goto_dump_traffic_flow
=
np
.
array
(
self
.
actual_goto_dump_traffic_flow
)
self
.
opt_goto_dump_traffic_flow
=
np
.
array
(
self
.
opt_goto_dump_traffic_flow
)
except
Exception
as
es
:
logger
.
info
(
"车流及修正因子"
)
logger
.
info
(
es
)
if
truck_id
in
truck
.
truck_dump_bind
:
bind_unload_area_id
=
truck
.
truck_dump_bind
[
truck_id
]
for
key
,
value
in
dump
.
dump_index_to_unload_area_index_dict
.
items
():
if
value
==
unload_area_uuid_to_index_dict
[
bind_unload_area_id
]:
target
=
key
break
else
:
excavator_index
=
int
(
trip
[
1
])
excavator_id
=
self
.
excavator_index_to_uuid_dict
[
excavator_index
]
try
:
logger
.
info
(
"挖机id:"
)
logger
.
info
(
excavator
.
excavator_uuid_to_index_dict
)
logger
.
info
(
"卸点id:"
)
logger
.
info
(
dump
.
dump_uuid_to_index_dict
)
logger
.
info
(
f
"卸载点实际车流:"
)
logger
.
info
(
self
.
actual_goto_dump_traffic_flow
)
logger
.
info
(
f
"卸载点理想车流:"
)
logger
.
info
(
self
.
opt_goto_dump_traffic_flow
)
logger
.
info
(
"卸载点实际车流"
)
logger
.
info
(
self
.
actual_goto_dump_traffic_flow
[
int
(
trip
[
1
]),
:])
logger
.
info
(
"卸载点理想车流"
)
logger
.
info
(
self
.
opt_goto_dump_traffic_flow
[
int
(
trip
[
1
]),
:])
logger
.
info
(
"空载trip"
)
logger
.
info
(
trip
)
logger
.
info
(
"物料类型"
)
if
truck_id
in
truck
.
truck_material_bind
:
logger
.
info
(
truck
.
truck_material_bind
[
truck_id
])
logger
.
info
(
"驶往卸点的运输成本"
)
logger
.
info
(
self
.
cost_to_dump
)
logger
.
info
(
"卸点物料修正"
)
logger
.
info
(
truck
.
dump_material_bind_modify
)
print
(
self
.
group
.
group_excavator_uuid_to_index_dict
[
group_id
])
except
Exception
as
es
:
logger
.
info
(
"车流及修正因子"
)
logger
.
info
(
es
)
group_excavator_index
=
self
.
group
.
group_excavator_uuid_to_index_dict
[
group_id
][
excavator_id
]
if
truck_id
in
truck
.
truck_dump_bind
:
bind_unload_area_id
=
truck
.
truck_dump_bind
[
truck_id
]
for
key
,
value
in
dump
.
dump_index_to_unload_area_index_dict
.
items
():
if
value
==
unload_area_uuid_to_index_dict
[
bind_unload_area_id
]:
target
=
key
break
if
rule3
and
rule4
:
# transport_value = self.cost_to_dump[:, int(trip[1])]
transport_value
=
self
.
group
.
group_walk_to_dump_cost
[
group_excavator_index
,
:]
else
:
try
:
excavator_index
=
int
(
trip
[
1
])
excavator_id
=
self
.
excavator_index_to_uuid_dict
[
excavator_index
]
print
(
self
.
group
.
group_excavator_uuid_to_index_dict
[
group_id
])
group_excavator_index
=
self
.
group
.
group_excavator_uuid_to_index_dict
[
group_id
][
excavator_id
]
if
rule3
and
rule4
:
try
:
# ga changed
# transport_value = self.cost_to_dump[:, int(trip[1])]
# transport_value = self.group.group_walk_to_dump_cost[group_excavator_index]
transport_value
=
self
.
group
.
group_walk_to_dump_cost
[
group_id
]
except
Exception
as
es
:
logger
.
error
(
"error10"
)
logger
.
error
(
es
)
logger
.
error
(
"group_id"
)
logger
.
error
(
group_id
)
logger
.
error
(
'self.group.group_walk_to_dump_cost'
)
logger
.
error
(
self
.
group
.
group_walk_to_dump_cost
)
logger
.
error
(
'self.group.group_walk_to_excavator_cost'
)
logger
.
error
(
self
.
group
.
group_walk_to_excavator_cost
)
logger
.
error
(
'self.group.group_excavator_uuid_to_index_dict[group_id][excavator_id]'
)
logger
.
error
(
self
.
group
.
group_excavator_uuid_to_index_dict
[
group_id
][
excavator_id
])
logger
.
error
(
"self.group.group_excavator_uuid_to_index_dict[group_id]"
)
logger
.
error
(
self
.
group
.
group_excavator_uuid_to_index_dict
[
group_id
])
else
:
try
:
# 提取group actual traffic flow
group_actual_goto_dump_traffic_flow
=
self
.
group
.
group_actual_goto_dump_traffic_flow
[
group_id
]
# 提取group actual traffic flow
group_opt_goto_dump_traffic_flow
=
self
.
group
.
group_opt_goto_dump_traffic_flow
[
group_id
]
logger
.
info
(
"驶往卸点分组车流"
)
logger
.
info
(
group_actual_goto_dump_traffic_flow
)
logger
.
info
(
group_opt_goto_dump_traffic_flow
)
try
:
transport_value
=
(
group_actual_goto_dump_traffic_flow
[
group_excavator_index
,
:]
+
0.001
)
\
/
(
group_opt_goto_dump_traffic_flow
[
group_excavator_index
,
:]
+
0.001
)
except
Exception
as
es
:
logger
.
error
(
"error09"
)
logger
.
error
(
es
)
except
Exception
as
es
:
logger
.
error
(
"error11"
)
logger
.
error
(
es
)
# transport_value = (self.actual_goto_dump_traffic_flow[int(trip[1]), :] + 0.001) \
# / (self.opt_goto_dump_traffic_flow[int(trip[1]), :] + 0.001)
logger
.
info
(
"transport_value"
)
logger
.
info
(
transport_value
)
logger
.
info
(
"dump_material_bind_modify"
)
logger
.
info
(
truck
.
dump_material_bind_modify
[
truck_index
])
try
:
dump_material_bind_modify
=
self
.
group
.
group_dump_material_bind_modify
[
truck_id
]
except
Exception
as
es
:
logger
.
error
(
"error13"
)
logger
.
error
(
es
)
logger
.
error
(
"self.group.group_dump_material_bind_modify"
)
logger
.
error
(
self
.
group
.
group_dump_material_bind_modify
)
try
:
target
=
np
.
argmin
(
transport_value
.
T
+
dump_material_bind_modify
)
target
=
self
.
dump_uuid_to_index_dict
[
self
.
group
.
group_dump_index_to_uuid_dict
[
group_id
][
target
]]
logger
.
info
(
"target"
)
logger
.
info
(
target
)
except
Exception
as
es
:
logger
.
error
(
"error12"
)
logger
.
error
(
es
)
logger
.
error
(
"target"
)
logger
.
error
(
target
)
logger
.
error
(
"transport_value"
)
logger
.
error
(
transport_value
)
logger
.
error
(
type
(
transport_value
))
logger
.
error
(
transport_value
.
T
)
logger
.
error
(
"dump_material_bind_modify"
)
logger
.
error
(
dump_material_bind_modify
)
logger
.
error
(
"self.group.group_dump_index_to_uuid_dict"
)
logger
.
error
(
self
.
group
.
group_dump_index_to_uuid_dict
)
logger
.
error
(
"self.group.group_dump_index_to_uuid_dict[group_id]"
)
logger
.
error
(
self
.
group
.
group_dump_index_to_uuid_dict
[
group_id
])
try
:
logger
.
info
(
"车流比:"
)
logger
.
info
((
self
.
actual_goto_dump_traffic_flow
[
int
(
trip
[
1
]),
:]
+
0.001
)
\
/
(
self
.
opt_goto_dump_traffic_flow
[
int
(
trip
[
1
]),
:]
+
0.001
))
except
Exception
as
es
:
logger
.
error
(
"error08"
)
logger
.
error
(
es
)
logger
.
info
(
f
"目的地:{dump.dump_index_to_uuid_dict[target]}"
)
except
Exception
as
es
:
logger
.
error
(
"error06"
)
logger
.
error
(
es
)
# 提取group actual traffic flow
group_actual_goto_dump_traffic_flow
=
self
.
group
.
group_actual_goto_dump_traffic_flow
[
group_id
]
# 提取group actual traffic flow
group_opt_goto_dump_traffic_flow
=
self
.
group
.
group_opt_goto_dump_traffic_flow
[
group_id
]
logger
.
info
(
"驶往卸点分组车流"
)
logger
.
info
(
group_actual_goto_dump_traffic_flow
)
logger
.
info
(
group_opt_goto_dump_traffic_flow
)
transport_value
=
(
group_actual_goto_dump_traffic_flow
[
group_excavator_index
,
:]
+
0.001
)
\
/
(
group_opt_goto_dump_traffic_flow
[
group_excavator_index
,
:]
+
0.001
)
# transport_value = (self.actual_goto_dump_traffic_flow[int(trip[1]), :] + 0.001) \
# / (self.opt_goto_dump_traffic_flow[int(trip[1]), :] + 0.001)
logger
.
info
(
"transport_value"
)
logger
.
info
(
transport_value
)
logger
.
info
(
"dump_material_bind_modify"
)
logger
.
info
(
truck
.
dump_material_bind_modify
[
truck_index
])
dump_material_bind_modify
=
self
.
group
.
group_dump_material_bind_modify
[
truck_id
]
target
=
np
.
argmin
(
transport_value
+
dump_material_bind_modify
)
target
=
self
.
dump_uuid_to_index_dict
[
self
.
group
.
group_dump_index_to_uuid_dict
[
group_id
][
target
]]
logger
.
info
(
"车流比:"
)
logger
.
info
((
self
.
actual_goto_dump_traffic_flow
[
int
(
trip
[
1
]),
:]
+
0.001
)
\
/
(
self
.
opt_goto_dump_traffic_flow
[
int
(
trip
[
1
]),
:]
+
0.001
))
logger
.
info
(
f
"目的地:{dump.dump_index_to_uuid_dict[target]}"
)
elif
task
in
[
3
,
4
,
5
]:
try
:
logger
.
info
(
"矿卡状态:矿卡重载"
)
logger
.
info
(
f
"涉及挖机设备:{list(excavator.excavator_uuid_to_index_dict.keys())}"
)
except
Exception
as
es
:
logger
.
error
(
f
"矿卡{truck_id}状态不匹配"
)
logger
.
error
(
es
)
# 读取车流信息
try
:
assert
np
.
array
(
self
.
actual_goto_excavator_traffic_flow
)
.
shape
==
(
dynamic_dump_num
,
dynamic_excavator_num
,)
assert
np
.
array
(
self
.
opt_goto_excavator_traffic_flow
)
.
shape
==
(
dynamic_dump_num
,
dynamic_excavator_num
,)
elif
task
in
[
3
,
4
,
5
]:
except
Exception
as
es
:
logger
.
warning
(
es
)
self
.
actual_goto_excavator_traffic_flow
=
np
.
array
(
self
.
actual_goto_excavator_traffic_flow
)
.
reshape
((
dynamic_dump_num
,
dynamic_excavator_num
))
self
.
opt_goto_excavator_traffic_flow
=
np
.
array
(
self
.
opt_goto_excavator_traffic_flow
)
.
reshape
((
dynamic_dump_num
,
dynamic_excavator_num
)
)
try
:
logger
.
info
(
"矿卡状态:矿卡重载"
)
logger
.
info
(
f
"涉及挖机设备:{list(excavator.excavator_uuid_to_index_dict.keys())}"
)
except
Exception
as
es
:
logger
.
error
(
f
"矿卡{truck_id}状态不匹配"
)
logger
.
error
(
es
)
# 读取车流信息
try
:
assert
np
.
array
(
self
.
actual_goto_excavator_traffic_flow
)
.
shape
==
(
dynamic_dump_num
,
dynamic_excavator_num
,)
assert
np
.
array
(
self
.
opt_goto_excavator_traffic_flow
)
.
shape
==
(
dynamic_dump_num
,
dynamic_excavator_num
,)
# 不知道为什么,偶尔变成了list
self
.
actual_goto_excavator_traffic_flow
=
np
.
array
(
self
.
actual_goto_excavator_traffic_flow
)
self
.
opt_goto_excavator_traffic_flow
=
np
.
array
(
self
.
opt_goto_excavator_traffic_flow
)
except
Exception
as
es
:
logger
.
warning
(
es
)
self
.
actual_goto_excavator_traffic_flow
=
np
.
array
(
self
.
actual_goto_excavator_traffic_flow
)
.
reshape
((
dynamic_dump_num
,
dynamic_excavator_num
))
self
.
opt_goto_excavator_traffic_flow
=
np
.
array
(
self
.
opt_goto_excavator_traffic_flow
)
.
reshape
((
dynamic_dump_num
,
dynamic_excavator_num
))
try
:
logger
.
info
(
"挖机id:"
)
logger
.
info
(
excavator
.
excavator_uuid_to_index_dict
)
logger
.
info
(
"卸点id:"
)
logger
.
info
(
dump
.
dump_uuid_to_index_dict
)
logger
.
info
(
f
"挖机实际车流:"
)
logger
.
info
(
self
.
actual_goto_excavator_traffic_flow
)
logger
.
info
(
f
"挖机理想车流:"
)
logger
.
info
(
self
.
opt_goto_excavator_traffic_flow
)
logger
.
info
(
"重载trip"
)
logger
.
info
(
trip
)
# 不知道为什么,偶尔变成了list
self
.
actual_goto_excavator_traffic_flow
=
np
.
array
(
self
.
actual_goto_excavator_traffic_flow
)
self
.
opt_goto_excavator_traffic_flow
=
np
.
array
(
self
.
opt_goto_excavator_traffic_flow
)
try
:
logger
.
info
(
"挖机实际车流_行"
)
logger
.
info
(
self
.
actual_goto_excavator_traffic_flow
[
trip
[
1
],
:])
logger
.
info
(
"挖机理想车流_行"
)
logger
.
info
(
self
.
opt_goto_excavator_traffic_flow
[
trip
[
1
],
:])
except
Exception
as
es
:
logger
.
info
(
"trip出错"
)
logger
.
info
(
"挖机id:"
)
logger
.
info
(
excavator
.
excavator_uuid_to_index_dict
)
logger
.
info
(
"卸点id:"
)
logger
.
info
(
dump
.
dump_uuid_to_index_dict
)
logger
.
info
(
f
"挖机实际车流:"
)
logger
.
info
(
self
.
actual_goto_excavator_traffic_flow
)
logger
.
info
(
f
"挖机理想车流:"
)
logger
.
info
(
self
.
opt_goto_excavator_traffic_flow
)
logger
.
info
(
"重载trip"
)
logger
.
info
(
trip
)
logger
.
info
(
es
)
logger
.
info
(
"物料类型"
)
if
truck_id
in
truck
.
truck_material_bind
:
logger
.
info
(
truck
.
truck_material_bind
[
truck_id
])
logger
.
info
(
"驶往挖机的运输成本"
)
logger
.
info
(
self
.
cost_to_excavator
)
logger
.
info
(
"挖机物料修正"
)
logger
.
info
(
truck
.
excavator_material_bind_modify
)
logger
.
info
(
"挖机优先级修正"
)
logger
.
info
(
excavator
.
excavator_priority_coefficient
)
except
Exception
as
es
:
logger
.
info
(
"车流及修正因子"
)
logger
.
info
(
es
)
# 计算目的地
try
:
if
truck_id
in
truck
.
truck_excavator_bind
:
target
=
excavator
.
excavator_uuid_to_index_dict
[
truck
.
truck_excavator_bind
[
truck_id
]]
logger
.
info
(
"矿卡已绑定挖机"
)
else
:
logger
.
info
(
"cost_to_excavator"
)
try
:
logger
.
info
(
"挖机实际车流_行"
)
logger
.
info
(
self
.
actual_goto_excavator_traffic_flow
[
trip
[
1
],
:])
logger
.
info
(
"挖机理想车流_行"
)
logger
.
info
(
self
.
opt_goto_excavator_traffic_flow
[
trip
[
1
],
:])
except
Exception
as
es
:
logger
.
info
(
"trip出错"
)
logger
.
info
(
trip
)
logger
.
info
(
es
)
logger
.
info
(
"物料类型"
)
if
truck_id
in
truck
.
truck_material_bind
:
logger
.
info
(
truck
.
truck_material_bind
[
truck_id
])
logger
.
info
(
"驶往挖机的运输成本"
)
logger
.
info
(
self
.
cost_to_excavator
)
logger
.
info
(
"挖机物料修正"
)
logger
.
info
(
truck
.
excavator_material_bind_modify
)
logger
.
info
(
"挖机优先级修正"
)
logger
.
info
(
excavator
.
excavator_priority_coefficient
)
except
Exception
as
es
:
logger
.
info
(
"车流及修正因子"
)
logger
.
info
(
es
)
dump_index
=
int
(
trip
[
1
])
dump_id
=
self
.
dump_uuid_to_index_dict
[
dump_index
]
if
rule3
and
rule4
:
# transport_value = self.cost_to_excavator[int(trip[1]), :]
transport_value
=
self
.
group
.
group_walk_to_excavator_cost
[
dump_index
,
:]
# 计算目的地
try
:
if
truck_id
in
truck
.
truck_excavator_bind
:
target
=
excavator
.
excavator_uuid_to_index_dict
[
truck
.
truck_excavator_bind
[
truck_id
]]
logger
.
info
(
"矿卡已绑定挖机"
)
else
:
logger
.
info
(
"cost_to_excavator"
)
logger
.
info
(
self
.
cost_to_excavator
)
group_dump_index
=
self
.
group
.
group_dump_uuid_to_index_dict
[
group_id
][
dump_id
]
dump_index
=
int
(
trip
[
1
])
dump_id
=
self
.
dump_uuid_to_index_dict
[
dump_index
]
# 提取group actual traffic flow
group_actual_goto_excavator_traffic_flow
=
self
.
group
.
group_actual_goto_excavator_traffic_flow
[
group_id
]
if
rule3
and
rule4
:
# transport_value = self.cost_to_excavator[int(trip[1]), :]
transport_value
=
self
.
group
.
group_walk_to_excavator_cost
[
group_id
]
else
:
# 提取group actual traffic flow
group_opt_goto_excavator_traffic_flow
=
self
.
group
.
group_opt_goto_excavator_traffic_flow
[
group_id
]
group_dump_index
=
self
.
group
.
group_dump_uuid_to_index_dict
[
group_id
][
dump_id
]
logger
.
info
(
"驶往挖机分组车流"
)
logger
.
info
(
group_actual_goto_excavator_traffic_flow
)
logger
.
info
(
group_opt_goto_excavator_traffic_flow
)
# 提取group actual traffic flow
group_actual_goto_excavator_traffic_flow
=
self
.
group
.
group_actual_goto_excavator_traffic_flow
[
group_id
]
transport_value
=
(
group_actual_goto_excavator_traffic_flow
[
group_dump_index
,
:]
+
0.001
)
\
/
(
group_opt_goto_excavator_traffic_flow
[
group_dump_index
,
:]
+
0.001
)
# 提取group actual traffic flow
group_opt_goto_excavator_traffic_flow
=
self
.
group
.
group_opt_goto_excavator_traffic_flow
[
group_id
]
logger
.
info
(
"驶往挖机分组车流"
)
logger
.
info
(
group_actual_goto_excavator_traffic_flow
)
logger
.
info
(
group_opt_goto_excavator_traffic_flow
)
# transport_value = (self.actual_goto_excavator_traffic_flow[trip[1], :] + 0.001) \
# / (self.opt_goto_excavator_traffic_flow[trip[1], :] + 0.001)
logger
.
info
(
"transport_value"
)
logger
.
info
(
transport_value
)
transport_value
=
(
group_actual_goto_excavator_traffic_flow
[
group_dump_index
,
:]
+
0.001
)
\
/
(
group_opt_goto_excavator_traffic_flow
[
group_dump_index
,
:]
+
0.001
)
# target = np.argmin(transport_value
# + truck.excavator_exclude_modify[truck_index]
# + truck.excavator_material_bind_modify[truck_index])
excavator_exclude_modify
=
self
.
group
.
group_excavator_exclude_modify
[
truck_id
]
excavator_material_bind_modify
=
self
.
group
.
group_excavator_material_bind_modify
[
truck_id
]
# transport_value = (self.actual_goto_excavator_traffic_flow[trip[1], :] + 0.001) \
# / (self.opt_goto_excavator_traffic_flow[trip[1], :] + 0.001)
logger
.
info
(
"transport_value"
)
logger
.
info
(
transport_value
)
logger
.
info
(
transport_value
)
target
=
np
.
argmin
(
transport_value
+
excavator_exclude_modify
)
# + excavator_material_bind_modify)
# target = np.argmin(transport_value
# + truck.excavator_exclude_modify[truck_index]
# + truck.excavator_material_bind_modify[truck_index])
target
=
self
.
excavator_uuid_to_index_dict
[
self
.
group
.
group_excavator_index_to_uuid_dict
[
target
]]
except
Exception
as
es
:
logger
.
info
(
"trip出错1"
)
logger
.
info
(
es
)
excavator_exclude_modify
=
self
.
group
.
group_excavator_exclude_modify
[
truck_id
]
excavator_material_bind_modify
=
self
.
group
.
group_excavator_material_bind_modify
[
truck_id
]
logger
.
info
(
transport_value
)
target
=
np
.
argmin
(
transport_value
.
T
+
excavator_exclude_modify
)
# + excavator_material_bind_modify)
try
:
logger
.
info
(
"车流比:"
)
logger
.
info
(
(
self
.
actual_goto_excavator_traffic_flow
[
trip
[
1
],
:]
+
0.001
)
/
(
self
.
opt_goto_excavator_traffic_flow
[
trip
[
1
],
:]
+
0.001
))
except
Exception
as
es
:
logger
.
info
(
"trip出错2"
)
logger
.
info
(
es
)
target
=
self
.
excavator_uuid_to_index_dict
[
self
.
group
.
group_excavator_index_to_uuid_dict
[
target
]]
except
Exception
as
es
:
logger
.
info
(
"trip出错1"
)
logger
.
info
(
es
)
logger
.
info
(
f
"目的地:{excavator.excavator_index_to_uuid_dict[target]}"
)
logger
.
info
(
"=========================================================="
)
try
:
logger
.
info
(
"车流比:"
)
logger
.
info
(
(
self
.
actual_goto_excavator_traffic_flow
[
trip
[
1
],
:]
+
0.001
)
/
(
self
.
opt_goto_excavator_traffic_flow
[
trip
[
1
],
:]
+
0.001
))
except
Exception
as
es
:
logger
.
info
(
"trip出错2"
)
logger
.
info
(
es
)
logger
.
info
(
f
"目的地:{excavator.excavator_index_to_uuid_dict[target]}"
)
return
target
logger
.
info
(
"=========================================================="
)
print
(
target
)
# except Exception as es:
# logger.error("truck_schedule,error")
# logger.error(es)
return
target
def
schedule_construct
(
self
):
...
...
@@ -848,25 +910,56 @@ class Dispatcher(WalkManage):
if
len
(
Seq
[
truck_index
])
>
0
:
# try:
# 获取矿卡id
truck_id
=
truck
.
truck_index_to_uuid_dict
[
truck_index
]
# 获取矿卡id
try
:
truck_id
=
truck
.
truck_index_to_uuid_dict
[
truck_index
]
except
Exception
as
es
:
logger
.
error
(
'error01'
)
logger
.
error
(
es
)
# 判断矿卡是否禁用
if
truck_id
in
truck
.
update_truck_disable_list
():
continue
try
:
# 获取矿卡当前任务
task
=
truck_current_task
[
truck
.
truck_index_to_uuid_dict
[
truck_index
]]
task
=
truck_current_task
[
truck
.
truck_index_to_uuid_dict
[
truck_index
]]
except
Exception
as
es
:
logger
.
error
(
'error02'
)
logger
.
error
(
es
)
try
:
# 矿卡结束当前派车计划后的目的地
end_eq_index
=
truck_current_trip
[
truck_index
][
1
]
end_eq_index
=
truck_current_trip
[
truck_index
][
1
]
except
Exception
as
es
:
logger
.
error
(
'error03'
)
logger
.
error
(
es
)
try
:
# 调用调度函数,得到最优目的地序号
target_eq_index
=
self
.
truck_schedule
(
truck
.
truck_index_to_uuid_dict
[
truck_index
])
target_eq_index
=
self
.
truck_schedule
(
truck
.
truck_index_to_uuid_dict
[
truck_index
])
# 写入Seq序列
Seq
[
truck_index
][
1
]
=
target_eq_index
except
Exception
as
es
:
logger
.
error
(
'error04'
)
logger
.
error
(
es
)
logger
.
error
(
"truck_index,uuid"
)
logger
.
error
(
truck_index
)
logger
.
error
(
truck
.
truck_index_to_uuid_dict
[
truck_index
])
# logger.("target_eq_index")
# logger.error(target_eq_index)
try
:
# 写入Seq序列
Seq
[
truck_index
][
1
]
=
target_eq_index
except
Exception
as
es
:
logger
.
error
(
'error05'
)
logger
.
error
(
es
)
logger
.
error
(
"target_eq_index"
)
logger
.
error
(
target_eq_index
)
logger
.
error
(
"target_eq_index,type"
)
logger
.
error
(
type
(
target_eq_index
))
# except Exception as es:
# logger.error("truck,task,end_eq_index,error")
# logger.error(es)
try
:
group_id
=
self
.
group
.
dispatch_truck_group
[
truck_id
]
except
Exception
as
es
:
...
...
@@ -913,12 +1006,16 @@ class Dispatcher(WalkManage):
for
i
in
range
(
len
(
Seq
)):
try
:
try
:
truck_id
=
truck
.
truck_index_to_uuid_dict
[
i
]
group_id
=
self
.
group
.
dispatch_truck_group
[
truck_id
]
truck_id
=
truck
.
truck_index_to_uuid_dict
[
i
]
group_id
=
self
.
group
.
dispatch_truck_group
[
truck_id
]
record
=
{
"truckId"
:
truck
.
truck_index_to_uuid_dict
[
i
]}
task
=
truck
.
get_truck_current_task
()[
truck
.
truck_index_to_uuid_dict
[
i
]]
except
Exception
as
es
:
logger
.
error
(
"truck_id,group_id,record,task出错"
)
logger
.
error
(
es
)
record
=
{
"truckId"
:
truck
.
truck_index_to_uuid_dict
[
i
]}
task
=
truck
.
get_truck_current_task
()[
truck
.
truck_index_to_uuid_dict
[
i
]]
if
task
in
empty_task_set
:
item
=
(
session_mysql
.
query
(
Dispatch
)
...
...
@@ -954,23 +1051,47 @@ class Dispatcher(WalkManage):
record
[
"createtime"
]
=
item
.
createtime
.
strftime
(
"
%
b
%
d,
%
Y
%
I:
%
M:
%
S
%
p"
)
elif
task
==
-
2
:
item
=
(
session_mysql
.
query
(
Dispatch
)
.
filter_by
(
exactor_id
=
excavator
.
excavator_index_to_uuid_dict
[
Seq
[
i
][
1
]],
group_id
=
group_id
,
isauto
=
1
,
isdeleted
=
0
,)
.
first
())
record
[
"exactorId"
]
=
item
.
exactor_id
record
[
"dumpId"
]
=
item
.
dump_id
record
[
"loadAreaId"
]
=
item
.
load_area_id
record
[
"unloadAreaId"
]
=
item
.
unload_area_id
record
[
"dispatchId"
]
=
item
.
id
record
[
"isdeleted"
]
=
False
record
[
"creator"
]
=
item
.
creator
record
[
"createtime"
]
=
item
.
createtime
.
strftime
(
"
%
b
%
d,
%
Y
%
I:
%
M:
%
S
%
p"
)
try
:
try
:
item
=
(
session_mysql
.
query
(
Dispatch
)
.
filter_by
(
exactor_id
=
excavator
.
excavator_index_to_uuid_dict
[
Seq
[
i
][
1
]],
# truck_id=truck_id,
group_id
=
group_id
,
isauto
=
1
,
isdeleted
=
0
,
)
.
first
())
except
Exception
as
es
:
logger
.
error
(
"task-2,error01"
)
logger
.
error
(
es
)
logger
.
error
(
'excavator.excavator_index_to_uuid_dict[Seq[i][1]]'
)
logger
.
error
(
excavator
.
excavator_index_to_uuid_dict
)
logger
.
error
(
"seq[i]"
)
logger
.
error
(
Seq
[
i
])
logger
.
error
(
"group_id"
)
logger
.
error
(
group_id
)
try
:
record
[
"exactorId"
]
=
item
.
exactor_id
record
[
"dumpId"
]
=
item
.
dump_id
record
[
"loadAreaId"
]
=
item
.
load_area_id
record
[
"unloadAreaId"
]
=
item
.
unload_area_id
record
[
"dispatchId"
]
=
item
.
id
record
[
"isdeleted"
]
=
False
record
[
"creator"
]
=
item
.
creator
record
[
"createtime"
]
=
item
.
createtime
.
strftime
(
"
%
b
%
d,
%
Y
%
I:
%
M:
%
S
%
p"
)
except
Exception
as
es
:
logger
.
error
(
"task-2,error02"
)
logger
.
error
(
es
)
except
Exception
as
es
:
logger
.
error
(
"task为-2时error"
)
logger
.
error
(
es
)
else
:
pass
redis5
.
set
(
truck
.
truck_index_to_uuid_dict
[
i
],
str
(
json
.
dumps
(
record
)))
except
Exception
as
es
:
logger
.
error
(
"调度结果写入异常-redis写入异常"
)
logger
.
error
(
f
"调度结果:{Seq}"
)
...
...
@@ -1316,46 +1437,46 @@ class Group(WalkManage):
# 下面三个函数保证程序定期执行,不用管他
def
process
(
dispatcher
):
try
:
#
try:
# 更新周期参数
logger
.
info
(
"#####################################周期更新开始#####################################"
)
period_para_update
()
if
get_value
(
"dynamic_dump_num"
)
*
get_value
(
"dynamic_excavator_num"
)
==
0
:
raise
Exception
(
"无动态派车计划可用"
)
return
if
get_value
(
"dynamic_truck_num"
)
==
0
:
raise
Exception
(
"无动态派车可用矿卡"
)
return
# para_process(dispatcher)
#
# state_process(dispatcher)
# 清空数据库缓存
session_mysql
.
commit
()
session_mysql
.
flush
()
# 清空数据库缓存
session_postgre
.
commit
()
session_postgre
.
flush
()
#
# # 周期更新
# dispatcher.para_period_update()
# 周期更新
dispatcher
.
dispatcher_period_update
()
# 参数重置
dispatcher
.
sim_para_reset
()
logger
.
info
(
"#####################################周期更新开始#####################################"
)
# try:
period_para_update
()
if
get_value
(
"dynamic_dump_num"
)
*
get_value
(
"dynamic_excavator_num"
)
==
0
:
raise
Exception
(
"无动态派车计划可用"
)
return
if
get_value
(
"dynamic_truck_num"
)
==
0
:
raise
Exception
(
"无动态派车可用矿卡"
)
return
# para_process(dispatcher)
#
# state_process(dispatcher)
# 清空数据库缓存
session_mysql
.
commit
()
session_mysql
.
flush
()
# 清空数据库缓存
session_postgre
.
commit
()
session_postgre
.
flush
()
#
# # 周期更新
# dispatcher.para_period_update()
# 周期更新
dispatcher
.
dispatcher_period_update
()
# 调度计算
dispatcher
.
schedule_construc
t
()
# 参数重置
dispatcher
.
sim_para_rese
t
()
except
Exception
as
es
:
logger
.
error
(
"更新不及时"
)
logger
.
error
(
es
)
# try:
# 调度计算
dispatcher
.
schedule_construct
()
# except Exception as es:
# logger.error("更新不及时")
# logger.error(es)
logger
.
info
(
"#####################################周期更新结束#####################################"
)
...
...
tables.py
View file @
435b229f
...
...
@@ -9,12 +9,22 @@
# 存储数据库表结构
from
settings
import
*
from
sqlalchemy
import
Column
,
create_engine
from
sqlalchemy
import
VARCHAR
,
DateTime
,
Float
,
Integer
,
BOOLEAN
from
sqlalchemy.orm
import
sessionmaker
,
scoped_session
from
sqlalchemy.ext.declarative
import
declarative_base
from
urllib.parse
import
quote
import
json
json_file
=
"config.json"
with
open
(
json_file
)
as
f
:
mysql_config
=
json
.
load
(
f
)[
"mysql"
]
with
open
(
json_file
)
as
f
:
postgre_config
=
json
.
load
(
f
)[
"postgresql"
]
# 创建对象的基类:
...
...
@@ -30,33 +40,6 @@ engine_postgre = create_engine(
%
quote
(
"Huituo@123"
)
)
# 创建DBsession_mysql类型:
DBsession_mysql
=
sessionmaker
(
bind
=
engine_mysql
)
DBsession_mysql
=
scoped_session
(
DBsession_mysql
)
DBsession_postgre
=
sessionmaker
(
bind
=
engine_postgre
)
DBsession_postgre
=
scoped_session
(
DBsession_postgre
)
# 创建session_mysql对象:
session_mysql
=
DBsession_mysql
()
session_mysql
.
expire_on_commit
=
False
session_postgre
=
DBsession_postgre
()
session_postgre
.
expire_on_commit
=
False
# # 创建对象的基类:
# Base = declarative_base()
#
# # 初始化数据库连接:
# engine_mysql = create_engine('mysql+mysqlconnector://root:Huituo@123@192.168.28.111:3306/waytous')
#
# engine_postgre = create_engine('postgresql://postgres:Huituo@123@192.168.28.111:5432/shenbao_2021520')
#
# # 创建DBsession_mysql类型:
# DBsession_mysql = sessionmaker(bind=engine_mysql)
#
...
...
@@ -69,7 +52,63 @@ session_postgre.expire_on_commit = False
# # 创建session_mysql对象:
# session_mysql = DBsession_mysql()
#
# session_mysql.expire_on_commit = False
#
# session_postgre = DBsession_postgre()
#
# session_postgre.expire_on_commit = False
# 创建对象的基类:
Base
=
declarative_base
()
sql_str
=
str
(
"mysql+mysqlconnector://"
+
mysql_config
[
"user"
]
+
":
%
s@"
+
mysql_config
[
"host"
]
+
\
":"
+
mysql_config
[
"port"
]
+
"/"
+
mysql_config
[
"database"
])
postgre_str
=
str
(
"postgresql://"
+
postgre_config
[
"user"
]
+
":
%
s@"
+
postgre_config
[
"host"
]
+
\
":"
+
postgre_config
[
"port"
]
+
"/"
+
postgre_config
[
"database"
])
try
:
engine_mysql
=
create_engine
(
# "mysql+mysqlconnector://root:%s@192.168.28.111:3306/waytous"
# % quote("Huituo@123")
# "mysql+mysqlconnector://" + mysql_config["user"] + ":" + mysql_config["password"] + "@" + mysql_config[
# "host"] + ":" + mysql_config["port"] + "/" + mysql_config["database"]
sql_str
%
quote
(
mysql_config
[
"password"
])
)
engine_postgre
=
create_engine
(
# "postgresql://postgres:%s@192.168.28.111:5432/shenbao_2021520"
# % quote("Huituo@123")
# "postgresql://" + postgre_config["user"] + ":" + postgre_config["password"] + "@" + postgre_config[
# "host"] + ":" + postgre_config["port"] + "/" + postgre_config["database"]
postgre_str
%
quote
(
postgre_config
[
"password"
])
)
# 创建DBsession_mysql类型:
DBsession_mysql
=
sessionmaker
(
bind
=
engine_mysql
)
DBsession_mysql
=
scoped_session
(
DBsession_mysql
)
DBsession_postgre
=
sessionmaker
(
bind
=
engine_postgre
)
DBsession_postgre
=
scoped_session
(
DBsession_postgre
)
# 创建session_mysql对象:
session_mysql
=
DBsession_mysql
()
session_mysql
.
expire_on_commit
=
False
session_postgre
=
DBsession_postgre
()
session_postgre
.
expire_on_commit
=
False
except
Exception
as
es
:
logger
.
error
(
"数据库连接失败"
)
logger
.
error
(
es
)
# 定义对象:
...
...
traffic_flow/traffic_flow_info.py
View file @
435b229f
...
...
@@ -13,6 +13,7 @@ from equipment.excavator import ExcavatorInfo
from
equipment.dump
import
DumpInfo
from
equipment.truck
import
TruckInfo
# 车流规划类
class
Traffic_para
(
WalkManage
):
def
__init__
(
self
,
num_of_load_area
,
num_of_unload_area
,
num_of_excavator
,
num_of_dump
,
truck
):
...
...
@@ -160,22 +161,36 @@ class Traffic_para(WalkManage):
cost_to_dump
=
self
.
path_planner
.
cost_to_dump
cost_to_excavator
=
self
.
path_planner
.
cost_to_excavator
logger
.
info
(
"cost_to_dump"
)
logger
.
info
(
cost_to_dump
)
logger
.
info
(
"cost_to_excavator"
)
logger
.
info
(
cost_to_excavator
)
logger
.
info
(
"self.goto_excavator_factor"
)
logger
.
info
(
self
.
goto_excavator_factor
)
logger
.
info
(
"self.goto_dump_factor"
)
logger
.
info
(
self
.
goto_dump_factor
)
logger
.
info
(
"dynamic_dump_num"
)
logger
.
info
(
get_value
(
"dynamic_dump_num"
))
logger
.
info
(
"dynamic_excavator_num"
)
logger
.
info
(
get_value
(
"dynamic_excavator_num"
))
# ga
# 路网信息读取
for
dump_index
in
range
(
get_value
(
"dynamic_dump_num"
)):
for
excavator_index
in
range
(
get_value
(
"dynamic_excavator_num"
)):
for
dump_index
in
range
(
get_value
(
"dynamic_dump_num"
)
-
1
):
for
excavator_index
in
range
(
get_value
(
"dynamic_excavator_num"
)
-
1
):
self
.
goto_excavator_factor
[
dump_index
][
excavator_index
]
=
\
(
cost_to_excavator
[
dump_index
][
excavator_index
]
/
(
empty_speed
*
1000
))
/
self
.
payload
self
.
goto_dump_factor
[
excavator_index
][
dump_index
]
=
\
(
cost_to_dump
[
excavator_index
][
dump_index
]
/
(
heavy_speed
*
1000
))
/
self
.
payload
logger
.
info
(
"self.goto_dump_factor"
)
logger
.
info
(
self
.
goto_dump_factor
)
logger
.
info
(
"self.goto_dump_factor"
)
logger
.
info
(
self
.
goto_dump_factor
)
#
logger.info("self.goto_dump_factor")
#
logger.info(self.goto_dump_factor)
#
logger.info("self.goto_dump_factor")
#
logger.info(self.goto_dump_factor)
except
Exception
as
es
:
logger
.
error
(
es
)
logger
.
error
(
"车流规划信息计算异常"
)
logger
.
error
(
es
)
# 初始化车流规划类
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment