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
c4e5134f
Commit
c4e5134f
authored
Nov 08, 2022
by
张晓彤
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
代码优化v3
parent
8edf3046
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
78 additions
and
4 deletions
+78
-4
algorithm.py
alg/algorithm.py
+5
-2
app.py
app.py
+25
-1
__init__.py
core/__init__.py
+8
-0
group.py
core/group.py
+0
-0
submit.py
core/submit.py
+3
-0
realtime_dispatch.py
realtime_dispatch.py
+37
-1
No files found.
alg/algorithm.py
View file @
c4e5134f
...
...
@@ -223,7 +223,7 @@ class ExpectedTime(AlgorithmBase):
self
.
logger
.
error
(
es
)
transport_value
=
np
.
zeros
(
group_dynamic_excavator_num
)
if
task
in
[
1
,
2
]:
if
task
in
[
0
,
1
,
2
]:
################################################ 矿卡空载 ###############################################
# try:
...
...
@@ -290,7 +290,7 @@ class ExpectedTime(AlgorithmBase):
self
.
logger
.
error
(
es
)
transport_value
=
np
.
zeros
(
group_dynamic_unload_area_num
)
elif
task
in
[
4
,
5
]:
elif
task
in
[
3
,
4
,
5
]:
################################################ 矿卡重载 ###############################################
# try:
...
...
@@ -369,6 +369,9 @@ class DistributionRatio(object):
@desc:计算分流配比模式下,卡车与卸载区的对应关系
"""
# TODO:
# 统一与预期等待时间的接口
def
__init__
(
self
,
exactor_id
,
truck
):
self
.
truck
=
truck
self
.
exactor_id
=
exactor_id
...
...
app.py
View file @
c4e5134f
...
...
@@ -10,6 +10,8 @@ from flask_caching import Cache
from
alg.algorithm
import
ExpectedTime
from
data.dispatchInfo
import
DispatchInfo
from
core.submit
import
DispatchSubmission
from
core.group
import
GroupDispatcher
from
realtime_dispatch
import
group_direct2redis
config
=
{
"DEBUG"
:
True
,
# some Flask specific configs
...
...
@@ -140,9 +142,29 @@ def dispatch_request():
try
:
# # 调度分组派车计划计算
# try:
# truck_dispatch_plan_dict = group.group_dispatch(ExpectedTime)
# except Exception as es:
# logger.error(es)
# logger.error(f'分组{group.group_id} 调度计算异常')
#
# try:
#
# logger.info(f'调度分组: {group.group_id} {DispatchInfo.group_name[group.group_id]}')
# submission.group_dispatch_to_redis(group, truck_dispatch_plan_dict)
# except Exception as es:
# logger.error(es)
# logger.error(f'分组{group.group_id} 调度写入异常')
# 调度分组派车计划计算
try
:
truck_dispatch_plan_dict
=
group
.
group_dispatch
(
ExpectedTime
)
group_dispatcher
=
GroupDispatcher
(
group
)
truck_dispatch_plan_dict
=
group_dispatcher
.
group_dispatch
(
ExpectedTime
)
if
truck_dispatch_plan_dict
is
None
:
logger
.
error
(
f
'分组 {group.group_id} 调度异常'
)
except
Exception
as
es
:
logger
.
error
(
es
)
logger
.
error
(
f
'分组{group.group_id} 调度计算异常'
)
...
...
@@ -152,9 +174,11 @@ def dispatch_request():
logger
.
info
(
f
'调度分组: {group.group_id} {DispatchInfo.group_name[group.group_id]}'
)
submission
.
group_dispatch_to_redis
(
group
,
truck_dispatch_plan_dict
)
except
Exception
as
es
:
group_direct2redis
(
group
)
logger
.
error
(
es
)
logger
.
error
(
f
'分组{group.group_id} 调度写入异常'
)
except
Exception
as
es
:
logger
.
error
(
"最外层异常捕获"
)
logger
.
error
(
es
)
...
...
core/__init__.py
0 → 100644
View file @
c4e5134f
#!E:\Pycharm Projects\Waytous
# -*- coding: utf-8 -*-
# @Time : 2022/10/29 22:07
# @Author : Opfer
# @Site :
# @File : __init__.py
# @Software: PyCharm
\ No newline at end of file
core/group.py
View file @
c4e5134f
This diff is collapsed.
Click to expand it.
core/submit.py
View file @
c4e5134f
...
...
@@ -120,6 +120,9 @@ class DispatchSubmission:
record
=
redis_format
(
truck_id
,
group_id
,
str
(
uuid
.
uuid1
()),
item
)
# TODO:
# 判断了两次是否拥堵,需要改善
# 车辆重载等待,且前方道路阻塞
if
task
==
3
and
state
==
2
and
truck_id
in
self
.
truck
.
get_truck_locate_dict
()
and
\
self
.
truck
.
get_truck_locate_dict
()[
truck_id
]
in
self
.
topo
.
cross_bf_lanes
:
...
...
realtime_dispatch.py
View file @
c4e5134f
...
...
@@ -18,6 +18,7 @@ from core.dispatcher import Dispatcher
from
core.schedule
import
PreSchedule
from
data.dispatchInfo
import
DispatchInfo
from
util
import
CoreException
from
core.group
import
Group
def
direct2redis
():
...
...
@@ -35,7 +36,7 @@ def direct2redis():
try
:
truck_disp
=
{}
truck_disp
=
[]
for
item
in
session_mysql
.
query
(
DispatchSetting
)
.
filter_by
(
isdeleted
=
0
,
)
.
all
():
if
item
is
None
:
raise
CoreException
(
101
,
"无可用派车计划"
)
...
...
@@ -49,6 +50,41 @@ def direct2redis():
# 写入redis
redis5
.
set
(
item
.
truck_id
,
str
(
json
.
dumps
(
record
)))
truck_disp
.
append
(
item
.
truck_id
)
except
CoreException
as
ce
:
logger
.
error
(
ce
)
session_postgre
.
rollback
()
session_mysql
.
rollback
()
def
group_direct2redis
(
group
:
Group
):
"""
根据分组车辆直接读取数据库写入redis
:return: None
"""
# 清空数据库缓存
session_mysql
.
commit
()
session_mysql
.
flush
()
# 清空数据库缓存
session_postgre
.
commit
()
session_postgre
.
flush
()
try
:
for
truck_id
in
group
.
group_trucks
:
item
=
session_mysql
.
query
(
DispatchSetting
)
.
filter_by
(
truck_id
=
truck_id
,
isdeleted
=
0
,
)
.
first
()
if
item
is
None
:
raise
CoreException
(
101
,
"无可用派车计划"
)
record
=
{
"truckId"
:
item
.
truck_id
,
"dispatchId"
:
item
.
id
,
"exactorId"
:
item
.
exactor_id
,
"dumpId"
:
item
.
dump_id
,
"loadAreaId"
:
item
.
load_area_id
,
"unloadAreaId"
:
item
.
unload_area_id
,
"groupId"
:
item
.
group_id
,
"isdeleted"
:
False
,
"isTemp"
:
False
,
"haulFlag"
:
-
1
,
"groupName"
:
DispatchInfo
.
group_name
[
item
.
group_id
]}
logger
.
info
(
f
'写入redis调度结果: {record}'
)
# 写入redis
redis5
.
set
(
item
.
truck_id
,
str
(
json
.
dumps
(
record
)))
except
CoreException
as
ce
:
logger
.
error
(
ce
)
session_postgre
.
rollback
()
...
...
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