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
8edf3046
Commit
8edf3046
authored
Oct 18, 2022
by
张晓彤
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
代码优化v3
parent
c81d437a
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
45 additions
and
45 deletions
+45
-45
algorithm.py
alg/algorithm.py
+19
-19
group.py
core/group.py
+0
-0
schedule.py
core/schedule.py
+2
-2
submit.py
core/submit.py
+3
-3
dispatchInfo.py
data/dispatchInfo.py
+7
-7
para_config.py
data/para_config.py
+4
-4
dump.py
equipment/dump.py
+2
-2
excavator.py
equipment/excavator.py
+2
-2
truck.py
equipment/truck.py
+2
-2
gothrough_digging.py
gothrough/gothrough_digging.py
+1
-1
topo_graph.py
graph/topo_graph.py
+3
-3
No files found.
alg/algorithm.py
View file @
8edf3046
...
...
@@ -55,9 +55,9 @@ class Congestion(AlgorithmBase):
task
=
self
.
truck
.
get_truck_current_task
()[
truck_id
]
group_dynamic_excavator_num
=
len
(
self
.
group
.
dump
)
group_dynamic_excavator_num
=
len
(
self
.
group
.
group_dumps
)
group_dynamic_dump_num
=
len
(
self
.
group
.
excavator
)
group_dynamic_dump_num
=
len
(
self
.
group
.
group_excavators
)
except
Exception
as
es
:
self
.
logger
.
error
(
"车辆调度信息读取异常"
)
...
...
@@ -158,9 +158,9 @@ class ExpectedTime(AlgorithmBase):
truck_avl_time
=
self
.
pre_sch
.
get_truck_avl_time
(
truck_id
=
truck_id
)
group_dynamic_excavator_num
=
len
(
self
.
group
.
excavator
)
group_dynamic_excavator_num
=
len
(
self
.
group
.
group_excavators
)
group_dynamic_unload_area_num
=
len
(
self
.
group
.
unload_area
)
group_dynamic_unload_area_num
=
len
(
self
.
group
.
group_unload_areas
)
# except Exception as es:
# self.logger.error("车辆调度信息读取异常")
...
...
@@ -174,7 +174,7 @@ class ExpectedTime(AlgorithmBase):
# try:
self
.
logger
.
info
(
f
'矿卡 {truck_id}'
)
self
.
logger
.
info
(
"矿卡状态:矿卡启动或故障恢复"
)
self
.
logger
.
info
(
f
"涉及挖机:{self.group.
excavator
}"
)
self
.
logger
.
info
(
f
"涉及挖机:{self.group.
group_excavators
}"
)
# self.logger.info(f"涉及挖机:{list(DeviceMap.excavator_uuid_to_index_dict.keys())}")
# except Exception as es:
# self.logger.error(f"矿卡{truck_id}状态不匹配")
...
...
@@ -185,7 +185,7 @@ class ExpectedTime(AlgorithmBase):
excavator_val_time_dict
=
self
.
pre_sch
.
get_excavator_avl_time
()
# 局部挖机可用时间 list
group_excavator_avl_time_ls
=
np
.
full
(
len
(
self
.
group
.
excavator
),
0.0
)
group_excavator_avl_time_ls
=
np
.
full
(
len
(
self
.
group
.
group_excavators
),
0.0
)
self
.
logger
.
info
(
"self.group.excavator_uuid_index_dict"
)
self
.
logger
.
info
(
self
.
group
.
excavator_uuid_index_dict
)
...
...
@@ -229,18 +229,18 @@ class ExpectedTime(AlgorithmBase):
# try:
self
.
logger
.
info
(
f
'矿卡 {truck_id}'
)
self
.
logger
.
info
(
"矿卡状态:矿卡空载"
)
self
.
logger
.
info
(
f
"涉及卸载设备:{self.group.
dump
}"
)
self
.
logger
.
info
(
f
"涉及卸载设备:{self.group.
group_dumps
}"
)
# self.logger.info(f"涉及卸载设备:{list(DeviceMap.dump_uuid_to_index_dict.keys())}")
# except Exception as es:
# self.logger.error(f"矿卡{truck_id}状态不匹配")
# self.logger.error(es)
try
:
# get
dump
available time (List) for all
# get
group_dumps
available time (List) for all
dump_val_time_dict
=
self
.
pre_sch
.
get_dump_avl_time
()
# get
dump
available time (List) within the group
group_dump_val_time_ls
=
np
.
full
(
len
(
self
.
group
.
unload_area
),
0.0
)
# get
group_dumps
available time (List) within the group
group_dump_val_time_ls
=
np
.
full
(
len
(
self
.
group
.
group_unload_areas
),
0.0
)
self
.
logger
.
info
(
"self.group.dump_uuid_index_dict"
)
self
.
logger
.
info
(
self
.
group
.
dump_uuid_index_dict
)
...
...
@@ -248,17 +248,17 @@ class ExpectedTime(AlgorithmBase):
for
dump_id
,
dump_index
in
self
.
group
.
dump_uuid_index_dict
.
items
():
group_dump_val_time_ls
[
dump_index
]
=
dump_val_time_dict
[
dump_id
]
# get truck located
excavator
id (uuid) from truck trip
# get truck located
group_excavators
id (uuid) from truck trip
if
int
(
trip
[
1
])
<
0
or
int
(
trip
[
1
])
>=
len
(
DeviceMap
.
excavator_index_to_uuid_dict
):
raise
CoreException
(
105
,
f
'车辆 {truck_id} 行程驶往 {int(trip[1])} 号挖机越界'
)
excavator_id
=
DeviceMap
.
excavator_index_to_uuid_dict
[
int
(
trip
[
1
])]
# get
excavator
index (int) within group from group's excavator_group_index
# get
group_excavators
index (int) within group from group's excavator_group_index
if
excavator_id
not
in
self
.
group
.
excavator_uuid_index_dict
:
raise
CoreException
(
106
,
f
'挖机 {excavator_id} 不存在于分组 {self.group.name} excavator_uuid_index_dict'
)
excavator_group_index
=
self
.
group
.
excavator_uuid_index_dict
[
excavator_id
]
# get travelling time (List) to each
dump
# get travelling time (List) to each
group_dumps
truck_reach_time_ls
=
60
*
self
.
group
.
to_unload_area_distance
[
excavator_group_index
,
:]
\
/
1000
/
self
.
truck
.
heavy_speed
[
truck_id
]
+
truck_avl_time
...
...
@@ -296,18 +296,18 @@ class ExpectedTime(AlgorithmBase):
# try:
self
.
logger
.
info
(
f
'矿卡 {truck_id}'
)
self
.
logger
.
info
(
"矿卡状态:矿卡重载"
)
self
.
logger
.
info
(
f
'涉及挖机设备:{self.group.
excavator
}'
)
self
.
logger
.
info
(
f
'涉及挖机设备:{self.group.
group_excavators
}'
)
# self.logger.info(f"涉及挖机设备:{list(DeviceMap.excavator_uuid_to_index_dict.keys())}")
# except Exception as es:
# self.logger.error(f"矿卡{truck_id}状态不匹配")
# self.logger.error(es)
try
:
# get
excavator
available time (List) for all
# get
group_excavators
available time (List) for all
excavator_val_time
=
self
.
pre_sch
.
get_excavator_avl_time
()
# get
excavator
available time (List) within the group
group_excavator_avl_time_ls
=
np
.
full
(
len
(
self
.
group
.
excavator
),
0.0
)
# get
group_excavators
available time (List) within the group
group_excavator_avl_time_ls
=
np
.
full
(
len
(
self
.
group
.
group_excavators
),
0.0
)
self
.
logger
.
info
(
"self.group.excavator_uuid_index_dict"
)
self
.
logger
.
info
(
self
.
group
.
excavator_uuid_index_dict
)
...
...
@@ -315,10 +315,10 @@ class ExpectedTime(AlgorithmBase):
for
excavator_id
,
excavator_index
in
self
.
group
.
excavator_uuid_index_dict
.
items
():
group_excavator_avl_time_ls
[
excavator_index
]
=
excavator_val_time
[
excavator_id
]
# get truck located
dump
id (uuid) from truck trip
# get truck located
group_dumps
id (uuid) from truck trip
dump_id
=
DeviceMap
.
dump_index_to_uuid_dict
[
int
(
trip
[
1
])]
# get unload area id (uuid) from DispatchInfo dump_id to
unload_area
mapping
# get unload area id (uuid) from DispatchInfo dump_id to
group_unload_areas
mapping
unload_area_id
=
DispatchInfo
.
dump_unload_area_dict
[
dump_id
]
# get unload area id (uuid) from DispatchInfo dump_id to unload
...
...
core/group.py
View file @
8edf3046
This diff is collapsed.
Click to expand it.
core/schedule.py
View file @
8edf3046
...
...
@@ -22,9 +22,9 @@ class PreSchedule:
根据矿卡请求队列及抵达信息,计算设备最早可用时间
Attribute:
equipment class: truck,
excavator, dump
equipment class: truck,
group_excavators, group_dumps
schedule start time
equipment available time: truck,
excavator, dump
equipment available time: truck,
group_excavators, group_dumps
"""
...
...
core/submit.py
View file @
8edf3046
...
...
@@ -231,9 +231,9 @@ class DispatchSubmission:
"""
self
.
logger
.
info
(
f
'调度分组: {group.group_id} {DispatchInfo.group_name[group.group_id]}'
)
self
.
logger
.
info
(
f
'组内车辆 {group.
truck_set
}'
)
self
.
logger
.
info
(
f
'组内挖机 {group.
excavator
}'
)
self
.
logger
.
info
(
f
'组内卸点 {group.
dump
}'
)
self
.
logger
.
info
(
f
'组内车辆 {group.
group_trucks
}'
)
self
.
logger
.
info
(
f
'组内挖机 {group.
group_excavators
}'
)
self
.
logger
.
info
(
f
'组内卸点 {group.
group_dumps
}'
)
self
.
logger
.
info
(
f
'调度模式 {group.group_mode}'
)
self
.
logger
.
info
(
"dispatch_plan_dict"
)
self
.
logger
.
info
(
dispatch_plan_dict
)
...
...
data/dispatchInfo.py
View file @
8edf3046
...
...
@@ -25,15 +25,15 @@ class DispatchInfo:
load_excavator_dict
=
{}
# 装载区id-->>电铲编号的映射
excavator_load_dict
=
{}
# 电铲编号->>装载区id的映射
#
excavator
<-> group id
#
group_excavators
<-> group id
group_excavator_dict
=
{}
# team_id -> dict {[excavator_id, excavator_id], ...}
excavator_group_dict
=
{}
# excavator_id -> team_id 问题:多个key值对应一个value值
#
unload_area
<-> group id
#
group_unload_areas
<-> group id
group_unload_area_dict
=
{}
# team_id -> dict {unload_area_id, unload_area_id, ...}
unload_area_group_dict
=
{}
# unload_area_id -> team_id
#
dump
<-> group id
#
group_dumps
<-> group id
group_dump_dict
=
{}
dump_group_dict
=
{}
...
...
@@ -54,7 +54,7 @@ class DispatchInfo:
# truck -> match(excavator_id, unload_area_id)
truck_match_dict
=
{}
#
unload_area <-> dump
id
#
group_unload_areas <-> group_dumps
id
dump_unload_area_dict
=
{}
unload_area_dump_dict
=
{}
...
...
@@ -204,7 +204,7 @@ class DispatchInfo:
# update excavator_id <-> group_id && unload_area_id <-> group_id && truck_id <-> group_id
try
:
for
item
in
session_mysql
.
query
(
DispatchSetting
)
.
filter_by
(
isdeleted
=
0
)
.
all
():
# add
excavator
# add
group_excavators
if
item
.
group_id
not
in
cls
.
group_excavator_dict
.
keys
():
cls
.
group_excavator_dict
[
item
.
group_id
]
=
[
item
.
exactor_id
]
else
:
...
...
@@ -212,7 +212,7 @@ class DispatchInfo:
cls
.
group_excavator_dict
[
item
.
group_id
]
.
append
(
item
.
exactor_id
)
cls
.
excavator_group_dict
[
item
.
exactor_id
]
=
item
.
group_id
# add
unload_area
# add
group_unload_areas
if
item
.
group_id
not
in
cls
.
group_unload_area_dict
.
keys
():
cls
.
group_unload_area_dict
[
item
.
group_id
]
=
[
item
.
unload_area_id
]
else
:
...
...
@@ -220,7 +220,7 @@ class DispatchInfo:
cls
.
group_unload_area_dict
[
item
.
group_id
]
.
append
(
item
.
unload_area_id
)
cls
.
unload_area_group_dict
[
item
.
unload_area_id
]
=
item
.
group_id
# add
dump
# add
group_dumps
if
item
.
group_id
not
in
cls
.
group_dump_dict
.
keys
():
cls
.
group_dump_dict
[
item
.
group_id
]
=
[
item
.
dump_id
]
else
:
...
...
data/para_config.py
View file @
8edf3046
...
...
@@ -48,13 +48,13 @@ logger = get_logger("zxt.para")
# excavator_uuid_to_name_dict, dump_uuid_to_name_dict = build_equipment_uuid_name_map()
#
# # 矿卡集合
#
truck_set
= set(update_total_truck())
#
group_trucks
= set(update_total_truck())
#
# # 固定派车矿卡集合
# fixed_truck_set = set(update_fixdisp_truck())
#
# # 动态派车矿卡集合
# # dynamic_truck_set =
truck_set
.difference(fixed_truck_set)
# # dynamic_truck_set =
group_trucks
.difference(fixed_truck_set)
# dynamic_truck_set = update_dynamic_truck()
#
# dynamic_truck_num = len(dynamic_truck_set)
...
...
@@ -472,7 +472,7 @@ def global_period_para_update():
# 矿卡集合
truck_set
=
set
(
update_total_truck
())
logger
.
info
(
"
truck_set
"
)
logger
.
info
(
"
group_trucks
"
)
logger
.
info
(
truck_set
)
# 固定派车矿卡集合
...
...
@@ -482,7 +482,7 @@ def global_period_para_update():
logger
.
info
(
fixed_truck_set
)
# 动态派车矿卡集合
# dynamic_truck_set =
truck_set
.difference(fixed_truck_set)
# dynamic_truck_set =
group_trucks
.difference(fixed_truck_set)
dynamic_truck_set
=
update_dynamic_truck
()
dynamic_truck_num
=
len
(
dynamic_truck_set
)
...
...
equipment/dump.py
View file @
8edf3046
...
...
@@ -3,7 +3,7 @@
# @Time : 2021/8/24 11:28
# @Author : Opfer
# @Site :
# @File :
dump.py
# @File :
group_dumps.py
# @Software: PyCharm
from
data.para_config
import
*
...
...
@@ -33,7 +33,7 @@ class DumpInfo(WalkManage):
self
.
dump_strength
=
np
.
zeros
(
self
.
dynamic_dump_num
)
# 日志器
self
.
logger
=
get_logger
(
"zxt.
dump
"
)
self
.
logger
=
get_logger
(
"zxt.
group_dumps
"
)
# # 参数初始化
# self.dump_para_period_update()
...
...
equipment/excavator.py
View file @
8edf3046
...
...
@@ -3,7 +3,7 @@
# @Time : 2021/8/24 11:28
# @Author : Opfer
# @Site :
# @File :
excavator.py
# @File :
group_excavators.py
# @Software: PyCharm
from
data.para_config
import
*
...
...
@@ -37,7 +37,7 @@ class ExcavatorInfo(WalkManage):
self
.
excavator_strength
=
np
.
zeros
(
self
.
dynamic_excavator_num
)
# 日志器
self
.
logger
=
get_logger
(
"zxt.
excavator
"
)
self
.
logger
=
get_logger
(
"zxt.
group_excavators
"
)
#
# # 参数初始化
# self.excavator_para_period_update()
...
...
equipment/truck.py
View file @
8edf3046
...
...
@@ -76,7 +76,7 @@ class TruckInfo(WalkManage):
# 日志
self
.
logger
=
get_logger
(
"zxt.truck"
)
# # 初始化读取参数
# self.truck_para_period_update(
dump, excavator
)
# self.truck_para_period_update(
group_dumps, group_excavators
)
# # 矿卡所属group
# self.truck_group = {}
# 矿卡禁用列表
...
...
@@ -428,7 +428,7 @@ class TruckInfo(WalkManage):
# 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]
# end_eqp_index =
group_excavators
.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
:
...
...
gothrough/gothrough_digging.py
View file @
8edf3046
...
...
@@ -474,7 +474,7 @@ def get_lanes_between_entrances(closer_node_id, further_node_id):
def
get_excavator_state
(
excavator_id
):
"""
get
excavator
state.
get
group_excavators
state.
:param excavator_id:
:return: state
"""
...
...
graph/topo_graph.py
View file @
8edf3046
...
...
@@ -142,7 +142,7 @@ class Topo():
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
)
self
.
unload_G
.
add_node
(
Exitnode_for_digging
,
name
=
'digging'
,
type
=
digging_name
)
self
.
unload_G
.
add_node
(
Entrancenode_for_dump
,
name
=
'
dump
'
,
type
=
dump_name
)
self
.
unload_G
.
add_node
(
Entrancenode_for_dump
,
name
=
'
group_dumps
'
,
type
=
dump_name
)
# path_node_for_trip.append(Exitnode_for_digging) # add start node for trip
...
...
@@ -215,7 +215,7 @@ class Topo():
self
.
load_G_all_nodes
.
append
(
Entrancenode_for_digging
)
self
.
load_G_digging_nodes
.
append
(
Entrancenode_for_digging
)
self
.
load_G
.
add_node
(
Exitnode_for_dump
,
name
=
'
dump
'
,
type
=
digging_name
)
self
.
load_G
.
add_node
(
Exitnode_for_dump
,
name
=
'
group_dumps
'
,
type
=
digging_name
)
self
.
load_G
.
add_node
(
Entrancenode_for_digging
,
name
=
'digging'
,
type
=
dump_name
)
try
:
...
...
@@ -333,7 +333,7 @@ class Topo():
for
(
u
,
wt
)
in
self
.
unload_G
.
nodes
.
data
(
'name'
):
# select next reachable target
if
wt
==
'
dump
'
:
if
wt
==
'
group_dumps
'
:
if
allow
:
target_list
.
append
(
u
)
else
:
...
...
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