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
21090174
Commit
21090174
authored
Nov 09, 2022
by
张晓彤
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
改善group类结构
parent
4b27ce39
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
81 additions
and
51 deletions
+81
-51
dispatcher.py
core/dispatcher.py
+1
-1
group.py
core/group.py
+5
-27
dispatchInfo.py
data/dispatchInfo.py
+75
-23
No files found.
core/dispatcher.py
View file @
21090174
...
@@ -55,7 +55,7 @@ class Dispatcher:
...
@@ -55,7 +55,7 @@ class Dispatcher:
:return: None
:return: None
"""
"""
self
.
group_list
=
{}
self
.
group_list
=
{}
groups
=
DispatchInfo
.
get_all_group
()
groups
=
DispatchInfo
.
get_all_group
s_id
()
for
group_id
in
groups
:
for
group_id
in
groups
:
if
group_id
not
in
self
.
group_list
:
if
group_id
not
in
self
.
group_list
:
group
=
Group
(
group_id
,
self
.
truck
,
self
.
pre_sch
,
self
.
excavator
,
self
.
dump
)
group
=
Group
(
group_id
,
self
.
truck
,
self
.
pre_sch
,
self
.
excavator
,
self
.
dump
)
...
...
core/group.py
View file @
21090174
...
@@ -223,35 +223,13 @@ class Group:
...
@@ -223,35 +223,13 @@ class Group:
update group device map.
update group device map.
:return:
:return:
"""
"""
# excavator_index = 0
# group_excavator_dict = {group_1: {excavator_1: load_area_1}, group_2: {excavator_2: load_area_2}}
self
.
excavator_uuid_index_dict
=
{}
self
.
unload_area_uuid_index_dict
=
{}
self
.
truck_uuid_index_dict
=
{}
self
.
dump_uuid_index_dict
=
{}
for
i
in
range
(
len
(
self
.
excavator
)):
self
.
excavator_uuid_index_dict
[
list
(
self
.
excavator
)[
i
]]
=
i
for
i
in
range
(
len
(
self
.
unload_area
)):
self
.
unload_area_uuid_index_dict
[
list
(
self
.
unload_area
)[
i
]]
=
i
for
i
in
range
(
len
(
self
.
dump
)):
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
self
.
excavator_uuid_index_dict
=
bidict
(
DispatchInfo
.
excavator_uuid_to_index_dict
[
self
.
group_id
])
self
.
unload_area_uuid_index_dict
=
bidict
(
DispatchInfo
.
unload_area_uuid_to_index_dict
[
self
.
group_id
])
self
.
dump_uuid_index_dict
=
bidict
(
DispatchInfo
.
dump_uuid_to_index_dict
[
self
.
group_id
])
#
self.excavator_uuid_index_dict = bidict(self.excavator_uuid_index_dict)
#
update devices(excavators, unload_areas, dumps) bidirectional map within a group
# self.unload_area_uuid_index_dict = bidict(self.unload_area_uuid_index_dict
)
self
.
excavator_uuid_index_dict
=
DispatchInfo
.
get_group_excavator_dict
(
self
.
group_id
)
# self.truck_uuid_index_dict = bidict(self.truck_uuid_index_dict
)
self
.
unload_area_uuid_index_dict
=
DispatchInfo
.
get_group_unload_area_dict
(
self
.
group_id
)
self
.
dump_uuid_index_dict
=
bidict
(
self
.
dump_uuid_index_dict
)
self
.
dump_uuid_index_dict
=
DispatchInfo
.
get_group_dump_dict
(
self
.
group_id
)
# group_excavator_dict = {group_1: {excavator_1: load_area_1}, group_2: {excavator_2: load_area_2}}
def
update_device_material
(
self
):
def
update_device_material
(
self
):
"""
"""
...
...
data/dispatchInfo.py
View file @
21090174
...
@@ -4,12 +4,11 @@
...
@@ -4,12 +4,11 @@
# @Site :
# @Site :
# @File : dispatchInfo.py
# @File : dispatchInfo.py
# @Software: PyCharm
# @Software: PyCharm
import
numpy
as
np
from
settings
import
*
from
settings
import
*
import
pandas
as
pd
import
pandas
as
pd
from
tables
import
DispatchMatch
,
DispatchEquipment
from
tables
import
DispatchMatch
,
DispatchEquipment
import
bidict
from
bidict
import
bidict
logger
=
get_logger
(
"zxt.dispatchInfo"
)
logger
=
get_logger
(
"zxt.dispatchInfo"
)
...
@@ -25,15 +24,15 @@ class DispatchInfo:
...
@@ -25,15 +24,15 @@ class DispatchInfo:
load_excavator_dict
=
{}
# 装载区id-->>电铲编号的映射
load_excavator_dict
=
{}
# 装载区id-->>电铲编号的映射
excavator_load_dict
=
{}
# 电铲编号->>装载区id的映射
excavator_load_dict
=
{}
# 电铲编号->>装载区id的映射
#
excavator
<-> group id
#
group_excavators
<-> group id
group_excavator_dict
=
{}
# team_id -> dict {[excavator_id, excavator_id], ...}
group_excavator_dict
=
{}
# team_id -> dict {[excavator_id, excavator_id], ...}
excavator_group_dict
=
{}
# excavator_id -> team_id 问题:多个key值对应一个value值
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, ...}
group_unload_area_dict
=
{}
# team_id -> dict {unload_area_id, unload_area_id, ...}
unload_area_group_dict
=
{}
# unload_area_id -> team_id
unload_area_group_dict
=
{}
# unload_area_id -> team_id
#
dump
<-> group id
#
group_dumps
<-> group id
group_dump_dict
=
{}
group_dump_dict
=
{}
dump_group_dict
=
{}
dump_group_dict
=
{}
...
@@ -54,7 +53,7 @@ class DispatchInfo:
...
@@ -54,7 +53,7 @@ class DispatchInfo:
# truck -> match(excavator_id, unload_area_id)
# truck -> match(excavator_id, unload_area_id)
truck_match_dict
=
{}
truck_match_dict
=
{}
#
unload_area <-> dump
id
#
group_unload_areas <-> group_dumps
id
dump_unload_area_dict
=
{}
dump_unload_area_dict
=
{}
unload_area_dump_dict
=
{}
unload_area_dump_dict
=
{}
...
@@ -144,7 +143,7 @@ class DispatchInfo:
...
@@ -144,7 +143,7 @@ class DispatchInfo:
logger
=
get_logger
(
"zxt.update_device_group_structure"
)
logger
=
get_logger
(
"zxt.update_device_group_structure"
)
# update excavator_id <-> load_area_id
# update excavator_id <-> load_area_id
try
:
try
:
for
item
in
session_mysql
.
query
(
DispatchSetting
)
.
all
():
for
item
in
session_mysql
.
query
(
DispatchSetting
)
.
filter_by
(
isdeleted
=
0
,
)
.
all
():
cls
.
load_excavator_dict
[
item
.
load_area_id
]
=
item
.
exactor_id
cls
.
load_excavator_dict
[
item
.
load_area_id
]
=
item
.
exactor_id
cls
.
excavator_load_dict
[
item
.
exactor_id
]
=
item
.
load_area_id
cls
.
excavator_load_dict
[
item
.
exactor_id
]
=
item
.
load_area_id
...
@@ -157,7 +156,7 @@ class DispatchInfo:
...
@@ -157,7 +156,7 @@ class DispatchInfo:
# update dump_id <-> unload_area_id
# update dump_id <-> unload_area_id
try
:
try
:
for
item
in
session_mysql
.
query
(
DispatchSetting
)
.
all
():
for
item
in
session_mysql
.
query
(
DispatchSetting
)
.
filter_by
(
isdeleted
=
0
,
)
.
all
():
cls
.
unload_area_dump_dict
[
item
.
unload_area_id
]
=
item
.
dump_id
cls
.
unload_area_dump_dict
[
item
.
unload_area_id
]
=
item
.
dump_id
cls
.
dump_unload_area_dict
[
item
.
dump_id
]
=
item
.
unload_area_id
cls
.
dump_unload_area_dict
[
item
.
dump_id
]
=
item
.
unload_area_id
...
@@ -170,7 +169,7 @@ class DispatchInfo:
...
@@ -170,7 +169,7 @@ class DispatchInfo:
# update exactor_id <-> truck_id
# update exactor_id <-> truck_id
try
:
try
:
for
item
in
session_mysql
.
query
(
DispatchSetting
)
.
all
():
for
item
in
session_mysql
.
query
(
DispatchSetting
)
.
filter_by
(
isdeleted
=
0
,
)
.
all
():
if
item
.
exactor_id
not
in
cls
.
exactor_truck_dict
.
keys
():
if
item
.
exactor_id
not
in
cls
.
exactor_truck_dict
.
keys
():
cls
.
exactor_truck_dict
[
item
.
exactor_id
]
=
[
item
.
truck_id
]
cls
.
exactor_truck_dict
[
item
.
exactor_id
]
=
[
item
.
truck_id
]
else
:
else
:
...
@@ -183,7 +182,7 @@ class DispatchInfo:
...
@@ -183,7 +182,7 @@ class DispatchInfo:
# update exactor_id <-> unload_area_id
# update exactor_id <-> unload_area_id
try
:
try
:
for
item
in
session_mysql
.
query
(
DispatchSetting
)
.
all
():
for
item
in
session_mysql
.
query
(
DispatchSetting
)
.
filter_by
(
isdeleted
=
0
,
)
.
all
():
if
item
.
exactor_id
not
in
cls
.
exactor_unload_dict
.
keys
():
if
item
.
exactor_id
not
in
cls
.
exactor_unload_dict
.
keys
():
cls
.
exactor_unload_dict
[
item
.
exactor_id
]
=
[
item
.
unload_area_id
]
cls
.
exactor_unload_dict
[
item
.
exactor_id
]
=
[
item
.
unload_area_id
]
else
:
else
:
...
@@ -195,7 +194,7 @@ class DispatchInfo:
...
@@ -195,7 +194,7 @@ class DispatchInfo:
# update unload_area_id -> rate
# update unload_area_id -> rate
try
:
try
:
for
item
in
session_mysql
.
query
(
DispatchSetting
)
.
all
():
for
item
in
session_mysql
.
query
(
DispatchSetting
)
.
filter_by
(
isdeleted
=
0
,
)
.
all
():
cls
.
unload_rate_dict
[
item
.
unload_area_id
]
=
item
.
rate
cls
.
unload_rate_dict
[
item
.
unload_area_id
]
=
item
.
rate
except
Exception
as
es
:
except
Exception
as
es
:
logger
.
error
(
"卸载区和比例值关系更新异常"
)
logger
.
error
(
"卸载区和比例值关系更新异常"
)
...
@@ -203,8 +202,8 @@ class DispatchInfo:
...
@@ -203,8 +202,8 @@ class DispatchInfo:
# update excavator_id <-> group_id && unload_area_id <-> group_id && truck_id <-> group_id
# update excavator_id <-> group_id && unload_area_id <-> group_id && truck_id <-> group_id
try
:
try
:
for
item
in
session_mysql
.
query
(
DispatchSetting
)
.
all
():
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
():
if
item
.
group_id
not
in
cls
.
group_excavator_dict
.
keys
():
cls
.
group_excavator_dict
[
item
.
group_id
]
=
[
item
.
exactor_id
]
cls
.
group_excavator_dict
[
item
.
group_id
]
=
[
item
.
exactor_id
]
else
:
else
:
...
@@ -212,7 +211,7 @@ class DispatchInfo:
...
@@ -212,7 +211,7 @@ class DispatchInfo:
cls
.
group_excavator_dict
[
item
.
group_id
]
.
append
(
item
.
exactor_id
)
cls
.
group_excavator_dict
[
item
.
group_id
]
.
append
(
item
.
exactor_id
)
cls
.
excavator_group_dict
[
item
.
exactor_id
]
=
item
.
group_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
():
if
item
.
group_id
not
in
cls
.
group_unload_area_dict
.
keys
():
cls
.
group_unload_area_dict
[
item
.
group_id
]
=
[
item
.
unload_area_id
]
cls
.
group_unload_area_dict
[
item
.
group_id
]
=
[
item
.
unload_area_id
]
else
:
else
:
...
@@ -220,7 +219,7 @@ class DispatchInfo:
...
@@ -220,7 +219,7 @@ class DispatchInfo:
cls
.
group_unload_area_dict
[
item
.
group_id
]
.
append
(
item
.
unload_area_id
)
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
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
():
if
item
.
group_id
not
in
cls
.
group_dump_dict
.
keys
():
cls
.
group_dump_dict
[
item
.
group_id
]
=
[
item
.
dump_id
]
cls
.
group_dump_dict
[
item
.
group_id
]
=
[
item
.
dump_id
]
else
:
else
:
...
@@ -254,8 +253,8 @@ class DispatchInfo:
...
@@ -254,8 +253,8 @@ class DispatchInfo:
try
:
try
:
trucks
=
cls
.
truck_group_dict
.
keys
()
trucks
=
cls
.
truck_group_dict
.
keys
()
for
i
in
trucks
:
for
i
in
trucks
:
match_excavator
=
session_mysql
.
query
(
DispatchSetting
)
.
filter_by
(
truck_id
=
i
)
.
first
()
.
exactor_id
match_excavator
=
session_mysql
.
query
(
DispatchSetting
)
.
filter_by
(
truck_id
=
i
,
isdeleted
=
0
,
)
.
first
()
.
exactor_id
match_unload_area
=
session_mysql
.
query
(
DispatchSetting
)
.
filter_by
(
truck_id
=
i
)
.
first
()
.
unload_area_id
match_unload_area
=
session_mysql
.
query
(
DispatchSetting
)
.
filter_by
(
truck_id
=
i
,
isdeleted
=
0
,
)
.
first
()
.
unload_area_id
cls
.
truck_match_dict
[
i
]
=
[
match_excavator
,
match_unload_area
]
cls
.
truck_match_dict
[
i
]
=
[
match_excavator
,
match_unload_area
]
except
Exception
as
es
:
except
Exception
as
es
:
logger
.
error
(
es
)
logger
.
error
(
es
)
...
@@ -349,10 +348,10 @@ class DispatchInfo:
...
@@ -349,10 +348,10 @@ class DispatchInfo:
# # unload->load distance
# # unload->load distance
# unload_load_distance = np.zeros((len(unload_areas), len(load_areas)))
# unload_load_distance = np.zeros((len(unload_areas), len(load_areas)))
# for
i
in range(len(unload_areas)):
# for
truck_id
in range(len(unload_areas)):
# for j in range(len(load_areas)):
# for j in range(len(load_areas)):
# distance = int(session_postgre.query(WalkTime).filter_by(unload_area_id=unload_areas[
i
], load_area_id=load_areas[j]).first().to_load_distance)
# distance = int(session_postgre.query(WalkTime).filter_by(unload_area_id=unload_areas[
truck_id
], load_area_id=load_areas[j]).first().to_load_distance)
# unload_load_distance[
i
][j] = distance
# unload_load_distance[
truck_id
][j] = distance
# cls.load_distance[item] = unload_load_distance
# cls.load_distance[item] = unload_load_distance
...
@@ -387,6 +386,11 @@ class DispatchInfo:
...
@@ -387,6 +386,11 @@ class DispatchInfo:
if
unload_area_id
not
in
group_unload_area_uuid_to_index
:
if
unload_area_id
not
in
group_unload_area_uuid_to_index
:
group_unload_area_uuid_to_index
[
unload_area_id
]
=
group_unload_area_count
group_unload_area_uuid_to_index
[
unload_area_id
]
=
group_unload_area_count
group_excavator_uuid_to_index
=
bidict
(
group_excavator_uuid_to_index
)
group_dump_uuid_to_index
=
bidict
(
group_dump_uuid_to_index
)
group_load_area_uuid_to_index
=
bidict
(
group_load_area_uuid_to_index
)
group_unload_area_uuid_to_index
=
bidict
(
group_unload_area_uuid_to_index
)
cls
.
excavator_uuid_to_index_dict
[
item
]
=
group_excavator_uuid_to_index
cls
.
excavator_uuid_to_index_dict
[
item
]
=
group_excavator_uuid_to_index
cls
.
dump_uuid_to_index_dict
[
item
]
=
group_dump_uuid_to_index
cls
.
dump_uuid_to_index_dict
[
item
]
=
group_dump_uuid_to_index
cls
.
load_area_uuid_to_index_dict
[
item
]
=
group_load_area_uuid_to_index
cls
.
load_area_uuid_to_index_dict
[
item
]
=
group_load_area_uuid_to_index
...
@@ -428,13 +432,61 @@ class DispatchInfo:
...
@@ -428,13 +432,61 @@ class DispatchInfo:
# logger.error("路网距离更新异常-调度部分和路网部分不一致")
# logger.error("路网距离更新异常-调度部分和路网部分不一致")
# logger.error(es)
# logger.error(es)
# @classmethod
# def update_device_dict(cls):
# cls.excavator_uuid_index_dict = {}
# cls.unload_area_uuid_index_dict = {}
# cls.truck_uuid_index_dict = {}
# cls.dump_uuid_index_dict = {}
# for group_id in cls.group_set:
# cls.excavator_uuid_index_dict = {}
# cls.unload_area_uuid_index_dict = {}
# cls.truck_uuid_index_dict = {}
# cls.dump_uuid_index_dict = {}
#
# for truck_id in range(len(cls.group_excavator_dict[group_id])):
# cls.excavator_uuid_index_dict[group_id][list(cls.group_excavator_dict[group_id])[truck_id]] = truck_id
#
# for truck_id in range(len(cls.group_unload_area_dict[group_id])):
# cls.unload_area_uuid_index_dict[group_id][list(cls.group_unload_area_dict[group_id])[truck_id]] = truck_id
#
# for truck_id in range(len(cls.group_dump_dict[group_id])):
# cls.dump_uuid_index_dict[group_id][list(cls.group_dump_dict[group_id])[truck_id]] = truck_id
#
# for truck_id in range(len(cls.group_truck_dict[group_id])):
# cls.truck_uuid_index_dict[group_id][list(cls.group_truck_dict[group_id])[truck_id]] = truck_id
#
# # self.excavator_uuid_index_dict = bidict(DispatchInfo.excavator_uuid_to_index_dict[self.group_id])
# # self.unload_area_uuid_index_dict = bidict(DispatchInfo.unload_area_uuid_to_index_dict[self.group_id])
# # self.dump_uuid_index_dict = bidict(DispatchInfo.dump_uuid_to_index_dict[self.group_id])
#
# cls.excavator_uuid_index_dict = bidict(cls.excavator_uuid_index_dict)
# cls.unload_area_uuid_index_dict = bidict(cls.unload_area_uuid_index_dict)
# cls.truck_uuid_index_dict = bidict(cls.truck_uuid_index_dict)
# cls.dump_uuid_index_dict = bidict(cls.dump_uuid_index_dict)
@classmethod
def
get_group_excavator_dict
(
cls
,
group_id
):
return
cls
.
excavator_uuid_to_index_dict
[
group_id
]
@classmethod
def
get_group_dump_dict
(
cls
,
group_id
):
return
cls
.
dump_uuid_to_index_dict
[
group_id
]
@classmethod
def
get_group_unload_area_dict
(
cls
,
group_id
):
return
cls
.
unload_area_uuid_to_index_dict
[
group_id
]
@classmethod
@classmethod
def
get_all_group
(
cls
):
def
get_all_group
s_id
(
cls
):
return
set
(
cls
.
group_excavator_dict
.
keys
())
return
set
(
cls
.
group_excavator_dict
.
keys
())
@classmethod
@classmethod
def
get_group_mode
(
cls
,
group_id
):
def
get_group_mode
(
cls
,
group_id
):
return
cls
.
group_mode
[
group_id
]
if
group_id
in
cls
.
group_mode
:
return
cls
.
group_mode
[
group_id
]
else
:
return
None
@classmethod
@classmethod
def
get_excavator
(
cls
,
group_id
):
def
get_excavator
(
cls
,
group_id
):
...
@@ -628,7 +680,7 @@ class DispatchInfo:
...
@@ -628,7 +680,7 @@ class DispatchInfo:
# @classmethod
# @classmethod
# def get_group_road_info(cls,group_id, truck_info):
# def get_group_road_info(cls,group_id, truck_info):
# if truck_info == 1:
# if truck_info == 1:
# for
i
in group_excavator():
# for
truck_id
in group_excavator():
# pass
# pass
# for j in group_unload_area():
# for j in group_unload_area():
# pass
# pass
...
...
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