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
39d4f4f7
Commit
39d4f4f7
authored
Jun 21, 2022
by
张晓彤
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复部分零碎BUG
parent
2472978c
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
106 additions
and
121 deletions
+106
-121
dispatcher.py
core/dispatcher.py
+11
-26
group.py
core/group.py
+2
-2
dispatchInfo.py
data/dispatchInfo.py
+4
-4
realtime_dispatch.py
realtime_dispatch.py
+85
-85
settings.py
settings.py
+4
-4
No files found.
core/dispatcher.py
View file @
39d4f4f7
...
...
@@ -31,6 +31,7 @@ class Dispatcher:
self
.
pre_sch
=
pre_sch
self
.
request_mode
=
request_mode
self
.
submission
=
DispatchSubmission
(
dump
,
excavator
,
truck
)
self
.
logger
=
get_logger
(
"zxt.dispatcher"
)
def
period_update
(
self
):
"""
...
...
@@ -69,8 +70,7 @@ class Dispatcher:
"""
for
group
in
self
.
group_list
:
truck_dispatch_plan_dict
=
group
.
group_dispatch
(
ExpectedTime
)
print
(
"truck_dispatch_plan_dict"
)
print
(
truck_dispatch_plan_dict
)
self
.
logger
.
info
(
f
'调度分组: {group.group_id} {DispatchInfo.group_name[group.group_id]}'
)
self
.
submission
.
group_dispatch_to_redis
(
group
,
truck_dispatch_plan_dict
)
...
...
@@ -111,8 +111,8 @@ class DispatchSubmission:
item
=
(
session_mysql
.
query
(
DispatchSetting
)
.
filter_by
(
#
exactor_id=dispatch_seq[0],
#
dump_id=dispatch_seq[1],
#
exactor_id=dispatch_seq[0],
dump_id
=
dispatch_seq
[
1
],
truck_id
=
truck_id
,
group_id
=
group_id
,
isauto
=
1
,
isdeleted
=
0
,
)
.
first
())
...
...
@@ -148,7 +148,7 @@ class DispatchSubmission:
item
=
(
session_mysql
.
query
(
DispatchSetting
)
.
filter_by
(
#
exactor_id=dispatch_seq[0],
exactor_id
=
dispatch_seq
[
0
],
# dump_id=dispatch_seq[1],
truck_id
=
truck_id
,
group_id
=
group_id
,
...
...
@@ -180,17 +180,13 @@ class DispatchSubmission:
elif
task
==
-
2
:
try
:
try
:
a
=
dispatch_seq
[
0
]
b
=
truck_id
item
=
(
session_mysql
.
query
(
DispatchSetting
)
.
filter_by
(
#
exactor_id=dispatch_seq[0],
exactor_id
=
dispatch_seq
[
0
],
truck_id
=
truck_id
,
group_id
=
group_id
,
isauto
=
1
,
isdeleted
=
0
)
.
first
())
bb
=
item
.
id
if
item
is
None
:
raise
Exception
(
"调度计划表与实时监控不匹配"
)
...
...
@@ -208,23 +204,7 @@ class DispatchSubmission:
# group_id=group_id,
isauto
=
1
,
isdeleted
=
0
)
.
first
())
# item = (
# session_mysql.query(DispatchEquipment.id, DispatchMatch.load_area_id, DispatchMatch.unload_area_id, DispatchMatch.dump_id, DispatchEquipment.isdeleted).
# join(DispatchEquipment, DispatchMatch.match_code == DispatchEquipment.match_code).
# filter(DispatchEquipment.equipment_id == truck_id,
# DispatchMatch.id == group_id
# ).first())
try
:
# record["exactorId"] = item.exactor_id
# record["dumpId"] = item.dump_id
# record["loadAreaId"] = item.load_area_id
# record["unloadAreaId"] = item.unload_area_id
# record["dispatchId"] = item.id
# record["isdeleted"] = False
# record["creator"] = item.creator
# record["createtime"] = item.createtime.strftime(
# "%b %d, %Y %I:%M:%S %p")
record
[
"id"
]
=
item
.
id
record
[
"exactorId"
]
=
dispatch_seq
[
0
]
...
...
@@ -267,5 +247,10 @@ class DispatchSubmission:
:return: None
"""
for
truck_id
,
dispatch_plan
in
dispatch_plan_dict
.
items
():
self
.
logger
.
info
(
f
'======================================= 调度车辆 ======================================='
)
self
.
logger
.
info
(
f
'矿车编号 {get_value("truck_uuid_to_name_dict")[truck_id]} {truck_id}'
)
self
.
logger
.
info
(
f
'配对挖机 {dispatch_plan[0]}'
)
self
.
logger
.
info
(
f
'配对卸点 {dispatch_plan[1]}'
)
self
.
truck_dispatch_to_redis
(
truck_id
,
dispatch_plan
)
self
.
logger
.
info
(
"======================================== 完成写入 ======================================="
)
core/group.py
View file @
39d4f4f7
...
...
@@ -94,10 +94,10 @@ class Group:
# update device map
# excavator_index = 0
for
i
in
range
(
len
(
self
.
excavator
)):
self
.
excavator_uuid_index_dict
[
self
.
excavator
[
i
]]
=
i
self
.
excavator_uuid_index_dict
[
list
(
self
.
excavator
)
[
i
]]
=
i
for
i
in
range
(
len
(
self
.
dump
)):
self
.
dump_uuid_index_dict
[
self
.
dump
[
i
]]
=
i
self
.
dump_uuid_index_dict
[
list
(
self
.
dump
)
[
i
]]
=
i
for
i
in
range
(
len
(
self
.
truck_set
)):
self
.
truck_uuid_index_dict
[
list
(
self
.
truck_set
)[
i
]]
=
i
...
...
data/dispatchInfo.py
View file @
39d4f4f7
...
...
@@ -327,7 +327,7 @@ class DispatchInfo:
cls
.
unload_distance
[
item
]
=
load_unload_distance
except
Exception
as
es
:
logger
.
error
(
"路网距离更新异常"
)
logger
.
error
(
"路网距离更新异常
-调度部分和路网部分不一致
"
)
logger
.
error
(
es
)
...
...
@@ -382,15 +382,15 @@ class DispatchInfo:
@classmethod
def
get_excavator
(
cls
,
group_id
):
return
cls
.
group_excavator_dict
[
group_id
]
return
set
(
cls
.
group_excavator_dict
[
group_id
])
@classmethod
def
get_dump
(
cls
,
group_id
):
return
cls
.
group_dump_dict
[
group_id
]
return
set
(
cls
.
group_dump_dict
[
group_id
])
@classmethod
def
get_truck_set
(
cls
,
group_id
):
return
cls
.
group_truck_dict
[
group_id
]
return
set
(
cls
.
group_truck_dict
[
group_id
])
@classmethod
def
get_load_area
(
cls
,
excavator_id
):
...
...
realtime_dispatch.py
View file @
39d4f4f7
...
...
@@ -62,92 +62,92 @@ def process(dispatcher):
# # 直接读取数据库写入redis
# direct2redis()
#
try:
try
:
# 更新周期参数
logger
.
info
(
"#####################################周期更新开始#####################################"
)
global_period_para_update
()
if
get_value
(
"dynamic_dump_num"
)
*
get_value
(
"dynamic_excavator_num"
)
==
0
:
raise
Exception
(
"无动态派车计划可用"
)
return
if
get_value
(
"dynamic_truck_num"
)
==
0
:
raise
Exception
(
"无动态派车可用矿卡"
)
return
# 清空数据库缓存
session_mysql
.
commit
()
session_mysql
.
flush
()
# 清空数据库缓存
session_postgre
.
commit
()
session_postgre
.
flush
()
global_period_para_update
()
# 更新调度信息
DispatchInfo
.
renew_set
()
DispatchInfo
.
update_device_group_structure
()
DispatchInfo
.
update_route_distance
()
DispatchInfo
.
update_group_mode
()
DispatchInfo
.
update_group_name
()
# logger.info
# group_set = set()
#
# # device group structure
# load_excavator_dict = {} # 装载区id-->>电铲编号的映射
# excavator_load_dict = {} # 电铲编号->>装载区id的映射
#
# group_excavator_dict = {} # team_id -> dict {[excavator_id, excavator_id], ...}
# excavator_group_dict = {} # excavator_id -> team_id 问题:多个key值对应一个value值
#
# group_dump_dict = {} # team_id -> dict {unload_area_id, unload_area_id, ...}
# dump_group_dict = {} # unload_area_id -> team_id
#
# group_truck_dict = {} # team_id -> dict # {group_id:[truck_id,truck_id],...}
# truck_group_dict = {} # truck_id -> team_id
#
# # group feature
# group_mode = {} # 数据格式: {team_id:mode_code}
#
# # route_distance(路网距离)
# load_distance = {}
# unload_distance = {}
logger
.
info
(
"Dispatchinfo,更新后信息"
)
logger
.
info
(
DispatchInfo
.
group_set
)
logger
.
info
(
DispatchInfo
.
group_excavator_dict
)
logger
.
info
(
DispatchInfo
.
group_dump_dict
)
logger
.
info
(
DispatchInfo
.
group_truck_dict
)
logger
.
info
(
DispatchInfo
.
group_mode
)
logger
.
info
(
DispatchInfo
.
load_distance
)
logger
.
info
(
DispatchInfo
.
unload_distance
)
logger
.
info
(
DispatchInfo
.
load_excavator_dict
)
logger
.
info
(
DispatchInfo
.
excavator_load_dict
)
logger
.
info
(
DispatchInfo
.
excavator_group_dict
)
logger
.
info
(
DispatchInfo
.
dump_group_dict
)
logger
.
info
(
DispatchInfo
.
truck_group_dict
)
# 调度生成
dispatcher
.
period_update
()
dispatcher
.
group_generate
()
dispatcher
.
group_info_update
()
dispatcher
.
group_dispatch
()
logger
.
info
(
"#####################################周期更新结束#####################################"
)
#
except Exception as es:
#
logger.error("最外层异常捕获")
#
logger.error(es)
logger
.
info
(
"#####################################周期更新开始#####################################"
)
global_period_para_update
()
if
get_value
(
"dynamic_dump_num"
)
*
get_value
(
"dynamic_excavator_num"
)
==
0
:
raise
Exception
(
"无动态派车计划可用"
)
return
if
get_value
(
"dynamic_truck_num"
)
==
0
:
raise
Exception
(
"无动态派车可用矿卡"
)
return
# 清空数据库缓存
session_mysql
.
commit
()
session_mysql
.
flush
()
# 清空数据库缓存
session_postgre
.
commit
()
session_postgre
.
flush
()
global_period_para_update
()
# 更新调度信息
DispatchInfo
.
renew_set
()
DispatchInfo
.
update_device_group_structure
()
DispatchInfo
.
update_route_distance
()
DispatchInfo
.
update_group_mode
()
DispatchInfo
.
update_group_name
()
# logger.info
# group_set = set()
#
# # device group structure
# load_excavator_dict = {} # 装载区id-->>电铲编号的映射
# excavator_load_dict = {} # 电铲编号->>装载区id的映射
#
# group_excavator_dict = {} # team_id -> dict {[excavator_id, excavator_id], ...}
# excavator_group_dict = {} # excavator_id -> team_id 问题:多个key值对应一个value值
#
# group_dump_dict = {} # team_id -> dict {unload_area_id, unload_area_id, ...}
# dump_group_dict = {} # unload_area_id -> team_id
#
# group_truck_dict = {} # team_id -> dict # {group_id:[truck_id,truck_id],...}
# truck_group_dict = {} # truck_id -> team_id
#
# # group feature
# group_mode = {} # 数据格式: {team_id:mode_code}
#
# # route_distance(路网距离)
# load_distance = {}
# unload_distance = {}
logger
.
info
(
"Dispatchinfo,更新后信息"
)
logger
.
info
(
DispatchInfo
.
group_set
)
logger
.
info
(
DispatchInfo
.
group_excavator_dict
)
logger
.
info
(
DispatchInfo
.
group_dump_dict
)
logger
.
info
(
DispatchInfo
.
group_truck_dict
)
logger
.
info
(
DispatchInfo
.
group_mode
)
logger
.
info
(
DispatchInfo
.
load_distance
)
logger
.
info
(
DispatchInfo
.
unload_distance
)
logger
.
info
(
DispatchInfo
.
load_excavator_dict
)
logger
.
info
(
DispatchInfo
.
excavator_load_dict
)
logger
.
info
(
DispatchInfo
.
excavator_group_dict
)
logger
.
info
(
DispatchInfo
.
dump_group_dict
)
logger
.
info
(
DispatchInfo
.
truck_group_dict
)
# 调度生成
dispatcher
.
period_update
()
dispatcher
.
group_generate
()
dispatcher
.
group_info_update
()
dispatcher
.
group_dispatch
()
logger
.
info
(
"#####################################周期更新结束#####################################"
)
except
Exception
as
es
:
logger
.
error
(
"最外层异常捕获"
)
logger
.
error
(
es
)
def
perform
(
inc
,
dispatcher
):
...
...
settings.py
View file @
39d4f4f7
...
...
@@ -60,15 +60,15 @@ def set_log():
# 创建日志目录
#
if not os.path.exists(log_path):
#
os.mkdir(log_path)
if
not
os
.
path
.
exists
(
log_path
):
os
.
mkdir
(
log_path
)
# logging初始化工作
logging
.
basicConfig
()
# timefilehandler = logging.handlers.TimedRotatingFileHandler(log_path + "/dispatch.log", when='M', interval=1, backupCount=60)
#
filehandler = logging.handlers.RotatingFileHandler(log_path + "/dispatch.log", maxBytes=3*1024*1024, backupCount=10, encoding="utf-8")
filehandler
=
logging
.
handlers
.
RotatingFileHandler
(
"./Logs/dispatch.log"
,
maxBytes
=
3
*
1024
*
1024
,
backupCount
=
10
,
encoding
=
"utf-8"
)
filehandler
=
logging
.
handlers
.
RotatingFileHandler
(
log_path
+
"/dispatch.log"
,
maxBytes
=
3
*
1024
*
1024
,
backupCount
=
10
,
encoding
=
"utf-8"
)
#
filehandler = logging.handlers.RotatingFileHandler("./Logs/dispatch.log", maxBytes=3 * 1024 * 1024, backupCount=10, encoding="utf-8")
# 设置后缀名称,跟strftime的格式一样
filehandler
.
suffix
=
"
%
Y-
%
m-
%
d_
%
H-
%
M.log"
...
...
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