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
Show 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):
...
@@ -223,7 +223,7 @@ class ExpectedTime(AlgorithmBase):
self
.
logger
.
error
(
es
)
self
.
logger
.
error
(
es
)
transport_value
=
np
.
zeros
(
group_dynamic_excavator_num
)
transport_value
=
np
.
zeros
(
group_dynamic_excavator_num
)
if
task
in
[
1
,
2
]:
if
task
in
[
0
,
1
,
2
]:
################################################ 矿卡空载 ###############################################
################################################ 矿卡空载 ###############################################
# try:
# try:
...
@@ -290,7 +290,7 @@ class ExpectedTime(AlgorithmBase):
...
@@ -290,7 +290,7 @@ class ExpectedTime(AlgorithmBase):
self
.
logger
.
error
(
es
)
self
.
logger
.
error
(
es
)
transport_value
=
np
.
zeros
(
group_dynamic_unload_area_num
)
transport_value
=
np
.
zeros
(
group_dynamic_unload_area_num
)
elif
task
in
[
4
,
5
]:
elif
task
in
[
3
,
4
,
5
]:
################################################ 矿卡重载 ###############################################
################################################ 矿卡重载 ###############################################
# try:
# try:
...
@@ -369,6 +369,9 @@ class DistributionRatio(object):
...
@@ -369,6 +369,9 @@ class DistributionRatio(object):
@desc:计算分流配比模式下,卡车与卸载区的对应关系
@desc:计算分流配比模式下,卡车与卸载区的对应关系
"""
"""
# TODO:
# 统一与预期等待时间的接口
def
__init__
(
self
,
exactor_id
,
truck
):
def
__init__
(
self
,
exactor_id
,
truck
):
self
.
truck
=
truck
self
.
truck
=
truck
self
.
exactor_id
=
exactor_id
self
.
exactor_id
=
exactor_id
...
...
app.py
View file @
c4e5134f
...
@@ -10,6 +10,8 @@ from flask_caching import Cache
...
@@ -10,6 +10,8 @@ from flask_caching import Cache
from
alg.algorithm
import
ExpectedTime
from
alg.algorithm
import
ExpectedTime
from
data.dispatchInfo
import
DispatchInfo
from
data.dispatchInfo
import
DispatchInfo
from
core.submit
import
DispatchSubmission
from
core.submit
import
DispatchSubmission
from
core.group
import
GroupDispatcher
from
realtime_dispatch
import
group_direct2redis
config
=
{
config
=
{
"DEBUG"
:
True
,
# some Flask specific configs
"DEBUG"
:
True
,
# some Flask specific configs
...
@@ -140,9 +142,29 @@ def dispatch_request():
...
@@ -140,9 +142,29 @@ def dispatch_request():
try
:
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
:
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
:
except
Exception
as
es
:
logger
.
error
(
es
)
logger
.
error
(
es
)
logger
.
error
(
f
'分组{group.group_id} 调度计算异常'
)
logger
.
error
(
f
'分组{group.group_id} 调度计算异常'
)
...
@@ -152,9 +174,11 @@ def dispatch_request():
...
@@ -152,9 +174,11 @@ def dispatch_request():
logger
.
info
(
f
'调度分组: {group.group_id} {DispatchInfo.group_name[group.group_id]}'
)
logger
.
info
(
f
'调度分组: {group.group_id} {DispatchInfo.group_name[group.group_id]}'
)
submission
.
group_dispatch_to_redis
(
group
,
truck_dispatch_plan_dict
)
submission
.
group_dispatch_to_redis
(
group
,
truck_dispatch_plan_dict
)
except
Exception
as
es
:
except
Exception
as
es
:
group_direct2redis
(
group
)
logger
.
error
(
es
)
logger
.
error
(
es
)
logger
.
error
(
f
'分组{group.group_id} 调度写入异常'
)
logger
.
error
(
f
'分组{group.group_id} 调度写入异常'
)
except
Exception
as
es
:
except
Exception
as
es
:
logger
.
error
(
"最外层异常捕获"
)
logger
.
error
(
"最外层异常捕获"
)
logger
.
error
(
es
)
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:
...
@@ -120,6 +120,9 @@ class DispatchSubmission:
record
=
redis_format
(
truck_id
,
group_id
,
str
(
uuid
.
uuid1
()),
item
)
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
\
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
:
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
...
@@ -18,6 +18,7 @@ from core.dispatcher import Dispatcher
from
core.schedule
import
PreSchedule
from
core.schedule
import
PreSchedule
from
data.dispatchInfo
import
DispatchInfo
from
data.dispatchInfo
import
DispatchInfo
from
util
import
CoreException
from
util
import
CoreException
from
core.group
import
Group
def
direct2redis
():
def
direct2redis
():
...
@@ -35,7 +36,7 @@ def direct2redis():
...
@@ -35,7 +36,7 @@ def direct2redis():
try
:
try
:
truck_disp
=
{}
truck_disp
=
[]
for
item
in
session_mysql
.
query
(
DispatchSetting
)
.
filter_by
(
isdeleted
=
0
,
)
.
all
():
for
item
in
session_mysql
.
query
(
DispatchSetting
)
.
filter_by
(
isdeleted
=
0
,
)
.
all
():
if
item
is
None
:
if
item
is
None
:
raise
CoreException
(
101
,
"无可用派车计划"
)
raise
CoreException
(
101
,
"无可用派车计划"
)
...
@@ -49,6 +50,41 @@ def direct2redis():
...
@@ -49,6 +50,41 @@ def direct2redis():
# 写入redis
# 写入redis
redis5
.
set
(
item
.
truck_id
,
str
(
json
.
dumps
(
record
)))
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
:
except
CoreException
as
ce
:
logger
.
error
(
ce
)
logger
.
error
(
ce
)
session_postgre
.
rollback
()
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