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
e85b1be3
Commit
e85b1be3
authored
Jun 14, 2022
by
张晓彤
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.dispatcher redis 写入 2.dispatchInfo 读取group name 3.tables 增加部分表字段
parent
66ff835d
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
66 additions
and
10 deletions
+66
-10
algorithm.py
alg/algorithm.py
+1
-1
dispatcher.py
core/dispatcher.py
+0
-0
group.py
core/group.py
+5
-2
schedule.py
core/schedule.py
+1
-0
dispatchInfo.py
data/dispatchInfo.py
+22
-0
truck.py
equipment/truck.py
+0
-2
realtime_dispatch.py
realtime_dispatch.py
+1
-2
static_data_process.py
static_data_process.py
+2
-2
tables.py
tables.py
+34
-1
No files found.
alg/algorithm.py
View file @
e85b1be3
...
@@ -186,7 +186,7 @@ class ExpectedTime(AlgorithmBase):
...
@@ -186,7 +186,7 @@ class ExpectedTime(AlgorithmBase):
# 车辆驶往各目的地时间
# 车辆驶往各目的地时间
truck_reach_time
=
60
*
self
.
group
.
park_to_excavator_distance
[
0
,
:]
/
1000
/
\
truck_reach_time
=
60
*
self
.
group
.
park_to_excavator_distance
[
0
,
:]
/
1000
/
\
self
.
truckempty_speed
[
truck_id
]
+
truck_avl_time
self
.
truck
.
empty_speed
[
truck_id
]
+
truck_avl_time
# 计算车辆得到服务时间
# 计算车辆得到服务时间
truck_service_time
=
np
.
maximum
(
truck_reach_time
,
excavator_val_time
)
truck_service_time
=
np
.
maximum
(
truck_reach_time
,
excavator_val_time
)
...
...
core/dispatcher.py
View file @
e85b1be3
This diff is collapsed.
Click to expand it.
core/group.py
View file @
e85b1be3
...
@@ -142,14 +142,17 @@ class Group:
...
@@ -142,14 +142,17 @@ class Group:
# min_index = next_excavator_list.index(min(next_excavator_list))
# min_index = next_excavator_list.index(min(next_excavator_list))
min_index
=
np
.
argmin
(
next_excavator_list
)
min_index
=
np
.
argmin
(
next_excavator_list
)
next_excavator_id
=
self
.
excavator_uuid_index_dict
.
inverse
[
min_index
]
next_excavator_id
=
self
.
excavator_uuid_index_dict
.
inverse
[
min_index
]
next_dump_id
=
truck_trip
[
-
1
]
if
truck_task
==
-
2
:
next_dump_id
=
"Park"
else
:
next_dump_id
=
self
.
dump_uuid_index_dict
.
inverse
[
truck_trip
[
-
1
]]
truck_dispatch
[
i
]
=
[
next_excavator_id
,
next_dump_id
]
truck_dispatch
[
i
]
=
[
next_excavator_id
,
next_dump_id
]
if
truck_task
in
[
0
,
1
]:
if
truck_task
in
[
0
,
1
]:
next_dump_list
=
s
.
solve
(
i
)
next_dump_list
=
s
.
solve
(
i
)
min_index
=
next_dump_list
.
index
(
min
(
next_dump_list
))
min_index
=
next_dump_list
.
index
(
min
(
next_dump_list
))
next_dump_id
=
self
.
dump_uuid_index_dict
.
inverse
[
min_index
]
next_dump_id
=
self
.
dump_uuid_index_dict
.
inverse
[
min_index
]
next_excavator_id
=
truck_trip
[
-
1
]
next_excavator_id
=
self
.
excavator_uuid_index_dict
.
inverse
[
truck_trip
[
-
1
]
]
truck_dispatch
[
i
]
=
[
next_excavator_id
,
next_dump_id
]
truck_dispatch
[
i
]
=
[
next_excavator_id
,
next_dump_id
]
# return dispatch plan
# return dispatch plan
...
...
core/schedule.py
View file @
e85b1be3
...
@@ -269,6 +269,7 @@ class PreSchedule:
...
@@ -269,6 +269,7 @@ class PreSchedule:
return
self
.
update_excavator_avl_time
(
excavator_avl_ls
)
\
return
self
.
update_excavator_avl_time
(
excavator_avl_ls
)
\
[
self
.
excavator
.
excavator_uuid_to_index_dict
[
excavator_id
]]
[
self
.
excavator
.
excavator_uuid_to_index_dict
[
excavator_id
]]
else
:
else
:
tmp
=
self
.
update_excavator_avl_time
(
excavator_avl_ls
)
return
self
.
update_excavator_avl_time
(
excavator_avl_ls
)
return
self
.
update_excavator_avl_time
(
excavator_avl_ls
)
def
get_truck_avl_time
(
self
,
truck_id
=
None
):
def
get_truck_avl_time
(
self
,
truck_id
=
None
):
...
...
data/dispatchInfo.py
View file @
e85b1be3
...
@@ -8,6 +8,7 @@ import numpy as np
...
@@ -8,6 +8,7 @@ import numpy as np
from
settings
import
*
from
settings
import
*
import
pandas
as
pd
import
pandas
as
pd
from
tables
import
DispatchMatch
,
DispatchEquipment
logger
=
get_logger
(
"mqc.dispatchInfo"
)
logger
=
get_logger
(
"mqc.dispatchInfo"
)
...
@@ -39,6 +40,9 @@ class DispatchInfo:
...
@@ -39,6 +40,9 @@ class DispatchInfo:
load_distance
=
{}
load_distance
=
{}
unload_distance
=
{}
unload_distance
=
{}
# group_name <-> group_id
group_name
=
{}
@classmethod
@classmethod
def
renew_set
(
cls
):
def
renew_set
(
cls
):
"""
"""
...
@@ -209,6 +213,24 @@ class DispatchInfo:
...
@@ -209,6 +213,24 @@ class DispatchInfo:
# logger.error("派车模式数据更新异常")
# logger.error("派车模式数据更新异常")
# logger.error(es)
# logger.error(es)
@classmethod
def
update_group_name
(
cls
):
"""
@date:2022/6/13 20:30
@author:zxtc
@desc:处理 group name
"""
# update group_id->mode_code
logger
=
get_logger
(
"zxt.update_group_name"
)
cls
.
group_name
=
{}
try
:
for
item
in
session_mysql
.
query
(
DispatchGroup
)
.
all
():
name
=
item
.
group_name
cls
.
group_name
[
item
.
id
]
=
name
except
Exception
as
es
:
logger
.
error
(
"group_id->name更新异常"
)
logger
.
error
(
es
)
# @classmethod
# @classmethod
# def dispatch_group_init(cls):
# def dispatch_group_init(cls):
# """
# """
...
...
equipment/truck.py
View file @
e85b1be3
...
@@ -586,10 +586,8 @@ class TruckInfo(WalkManage):
...
@@ -586,10 +586,8 @@ class TruckInfo(WalkManage):
try
:
try
:
dump_material_id
=
session_postgre
.
query
(
DumpArea
)
.
filter_by
(
Id
=
unload_area_id
)
.
first
()
.
Materials
dump_material_id
=
session_postgre
.
query
(
DumpArea
)
.
filter_by
(
Id
=
unload_area_id
)
.
first
()
.
Materials
except
Exception
as
es
:
except
Exception
as
es
:
self
.
logger
.
error
(
es
)
session_postgre
.
rollback
()
session_postgre
.
rollback
()
session_mysql
.
rollback
()
session_mysql
.
rollback
()
self
.
truck_material_bind
[
truck_id
]
=
dump_material_id
self
.
truck_material_bind
[
truck_id
]
=
dump_material_id
if
truck_id
in
self
.
truck_excavator_bind
:
if
truck_id
in
self
.
truck_excavator_bind
:
...
...
realtime_dispatch.py
View file @
e85b1be3
...
@@ -56,8 +56,7 @@ def process(dispatcher):
...
@@ -56,8 +56,7 @@ def process(dispatcher):
DispatchInfo
.
update_group_mode
()
DispatchInfo
.
update_group_mode
()
DispatchInfo
.
update_group_name
()
# logger.info
# logger.info
# group_set = set()
# group_set = set()
...
...
static_data_process.py
View file @
e85b1be3
...
@@ -338,7 +338,7 @@ def update_autodisp_excavator():
...
@@ -338,7 +338,7 @@ def update_autodisp_excavator():
dynamic_excavator_list
=
[]
dynamic_excavator_list
=
[]
try
:
try
:
for
item
in
(
for
item
in
(
session_mysql
.
query
(
Dispatch
)
.
filter_by
(
isdeleted
=
0
,
isauto
=
1
)
.
all
()
session_mysql
.
query
(
Dispatch
Match
)
.
filter_by
(
)
.
all
()
):
):
dynamic_excavator_list
.
append
(
item
.
exactor_id
)
dynamic_excavator_list
.
append
(
item
.
exactor_id
)
if
len
(
dynamic_excavator_list
)
<
1
:
if
len
(
dynamic_excavator_list
)
<
1
:
...
@@ -356,7 +356,7 @@ def update_autodisp_dump():
...
@@ -356,7 +356,7 @@ def update_autodisp_dump():
dynamic_dump_list
=
[]
dynamic_dump_list
=
[]
try
:
try
:
for
item
in
(
for
item
in
(
session_mysql
.
query
(
Dispatch
)
.
filter_by
(
isdeleted
=
0
,
isauto
=
1
)
.
all
()
session_mysql
.
query
(
Dispatch
Match
)
.
filter_by
(
)
.
all
()
):
):
dynamic_dump_list
.
append
(
item
.
dump_id
)
dynamic_dump_list
.
append
(
item
.
dump_id
)
if
len
(
dynamic_dump_list
)
<
1
:
if
len
(
dynamic_dump_list
)
<
1
:
...
...
tables.py
View file @
e85b1be3
...
@@ -344,6 +344,37 @@ class Dispatch(Base):
...
@@ -344,6 +344,37 @@ class Dispatch(Base):
self
.
deletor
=
deletor
self
.
deletor
=
deletor
self
.
deletetime
=
deletetime
self
.
deletetime
=
deletetime
# class DispatchSetting(Base):
# __tablename__ = 'sys_dispatch_setting_v'
#
# group_name = Column(VARCHAR(36))
# group_id = Column(VARCHAR(36))
# group_code = Column(VARCHAR(36))
# group_type = Column(Integer)
# load_area_id = Column(VARCHAR(36))
# exactor_id = Column(VARCHAR(36))
# unload_area_id = Column(VARCHAR(36))
# dump_id = Column(VARCHAR(36))
# isauto = Column(BOOLEAN)
# truck_id = Column(VARCHAR(36))
# team_id = Column(VARCHAR(36))
# isdeleted = Column(BOOLEAN)
# proportion_id = Column(VARCHAR(36))
#
# def __init__(self, group_name, group_id, group_code, group_type, load_area_id, exactor_id, unload_area_id, dump_id, isauto, truck_id, remark, proportion_id):
# self.group_name = group_name
# self.group_id = group_id
# self.group_code = group_code
# self.group_type = group_type
# self.load_area_id = load_area_id
# self.exactor_id = exactor_id
# self.unload_area_id = unload_area_id
# self.dump_id = dump_id
# self.isauto = isauto
# self.truck_id = truck_id
# self.proportion_id = proportion_id
# self.remark = remark
class
WalkTimePark
(
Base
):
class
WalkTimePark
(
Base
):
__tablename__
=
'park_load_distance'
__tablename__
=
'park_load_distance'
...
@@ -544,13 +575,15 @@ class DispatchGroup(Base):
...
@@ -544,13 +575,15 @@ class DispatchGroup(Base):
group_code
=
Column
(
VARCHAR
(
36
))
group_code
=
Column
(
VARCHAR
(
36
))
mode_id
=
Column
(
VARCHAR
(
36
))
mode_id
=
Column
(
VARCHAR
(
36
))
mode_code
=
Column
(
Integer
)
mode_code
=
Column
(
Integer
)
group_name
=
Column
(
VARCHAR
(
36
))
def
__init__
(
self
,
id
,
group_type
,
group_code
,
mode_id
,
mode_code
):
def
__init__
(
self
,
id
,
group_type
,
group_code
,
mode_id
,
mode_code
,
group_name
):
self
.
id
=
id
self
.
id
=
id
self
.
group_type
=
group_type
self
.
group_type
=
group_type
self
.
group_code
=
group_code
self
.
group_code
=
group_code
self
.
mode_id
=
mode_id
self
.
mode_id
=
mode_id
self
.
mode_code
=
mode_code
self
.
mode_code
=
mode_code
self
.
group_name
=
group_name
class
DispatchMatch
(
Base
):
class
DispatchMatch
(
Base
):
...
...
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