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
e857342b
Commit
e857342b
authored
Oct 13, 2023
by
虢奥
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
特殊穿越装载区
parent
9875a3db
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
161 additions
and
173 deletions
+161
-173
config.json
config.json
+3
-2
group.py
core/group.py
+96
-130
tables.py
tables.py
+1
-1
test.db
test.db
+0
-0
area_analysis.py
util/area_analysis.py
+61
-40
No files found.
config.json
View file @
e857342b
{
{
"para"
:
{
"para"
:
{
"log_path"
:
"/
usr/local/fleet-log/dispatch
"
,
"log_path"
:
"/
Users/guoao/Desktop/Log
"
,
"empty_speed"
:
15
,
"empty_speed"
:
15
,
"heavy_speed"
:
15
,
"heavy_speed"
:
15
,
"dump_target_mass"
:
5000
,
"dump_target_mass"
:
5000
,
...
@@ -25,7 +25,7 @@
...
@@ -25,7 +25,7 @@
"password"
:
"Huituo@123"
"password"
:
"Huituo@123"
},
},
"gothrough"
:
{
"gothrough"
:
{
"closer_area_name"
:
"1025装载区0
1
"
,
"closer_area_name"
:
"1025装载区0
2
"
,
"further_area_name"
:
"1025装载区-03"
"further_area_name"
:
"1025装载区-03"
}
}
}
}
\ No newline at end of file
core/group.py
View file @
e857342b
...
@@ -576,31 +576,33 @@ class GroupDispatcher:
...
@@ -576,31 +576,33 @@ class GroupDispatcher:
# 车辆停止或者车辆位于卸载区内, 调度车辆前往装载区
# 车辆停止或者车辆位于卸载区内, 调度车辆前往装载区
if
truck_task
in
[
-
2
,
3
,
4
,
5
]:
if
truck_task
in
[
-
2
,
3
,
4
,
5
]:
if
truck_task
==
3
:
if
truck_task
==
3
:
if
self
.
group
.
topo
is
not
None
and
truck_locate
is
not
None
:
self
.
logger
.
info
(
"正常重载行驶, 执行重载周期调度"
)
self
.
logger
.
info
(
"潜在二次调度车辆状态"
)
self
.
heavy_period_dispatch
(
s
,
truck_dispatch
,
truck_id
,
truck_info
,
truck_task
,
truck_trip
)
self
.
logger
.
info
(
f
'车辆 {truck_name}'
)
# if self.group.topo is not None and truck_locate is not None:
self
.
logger
.
info
(
f
'车辆位置 {truck_locate}'
)
# self.logger.info("潜在二次调度车辆状态")
self
.
logger
.
info
(
f
'车辆状态 {self.group.truck.truck_current_state[truck_id]}'
)
# self.logger.info(f'车辆 {truck_name}')
self
.
logger
.
info
(
f
'车辆任务 {truck_task}'
)
# self.logger.info(f'车辆位置 {truck_locate}')
self
.
logger
.
info
(
f
'车辆临时 {truck_is_temp}'
)
# self.logger.info(f'车辆状态 {self.group.truck.truck_current_state[truck_id]}')
self
.
logger
.
info
(
self
.
group
.
topo
.
cross_bf_lanes
)
# self.logger.info(f'车辆任务 {truck_task}')
self
.
logger
.
info
(
self
.
group
.
truck
.
truck_current_state
)
# self.logger.info(f'车辆临时 {truck_is_temp}')
# 车辆当前位于交叉路口前,且排队等待
# self.logger.info(self.group.topo.cross_bf_lanes)
if
(
truck_locate
in
self
.
group
.
topo
.
cross_bf_lanes
)
and
(
not
truck_is_temp
):
# self.logger.info(self.group.truck.truck_current_state)
self
.
logger
.
info
(
"触发二次调度"
)
# # 车辆当前位于交叉路口前,且排队等待
# self.redispatch_to_dump(truck_id, truck_dispatch, truck_locate, truck_trip)
# if (truck_locate in self.group.topo.cross_bf_lanes) and (not truck_is_temp):
try
:
# self.logger.info("触发二次调度")
truck_info
.
redispatch
=
\
# # self.redispatch_to_dump(truck_id, truck_dispatch, truck_locate, truck_trip)
self
.
redispatcher
.
redispatch_to_dump
(
truck_id
,
truck_dispatch
,
truck_locate
,
truck_trip
,
truck_info
)
# try:
except
Exception
as
es
:
# truck_info.redispatch =\
self
.
logger
.
error
(
"二次调度至卸载点失败"
)
# self.redispatcher.redispatch_to_dump(truck_id, truck_dispatch, truck_locate, truck_trip, truck_info)
self
.
logger
.
error
(
es
)
# except Exception as es:
else
:
# self.logger.error("二次调度至卸载点失败")
self
.
logger
.
info
(
"未触发二次调度, 执行重载周期调度"
)
# self.logger.error(es)
self
.
heavy_period_dispatch
(
s
,
truck_dispatch
,
truck_id
,
truck_info
,
truck_task
,
truck_trip
)
# else:
else
:
# self.logger.info("未触发二次调度, 执行重载周期调度")
self
.
logger
.
info
(
"正常重载行驶, 执行重载周期调度"
)
# self.heavy_period_dispatch(s, truck_dispatch, truck_id, truck_info, truck_task, truck_trip)
self
.
heavy_period_dispatch
(
s
,
truck_dispatch
,
truck_id
,
truck_info
,
truck_task
,
truck_trip
)
# else:
# self.logger.info("正常重载行驶, 执行重载周期调度")
# self.heavy_period_dispatch(s, truck_dispatch, truck_id, truck_info, truck_task, truck_trip)
else
:
else
:
self
.
logger
.
info
(
"卸载区内, 执行重载周期调度"
)
self
.
logger
.
info
(
"卸载区内, 执行重载周期调度"
)
...
@@ -609,34 +611,40 @@ class GroupDispatcher:
...
@@ -609,34 +611,40 @@ class GroupDispatcher:
# 车辆位于装载区内, 调度车辆前往卸载区
# 车辆位于装载区内, 调度车辆前往卸载区
elif
truck_task
in
[
0
,
1
,
2
]:
elif
truck_task
in
[
0
,
1
,
2
]:
if
truck_task
==
0
:
if
truck_task
==
0
:
if
self
.
group
.
topo
is
not
None
and
truck_locate
is
not
None
:
if
self
.
gothrough_active
:
self
.
logger
.
info
(
"潜在二次调度车辆状态"
)
self
.
logger
.
info
(
"穿越装载区调度开启"
)
self
.
gothroghdispatcher
.
update_lanes_info
()
# 车辆当前位于交叉路口前,且排队等待
self
.
gothroghdispatcher
.
redispatch_request
(
request_truck_id
=
truck_id
,
truck
=
self
.
group
.
truck
)
self
.
logger
.
info
(
f
'车辆 {truck_name}'
)
# if self.group.topo is not None and truck_locate is not None:
self
.
logger
.
info
(
f
'车辆位置 {truck_locate}'
)
# # 穿越装载区判断
self
.
logger
.
info
(
f
'车辆状态 {self.group.truck.truck_current_state[truck_id]}'
)
# if self.gothrough_active:
self
.
logger
.
info
(
f
'车辆临时 {truck_is_temp}'
)
# self.logger.info("穿越装载区调度开启")
self
.
logger
.
info
(
self
.
group
.
topo
.
cross_bf_lanes
)
# self.gothroghdispatcher.update_lanes_info()
self
.
logger
.
info
(
self
.
group
.
truck
.
truck_current_state
)
# self.gothroghdispatcher.redispatch_request(request_truck_id=truck_id, truck=self.group.truck)
if
(
truck_locate
in
self
.
group
.
topo
.
cross_bf_lanes
)
and
(
not
truck_is_temp
):
self
.
logger
.
info
(
"触发二次调度"
)
# self.logger.info("潜在二次调度车辆状态")
#
try
:
# # 车辆当前位于交叉路口前,且排队等待
truck_info
.
redispatch
=
\
# self.logger.info(f'车辆 {truck_name}')
self
.
redispatcher
.
redispatch_to_excavator
(
truck_id
,
truck_dispatch
,
truck_locate
,
# self.logger.info(f'车辆位置 {truck_locate}')
truck_trip
,
truck_info
)
# self.logger.info(f'车辆状态 {self.group.truck.truck_current_state[truck_id]}')
except
Exception
as
es
:
# self.logger.info(f'车辆临时 {truck_is_temp}')
self
.
logger
.
error
(
"二次调度至装载点失败"
)
# self.logger.info(self.group.topo.cross_bf_lanes)
self
.
logger
.
error
(
es
)
# self.logger.info(self.group.truck.truck_current_state)
else
:
# if (truck_locate in self.group.topo.cross_bf_lanes) and (not truck_is_temp):
self
.
logger
.
info
(
"未触发二次调度,执行空载周期调度"
)
# self.logger.info("触发二次调度")
self
.
empty_period_dispatch
(
s
,
truck_dispatch
,
truck_id
,
truck_info
,
truck_trip
)
#
# try:
# truck_info.redispatch =\
# self.redispatcher.redispatch_to_excavator(truck_id, truck_dispatch, truck_locate,
# truck_trip, truck_info)
# except Exception as es:
# self.logger.error("二次调度至装载点失败")
# self.logger.error(es)
# else:
# self.logger.info("未触发二次调度,执行空载周期调度")
# self.empty_period_dispatch(s, truck_dispatch, truck_id, truck_info, truck_trip)
# 穿越装载区判断
if
self
.
gothrough_active
:
self
.
gothroghdispatcher
.
update_lanes_info
()
self
.
gothroghdispatcher
.
redispatch_request
(
request_truck_id
=
truck_id
,
truck
=
self
.
group
.
truck
)
else
:
else
:
self
.
logger
.
info
(
"正常空载行驶,执行空载周期调度"
)
self
.
logger
.
info
(
"正常空载行驶,执行空载周期调度"
)
self
.
empty_period_dispatch
(
s
,
truck_dispatch
,
truck_id
,
truck_info
,
truck_trip
)
self
.
empty_period_dispatch
(
s
,
truck_dispatch
,
truck_id
,
truck_info
,
truck_trip
)
...
@@ -1148,32 +1156,37 @@ class GoThroughDispatcher:
...
@@ -1148,32 +1156,37 @@ class GoThroughDispatcher:
further_area_backtrack_node_id
=
item
.
StartNodeId
further_area_backtrack_node_id
=
item
.
StartNodeId
except
Exception
as
es
:
except
Exception
as
es
:
self
.
logger
.
error
(
"回溯
近
端装载路段异常"
)
self
.
logger
.
error
(
"回溯
远
端装载路段异常"
)
self
.
logger
.
error
(
es
)
self
.
logger
.
error
(
es
)
try
:
try
:
lowest_common_ancestor
=
None
lowest_common_ancestor
=
None
closer_area_backtrack_node_id
=
self
.
closer_entrance_node_id
closer_area_backtrack_node_id
=
self
.
closer_entrance_node_id
self
.
closer_area_backtrack_lanes
=
[]
self
.
closer_area_backtrack_lanes
=
[]
for
i
in
range
(
5
):
for
i
in
range
(
3
):
# 查询回溯路段对象
# 查询回溯路段对象
item
=
session_postgre
.
query
(
Lane
)
.
filter_by
(
EndNodeId
=
closer_area_backtrack_node_id
)
.
first
()
item
=
session_postgre
.
query
(
Lane
)
.
filter_by
(
EndNodeId
=
closer_area_backtrack_node_id
)
.
first
()
logger
.
info
(
f
"查询到路段{str(item.Id)}"
)
if
item
is
None
:
if
item
is
None
:
break
break
# 若查询到共同祖先
#
#
若查询到共同祖先
if
str
(
item
.
Id
)
in
self
.
further_area_backtrack_lanes
:
#
if str(item.Id) in self.further_area_backtrack_lanes:
lowest_common_ancestor
=
item
#
lowest_common_ancestor = item
break
#
break
# 将路段Id加入回溯列表
# 将路段Id加入回溯列表
self
.
closer_area_backtrack_lanes
.
append
(
str
(
item
.
Id
))
self
.
closer_area_backtrack_lanes
.
append
(
str
(
item
.
Id
))
# 更新当前回溯节点
# 更新当前回溯节点
closer_area_backtrack_node_id
=
item
.
StartNodeId
closer_area_backtrack_node_id
=
item
.
StartNodeId
# logger.info(self.closer_entrance_node_id)
logger
.
info
(
"近端道路列表"
)
logger
.
info
(
self
.
closer_area_backtrack_lanes
)
# 交叉口路段
# 交叉口路段
cross_lane
=
str
(
lowest_common_ancestor
.
Id
)
cross_lane
=
str
(
lowest_common_ancestor
.
Id
)
except
Exception
as
es
:
except
Exception
as
es
:
self
.
logger
.
error
(
"回溯
远
端装载路段异常"
)
self
.
logger
.
error
(
"回溯
近
端装载路段异常"
)
self
.
logger
.
error
(
es
)
self
.
logger
.
error
(
es
)
return
return
...
@@ -1256,74 +1269,6 @@ class GoThroughDispatcher:
...
@@ -1256,74 +1269,6 @@ class GoThroughDispatcher:
self
.
logger
.
error
(
es
)
self
.
logger
.
error
(
es
)
return
return
# '''
# 2. 寻找车辆穿越装载区自动判定区域
# '''
# try:
# further_area_backtrack_node_id = further_entrance_node_id
# further_area_backtrack_lanes = []
# for truck_id in range(5):
# # 查询回溯路段对象
# item = session_postgre.query(Lane).filter_by(EndNodeId=further_area_backtrack_node_id).first()
# if item is None:
# break
# # 将路段Id加入回溯列表
# further_area_backtrack_lanes.append(str(item.Id))
# # 更新当前回溯节点
# further_area_backtrack_node_id = item.StartNodeId
#
# except Exception as es:
# self.logger.error("回溯近端装载路段异常")
# self.logger.error(es)
#
# try:
# lowest_common_ancestor = None
# closer_area_backtrack_node_id = closer_entrance_node_id
# closer_area_backtrack_lanes = []
# for truck_id in range(5):
# # 查询回溯路段对象
# item = session_postgre.query(Lane).filter_by(EndNodeId=closer_area_backtrack_node_id).first()
# if item is None:
# break
# # 若查询到共同祖先
# if str(item.Id) in further_area_backtrack_lanes:
# lowest_common_ancestor = item
# break
# # 将路段Id加入回溯列表
# closer_area_backtrack_lanes.append(str(item.Id))
# # 更新当前回溯节点
# closer_area_backtrack_node_id = item.StartNodeId
#
# # 交叉口路段
# cross_lane = str(lowest_common_ancestor.Id)
#
# except Exception as es:
# self.logger.error("回溯远端装载路段异常")
# self.logger.error(es)
# return
#
#
# self.logger.info("cross_lane")
# self.logger.info(cross_lane)
#
# # 截取远端入场点到交叉口的路段
# further_area_backtrack_lanes = further_area_backtrack_lanes[0:further_area_backtrack_lanes.index(cross_lane)]
#
# # 穿越装载区检查路段
# gothrough_check_lanes = [cross_lane]
#
# try:
# # 多回溯一个路段
# if lowest_common_ancestor.Length < 200:
# item = session_postgre.query(Lane).filter_by(EndNodeId=lowest_common_ancestor.StartNodeId).first()
# gothrough_check_lanes.append(item.Id)
#
# self.logger.info("gothrough_check_lanes")
# self.logger.info(gothrough_check_lanes)
#
# except Exception as es:
# self.logger.error("穿越装载区交叉口判断异常")
# self.logger.error(es)
'''
'''
3. 调度判断逻辑
3. 调度判断逻辑
...
@@ -1342,8 +1287,11 @@ class GoThroughDispatcher:
...
@@ -1342,8 +1287,11 @@ class GoThroughDispatcher:
raise
CoreException
(
111
,
f
'truck_index_to_uuid_dict 缺失 {excavator_index} 号挖机信息'
)
raise
CoreException
(
111
,
f
'truck_index_to_uuid_dict 缺失 {excavator_index} 号挖机信息'
)
current_truck_goto_excavator_id
=
self
.
group
.
excavator_info
.
truck_index_to_uuid_dict
[
excavator_index
]
current_truck_goto_excavator_id
=
self
.
group
.
excavator_info
.
truck_index_to_uuid_dict
[
excavator_index
]
if
request_truck_lane_id
in
self
.
gothrough_check_lanes
:
# if request_truck_lane_id in self.gothrough_check_lanes:
logger
.
info
(
f
"近端lanes{self.closer_area_backtrack_lanes}"
)
# self.closer_area_backtrack_lanes.pop(0)
# logger.info(f"变更之后lanes{self.closer_area_backtrack_lanes}")
if
request_truck_lane_id
in
self
.
closer_area_backtrack_lanes
:
# 选择合适装载区
# 选择合适装载区
target_excavator
=
None
target_excavator
=
None
try
:
try
:
...
@@ -1355,8 +1303,26 @@ class GoThroughDispatcher:
...
@@ -1355,8 +1303,26 @@ class GoThroughDispatcher:
except
Exception
as
es
:
except
Exception
as
es
:
logger
.
error
(
"寻找最优装载区异常"
)
logger
.
error
(
"寻找最优装载区异常"
)
logger
.
error
(
es
)
logger
.
error
(
es
)
logger
.
info
(
f
"当前{current_truck_goto_excavator_id}"
)
logger
.
info
(
f
"目标{target_excavator}"
)
try
:
# item = (session_mysql.query(EquipmentPair).filter_by(truck_id=request_truck_id, group_id=group_id,
# isdeleted=0, ).first())
excavator_now
=
session_mysql
.
query
(
EquipmentPair
)
.
filter_by
(
truck_id
=
request_truck_id
,
isdeleted
=
0
)
.
first
()
.
exactor_id
self
.
logger
.
info
(
'查询到的挖机'
)
self
.
logger
.
info
(
excavator_now
)
self
.
logger
.
info
(
'当前目标挖机'
)
self
.
logger
.
info
(
target_excavator
)
if
(
target_excavator
is
not
None
)
and
(
current_truck_goto_excavator_id
!=
target_excavator
):
except
Exception
as
es
:
self
.
logger
.
error
(
"pair表查询异常"
)
self
.
logger
.
error
(
es
)
excavator_now
=
0
if
excavator_now
==
target_excavator
:
self
.
logger
.
info
(
"目标一致不用变更"
)
if
(
target_excavator
is
not
None
)
and
(
excavator_now
!=
target_excavator
):
self
.
logger
.
info
(
f
'更新车辆 {request_truck_name} 派车计划前往 {target_excavator}'
)
self
.
logger
.
info
(
f
'更新车辆 {request_truck_name} 派车计划前往 {target_excavator}'
)
# 派车计划写入redis
# 派车计划写入redis
truck_dispatch_to_redis
(
request_truck_id
,
group_id
,
target_excavator
)
truck_dispatch_to_redis
(
request_truck_id
,
group_id
,
target_excavator
)
...
...
tables.py
View file @
e857342b
...
@@ -22,7 +22,7 @@ json_file = os.path.join(relative_path, "config.json")
...
@@ -22,7 +22,7 @@ json_file = os.path.join(relative_path, "config.json")
# json_file = "config.json"
# json_file = "config.json"
with
open
(
json_file
,
encoding
=
'UTF-8'
)
as
f
:
with
open
(
json_file
,
encoding
=
'UTF-8'
)
as
f
:
load_vale
=
json
.
load
(
f
,
encoding
=
'UTF-8'
)
load_vale
=
json
.
load
(
f
)
postgre_config
=
load_vale
[
"postgresql"
]
postgre_config
=
load_vale
[
"postgresql"
]
...
...
test.db
View file @
e857342b
No preview for this file type
util/area_analysis.py
View file @
e857342b
...
@@ -49,6 +49,8 @@ def area_choose(excavators_id, closer_area_id, further_area_id, further_lane_set
...
@@ -49,6 +49,8 @@ def area_choose(excavators_id, closer_area_id, further_area_id, further_lane_set
logger
.
info
(
"arrival_truck_list"
)
logger
.
info
(
"arrival_truck_list"
)
logger
.
info
(
arrival_truck_list
)
logger
.
info
(
arrival_truck_list
)
logger
.
info
(
f
"输入的closer_lane_set{closer_lane_set}"
)
closer_lane_set_nearest
=
[
closer_lane_set
[
-
1
]]
# 统计不同状态车辆数量
# 统计不同状态车辆数量
goto_closer_area_num
=
0
goto_closer_area_num
=
0
goto_further_area_num
=
0
goto_further_area_num
=
0
...
@@ -61,7 +63,7 @@ def area_choose(excavators_id, closer_area_id, further_area_id, further_lane_set
...
@@ -61,7 +63,7 @@ def area_choose(excavators_id, closer_area_id, further_area_id, further_lane_set
# 前往远端装载区车辆数加1
# 前往远端装载区车辆数加1
goto_further_area_num
+=
1
goto_further_area_num
+=
1
# 车辆未经过近端装载区
# 车辆未经过近端装载区
elif
truck_lane_id
in
closer_lane_set
:
elif
truck_lane_id
in
closer_lane_set
_nearest
:
# 前往近端或近端装载区车辆数加1
# 前往近端或近端装载区车辆数加1
goto_closer_area_num
+=
1
goto_closer_area_num
+=
1
else
:
else
:
...
@@ -79,33 +81,46 @@ def area_choose(excavators_id, closer_area_id, further_area_id, further_lane_set
...
@@ -79,33 +81,46 @@ def area_choose(excavators_id, closer_area_id, further_area_id, further_lane_set
logger
.
info
(
before_cross_num
)
logger
.
info
(
before_cross_num
)
# # 近端挖机空闲
# if closer_excavator_state == 0 and goto_closer_area_num == 0:
# logger.info("近端挖机空闲, 调度车辆前往近端装载区")
# target_excavator = DispatchInfo.load_excavator_dict[closer_area_id]
# # truck_dispatch_to_redis(request_truck_id, group_id, DispatchInfo.load_excavator_dict[closer_area_id])
# # 远端挖机空闲
# elif further_excavator_state == 0 and goto_further_area_num == 0:
# logger.info("远端挖机空闲, 调度车辆前往远端装载区")
# target_excavator = DispatchInfo.load_excavator_dict[further_area_id]
# # truck_dispatch_to_redis(request_truck_id, group_id, DispatchInfo.load_excavator_dict[further_area_id])
# # 两挖机均不空闲
# else:
# # goto_further_area_num -= 1
# logger.info("goto_further_area_num-goto_closer_area_num")
# logger.info(goto_further_area_num)
# logger.info(goto_closer_area_num)
# # 默认当前请调车辆与近端装载点前没有车辆,因此前往近端装载区的车辆仅其本身
# # goto_closer_area_num = 1
# # 在远处排队等待的车辆更少
# if goto_closer_area_num + before_cross_num > goto_further_area_num:
# logger.info("远端挖机排队时间短, 调度车辆前往")
# target_excavator = DispatchInfo.load_excavator_dict[further_area_id]
# # truck_dispatch_to_redis(request_truck_id, group_id, DispatchInfo.load_excavator_dict[further_area_id])
# else:
# logger.info("近端挖机排队时间短, 调度车辆前往")
# target_excavator = DispatchInfo.load_excavator_dict[closer_area_id]
# # truck_dispatch_to_redis(request_truck_id, group_id, DispatchInfo.load_excavator_dict[closer_area_id])
# 近端挖机空闲
# 近端挖机空闲
if
closer_excavator_state
==
0
and
goto_closer_area_num
==
0
:
if
closer_excavator_state
==
0
and
goto_closer_area_num
==
0
:
logger
.
info
(
"近端挖机空闲, 调度车辆前往近端装载区"
)
logger
.
info
(
"近端挖机空闲, 调度车辆前往近端装载区"
)
target_excavator
=
DispatchInfo
.
load_excavator_dict
[
closer_area_id
]
target_excavator
=
DispatchInfo
.
load_excavator_dict
[
closer_area_id
]
# truck_dispatch_to_redis(request_truck_id, group_id, DispatchInfo.load_excavator_dict[closer_area_id])
# truck_dispatch_to_redis(request_truck_id, group_id, DispatchInfo.load_excavator_dict[closer_area_id])
# 远端挖机空闲
# 远端挖机空闲
el
if
further_excavator_state
==
0
and
goto_further_area_num
==
0
:
el
se
:
logger
.
info
(
"
远端挖机空闲
, 调度车辆前往远端装载区"
)
logger
.
info
(
"
近端挖机占用
, 调度车辆前往远端装载区"
)
target_excavator
=
DispatchInfo
.
load_excavator_dict
[
further_area_id
]
target_excavator
=
DispatchInfo
.
load_excavator_dict
[
further_area_id
]
# truck_dispatch_to_redis(request_truck_id, group_id, DispatchInfo.load_excavator_dict[further_area_id])
# truck_dispatch_to_redis(request_truck_id, group_id, DispatchInfo.load_excavator_dict[further_area_id])
# 两挖机均不空闲
else
:
# goto_further_area_num -= 1
logger
.
info
(
"goto_further_area_num-goto_closer_area_num"
)
logger
.
info
(
goto_further_area_num
)
logger
.
info
(
goto_closer_area_num
)
# 默认当前请调车辆与近端装载点前没有车辆,因此前往近端装载区的车辆仅其本身
# goto_closer_area_num = 1
# 在远处排队等待的车辆更少
if
goto_closer_area_num
+
before_cross_num
>
goto_further_area_num
:
logger
.
info
(
"远端挖机排队时间短, 调度车辆前往"
)
target_excavator
=
DispatchInfo
.
load_excavator_dict
[
further_area_id
]
# truck_dispatch_to_redis(request_truck_id, group_id, DispatchInfo.load_excavator_dict[further_area_id])
else
:
logger
.
info
(
"近端挖机排队时间短, 调度车辆前往"
)
target_excavator
=
DispatchInfo
.
load_excavator_dict
[
closer_area_id
]
# truck_dispatch_to_redis(request_truck_id, group_id, DispatchInfo.load_excavator_dict[closer_area_id])
return
target_excavator
return
target_excavator
...
@@ -250,26 +265,32 @@ def truck_dispatch_to_redis(truck_id, group_id, excavator_id):
...
@@ -250,26 +265,32 @@ def truck_dispatch_to_redis(truck_id, group_id, excavator_id):
item
=
(
session_mysql
.
query
(
DispatchSetting
)
.
filter_by
(
group_id
=
group_id
,
isdeleted
=
0
,
)
.
first
())
item
=
(
session_mysql
.
query
(
DispatchSetting
)
.
filter_by
(
group_id
=
group_id
,
isdeleted
=
0
,
)
.
first
())
logger
.
error
(
es
)
logger
.
error
(
es
)
# 其余调度信息写入
logger
.
info
(
f
"{type(truck_id)}"
)
try
:
logger
.
info
(
f
"{type(item.truck_id)}"
)
# record["dispatchId"] = item.id
if
str
(
truck_id
)
!=
str
(
item
.
truck_id
):
record
[
"dispatchId"
]
=
str
(
uuid
.
uuid1
())
logger
.
info
(
"无重复派车计划,重新生成中"
)
record
[
"exactorId"
]
=
item
.
exactor_id
# 其余调度信息写入
record
[
"loadAreaId"
]
=
item
.
load_area_id
try
:
record
[
"dumpId"
]
=
item
.
dump_id
# record["dispatchId"] = item.id
record
[
"unloadAreaId"
]
=
item
.
unload_area_id
record
[
"dispatchId"
]
=
str
(
uuid
.
uuid1
())
record
[
"groupId"
]
=
group_id
record
[
"exactorId"
]
=
item
.
exactor_id
record
[
"isdeleted"
]
=
False
record
[
"loadAreaId"
]
=
item
.
load_area_id
record
[
"isTemp"
]
=
False
record
[
"dumpId"
]
=
item
.
dump_id
record
[
"haulFlag"
]
=
-
1
record
[
"unloadAreaId"
]
=
item
.
unload_area_id
record
[
"groupName"
]
=
DispatchInfo
.
group_name
[
group_id
]
record
[
"groupId"
]
=
group_id
record
[
"isdeleted"
]
=
False
logger
.
info
(
f
'{truck_id} redis 注入 {record}'
)
record
[
"isTemp"
]
=
False
except
Exception
as
es
:
record
[
"haulFlag"
]
=
-
1
logger
.
error
(
"调度结果写入异常-矿卡空载"
)
record
[
"groupName"
]
=
DispatchInfo
.
group_name
[
group_id
]
logger
.
error
(
es
)
finally
:
logger
.
info
(
f
'{truck_id} redis 注入 {record}'
)
redis5
.
set
(
truck_id
,
str
(
json
.
dumps
(
record
)))
except
Exception
as
es
:
logger
.
error
(
"调度结果写入异常-矿卡空载"
)
logger
.
error
(
es
)
finally
:
redis5
.
set
(
truck_id
,
str
(
json
.
dumps
(
record
)))
else
:
logger
.
info
(
"调度计划相同,无需变更"
)
def
get_lanes_between_entrances
(
closer_node_id
,
further_node_id
):
def
get_lanes_between_entrances
(
closer_node_id
,
further_node_id
):
...
...
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