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
bd837d18
Commit
bd837d18
authored
Dec 31, 2025
by
Allvey
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
二次调度适配新版地图
parent
58bf095b
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
44 additions
and
33 deletions
+44
-33
util.py
core/util.py
+8
-3
gothrough_digging.py
gothrough/gothrough_digging.py
+9
-6
graph_load.py
graph/graph_load.py
+3
-1
topo_graph.py
graph/topo_graph.py
+24
-23
No files found.
core/util.py
View file @
bd837d18
...
...
@@ -62,8 +62,11 @@ def get_cross_next_lanes(truck_locate):
:return: lane_id list
"""
next_lane_list
=
[]
startNodeId
=
session_postgre
.
query
(
Lane
)
.
filter_by
(
Id
=
truck_locate
)
.
first
()
.
EndNodeId
map_version
=
session_postgre
.
query
(
Distribute_Library
)
.
filter_by
(
Status
=
"1"
)
.
first
()
.
Version
startNodeId
=
session_postgre
.
query
(
Lane
)
.
filter_by
(
FeatureId
=
truck_locate
,
MapVersion
=
map_version
)
.
first
()
.
EndNodeId
for
item
in
session_postgre
.
query
(
Lane
)
.
filter_by
(
StartNodeId
=
startNodeId
,
MapVersion
=
map_version
)
.
all
():
next_lane_list
.
append
(
str
(
item
.
Id
))
next_lane_end_node
=
item
.
EndNodeId
...
...
@@ -82,8 +85,10 @@ def is_close_to_cross(truck_locate, truck_prise_location):
:return:
"""
try
:
start_node_id
=
session_postgre
.
query
(
Lane
)
.
filter_by
(
Id
=
truck_locate
)
.
first
()
.
EndNodeId
start_node_gemo
=
str
(
session_postgre
.
query
(
Node
)
.
filter_by
(
Id
=
start_node_id
)
.
first
()
.
geom
)
map_version
=
session_postgre
.
query
(
Distribute_Library
)
.
filter_by
(
Status
=
"1"
)
.
first
()
.
Version
start_node_id
=
session_postgre
.
query
(
Lane
)
.
filter_by
(
FeatureId
=
truck_locate
,
MapVersion
=
map_version
)
.
first
()
.
EndNodeId
start_node_gemo
=
str
(
session_postgre
.
query
(
Node
)
.
filter_by
(
FeatureId
=
start_node_id
,
MapVersion
=
map_version
)
.
first
()
.
geom
)
coess_pos_xy
=
wkb
.
loads
(
start_node_gemo
)
cross_pos
=
[
coess_pos_xy
.
y
,
coess_pos_xy
.
x
]
except
Exception
as
es
:
...
...
gothrough/gothrough_digging.py
View file @
bd837d18
...
...
@@ -154,11 +154,14 @@ def redispatch_request():
closer_excavator_state
,
further_excavator_state
=
get_excavator_state
(
closer_excavator_id
),
\
get_excavator_state
(
further_excavator_id
)
map_version
=
session_postgre
.
query
(
Distribute_Library
)
.
filter_by
(
Status
=
"1"
)
.
first
()
.
Version
# 装载区入场点
closer_entrance_node_id
=
session_postgre
.
query
(
DiggingWorkArea
)
.
filter_by
(
Id
=
closer_area_id
)
.
first
()
.
EntranceNodeId
closer_entrance_node_id
=
session_postgre
.
query
(
DiggingWorkArea
)
.
filter_by
(
FeatureId
=
closer_area_id
,
MapVersion
=
map_version
)
.
first
()
.
EntranceNodeId
further_entrance_node_id
=
session_postgre
.
query
(
DiggingWorkArea
)
.
filter_by
(
Id
=
further_area_id
)
.
first
()
.
EntranceNodeId
further_entrance_node_id
=
session_postgre
.
query
(
DiggingWorkArea
)
.
filter_by
(
FeatureId
=
further_area_id
,
MapVersion
=
map_version
)
.
first
()
.
EntranceNodeId
logger
.
info
(
"近端装载区入场点"
)
logger
.
info
(
closer_entrance_node_id
)
...
...
@@ -338,13 +341,13 @@ def truck_pass_first_area(truck_id, lane_id, closer_entrance_node_id, further_en
# try:
map_version
=
session_postgre
.
query
(
Distribute_Library
)
.
filter_by
(
Status
=
"1"
)
.
first
()
.
Version
def
backtracking
(
root_node
):
from
collections
import
deque
que
=
deque
([
root_node
])
map_version
=
session_postgre
.
query
(
Distribute_Library
)
.
filter_by
(
Status
=
"1"
)
.
first
()
.
Version
while
que
:
size
=
len
(
que
)
for
_
in
range
(
size
):
...
...
@@ -362,7 +365,7 @@ def truck_pass_first_area(truck_id, lane_id, closer_entrance_node_id, further_en
if
item
:
que
.
append
(
item
.
EndNodeId
)
node_id
=
session_postgre
.
query
(
Lane
)
.
filter_by
(
Id
=
lane_id
)
.
first
()
.
EndNodeId
node_id
=
session_postgre
.
query
(
Lane
)
.
filter_by
(
FeatureId
=
lane_id
,
MapVersion
=
map_version
)
.
first
()
.
EndNodeId
if
backtracking
(
root_node
=
node_id
)
==
0
:
return
True
...
...
graph/graph_load.py
View file @
bd837d18
...
...
@@ -16,6 +16,8 @@ def graph_construct():
# 读取图节点
cursor
=
c
.
execute
(
"SELECT * FROM GRAPH_NODE"
)
map_version
=
session_postgre
.
query
(
Distribute_Library
)
.
filter_by
(
Status
=
"1"
)
.
first
()
.
Version
node_label
=
{}
for
row
in
cursor
:
node_label
[
row
[
1
]]
=
row
[
2
]
...
...
@@ -37,7 +39,7 @@ def graph_construct():
lane_info
=
{}
for
item
in
lanes
:
distance
=
session_postgre
.
query
(
Lane
)
.
filter_by
(
Id
=
item
)
.
first
()
.
Length
distance
=
session_postgre
.
query
(
Lane
)
.
filter_by
(
FeatureId
=
item
,
MapVersion
=
map_version
)
.
first
()
.
Length
lane_info
[
item
]
=
list
([
distance
,
distance
])
# 重构卸载路径拓扑图
...
...
graph/topo_graph.py
View file @
bd837d18
...
...
@@ -134,17 +134,19 @@ class Topo():
trip
=
self
.
work_area_distance_info
park_trip
=
self
.
park_distance_info
map_version
=
session_postgre
.
query
(
Distribute_Library
)
.
filter_by
(
Status
=
"1"
)
.
first
()
.
Version
for
item
in
trip
:
# item = [[load_area_id, unload_area_id], to_unload_lanes, to_load_lanes]
# path_node_for_trip= []
# unload_G
Exitnode_for_digging
=
str
(
session_postgre
.
query
(
DiggingWorkArea
)
.
filter_by
(
Id
=
item
[
0
][
0
]
)
.
first
()
.
ExitNodeId
)
session_postgre
.
query
(
DiggingWorkArea
)
.
filter_by
(
FeatureId
=
item
[
0
][
0
],
MapVersion
=
map_version
)
.
first
()
.
ExitNodeId
)
digging_name
=
str
(
session_postgre
.
query
(
DiggingWorkArea
)
.
filter_by
(
Id
=
item
[
0
][
0
]
)
.
first
()
.
Name
)
Entrancenode_for_dump
=
str
(
session_postgre
.
query
(
DumpArea
)
.
filter_by
(
Id
=
item
[
0
][
1
]
)
.
first
()
.
EntranceNodeId
)
dump_name
=
str
(
session_postgre
.
query
(
DumpArea
)
.
filter_by
(
Id
=
item
[
0
][
1
]
)
.
first
()
.
Name
)
session_postgre
.
query
(
DiggingWorkArea
)
.
filter_by
(
FeatureId
=
item
[
0
][
0
],
MapVersion
=
map_version
)
.
first
()
.
Name
)
Entrancenode_for_dump
=
str
(
session_postgre
.
query
(
DumpArea
)
.
filter_by
(
FeatureId
=
item
[
0
][
1
],
MapVersion
=
map_version
)
.
first
()
.
EntranceNodeId
)
dump_name
=
str
(
session_postgre
.
query
(
DumpArea
)
.
filter_by
(
FeatureId
=
item
[
0
][
1
],
MapVersion
=
map_version
)
.
first
()
.
Name
)
self
.
unload_G
.
add_node
(
Exitnode_for_digging
,
name
=
'digging'
,
type
=
digging_name
)
self
.
unload_G
.
add_node
(
Entrancenode_for_dump
,
name
=
'group_dumps'
,
type
=
dump_name
)
...
...
@@ -164,17 +166,16 @@ class Topo():
try
:
unload_saved_lane
=
[]
for
lane_id
in
item
[
1
]:
# for each lane in a to_unload route
lane_startpoint
=
str
(
session_postgre
.
query
(
Lane
)
.
filter_by
(
Id
=
lane_id
)
.
first
()
.
StartNodeId
)
lane_endpoint
=
str
(
session_postgre
.
query
(
Lane
)
.
filter_by
(
Id
=
lane_id
)
.
first
()
.
EndNodeId
)
lane_startpoint
=
str
(
session_postgre
.
query
(
Lane
)
.
filter_by
(
FeatureId
=
lane_id
,
MapVersion
=
map_version
)
.
first
()
.
StartNodeId
)
lane_endpoint
=
str
(
session_postgre
.
query
(
Lane
)
.
filter_by
(
FeatureId
=
lane_id
,
MapVersion
=
map_version
)
.
first
()
.
EndNodeId
)
logger
.
info
(
f
'unload route lane id:
%
s'
%
lane_id
)
# add [start_point, end_point, length, lane_id] to unload_saved_lane
unload_saved_lane
.
append
([
str
(
lane_startpoint
),
str
(
lane_endpoint
),
float
(
session_postgre
.
query
(
Lane
)
.
filter_by
(
Id
=
lane_id
)
.
first
()
.
Length
),
float
(
session_postgre
.
query
(
Lane
)
.
filter_by
(
FeatureId
=
lane_id
,
MapVersion
=
map_version
)
.
first
()
.
Length
),
lane_id
])
# son_lane_num = sum(1 for truck_id in session_postgre.query(Lane).filter_by(StartNodeId = lane_endpoint).all())
map_version
=
session_postgre
.
query
(
Distribute_Library
)
.
filter_by
(
Status
=
"1"
)
.
first
()
.
Version
son_lane_num
=
len
(
session_postgre
.
query
(
Lane
)
.
filter_by
(
StartNodeId
=
lane_endpoint
,
MapVersion
=
map_version
)
.
all
())
# 可以添加的节点:分叉口或终点
...
...
@@ -216,11 +217,11 @@ class Topo():
# load_G
Entrancenode_for_digging
=
str
(
session_postgre
.
query
(
DiggingWorkArea
)
.
filter_by
(
Id
=
item
[
0
][
0
]
)
.
first
()
.
EntranceNodeId
)
session_postgre
.
query
(
DiggingWorkArea
)
.
filter_by
(
FeatureId
=
item
[
0
][
0
],
MapVersion
=
map_version
)
.
first
()
.
EntranceNodeId
)
digging_name
=
str
(
session_postgre
.
query
(
DiggingWorkArea
)
.
filter_by
(
Id
=
item
[
0
][
0
]
)
.
first
()
.
Name
)
Exitnode_for_dump
=
str
(
session_postgre
.
query
(
DumpArea
)
.
filter_by
(
Id
=
item
[
0
][
1
]
)
.
first
()
.
ExitNodeId
)
dump_name
=
str
(
session_postgre
.
query
(
DumpArea
)
.
filter_by
(
Id
=
item
[
0
][
1
]
)
.
first
()
.
Name
)
session_postgre
.
query
(
DiggingWorkArea
)
.
filter_by
(
FeatureId
=
item
[
0
][
0
],
MapVersion
=
map_version
)
.
first
()
.
Name
)
Exitnode_for_dump
=
str
(
session_postgre
.
query
(
DumpArea
)
.
filter_by
(
FeatureId
=
item
[
0
][
1
],
MapVersion
=
map_version
)
.
first
()
.
ExitNodeId
)
dump_name
=
str
(
session_postgre
.
query
(
DumpArea
)
.
filter_by
(
FeatureId
=
item
[
0
][
1
],
MapVersion
=
map_version
)
.
first
()
.
Name
)
logger
.
info
(
f
'load route start dump name:
%
s'
%
dump_name
)
logger
.
info
(
f
'load route end digging name:
%
s'
%
digging_name
)
...
...
@@ -241,14 +242,13 @@ class Topo():
for
lane_id
in
item
[
2
]:
# [[str(item.load_area_id), str(item.unload_area_id)], item.to_unload_lanes, item.to_load_lanes]
lane_startpoint
=
str
(
session_postgre
.
query
(
Lane
)
.
filter_by
(
Id
=
lane_id
)
.
first
()
.
StartNodeId
)
lane_endpoint
=
str
(
session_postgre
.
query
(
Lane
)
.
filter_by
(
Id
=
lane_id
)
.
first
()
.
EndNodeId
)
lane_startpoint
=
str
(
session_postgre
.
query
(
Lane
)
.
filter_by
(
FeatureId
=
lane_id
,
MapVersion
=
map_version
)
.
first
()
.
StartNodeId
)
lane_endpoint
=
str
(
session_postgre
.
query
(
Lane
)
.
filter_by
(
FeatureId
=
lane_id
,
MapVersion
=
map_version
)
.
first
()
.
EndNodeId
)
load_saved_lane
.
append
([
str
(
lane_startpoint
),
str
(
lane_endpoint
),
float
(
session_postgre
.
query
(
Lane
)
.
filter_by
(
Id
=
lane_id
)
.
first
()
.
Length
),
float
(
session_postgre
.
query
(
Lane
)
.
filter_by
(
FeatureId
=
lane_id
,
MapVersion
=
map_version
)
.
first
()
.
Length
),
lane_id
])
# son_lane_num = sum(1 for truck_id in session_postgre.query(Lane).filter_by(StartNodeId = lane_endpoint).all())
map_version
=
session_postgre
.
query
(
Distribute_Library
)
.
filter_by
(
Status
=
"1"
)
.
first
()
.
Version
son_lane_num
=
len
(
session_postgre
.
query
(
Lane
)
.
filter_by
(
StartNodeId
=
lane_endpoint
,
MapVersion
=
map_version
)
.
all
())
logger
.
info
(
f
'load route lane id:
%
s'
%
lane_id
)
...
...
@@ -296,13 +296,13 @@ class Topo():
try
:
load_saved_lane
=
[]
for
i
in
k
[
1
]:
load_i_startpoint
=
str
(
session_postgre
.
query
(
Lane
)
.
filter_by
(
Id
=
i
)
.
first
()
.
StartNodeId
)
load_i_endpoint
=
str
(
session_postgre
.
query
(
Lane
)
.
filter_by
(
Id
=
i
)
.
first
()
.
EndNodeId
)
load_i_startpoint
=
str
(
session_postgre
.
query
(
Lane
)
.
filter_by
(
FeatureId
=
i
,
MapVersion
=
map_version
)
.
first
()
.
StartNodeId
)
load_i_endpoint
=
str
(
session_postgre
.
query
(
Lane
)
.
filter_by
(
FeatureId
=
i
,
MapVersion
=
map_version
)
.
first
()
.
EndNodeId
)
load_saved_lane
.
append
([
str
(
load_i_startpoint
),
str
(
load_i_endpoint
),
float
(
session_postgre
.
query
(
Lane
)
.
filter_by
(
Id
=
i
)
.
first
()
.
Length
),
i
])
float
(
session_postgre
.
query
(
Lane
)
.
filter_by
(
FeatureId
=
i
,
MapVersion
=
map_version
)
.
first
()
.
Length
),
i
])
# son_lane_num = sum(1 for truck_id in session_postgre.query(Lane).filter_by(StartNodeId = load_i_endpoint).all())
map_version
=
session_postgre
.
query
(
Distribute_Library
)
.
filter_by
(
Status
=
"1"
)
.
first
()
.
Version
#
map_version = session_postgre.query(Distribute_Library).filter_by(Status="1").first().Version
son_lane_num
=
len
(
session_postgre
.
query
(
Lane
)
.
filter_by
(
StartNodeId
=
load_i_endpoint
,
MapVersion
=
map_version
)
.
all
())
logger
.
info
(
f
'park route lane id:
%
s'
%
i
)
...
...
@@ -367,6 +367,7 @@ class Topo():
def
get_unload_target_node_real
(
self
,
truck_location_lane
,
pre_target
,
allow
):
map_version
=
session_postgre
.
query
(
Distribute_Library
)
.
filter_by
(
Status
=
"1"
)
.
first
()
.
Version
source_node
=
self
.
get_unload_edge_node
(
truck_location_lane
)
target_list
=
[]
...
...
@@ -392,7 +393,7 @@ class Topo():
distance
,
path
=
nx
.
single_source_dijkstra
(
self
.
unload_G
,
source
=
source_node
,
target
=
i
,
weight
=
"real_distance"
)
unload_area_id
=
session_postgre
.
query
(
DumpArea
)
.
filter_by
(
Id
=
unload_area_id
)
.
first
(
unload_area_id
=
session_postgre
.
query
(
DumpArea
)
.
filter_by
(
FeatureId
=
unload_area_id
,
MapVersiojn
=
map_version
)
.
first
(
EntranceNodeId
=
i
)
.
first
()
.
Id
unload_area_lane_dict
[
str
(
unload_area_id
)]
=
[]
for
j
in
range
(
len
(
path
)
-
1
):
...
...
@@ -407,7 +408,7 @@ class Topo():
# return the target area's entrance point and target area
min_dis_path
=
path_length_map
[
sorted
(
list
(
path_length_map
.
keys
()))[
0
]]
entrance_point
=
min_dis_path
[
-
1
]
map_version
=
session_postgre
.
query
(
Distribute_Library
)
.
filter_by
(
Status
=
"1"
)
.
first
()
.
Version
target_dump_area
=
str
(
session_postgre
.
query
(
DumpArea
)
.
filter_by
(
EntranceNodeId
=
entrance_point
,
MapVersion
=
map_version
)
.
first
()
.
Id
)
# target_dump_area_name = str(session_postgre.query(DumpArea).filter_by(EntranceNodeId=entrance_point).first().Name)
...
...
@@ -482,7 +483,7 @@ class Topo():
# update target_list
pre_destination_node
=
str
(
session_postgre
.
query
(
DiggingWorkArea
)
.
filter_by
(
Id
=
pre_target
)
.
first
()
.
EntranceNodeId
)
session_postgre
.
query
(
DiggingWorkArea
)
.
filter_by
(
FeatureId
=
pre_target
,
MapVersion
=
map_version
)
.
first
()
.
EntranceNodeId
)
target_list
=
[]
for
(
node
,
att
)
in
self
.
load_G
.
nodes
.
data
(
'name'
):
# select next reachable target
...
...
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