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
0
Merge Requests
0
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
9b13cd89
Commit
9b13cd89
authored
Dec 14, 2021
by
张晓彤
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
异常处理BUG
parent
ea54225b
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
44 additions
and
59 deletions
+44
-59
dump.py
equipment/dump.py
+1
-1
excavator.py
equipment/excavator.py
+1
-1
path_plannner.py
path_plan/path_plannner.py
+2
-2
realtime_dispatch.py
realtime_dispatch.py
+13
-2
traffic_flow_info.py
traffic_flow/traffic_flow_info.py
+27
-53
No files found.
equipment/dump.py
View file @
9b13cd89
...
...
@@ -151,7 +151,7 @@ class DumpInfo(WalkManage):
if
unload_ability
<
200
:
raise
Exception
(
"卸载点卸载能力异常"
)
else
:
self
.
dump_strength
=
np
.
full
(
self
.
num_of_dump
,
5000
)
self
.
dump_strength
=
np
.
full
(
self
.
dynamic_dump_num
,
5000
)
except
Exception
as
es
:
logger
.
error
(
es
)
...
...
equipment/excavator.py
View file @
9b13cd89
...
...
@@ -177,7 +177,7 @@ class ExcavatorInfo(WalkManage):
if
load_ability
.
mining_abililty
<
200
:
raise
Exception
(
"挖机装载能力异常"
)
else
:
self
.
excavator_strength
=
np
.
full
(
self
.
num_of_excavator
,
5000
)
self
.
excavator_strength
=
np
.
full
(
self
.
dynamic_excavator_num
,
5000
)
except
Exception
as
es
:
logger
.
error
(
es
)
...
...
path_plan/path_plannner.py
View file @
9b13cd89
...
...
@@ -287,9 +287,9 @@ class LaneInfo:
# json_value = json.loads(redis2.get(item))
key_value_dict
=
redis2
.
hgetall
(
item
)
device_type
=
key_value_dict
[
str_to_byte
(
'type'
)]
#
is_online = key_value_dict[str_to_byte('online')]
is_online
=
key_value_dict
[
str_to_byte
(
'online'
)]
key_set
=
key_value_dict
.
keys
()
if
device_type
==
str_to_byte
(
"1"
)
and
str_to_byte
(
'online'
)
in
key_set
and
str_to_byte
(
'laneId'
)
in
key_set
:
if
(
device_type
==
str_to_byte
(
"1"
))
and
((
str_to_byte
(
'online'
)
in
key_set
)
and
bytes
.
decode
(
is_online
))
and
(
str_to_byte
(
'laneId'
)
in
key_set
)
:
truck_locate
=
key_value_dict
[
str_to_byte
(
'laneId'
)]
truck_locate_dict
[
truck_name_to_uuid_dict
[
item
]]
=
eval
(
truck_locate
)
except
Exception
as
es
:
...
...
realtime_dispatch.py
View file @
9b13cd89
...
...
@@ -54,6 +54,8 @@ class Dispatcher(WalkManage):
self
.
path
=
PathPlanner
()
# 读取车流信息
self
.
traffic_flow
=
Traffic_flow
(
dump
,
excavator
,
truck
)
self
.
group
=
Group
(
dump
,
excavator
,
truck
,
self
.
traffic_flow
)
...
...
@@ -350,6 +352,7 @@ class Dispatcher(WalkManage):
target
=
excavator
.
excavator_uuid_to_index_dict
[
self
.
group
.
group_excavator_index_to_uuid_dict
[
group_id
][
target
]]
# 3. 启用饱和度调度
else
:
logger
.
info
(
"饱和度调度"
)
actual_flow_to_excavator
=
truck
.
excavator_hold_truck_num
*
truck
.
payload
/
self
.
group
.
group_park_to_excavator
[
group_id
]
.
reshape
(
1
,
-
1
)
allow_flow_to_excavator
=
excavator
.
excavator_strength
...
...
@@ -358,6 +361,8 @@ class Dispatcher(WalkManage):
target
=
excavator
.
excavator_uuid_to_index_dict
[
self
.
group
.
group_excavator_index_to_uuid_dict
[
group_id
][
target
]]
logger
.
info
(
excavator
.
excavator_uuid_to_index_dict
)
logger
.
info
(
self
.
group
.
group_excavator_uuid_to_index_dict
)
logger
.
info
(
f
"目的地:{excavator.excavator_index_to_uuid_dict[target]}"
)
except
Exception
as
es
:
logger
.
error
(
"error07"
)
...
...
@@ -524,6 +529,9 @@ class Dispatcher(WalkManage):
logger
.
error
(
es
)
# 3. 饱和度调度
else
:
logger
.
info
(
"和度调度"
)
excavator_index
=
int
(
trip
[
1
])
transport_value
=
self
.
group
.
group_walk_to_dump_cost
[
group_id
][:,
excavator_index
]
.
reshape
(
1
,
-
1
)
...
...
@@ -551,10 +559,10 @@ class Dispatcher(WalkManage):
# 读取车流信息
try
:
assert
np
.
array
(
self
.
actual_goto_excavator_traffic_flow
)
.
shape
==
(
assert
np
.
array
(
actual_goto_excavator_traffic_flow
)
.
shape
==
(
dynamic_dump_num
,
dynamic_excavator_num
,)
assert
np
.
array
(
self
.
opt_goto_excavator_traffic_flow
)
.
shape
==
(
assert
np
.
array
(
opt_goto_excavator_traffic_flow
)
.
shape
==
(
dynamic_dump_num
,
dynamic_excavator_num
,)
...
...
@@ -654,6 +662,9 @@ class Dispatcher(WalkManage):
# 3. 饱和度调度
else
:
logger
.
info
(
"和度调度"
)
dump_index
=
int
(
trip
[
1
])
transport_value
=
self
.
group
.
group_walk_to_excavator_cost
[
group_id
][
dump_index
,
:]
.
reshape
(
1
,
-
1
)
...
...
traffic_flow/traffic_flow_info.py
View file @
9b13cd89
...
...
@@ -13,8 +13,10 @@ from equipment.excavator import ExcavatorInfo
from
equipment.dump
import
DumpInfo
from
equipment.truck
import
TruckInfo
class
Traffic_flow
(
WalkManage
):
"""
Traffic flow information class
"""
def
__init__
(
self
,
dump
,
excavator
,
truck
):
self
.
dump
=
dump
self
.
excavator
=
excavator
...
...
@@ -63,10 +65,12 @@ class Traffic_flow(WalkManage):
truck_current_trip
=
self
.
truck
.
get_truck_current_trip
()
payload
=
self
.
truck
.
get_payload
()
# 设备参数读取
dynamic_dump_num
=
get_value
(
"dynamic_dump_num"
)
dynamic_excavator_num
=
get_value
(
"dynamic_excavator_num"
)
dynamic_truck_num
=
get_value
(
"dynamic_truck_num"
)
# 路网矿卡数量初始化
self
.
goto_dump_truck_num
=
np
.
zeros
((
dynamic_excavator_num
,
dynamic_dump_num
))
self
.
actual_goto_dump_traffic_flow
=
np
.
zeros
(
(
dynamic_excavator_num
,
dynamic_dump_num
)
...
...
@@ -78,10 +82,7 @@ class Traffic_flow(WalkManage):
(
dynamic_dump_num
,
dynamic_excavator_num
)
)
# try:
logger
.
info
(
"dynamic_truck_num"
)
logger
.
info
(
dynamic_truck_num
)
# 统计路网矿卡数量
for
i
in
range
(
dynamic_truck_num
):
task
=
truck_current_task
[
self
.
truck
.
truck_index_to_uuid_dict
[
i
]]
end_area_index
=
truck_current_trip
[
i
][
1
]
...
...
@@ -91,69 +92,41 @@ class Traffic_flow(WalkManage):
self
.
goto_dump_truck_num
[
start_area_index
][
end_area_index
]
+=
1
self
.
actual_goto_dump_traffic_flow
[
start_area_index
][
end_area_index
]
+=
float
(
payload
[
i
])
# logger.info("debug2")
if
task
in
empty_task_set
:
self
.
goto_excavator_truck_num
[
start_area_index
][
end_area_index
]
+=
1
self
.
actual_goto_excavator_traffic_flow
[
start_area_index
][
end_area_index
]
+=
float
(
payload
[
i
])
# 计算驶往卸点实际吞吐量
self
.
actual_goto_dump_traffic_flow
=
self
.
actual_goto_dump_traffic_flow
/
(
self
.
distance_to_dump
.
reshape
(
dynamic_excavator_num
,
dynamic_dump_num
)
/
(
1000
*
empty_speed
)
+
np
.
expand_dims
(
unloading_task_time
,
axis
=
0
)
.
repeat
(
dynamic_excavator_num
,
axis
=
0
)
self
.
distance_to_dump
.
reshape
(
dynamic_excavator_num
,
dynamic_dump_num
)
/
(
1000
*
empty_speed
)
+
np
.
expand_dims
(
unloading_task_time
,
axis
=
0
)
.
repeat
(
dynamic_excavator_num
,
axis
=
0
)
)
# 计算驶往挖机实际吞吐量
self
.
actual_goto_excavator_traffic_flow
=
(
self
.
actual_goto_excavator_traffic_flow
/
(
self
.
distance_to_excavator
.
reshape
(
dynamic_dump_num
,
dynamic_excavator_num
)
/
(
1000
*
heavy_speed
)
+
np
.
expand_dims
(
loading_task_time
,
axis
=
0
)
.
repeat
(
dynamic_dump_num
,
axis
=
0
)
self
.
actual_goto_excavator_traffic_flow
/
(
self
.
distance_to_excavator
.
reshape
(
dynamic_dump_num
,
dynamic_excavator_num
)
/
(
1000
*
heavy_speed
)
+
np
.
expand_dims
(
loading_task_time
,
axis
=
0
)
.
repeat
(
dynamic_dump_num
,
axis
=
0
)
)
)
logger
.
info
(
"
self
.goto_dump_truck_num"
)
logger
.
info
(
"
traffic_flow
.goto_dump_truck_num"
)
logger
.
info
(
self
.
goto_dump_truck_num
)
logger
.
info
(
"self.actual_goto_dump_traffic_flow"
)
logger
.
info
(
"traffic_flow.actual_goto_dump_traffic_flow"
)
logger
.
info
(
self
.
actual_goto_dump_traffic_flow
)
logger
.
info
(
"self.goto_excavator_truck_num"
)
logger
.
info
(
"traffic_flow.goto_excavator_truck_num"
)
logger
.
info
(
self
.
goto_excavator_truck_num
)
logger
.
info
(
"self.actual_goto_excavator_traffic_flow"
)
logger
.
info
(
"traffic_flow.actual_goto_excavator_traffic_flow"
)
logger
.
info
(
self
.
actual_goto_excavator_traffic_flow
)
# except Exception as es:
# logger.error("未知错误001")
# logger.error(es)
# print("驶往卸点实际载重")
# print(self.actual_goto_dump_traffic_flow)
# print("卸点路段行驶时间(h)")
# print((self.distance_to_dump.reshape(dynamic_excavator_num, dynamic_dump_num) / (1000 * empty_speed)))
# print("驶往卸点实际车流")
# print(self.actual_goto_dump_traffic_flow)
logger
.
info
(
"驶往卸点实际载重"
)
logger
.
info
(
self
.
actual_goto_dump_traffic_flow
)
logger
.
info
(
"卸点路段行驶时间(h)"
)
logger
.
info
(
(
self
.
distance_to_dump
.
reshape
(
dynamic_excavator_num
,
dynamic_dump_num
)
/
(
1000
*
empty_speed
)
)
)
logger
.
info
(
"驶往卸点实际车流"
)
logger
.
info
(
self
.
actual_goto_dump_traffic_flow
)
logger
.
info
(
"
________________loading_task_time__________
"
)
logger
.
info
(
"
装载任务时间(含出入场)
"
)
logger
.
info
(
loading_task_time
)
logger
.
info
(
"卸载任务时间(含出入场)"
)
logger
.
info
(
unloading_task_time
)
# 车流规划类
...
...
@@ -167,13 +140,14 @@ class Traffic_para(WalkManage):
self
.
walk_time_to_load_area
=
np
.
zeros
((
num_of_unload_area
,
num_of_load_area
))
# 空载运输路线距离
self
.
walk_time_to_unload_area
=
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_unload_area
,
num_of_load_area
),
1
)
# # self.avg_goto_excavator_weight = np.zeros((num_of_load_area, num_of_unload_area))
# self.avg_goto_excavator_weight = np.full((num_of_unload_area, num_of_load_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.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
.
walk_time_to_excavator
=
np
.
zeros
((
num_of_dump
,
num_of_excavator
))
# 逻辑空载运输路线距离
self
.
walk_time_to_dump
=
np
.
zeros
((
num_of_excavator
,
num_of_dump
))
# 逻辑重载运输路线距离
# self.walk_time_to_excavator = np.zeros((num_of_dump, num_of_excavator)) # 逻辑空载运输路线距离
# self.walk_time_to_dump = np.zeros((num_of_excavator, num_of_dump)) # 逻辑重载运输路线距离
# self.payload = 200 # 有效载重(不同型号矿卡载重不同,这里暂时认为车队是同质的)
self
.
payload
=
np
.
mean
(
truck
.
get_payload
())
...
...
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