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
4c78fd78
Commit
4c78fd78
authored
Jul 15, 2022
by
张晓彤
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
7-15更新 1.数据更新同步 2.添加挖机可用时间-异常捕获
parent
73d461b0
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
158 additions
and
112 deletions
+158
-112
config.json
config.json
+1
-1
schedule.py
core/schedule.py
+36
-11
truck.py
equipment/truck.py
+121
-100
No files found.
config.json
View file @
4c78fd78
{
{
"para"
:
{
"para"
:
{
"log_path"
:
"
/Users/guoao/Desktop/work_log/Logs
"
,
"log_path"
:
"
./Logs/
"
,
"empty_speed"
:
17
,
"empty_speed"
:
17
,
"heavy_speed"
:
17
,
"heavy_speed"
:
17
,
"dump_target_mass"
:
5000
,
"dump_target_mass"
:
5000
,
...
...
core/schedule.py
View file @
4c78fd78
...
@@ -142,18 +142,43 @@ class PreSchedule:
...
@@ -142,18 +142,43 @@ class PreSchedule:
tmp
=
reach_ls
[
np
.
lexsort
(
reach_ls
[:,
::
-
1
]
.
T
)]
tmp
=
reach_ls
[
np
.
lexsort
(
reach_ls
[:,
::
-
1
]
.
T
)]
for
i
in
range
(
len
(
tmp
)):
for
i
in
range
(
len
(
tmp
)):
excavator_index
=
int
(
tmp
[
i
][
2
])
try
:
excavator_id
=
self
.
excavator
.
excavator_index_to_uuid_dict
[
excavator_index
]
self
.
excavator_avl_time
[
excavator_index
]
=
(
max
(
tmp
[
i
][
0
],
self
.
excavator_avl_time
[
excavator_index
])
+
loading_task_time
[
excavator_index
]
)
self
.
excavator_avl_time_dict
[
excavator_id
]
=
self
.
excavator_avl_time
[
excavator_index
]
truck_index
=
int
(
tmp
[
i
][
1
])
excavator_index
=
int
(
tmp
[
i
][
2
])
truck_id
=
self
.
truck
.
truck_index_to_uuid_dict
[
truck_index
]
excavator_id
=
self
.
excavator
.
excavator_index_to_uuid_dict
[
excavator_index
]
self
.
truck_avl_time
[
truck_index
]
=
self
.
excavator_avl_time
[
excavator_index
]
self
.
truck_avl_time_dict
[
truck_id
]
=
self
.
truck_avl_time
[
truck_index
]
except
Exception
as
es
:
self
.
logger
.
error
(
"excavator_error_1"
)
self
.
logger
.
error
(
es
)
try
:
self
.
excavator_avl_time
[
excavator_index
]
=
(
max
(
tmp
[
i
][
0
],
self
.
excavator_avl_time
[
excavator_index
])
+
loading_task_time
[
excavator_index
]
)
self
.
excavator_avl_time_dict
[
excavator_id
]
=
self
.
excavator_avl_time
[
excavator_index
]
except
Exception
as
es
:
self
.
logger
.
error
(
"excavator_error_2"
)
self
.
logger
.
error
(
es
)
try
:
truck_index
=
int
(
tmp
[
i
][
1
])
truck_id
=
self
.
truck
.
truck_index_to_uuid_dict
[
truck_index
]
except
Exception
as
es
:
self
.
logger
.
error
(
"excavator_error_3"
)
self
.
logger
.
error
(
es
)
try
:
self
.
truck_avl_time
[
truck_index
]
=
self
.
excavator_avl_time
[
excavator_index
]
self
.
truck_avl_time_dict
[
truck_id
]
=
self
.
truck_avl_time
[
truck_index
]
except
Exception
as
es
:
self
.
logger
.
error
(
"excavator_error_4"
)
self
.
logger
.
error
(
es
)
# # 若挖机可用时间严重偏离,进行修正
# # 若挖机可用时间严重偏离,进行修正
# if abs(self.excavator_avl_time[excavator_index] - now) > 60:
# if abs(self.excavator_avl_time[excavator_index] - now) > 60:
...
...
equipment/truck.py
View file @
4c78fd78
...
@@ -268,16 +268,16 @@ class TruckInfo(WalkManage):
...
@@ -268,16 +268,16 @@ class TruckInfo(WalkManage):
truck_id
=
self
.
truck_index_to_uuid_dict
[
i
]
truck_id
=
self
.
truck_index_to_uuid_dict
[
i
]
task
=
self
.
truck_current_task
[
self
.
truck_index_to_uuid_dict
[
i
]]
task
=
self
.
truck_current_task
[
self
.
truck_index_to_uuid_dict
[
i
]]
# print("truck_task:", truck_id, task)
# print("truck_task:", truck_id, task)
# item = (
# session_mysql.query(EquipmentPair)
# .filter_by(truck_id=truck_id, isdeleted=0)
# .first()
# )
item
=
(
item
=
(
session_mysql
.
query
(
DispatchSetting
)
session_mysql
.
query
(
EquipmentPair
)
.
filter_by
(
truck_id
=
truck_id
,
isdeleted
=
0
)
.
filter_by
(
truck_id
=
truck_id
,
isdeleted
=
0
)
.
first
()
.
first
()
)
)
# item = (
# session_mysql.query(DispatchSetting)
# .filter_by(truck_id=truck_id, isdeleted=0)
# .first()
# )
point
=
empty_task_set
point
=
empty_task_set
point2
=
heavy_task_set
point2
=
heavy_task_set
if
task
in
(
empty_task_set
+
heavy_task_set
)
and
item
is
None
:
if
task
in
(
empty_task_set
+
heavy_task_set
)
and
item
is
None
:
...
@@ -288,100 +288,107 @@ class TruckInfo(WalkManage):
...
@@ -288,100 +288,107 @@ class TruckInfo(WalkManage):
session_mysql
.
rollback
()
session_mysql
.
rollback
()
continue
continue
try
:
# try:
load_area_uuid_to_index_dict
=
get_value
(
"load_area_uuid_to_index_dict"
)
load_area_uuid_to_index_dict
=
get_value
(
"load_area_uuid_to_index_dict"
)
unload_area_uuid_to_index_dict
=
get_value
(
"unload_area_uuid_to_index_dict"
)
unload_area_uuid_to_index_dict
=
get_value
(
"unload_area_uuid_to_index_dict"
)
aa
=
task
aa
=
task
tt
=
truck_id
tt
=
truck_id
# 若矿卡状态为空运
# 若矿卡状态为空运
if
task
in
[
0
,
1
,
2
]:
# 矿卡空载或仍未出装载区
if
task
in
[
0
,
1
,
2
]:
# 矿卡空载或仍未出装载区
# last_unload_time = self.relative_last_unload_time[
# last_unload_time = self.relative_last_unload_time[
# self.truck_index_to_uuid_dict[i]
# self.truck_index_to_uuid_dict[i]
# ]
# ]
bb
=
self
.
relative_last_unload_time
bb
=
self
.
relative_last_unload_time
last_unload_time
=
self
.
relative_last_unload_time
[
last_unload_time
=
self
.
relative_last_unload_time
[
truck_id
truck_id
]
]
if
item
.
dump_id
in
DeviceMap
.
dump_uuid_to_unload_area_uuid_dict
:
if
item
.
dump_id
in
DeviceMap
.
dump_uuid_to_unload_area_uuid_dict
:
start_area_id
=
self
.
dump_uuid_to_unload_area_uuid_dict
[
item
.
dump_id
]
start_area_id
=
self
.
dump_uuid_to_unload_area_uuid_dict
[
item
.
dump_id
]
start_area_index
=
unload_area_uuid_to_index_dict
[
start_area_id
]
start_area_index
=
unload_area_uuid_to_index_dict
[
start_area_id
]
start_eq_index
=
self
.
dump_uuid_to_index_dict
[
item
.
dump_id
]
start_eq_index
=
self
.
dump_uuid_to_index_dict
[
item
.
dump_id
]
else
:
else
:
start_area_index
=
-
1
start_area_index
=
-
1
start_eq_index
=
-
1
start_eq_index
=
-
1
if
item
.
exactor_id
in
DeviceMap
.
excavator_uuid_to_load_area_uuid_dict
:
end_area_id
=
self
.
excavator_uuid_to_load_area_uuid_dict
[
item
.
exactor_id
]
end_area_index
=
load_area_uuid_to_index_dict
[
end_area_id
]
end_eq_index
=
self
.
excavator_uuid_to_index_dict
[
item
.
exactor_id
]
else
:
end_area_index
=
-
1
end_eq_index
=
-
1
self
.
truck_current_trip
[
i
]
=
[
start_eq_index
,
end_eq_index
]
self
.
cur_truck_reach_excavator
[
i
]
=
(
last_unload_time
+
walk_time_to_load_area
[
start_area_index
][
end_area_index
]
)
self
.
logger
.
info
(
f
'update_truck_trip-{truck_id}-last_unload_time'
)
self
.
logger
.
info
(
last_unload_time
)
self
.
logger
.
info
(
f
'update_truck_trip-walk_time_to_load_area'
)
self
.
logger
.
info
(
walk_time_to_load_area
[
start_area_index
][
end_area_index
])
# # 目的地矿卡数加一
# self.excavator_hold_truck_num[end_eqp_index] = self.excavator_hold_truck_num[end_eqp_index] + 1
# 若矿卡状态为重载
elif
task
in
[
3
,
4
,
5
]:
# 矿卡重载或仍未出卸载区
# print("读取重载行程")
# print(item.exactor_id, item.dump_id)
last_load_time
=
self
.
relative_last_load_time
[
self
.
truck_index_to_uuid_dict
[
i
]
]
if
item
.
exactor_id
in
DeviceMap
.
excavator_uuid_to_load_area_uuid_dict
:
start_area_id
=
self
.
excavator_uuid_to_load_area_uuid_dict
[
item
.
exactor_id
]
start_area_index
=
load_area_uuid_to_index_dict
[
start_area_id
]
start_eq_index
=
self
.
excavator_uuid_to_index_dict
[
item
.
exactor_id
]
else
:
start_area_index
=
-
1
start_eq_index
=
-
1
if
item
.
dump_id
in
DeviceMap
.
dump_uuid_to_index_dict
:
end_area_id
=
self
.
dump_uuid_to_unload_area_uuid_dict
[
item
.
dump_id
]
end_area_index
=
unload_area_uuid_to_index_dict
[
end_area_id
]
end_eq_index
=
self
.
dump_uuid_to_index_dict
[
item
.
dump_id
]
else
:
end_area_index
=
-
1
end_eq_index
=
-
1
# # 结束设备index
# end_eqp_index = self.dump_uuid_to_index_dict[item.dump_id]
self
.
truck_current_trip
[
i
]
=
[
start_eq_index
,
end_eq_index
]
self
.
cur_truck_reach_dump
[
i
]
=
(
last_load_time
+
walk_time_to_unload_area
[
end_area_index
][
start_area_index
]
)
self
.
logger
.
info
(
f
'update_truck_trip-{truck_id}-last_load_time'
)
self
.
logger
.
info
(
last_load_time
)
self
.
logger
.
info
(
f
'update_truck_trip-walk_time_to_unload_area'
)
self
.
logger
.
info
(
walk_time_to_unload_area
[
end_area_index
][
start_area_index
])
# 目的地矿卡数加一
if
item
.
exactor_id
in
DeviceMap
.
excavator_uuid_to_load_area_uuid_dict
:
# self.dump_hold_truck_num[end_eqp_index] = self.dump_hold_truck_num[end_eqp_index] + 1
end_area_id
=
self
.
excavator_uuid_to_load_area_uuid_dict
[
item
.
exactor_id
]
# 其他状态,矿卡状态为-2,equipment_pair表不存在该矿卡
end_area_index
=
load_area_uuid_to_index_dict
[
end_area_id
]
end_eq_index
=
self
.
excavator_uuid_to_index_dict
[
item
.
exactor_id
]
else
:
else
:
# end_eqp_index = excavator.excavator_uuid_to_index_dict[item.exactor_id]
end_area_index
=
-
1
# self.excavator_hold_truck_num[end_eqp_index] = self.excavator_hold_truck_num[end_eqp_index] + 1
end_eq_index
=
-
1
pass
except
Exception
as
es
:
self
.
truck_current_trip
[
i
]
=
[
start_eq_index
,
end_eq_index
]
self
.
logger
.
error
(
"矿卡行程读取异常"
)
self
.
logger
.
error
(
es
)
self
.
cur_truck_reach_excavator
[
i
]
=
(
last_unload_time
+
walk_time_to_load_area
[
start_area_index
][
end_area_index
]
)
self
.
logger
.
info
(
f
'update_truck_trip-{truck_id}-last_unload_time'
)
self
.
logger
.
info
(
last_unload_time
)
self
.
logger
.
info
(
f
'update_truck_trip-walk_time_to_load_area'
)
self
.
logger
.
info
(
walk_time_to_load_area
[
start_area_index
][
end_area_index
])
# # 目的地矿卡数加一
# self.excavator_hold_truck_num[end_eqp_index] = self.excavator_hold_truck_num[end_eqp_index] + 1
# 若矿卡状态为重载
elif
task
in
[
3
,
4
,
5
]:
# 矿卡重载或仍未出卸载区
# print("读取重载行程")
# print(item.exactor_id, item.dump_id)
last_load_time
=
self
.
relative_last_load_time
[
self
.
truck_index_to_uuid_dict
[
i
]
]
if
item
.
exactor_id
in
DeviceMap
.
excavator_uuid_to_load_area_uuid_dict
:
start_area_id
=
self
.
excavator_uuid_to_load_area_uuid_dict
[
item
.
exactor_id
]
start_area_index
=
load_area_uuid_to_index_dict
[
start_area_id
]
start_eq_index
=
self
.
excavator_uuid_to_index_dict
[
item
.
exactor_id
]
else
:
start_area_index
=
-
1
start_eq_index
=
-
1
if
item
.
dump_id
in
DeviceMap
.
dump_uuid_to_index_dict
:
end_area_id
=
self
.
dump_uuid_to_unload_area_uuid_dict
[
item
.
dump_id
]
end_area_index
=
unload_area_uuid_to_index_dict
[
end_area_id
]
end_eq_index
=
self
.
dump_uuid_to_index_dict
[
item
.
dump_id
]
else
:
end_area_index
=
-
1
end_eq_index
=
-
1
# # 结束设备index
# end_eqp_index = self.dump_uuid_to_index_dict[item.dump_id]
self
.
truck_current_trip
[
i
]
=
[
start_eq_index
,
end_eq_index
]
self
.
logger
.
info
(
"walk_time_to_unload_area"
)
self
.
logger
.
info
(
walk_time_to_unload_area
)
self
.
logger
.
info
(
"end_area_index"
)
self
.
logger
.
info
(
end_area_index
)
self
.
logger
.
info
(
"start_area_index"
)
self
.
logger
.
info
(
start_area_index
)
self
.
cur_truck_reach_dump
[
i
]
=
(
last_load_time
+
walk_time_to_unload_area
[
end_area_index
][
start_area_index
]
)
self
.
logger
.
info
(
f
'update_truck_trip-{truck_id}-last_load_time'
)
self
.
logger
.
info
(
last_load_time
)
self
.
logger
.
info
(
f
'update_truck_trip-walk_time_to_unload_area'
)
self
.
logger
.
info
(
walk_time_to_unload_area
[
end_area_index
][
start_area_index
])
# 目的地矿卡数加一
# self.dump_hold_truck_num[end_eqp_index] = self.dump_hold_truck_num[end_eqp_index] + 1
# 其他状态,矿卡状态为-2,equipment_pair表不存在该矿卡
else
:
# end_eqp_index = excavator.excavator_uuid_to_index_dict[item.exactor_id]
# self.excavator_hold_truck_num[end_eqp_index] = self.excavator_hold_truck_num[end_eqp_index] + 1
pass
# except Exception as es:
# self.logger.error("矿卡行程读取异常")
# self.logger.error(es)
# print("self.dump_hold_truck_num")
# print("self.dump_hold_truck_num")
# print(self.dump_hold_truck_num)
# print(self.dump_hold_truck_num)
...
@@ -693,10 +700,24 @@ class TruckInfo(WalkManage):
...
@@ -693,10 +700,24 @@ class TruckInfo(WalkManage):
def
truck_reset
(
self
,
dump
,
excavator
):
def
truck_reset
(
self
,
dump
,
excavator
):
# 更新矿卡数量
# 更新矿卡数量
self
.
dynamic_truck_num
=
get_value
(
"dynamic_truck_num"
)
self
.
dynamic_truck_num
=
get_value
(
"dynamic_truck_num"
)
# 更新矿卡集合
# 更新矿卡集合
self
.
dynamic_truck_set
=
get_value
(
"dynamic_truck_set"
)
self
.
dynamic_truck_set
=
get_value
(
"dynamic_truck_set"
)
aa
=
self
.
dynamic_truck_set
# 矿卡抵达卸载设备时间
self
.
cur_truck_reach_dump
=
np
.
zeros
(
self
.
dynamic_truck_num
)
# 矿卡抵达挖机时间
self
.
cur_truck_reach_excavator
=
np
.
zeros
(
self
.
dynamic_truck_num
)
# 矿卡最后装载/卸载时间
self
.
last_load_time
=
{}
self
.
last_unload_time
=
{}
# 相对矿卡最后装载/卸载时间
self
.
relative_last_load_time
=
{}
self
.
relative_last_unload_time
=
{}
# 矿卡当前任务
self
.
truck_current_task
=
{}
# 矿卡当前行程(第一列为出发地序号, 第二列为目的地序号)
self
.
truck_current_trip
=
np
.
full
((
self
.
dynamic_truck_num
,
2
),
-
1
)
# 矿卡不可用列表
self
.
truck_disable_list
=
[]
# 矿卡挖机绑定关系
# 矿卡挖机绑定关系
self
.
truck_excavator_bind
=
{}
self
.
truck_excavator_bind
=
{}
# 矿卡卸点绑定关系
# 矿卡卸点绑定关系
...
...
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