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
936b8259
Commit
936b8259
authored
Aug 10, 2022
by
张晓彤
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复字典Bug,添加物料管控
parent
b4797ca0
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
230 additions
and
74 deletions
+230
-74
algorithm.py
alg/algorithm.py
+3
-0
dispatcher.py
core/dispatcher.py
+5
-1
group.py
core/group.py
+77
-6
dispatchInfo.py
data/dispatchInfo.py
+123
-55
dump.py
equipment/dump.py
+15
-10
excavator.py
equipment/excavator.py
+1
-0
path_planner_2.py
path_plan/path_planner_2.py
+1
-1
tables.py
tables.py
+5
-1
No files found.
alg/algorithm.py
View file @
936b8259
...
@@ -180,6 +180,7 @@ class ExpectedTime(AlgorithmBase):
...
@@ -180,6 +180,7 @@ class ExpectedTime(AlgorithmBase):
################################################ 矿卡启动 ###############################################
################################################ 矿卡启动 ###############################################
try
:
try
:
self
.
logger
.
info
(
f
'矿卡 {truck_id}'
)
self
.
logger
.
info
(
"矿卡状态:矿卡启动或故障恢复"
)
self
.
logger
.
info
(
"矿卡状态:矿卡启动或故障恢复"
)
self
.
logger
.
info
(
f
"涉及挖机:{list(DeviceMap.excavator_uuid_to_index_dict.keys())}"
)
self
.
logger
.
info
(
f
"涉及挖机:{list(DeviceMap.excavator_uuid_to_index_dict.keys())}"
)
except
Exception
as
es
:
except
Exception
as
es
:
...
@@ -226,6 +227,7 @@ class ExpectedTime(AlgorithmBase):
...
@@ -226,6 +227,7 @@ class ExpectedTime(AlgorithmBase):
################################################ 矿卡空载 ###############################################
################################################ 矿卡空载 ###############################################
try
:
try
:
self
.
logger
.
info
(
f
'矿卡 {truck_id}'
)
self
.
logger
.
info
(
"矿卡状态:矿卡空载"
)
self
.
logger
.
info
(
"矿卡状态:矿卡空载"
)
self
.
logger
.
info
(
f
"涉及卸载设备:{list(DeviceMap.dump_uuid_to_index_dict.keys())}"
)
self
.
logger
.
info
(
f
"涉及卸载设备:{list(DeviceMap.dump_uuid_to_index_dict.keys())}"
)
except
Exception
as
es
:
except
Exception
as
es
:
...
@@ -279,6 +281,7 @@ class ExpectedTime(AlgorithmBase):
...
@@ -279,6 +281,7 @@ class ExpectedTime(AlgorithmBase):
################################################ 矿卡重载 ###############################################
################################################ 矿卡重载 ###############################################
try
:
try
:
self
.
logger
.
info
(
f
'矿卡 {truck_id}'
)
self
.
logger
.
info
(
"矿卡状态:矿卡重载"
)
self
.
logger
.
info
(
"矿卡状态:矿卡重载"
)
self
.
logger
.
info
(
f
"涉及挖机设备:{list(DeviceMap.excavator_uuid_to_index_dict.keys())}"
)
self
.
logger
.
info
(
f
"涉及挖机设备:{list(DeviceMap.excavator_uuid_to_index_dict.keys())}"
)
except
Exception
as
es
:
except
Exception
as
es
:
...
...
core/dispatcher.py
View file @
936b8259
...
@@ -57,7 +57,7 @@ class Dispatcher:
...
@@ -57,7 +57,7 @@ class Dispatcher:
groups
=
DispatchInfo
.
get_all_group
()
groups
=
DispatchInfo
.
get_all_group
()
for
group_id
in
groups
:
for
group_id
in
groups
:
if
group_id
not
in
self
.
group_list
:
if
group_id
not
in
self
.
group_list
:
group
=
Group
(
group_id
,
self
.
truck
,
self
.
pre_sch
)
group
=
Group
(
group_id
,
self
.
truck
,
self
.
pre_sch
,
self
.
excavator
,
self
.
dump
)
self
.
group_list
[
group_id
]
=
group
self
.
group_list
[
group_id
]
=
group
def
group_info_update
(
self
):
def
group_info_update
(
self
):
...
@@ -86,6 +86,10 @@ class Dispatcher:
...
@@ -86,6 +86,10 @@ class Dispatcher:
self
.
logger
.
error
(
f
'分组{group.group_id} 调度异常'
)
self
.
logger
.
error
(
f
'分组{group.group_id} 调度异常'
)
self
.
logger
.
info
(
f
'调度分组: {group.group_id} {DispatchInfo.group_name[group.group_id]}'
)
self
.
logger
.
info
(
f
'调度分组: {group.group_id} {DispatchInfo.group_name[group.group_id]}'
)
self
.
logger
.
info
(
"组内挖机"
)
self
.
logger
.
info
(
group
.
excavator
)
self
.
logger
.
info
(
"组内卸点"
)
self
.
logger
.
info
(
group
.
dump
)
self
.
submission
.
group_dispatch_to_redis
(
group
,
truck_dispatch_plan_dict
)
self
.
submission
.
group_dispatch_to_redis
(
group
,
truck_dispatch_plan_dict
)
...
...
core/group.py
View file @
936b8259
...
@@ -59,7 +59,7 @@ class Group:
...
@@ -59,7 +59,7 @@ class Group:
"""
"""
class for group instance.
class for group instance.
"""
"""
def
__init__
(
self
,
group_id
,
truck
,
pre_sch
):
def
__init__
(
self
,
group_id
,
truck
,
pre_sch
,
excavator_info
,
dump_info
):
""" Generate a group obj.
""" Generate a group obj.
:param group_id: (uuid) group_id
:param group_id: (uuid) group_id
"""
"""
...
@@ -69,6 +69,8 @@ class Group:
...
@@ -69,6 +69,8 @@ class Group:
self
.
group_mode
=
1
self
.
group_mode
=
1
self
.
truck
=
truck
self
.
truck
=
truck
self
.
pre_sch
=
pre_sch
self
.
pre_sch
=
pre_sch
self
.
excavator_info
=
excavator_info
self
.
dump_info
=
dump_info
# group devices
# group devices
self
.
excavator
=
{}
# excavator_id -> unload_area_id
self
.
excavator
=
{}
# excavator_id -> unload_area_id
...
@@ -95,6 +97,9 @@ class Group:
...
@@ -95,6 +97,9 @@ class Group:
# truck info.
# truck info.
self
.
truck_info_list
=
{}
self
.
truck_info_list
=
{}
# material control
self
.
group_walk_available
=
None
def
update_group_mode
(
self
):
def
update_group_mode
(
self
):
"""
"""
update group mode.
update group mode.
...
@@ -121,6 +126,10 @@ class Group:
...
@@ -121,6 +126,10 @@ class Group:
self
.
dump
=
DispatchInfo
.
get_dump
(
self
.
group_id
)
self
.
dump
=
DispatchInfo
.
get_dump
(
self
.
group_id
)
self
.
truck_set
=
DispatchInfo
.
get_truck_set
(
self
.
group_id
)
self
.
truck_set
=
DispatchInfo
.
get_truck_set
(
self
.
group_id
)
self
.
logger
.
info
(
f
'group excavator {self.excavator}'
)
self
.
logger
.
info
(
f
'group dump {self.dump}'
)
def
update_group_road_network
(
self
):
def
update_group_road_network
(
self
):
"""
"""
update group road network.
update group road network.
...
@@ -158,13 +167,58 @@ class Group:
...
@@ -158,13 +167,58 @@ class Group:
for
i
in
range
(
len
(
self
.
truck_set
)):
for
i
in
range
(
len
(
self
.
truck_set
)):
self
.
truck_uuid_index_dict
[
list
(
self
.
truck_set
)[
i
]]
=
i
self
.
truck_uuid_index_dict
[
list
(
self
.
truck_set
)[
i
]]
=
i
self
.
excavator_uuid_index_dict
=
bidict
(
self
.
excavator_uuid_index_dict
)
self
.
excavator_uuid_index_dict
=
bidict
(
DispatchInfo
.
excavator_uuid_to_index_dict
[
self
.
group_id
])
self
.
unload_area_uuid_index_dict
=
bidict
(
self
.
unload_area_uuid_index_dict
)
self
.
unload_area_uuid_index_dict
=
bidict
(
DispatchInfo
.
unload_area_uuid_to_index_dict
[
self
.
group_id
])
self
.
truck_uuid_index_dict
=
bidict
(
self
.
truck_uuid_index_dict
)
self
.
dump_uuid_index_dict
=
bidict
(
DispatchInfo
.
dump_uuid_to_index_dict
[
self
.
group_id
])
# self.excavator_uuid_index_dict = bidict(self.excavator_uuid_index_dict)
# self.unload_area_uuid_index_dict = bidict(self.unload_area_uuid_index_dict)
# self.truck_uuid_index_dict = bidict(self.truck_uuid_index_dict)
self
.
dump_uuid_index_dict
=
bidict
(
self
.
dump_uuid_index_dict
)
self
.
dump_uuid_index_dict
=
bidict
(
self
.
dump_uuid_index_dict
)
# group_excavator_dict = {group_1: {excavator_1: load_area_1}, group_2: {excavator_2: load_area_2}}
# group_excavator_dict = {group_1: {excavator_1: load_area_1}, group_2: {excavator_2: load_area_2}}
def
update_device_material
(
self
):
"""
update group device material.
:return:
"""
# material control
self
.
group_walk_available
=
np
.
ones_like
(
self
.
to_unload_area_distance
)
# try:
self
.
logger
.
info
(
"物料兼容性"
)
self
.
logger
.
info
(
DispatchInfo
.
group_name
[
self
.
group_id
])
for
dump_id
in
self
.
dump
:
for
excavator_id
in
self
.
excavator
:
# load_area_id = DispatchInfo.excavator_load_dict[excavator_id]
# unload_area_id = DispatchInfo.dump_unload_area_dict[dump_id]
excavator_index
=
self
.
excavator_uuid_index_dict
[
excavator_id
]
dump_index
=
self
.
dump_uuid_index_dict
[
dump_id
]
# load_area_index = get_value("load_area_uuid_to_index_dict")[load_area_id]
# unload_area_index = get_value("unload_area_uuid_to_index_dict")[unload_area_id]
# 两设备处理物料不同, 相关路网不可通行
# self.logger.info(excavator_id)
# self.logger.info(self.excavator_info.excavator_material)
self
.
logger
.
info
(
self
.
excavator_info
.
excavator_material
[
excavator_id
])
# self.logger.info(dump_id)
# self.logger.info(self.dump_info.dump_material)
self
.
logger
.
info
(
self
.
dump_info
.
dump_material
[
dump_id
])
if
self
.
excavator_info
.
excavator_material
[
excavator_id
]
not
in
self
.
dump_info
.
dump_material
[
dump_id
]:
self
.
group_walk_available
[
excavator_index
][
dump_index
]
=
10
self
.
logger
.
info
(
"group_walk_available"
)
self
.
logger
.
info
(
self
.
group_walk_available
)
# except Exception as es:
# self.logger.info(es)
# self.logger.info("error-12")
def
info_update
(
self
):
def
info_update
(
self
):
"""
"""
update group info.
update group info.
...
@@ -174,6 +228,7 @@ class Group:
...
@@ -174,6 +228,7 @@ class Group:
self
.
update_group_device
()
self
.
update_group_device
()
self
.
update_group_device_map
()
self
.
update_group_device_map
()
self
.
update_group_road_network
()
self
.
update_group_road_network
()
self
.
update_device_material
()
def
group_dispatch
(
self
,
solver
:
object
):
def
group_dispatch
(
self
,
solver
:
object
):
"""
"""
...
@@ -216,12 +271,28 @@ class Group:
...
@@ -216,12 +271,28 @@ class Group:
if
truck_task
in
[
0
,
1
,
2
]:
if
truck_task
in
[
0
,
1
,
2
]:
try
:
try
:
next_excavator_id
=
get_value
(
"excavator_index_to_uuid_dict"
)[
truck_trip
[
-
1
]]
next_unload_area_value
=
s
.
solve
(
truck_info
)
next_unload_area_value
=
s
.
solve
(
truck_info
)
self
.
logger
.
info
(
f
'车辆 {i}'
)
self
.
logger
.
info
(
f
'group distance {self.to_unload_area_distance}'
)
self
.
logger
.
info
(
f
'walk available {self.group_walk_available}'
)
self
.
logger
.
info
(
self
.
unload_area_uuid_index_dict
)
self
.
logger
.
info
(
self
.
excavator_uuid_index_dict
)
tmp
=
self
.
group_walk_available
[
self
.
excavator_uuid_index_dict
[
next_excavator_id
],
:]
.
flatten
()
self
.
logger
.
info
(
f
'group_walk_available_pick {tmp}'
)
self
.
logger
.
info
(
f
'next_excavator_id {next_excavator_id}'
)
self
.
logger
.
info
(
next_unload_area_value
)
next_unload_area_value
*=
self
.
group_walk_available
[
self
.
excavator_uuid_index_dict
[
next_excavator_id
],
:]
.
flatten
()
self
.
logger
.
info
(
next_unload_area_value
)
min_index
=
np
.
argmin
(
next_unload_area_value
)
min_index
=
np
.
argmin
(
next_unload_area_value
)
next_unload_area_id
=
self
.
unload_area_uuid_index_dict
.
inverse
[
min_index
]
next_unload_area_id
=
self
.
unload_area_uuid_index_dict
.
inverse
[
min_index
]
# next_excavator_id = self.excavator_uuid_index_dict.inverse[truck_trip[-1]]
# next_excavator_id = self.excavator_uuid_index_dict.inverse[truck_trip[-1]]
next_excavator_id
=
get_value
(
"excavator_index_to_uuid_dict"
)[
truck_trip
[
-
1
]]
truck_dispatch
[
i
]
=
[
next_excavator_id
,
next_unload_area_id
]
truck_dispatch
[
i
]
=
[
next_excavator_id
,
next_unload_area_id
]
except
Exception
as
es
:
except
Exception
as
es
:
...
...
data/dispatchInfo.py
View file @
936b8259
...
@@ -9,6 +9,7 @@ import numpy as np
...
@@ -9,6 +9,7 @@ import numpy as np
from
settings
import
*
from
settings
import
*
import
pandas
as
pd
import
pandas
as
pd
from
tables
import
DispatchMatch
,
DispatchEquipment
from
tables
import
DispatchMatch
,
DispatchEquipment
import
bidict
logger
=
get_logger
(
"zxt.dispatchInfo"
)
logger
=
get_logger
(
"zxt.dispatchInfo"
)
...
@@ -68,6 +69,12 @@ class DispatchInfo:
...
@@ -68,6 +69,12 @@ class DispatchInfo:
# 获取卸载区与rate之间的关系 -->> unload_area_id -> rate
# 获取卸载区与rate之间的关系 -->> unload_area_id -> rate
unload_rate_dict
=
{}
unload_rate_dict
=
{}
# 各分组设备映射
excavator_uuid_to_index_dict
=
{}
dump_uuid_to_index_dict
=
{}
load_area_uuid_to_index_dict
=
{}
unload_area_uuid_to_index_dict
=
{}
@classmethod
@classmethod
def
reset
(
cls
):
def
reset
(
cls
):
"""
"""
...
@@ -110,6 +117,11 @@ class DispatchInfo:
...
@@ -110,6 +117,11 @@ class DispatchInfo:
cls
.
unload_rate_dict
=
{}
cls
.
unload_rate_dict
=
{}
cls
.
excavator_uuid_to_index_dict
=
{}
cls
.
dump_uuid_to_index_dict
=
{}
cls
.
load_area_uuid_to_index_dict
=
{}
cls
.
unload_area_uuid_to_index_dict
=
{}
# cls.group_unload_area_dict = {} # cls.group_unload_area_dict.keys() 相当于所有的team_id
# cls.group_unload_area_dict = {} # cls.group_unload_area_dict.keys() 相当于所有的team_id
# cls.unload_area_group_dict = {} # cls.unload_area_group_dict.keys() 相当于所有的卸载区 unload_area_id
# cls.unload_area_group_dict = {} # cls.unload_area_group_dict.keys() 相当于所有的卸载区 unload_area_id
# cls.group_excavator_dict = {}
# cls.group_excavator_dict = {}
...
@@ -209,7 +221,7 @@ class DispatchInfo:
...
@@ -209,7 +221,7 @@ class DispatchInfo:
cls
.
unload_area_group_dict
[
item
.
unload_area_id
]
=
item
.
group_id
cls
.
unload_area_group_dict
[
item
.
unload_area_id
]
=
item
.
group_id
# add dump
# add dump
if
item
.
dum
p_id
not
in
cls
.
group_dump_dict
.
keys
():
if
item
.
grou
p_id
not
in
cls
.
group_dump_dict
.
keys
():
cls
.
group_dump_dict
[
item
.
group_id
]
=
[
item
.
dump_id
]
cls
.
group_dump_dict
[
item
.
group_id
]
=
[
item
.
dump_id
]
else
:
else
:
if
item
.
dump_id
not
in
cls
.
group_dump_dict
[
item
.
group_id
]:
if
item
.
dump_id
not
in
cls
.
group_dump_dict
[
item
.
group_id
]:
...
@@ -304,61 +316,117 @@ class DispatchInfo:
...
@@ -304,61 +316,117 @@ class DispatchInfo:
@desc:更新路网距离,返回矩阵格式数据
@desc:更新路网距离,返回矩阵格式数据
"""
"""
logger
=
get_logger
(
"zxt.update_route_distance"
)
logger
=
get_logger
(
"zxt.update_route_distance"
)
try
:
groups
=
cls
.
group_excavator_dict
.
keys
()
for
item
in
groups
:
try
:
# 每个组的 excavator_id 及对应 load_area_id
excavator_ids
=
cls
.
group_excavator_dict
[
item
]
load_areas
=
[]
for
excavator_id
in
excavator_ids
:
load_areas
.
append
(
cls
.
excavator_load_dict
[
excavator_id
])
# 每个组的unload_areas
unload_areas
=
cls
.
group_unload_area_dict
[
item
]
except
Exception
as
es
:
logger
.
error
(
"装卸载区统计异常"
)
logger
.
error
(
es
)
try
:
# unload->load distance
cls
.
excavator_uuid_to_index_dict
=
{}
unload_load_distance
=
np
.
zeros
((
len
(
unload_areas
),
len
(
load_areas
)))
cls
.
dump_uuid_to_index_dict
=
{}
for
i
in
range
(
len
(
unload_areas
)):
cls
.
load_area_uuid_to_index_dict
=
{}
for
j
in
range
(
len
(
load_areas
)):
cls
.
unload_area_uuid_to_index_dict
=
{}
distance
=
int
(
session_postgre
.
query
(
WalkTime
)
.
filter_by
(
unload_area_id
=
unload_areas
[
i
],
load_area_id
=
load_areas
[
j
])
.
first
()
.
to_load_distance
)
unload_load_distance
[
i
][
j
]
=
distance
# try:
cls
.
load_distance
[
item
]
=
unload_load_distance
groups
=
cls
.
group_excavator_dict
.
keys
()
for
item
in
groups
:
except
Exception
as
es
:
try
:
logger
.
error
(
f
'{item} 分组装载路网异常'
)
cls
.
load_distance
[
item
]
=
np
.
full
((
len
(
unload_areas
),
len
(
load_areas
)),
10000
)
# 每个组的 excavator_id 及对应 load_area_id
logger
.
error
(
es
)
excavator_ids
=
cls
.
group_excavator_dict
[
item
]
session_postgre
.
rollback
()
load_areas
=
[]
session_mysql
.
rollback
()
for
excavator_id
in
excavator_ids
:
load_areas
.
append
(
cls
.
excavator_load_dict
[
excavator_id
])
try
:
# 每个组的unload_areas
# load->unload distance
unload_areas
=
cls
.
group_unload_area_dict
[
item
]
load_unload_distance
=
np
.
zeros
((
len
(
load_areas
),
len
(
unload_areas
)))
for
i
in
range
(
len
(
load_areas
)):
except
Exception
as
es
:
for
j
in
range
(
len
(
unload_areas
)):
logger
.
error
(
"装卸载区统计异常"
)
distance
=
int
(
session_postgre
.
query
(
WalkTime
)
.
filter_by
(
load_area_id
=
load_areas
[
i
],
unload_area_id
=
unload_areas
[
j
])
.
first
()
.
to_unload_distance
)
logger
.
error
(
es
)
load_unload_distance
[
i
][
j
]
=
distance
cls
.
unload_distance
[
item
]
=
load_unload_distance
group_excavator_uuid_to_index
=
{}
group_dump_uuid_to_index
=
{}
except
Exception
as
es
:
group_load_area_uuid_to_index
=
{}
logger
.
error
(
f
'{item} 分组卸载路网异常'
)
group_unload_area_uuid_to_index
=
{}
cls
.
unload_distance
[
item
]
=
np
.
full
((
len
(
load_areas
),
len
(
unload_areas
)),
10000
)
logger
.
error
(
es
)
try
:
session_postgre
.
rollback
()
session_mysql
.
rollback
()
# # unload->load distance
# unload_load_distance = np.zeros((len(unload_areas), len(load_areas)))
except
Exception
as
es
:
# for i in range(len(unload_areas)):
logger
.
error
(
"路网距离更新异常-调度部分和路网部分不一致"
)
# for j in range(len(load_areas)):
logger
.
error
(
es
)
# distance = int(session_postgre.query(WalkTime).filter_by(unload_area_id=unload_areas[i], load_area_id=load_areas[j]).first().to_load_distance)
# unload_load_distance[i][j] = distance
# cls.load_distance[item] = unload_load_distance
group_excavator_count
=
0
group_dump_count
=
0
group_load_area_count
=
0
group_unload_area_count
=
0
# unload->load distance
unload_load_distance
=
np
.
zeros
((
len
(
cls
.
group_dump_dict
[
item
]),
len
(
cls
.
group_excavator_dict
[
item
])))
for
excavator_id
in
cls
.
group_excavator_dict
[
item
]:
group_dump_count
=
0
group_unload_area_count
=
0
for
dump_id
in
cls
.
group_dump_dict
[
item
]:
unload_area_id
=
cls
.
dump_unload_area_dict
[
dump_id
]
load_area_id
=
cls
.
excavator_load_dict
[
excavator_id
]
distance
=
int
(
session_postgre
.
query
(
WalkTime
)
.
filter_by
(
unload_area_id
=
unload_area_id
,
load_area_id
=
load_area_id
)
.
first
()
.
to_load_distance
)
unload_load_distance
[
group_dump_count
][
group_excavator_count
]
=
distance
if
excavator_id
not
in
group_excavator_uuid_to_index
:
group_excavator_uuid_to_index
[
excavator_id
]
=
group_excavator_count
if
dump_id
not
in
group_dump_uuid_to_index
:
group_dump_uuid_to_index
[
dump_id
]
=
group_dump_count
if
load_area_id
not
in
group_load_area_uuid_to_index
:
group_load_area_uuid_to_index
[
load_area_id
]
=
group_load_area_count
if
unload_area_id
not
in
group_unload_area_uuid_to_index
:
group_unload_area_uuid_to_index
[
unload_area_id
]
=
group_unload_area_count
cls
.
excavator_uuid_to_index_dict
[
item
]
=
group_excavator_uuid_to_index
cls
.
dump_uuid_to_index_dict
[
item
]
=
group_dump_uuid_to_index
cls
.
load_area_uuid_to_index_dict
[
item
]
=
group_load_area_uuid_to_index
cls
.
unload_area_uuid_to_index_dict
[
item
]
=
group_unload_area_uuid_to_index
group_dump_count
+=
1
group_unload_area_count
+=
1
group_excavator_count
+=
1
group_load_area_count
+=
1
cls
.
load_distance
[
item
]
=
unload_load_distance
except
Exception
as
es
:
logger
.
error
(
f
'{item} 分组装载路网异常'
)
cls
.
load_distance
[
item
]
=
np
.
full
((
len
(
unload_areas
),
len
(
load_areas
)),
10000
)
logger
.
error
(
es
)
session_postgre
.
rollback
()
session_mysql
.
rollback
()
try
:
# load->unload distance
load_unload_distance
=
np
.
zeros
((
len
(
load_areas
),
len
(
unload_areas
)))
for
i
in
range
(
len
(
load_areas
)):
for
j
in
range
(
len
(
unload_areas
)):
distance
=
int
(
session_postgre
.
query
(
WalkTime
)
.
filter_by
(
load_area_id
=
load_areas
[
i
],
unload_area_id
=
unload_areas
[
j
])
.
first
()
.
to_unload_distance
)
load_unload_distance
[
i
][
j
]
=
distance
cls
.
unload_distance
[
item
]
=
load_unload_distance
except
Exception
as
es
:
logger
.
error
(
f
'{item} 分组卸载路网异常'
)
cls
.
unload_distance
[
item
]
=
np
.
full
((
len
(
load_areas
),
len
(
unload_areas
)),
10000
)
logger
.
error
(
es
)
session_postgre
.
rollback
()
session_mysql
.
rollback
()
# except Exception as es:
# logger.error("路网距离更新异常-调度部分和路网部分不一致")
# logger.error(es)
@classmethod
@classmethod
def
get_all_group
(
cls
):
def
get_all_group
(
cls
):
...
...
equipment/dump.py
View file @
936b8259
...
@@ -117,16 +117,21 @@ class DumpInfo(WalkManage):
...
@@ -117,16 +117,21 @@ class DumpInfo(WalkManage):
def
update_dump_material
(
self
):
def
update_dump_material
(
self
):
self
.
dump_material
=
{}
self
.
dump_material
=
{}
for
dump_id
in
get_value
(
"dynamic_dump_set"
):
for
dump_id
in
get_value
(
"dynamic_dump_set"
):
try
:
# try:
# unload_area_id = session_mysql.query(DispatchSetting).filter_by(dump_id=dump_id, isauto=1, isdeleted=0).first().unload_area_id
# unload_area_id = session_mysql.query(DispatchSetting).filter_by(dump_id=dump_id, isauto=1, isdeleted=0).first().unload_area_id
unload_area_id
=
session_mysql
.
query
(
DispatchSetting
)
.
filter_by
(
dump_id
=
dump_id
,
isdeleted
=
0
)
.
first
()
.
unload_area_id
unload_area_id
=
session_mysql
.
query
(
DispatchSetting
)
.
filter_by
(
dump_id
=
dump_id
,
isdeleted
=
0
)
.
first
()
.
unload_area_id
dump_material_id
=
list
(
session_postgre
.
query
(
DumpArea
)
.
filter_by
(
Id
=
unload_area_id
)
.
first
()
.
Materials
)
dump_material_id
=
session_postgre
.
query
(
DumpArea
)
.
filter_by
(
Id
=
unload_area_id
)
.
first
()
.
Materials
self
.
dump_material
[
dump_id
]
=
dump_material_id
if
dump_material_id
is
None
:
except
Exception
as
es
:
dump_material_id
=
[]
self
.
logger
.
error
(
"卸点物料更新异常"
)
else
:
self
.
logger
.
error
(
es
)
dump_material_id
=
list
(
dump_material_id
)
session_mysql
.
rollback
()
self
.
dump_material
[
dump_id
]
=
dump_material_id
session_postgre
.
rollback
()
# except Exception as es:
# self.logger.error("卸点物料更新异常")
# self.dump_material[dump_id] = {}
# self.logger.error(es)
# session_mysql.rollback()
# session_postgre.rollback()
def
update_dump_priority
(
self
):
def
update_dump_priority
(
self
):
unload_area_index_to_uuid_dict
=
get_value
(
"unload_area_index_to_uuid_dict"
)
unload_area_index_to_uuid_dict
=
get_value
(
"unload_area_index_to_uuid_dict"
)
...
...
equipment/excavator.py
View file @
936b8259
...
@@ -171,6 +171,7 @@ class ExcavatorInfo(WalkManage):
...
@@ -171,6 +171,7 @@ class ExcavatorInfo(WalkManage):
self
.
logger
.
error
(
es
)
self
.
logger
.
error
(
es
)
session_postgre
.
rollback
()
session_postgre
.
rollback
()
session_mysql
.
rollback
()
session_mysql
.
rollback
()
def
update_mining_ability
(
self
):
def
update_mining_ability
(
self
):
try
:
try
:
try
:
try
:
...
...
path_plan/path_planner_2.py
View file @
936b8259
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
from
equipment.truck
import
TruckInfo
,
DumpInfo
,
ExcavatorInfo
from
equipment.truck
import
TruckInfo
,
DumpInfo
,
ExcavatorInfo
# from path_plan.priority_control import PriorityController
# from path_plan.priority_control import PriorityController
from
path_plan.priority_control
import
PriorityController
from
path_plan.priority_control
import
PriorityController
from
path_plan
.topo_graph
import
*
from
redispatch
.topo_graph
import
*
from
para_config
import
*
from
para_config
import
*
from
tables
import
*
from
tables
import
*
...
...
tables.py
View file @
936b8259
...
@@ -282,11 +282,15 @@ class Lane(Base):
...
@@ -282,11 +282,15 @@ class Lane(Base):
Id
=
Column
(
VARCHAR
(
36
),
primary_key
=
True
)
Id
=
Column
(
VARCHAR
(
36
),
primary_key
=
True
)
Length
=
Column
(
Float
)
Length
=
Column
(
Float
)
MaxSpeed
=
Column
(
Float
)
MaxSpeed
=
Column
(
Float
)
StartNodeId
=
Column
(
VARCHAR
(
36
))
EndNodeId
=
Column
(
VARCHAR
(
36
))
def
__init__
(
self
,
Id
,
Length
,
MaxSpeed
):
def
__init__
(
self
,
Id
,
Length
,
MaxSpeed
,
StartNodeId
,
EndNodeId
):
self
.
Id
=
Id
self
.
Id
=
Id
self
.
Length
=
Length
self
.
Length
=
Length
self
.
MaxSpeed
=
MaxSpeed
self
.
MaxSpeed
=
MaxSpeed
self
.
StartNodeId
=
StartNodeId
self
.
EndNodeId
=
EndNodeId
class
Dispatch
(
Base
):
class
Dispatch
(
Base
):
...
...
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