Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
I
integrated-scheduling
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
0
Merge Requests
0
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
Commits
64893550
Commit
64893550
authored
Oct 19, 2021
by
Allvey
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
redis变动修改
parent
7852b5be
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
104 additions
and
49 deletions
+104
-49
excavator.py
equipment/excavator.py
+6
-0
truck.py
equipment/truck.py
+75
-37
path_plannner.py
path_plan/path_plannner.py
+13
-9
realtime_dispatch.py
realtime_dispatch.py
+2
-2
settings.py
settings.py
+7
-0
traffic_flow_info.py
traffic_flow/traffic_flow_info.py
+1
-1
No files found.
equipment/excavator.py
View file @
64893550
...
...
@@ -150,6 +150,7 @@ class ExcavatorInfo(WalkManage):
# 物料优先级控制
rule
=
2
rule7
=
session_mysql
.
query
(
DispatchRule
)
.
filter_by
(
id
=
7
)
.
first
()
material_priority_use
=
rule7
.
disabled
if
material_priority_use
==
0
:
rule
=
rule7
.
rule_weight
...
...
@@ -187,6 +188,11 @@ class ExcavatorInfo(WalkManage):
logger
.
info
(
"Excavator update!"
)
rule7
=
session_mysql
.
query
(
DispatchRule
)
.
filter_by
(
id
=
7
)
.
first
()
.
disabled
logger
.
info
(
"物料优先级规则"
)
logger
.
info
(
rule7
)
# 装载周期参数
self
.
period_map_para_load
()
...
...
equipment/truck.py
View file @
64893550
...
...
@@ -114,15 +114,14 @@ class TruckInfo(WalkManage):
self
.
truck_current_task
=
{}
device_name_set
=
redis2
.
keys
()
# try:
for
item
in
device_name_set
:
try
:
item
=
item
.
decode
(
encoding
=
"utf-8"
)
json_value
=
json
.
loads
(
redis2
.
get
(
item
))
device_type
=
json_value
.
get
(
"type"
)
key_value_dict
=
redis2
.
hgetall
(
item
)
# reids str可以自动转为bytes
device_type
=
int
(
key_value_dict
[
str_to_byte
(
"type"
)]
)
if
device_type
==
1
:
if
truck_name_to_uuid_dict
[
item
]
in
self
.
dynamic_truck_set
:
currentTask
=
json_value
.
get
(
"currentTask"
)
currentTask
=
int
(
key_value_dict
[
str_to_byte
(
"currentTask"
)]
)
self
.
truck_current_task
[
truck_name_to_uuid_dict
[
item
]
]
=
currentTask
...
...
@@ -130,10 +129,6 @@ class TruckInfo(WalkManage):
logger
.
error
(
"读取矿卡任务异常-reids读取异常"
)
logger
.
error
(
es
)
# except Exception as es:
# logger.error("读取矿卡任务异常-reids读取异常")
# logger.error(es)
logger
.
info
(
"矿卡当前任务:"
)
logger
.
info
(
self
.
truck_current_task
)
...
...
@@ -148,19 +143,27 @@ class TruckInfo(WalkManage):
try
:
for
item
in
self
.
dynamic_truck_set
:
json_value
=
json
.
loads
(
redis2
.
get
(
truck_uuid_to_name_dict
[
item
])
)
device_type
=
json_value
.
get
(
"type"
)
key_value_dict
=
redis2
.
hgetall
(
truck_uuid_to_name_dict
[
item
]
)
device_type
=
int
(
key_value_dict
[
str_to_byte
(
"type"
)]
)
# 判断是否为矿卡
if
device_type
==
1
:
task
=
self
.
truck_current_task
[
item
]
if
task
in
heavy_task_set
:
last_load_time_tmp
=
json_value
.
get
(
"lastLoadTime"
)
if
last_load_time_tmp
is
not
None
:
self
.
last_load_time
[
item
]
=
datetime
.
strptime
(
last_load_time_tmp
,
"
%
b
%
d,
%
Y
%
I:
%
M:
%
S
%
p"
)
if
str_to_byte
(
"lastLoadTime"
)
in
key_value_dict
.
keys
():
# 若最后装载时间存在
last_load_time_tmp
=
eval
(
byte_to_str
(
key_value_dict
[
str_to_byte
(
"lastLoadTime"
)]))
tmp_time
=
datetime
.
strptime
(
last_load_time_tmp
,
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
if
tmp_time
>
datetime
.
strptime
(
"2000-01-01 01:01:01"
,
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
):
# 若最后装载时间异常
self
.
last_load_time
[
item
]
=
tmp_time
else
:
self
.
last_load_time
[
item
]
=
datetime
.
now
()
redis2
.
hsetnx
(
truck_uuid_to_name_dict
[
item
],
str_to_byte
(
"lastLoadTime"
),
"
\"
"
+
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
+
"
\"
"
)
logger
.
info
(
"lastLoadTime is Error"
)
else
:
self
.
last_load_time
[
item
]
=
datetime
.
now
()
redis2
.
hsetnx
(
truck_uuid_to_name_dict
[
item
],
str_to_byte
(
"lastLoadTime"
),
"
\"
"
+
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
+
"
\"
"
)
logger
.
info
(
"lastLoadTime is None"
)
self
.
relative_last_load_time
[
item
]
=
float
(
(
self
.
last_load_time
[
item
]
-
self
.
start_time
)
/
timedelta
(
hours
=
0
,
minutes
=
1
,
seconds
=
0
)
...
...
@@ -169,21 +172,24 @@ class TruckInfo(WalkManage):
logger
.
info
(
"相对last_load_time"
)
logger
.
info
(
self
.
relative_last_load_time
[
item
])
if
task
in
empty_task_set
:
last_unload_time_tmp
=
json_value
.
get
(
"lastUnloadTime"
)
if
last_unload_time_tmp
is
not
None
:
self
.
last_unload_time
[
item
]
=
datetime
.
strptime
(
last_unload_time_tmp
,
"
%
b
%
d,
%
Y
%
I:
%
M:
%
S
%
p"
)
if
str_to_byte
(
"lastUnloadTime"
)
in
key_value_dict
.
keys
():
last_unload_time_tmp
=
eval
(
key_value_dict
[
str_to_byte
(
"lastUnloadTime"
)])
tmp_time
=
datetime
.
strptime
(
last_unload_time_tmp
,
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
if
tmp_time
>
datetime
.
strptime
(
"2000-01-01 01:01:01"
,
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
):
self
.
last_unload_time
[
item
]
=
tmp_time
else
:
self
.
last_unload_time
[
item
]
=
datetime
.
now
()
json_value
[
"lastUnloadTime"
]
=
datetime
.
now
()
.
strftime
(
"
%
b
%
d,
%
Y
%
I:
%
M:
%
S
%
p"
)
redis2
.
set
(
truck_uuid_to_name_dict
[
item
],
str
(
json
.
dumps
(
json_value
)),
)
logger
.
info
(
"lastUnlaodTime is None"
)
redis2
.
hsetnx
(
truck_uuid_to_name_dict
[
item
],
str_to_byte
(
"lastUnloadTime"
),
"
\"
"
+
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
+
"
\"
"
)
logger
.
info
(
"lastUnloadTime is Error"
)
else
:
self
.
last_unload_time
[
item
]
=
datetime
.
now
()
# key_value_dict[str_to_byte("lastUnloadTime")] = datetime.now().strftime(
# "%b %d, %Y %I:%M:%S %p"
# )
redis2
.
hsetnx
(
truck_uuid_to_name_dict
[
item
],
str_to_byte
(
"lastUnloadTime"
),
"
\"
"
+
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
+
"
\"
"
)
logger
.
info
(
"lastUnloadTime is None"
)
self
.
relative_last_unload_time
[
item
]
=
float
(
(
self
.
last_unload_time
[
item
]
-
self
.
start_time
)
/
timedelta
(
hours
=
0
,
minutes
=
1
,
seconds
=
0
)
...
...
@@ -192,13 +198,19 @@ class TruckInfo(WalkManage):
logger
.
info
(
"相对last_unload_time"
)
logger
.
info
(
self
.
relative_last_unload_time
[
item
])
elif
task
==
-
2
:
# print(datetime.now())
self
.
last_unload_time
[
item
]
=
datetime
.
now
()
json_value
[
"lastUnloadTime"
]
=
datetime
.
now
()
.
strftime
(
"
%
b
%
d,
%
Y
%
I:
%
M:
%
S
%
p"
)
redis2
.
set
(
truck_uuid_to_name_dict
[
item
],
str
(
json
.
dumps
(
json_value
))
)
# key_value_dict["lastUnloadTime"] = datetime.now().strftime(
# "%b %d, %Y %I:%M:%S %p")
if
str_to_byte
(
"lastUnloadTime"
)
in
key_value_dict
.
keys
():
# redis2.hset(truck_uuid_to_name_dict[item], str_to_byte("lastUnloadTime"),
# datetime.now().strftime("%b %d, %Y %I:%M:%S %p"))
redis2
.
hset
(
truck_uuid_to_name_dict
[
item
],
str_to_byte
(
"lastUnloadTime"
),
"
\"
"
+
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
+
"
\"
"
)
else
:
redis2
.
hsetnx
(
truck_uuid_to_name_dict
[
item
],
str_to_byte
(
"lastUnloadTime"
),
"
\"
"
+
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
+
"
\"
"
)
# redis2.hsetnx(truck_uuid_to_name_dict[item], str(json.dumps(key_value_dict)))
except
Exception
as
es
:
logger
.
error
(
"读取矿卡可用时间异常-redis读取异常"
)
logger
.
error
(
es
)
...
...
@@ -492,12 +504,23 @@ class TruckInfo(WalkManage):
# 初始化参数
self
.
reset
()
# 设备优先级启用
rule6
=
session_mysql
.
query
(
DispatchRule
)
.
filter_by
(
id
=
6
)
.
first
()
.
disabled
# 距离成本启动
rule1
=
session_mysql
.
query
(
DispatchRule
)
.
filter_by
(
id
=
1
)
.
first
()
.
disabled
# 拥堵成本启用
rule2
=
session_mysql
.
query
(
DispatchRule
)
.
filter_by
(
id
=
2
)
.
first
()
.
disabled
# 车流规划启用
rule3
=
session_mysql
.
query
(
DispatchRule
)
.
filter_by
(
id
=
3
)
.
first
()
.
disabled
rule4
=
session_mysql
.
query
(
DispatchRule
)
.
filter_by
(
id
=
4
)
.
first
()
.
disabled
# 锁定禁止启用
rule5
=
session_mysql
.
query
(
DispatchRule
)
.
filter_by
(
id
=
5
)
.
first
()
.
disabled
# 设备优先级启用
rule6
=
session_mysql
.
query
(
DispatchRule
)
.
filter_by
(
id
=
6
)
.
first
()
.
disabled
logger
.
info
(
"Para truck update!"
)
# 装载周期参数
...
...
@@ -517,6 +540,22 @@ class TruckInfo(WalkManage):
# 更新有效载重
self
.
update_truck_payload
()
logger
.
info
(
"距离成本规则"
)
logger
.
info
(
rule1
)
logger
.
info
(
"拥堵成本规则"
)
logger
.
info
(
rule2
)
logger
.
info
(
"车流规划规则"
)
logger
.
info
(
rule3
or
rule4
)
logger
.
info
(
"生产组织规则"
)
logger
.
info
(
rule5
)
logger
.
info
(
"设备优先级规则"
)
logger
.
info
(
rule6
)
if
not
rule5
:
# 更新绑定关系
...
...
@@ -528,7 +567,6 @@ class TruckInfo(WalkManage):
self
.
update_truck_excavator_exclude
()
if
not
rule6
:
# 更新矿卡调度优先级
self
.
update_truck_priority
()
...
...
path_plan/path_plannner.py
View file @
64893550
...
...
@@ -234,10 +234,11 @@ class LaneInfo:
device_name_set
=
redis2
.
keys
()
for
item
in
device_name_set
:
item
=
item
.
decode
(
encoding
=
'utf-8'
)
json_value
=
json
.
loads
(
redis2
.
get
(
item
))
device_type
=
json_value
.
get
(
'type'
)
if
device_type
==
1
:
truck_speed
=
json_value
.
get
(
'speed'
)
# json_value = json.loads(redis2.get(item))
key_value_dict
=
redis2
.
hgetall
(
item
)
device_type
=
key_value_dict
[
str_to_byte
(
'type'
)]
if
device_type
==
1
and
str_to_byte
(
'speed'
)
in
key_value_dict
.
keys
():
truck_speed
=
key_value_dict
[
str_to_byte
(
'speed'
)]
truck_speed_dict
[
truck_name_to_uuid_dict
[
item
]]
=
truck_speed
except
Exception
as
es
:
logger
.
error
(
f
'矿卡{item}实时速度读取异常'
)
...
...
@@ -252,14 +253,17 @@ class LaneInfo:
device_name_set
=
redis2
.
keys
()
for
item
in
device_name_set
:
item
=
item
.
decode
(
encoding
=
'utf-8'
)
json_value
=
json
.
loads
(
redis2
.
get
(
item
))
device_type
=
json_value
.
get
(
'type'
)
is_online
=
json_value
.
get
(
'isOnline'
)
if
device_type
==
1
and
is_online
:
truck_locate
=
json_value
.
get
(
'laneId'
)
# json_value = json.loads(redis2.get(item))
key_value_dict
=
redis2
.
hgetall
(
item
)
device_type
=
key_value_dict
[
str_to_byte
(
'type'
)]
# is_online = key_value_dict[str_to_byte('online')]
key_set
=
key_value_dict
.
keys
()
if
device_type
==
1
and
str_to_byte
(
'online'
)
in
key_set
and
str_to_byte
(
'laneId'
)
in
key_set
:
truck_locate
=
key_value_dict
[
str_to_byte
(
'laneId'
)]
truck_locate_dict
[
truck_name_to_uuid_dict
[
item
]]
=
truck_locate
except
Exception
as
es
:
logger
.
error
(
f
'矿卡{item}所在路段信息读取异常'
)
logger
.
error
(
es
)
return
truck_locate_dict
...
...
realtime_dispatch.py
View file @
64893550
...
...
@@ -548,7 +548,7 @@ class Dispatcher(WalkManage):
try
:
logger
.
info
(
"挖机id:"
)
logger
.
info
(
excavator
.
xcavator_uuid_to_index_dict
)
logger
.
info
(
excavator
.
e
xcavator_uuid_to_index_dict
)
logger
.
info
(
"卸点id:"
)
logger
.
info
(
dump
.
dump_uuid_to_index_dict
)
logger
.
info
(
f
"卸载点实际车流:"
)
...
...
@@ -590,7 +590,7 @@ class Dispatcher(WalkManage):
/
(
self
.
opt_goto_dump_traffic_flow
[
int
(
trip
[
1
]),
:]
+
0.001
)
logger
.
info
(
"transport_value"
)
logger
.
info
(
transport_value
)
logger
.
info
(
"
_____________here________
"
)
logger
.
info
(
"
dump_material_bind_modify
"
)
logger
.
info
(
truck
.
dump_material_bind_modify
[
truck_index
])
target
=
np
.
argmin
(
transport_value
...
...
settings.py
View file @
64893550
...
...
@@ -96,3 +96,10 @@ try:
except
Exception
as
es
:
logger
.
error
(
"数据库连接失败"
)
logger
.
error
(
es
)
def
str_to_byte
(
item
):
return
bytes
(
item
,
encoding
=
'utf8'
)
def
byte_to_str
(
item
):
return
str
(
item
,
encoding
=
'utf-8'
)
traffic_flow/traffic_flow_info.py
View file @
64893550
...
...
@@ -200,7 +200,7 @@ def Traffic_para_init(num_of_load_area, num_of_unload_area, num_of_excavator, nu
tra_para
.
goto_dump_factor
[
i
][
j
]
=
\
tra_para
.
goto_unload_area_factor
[
load_area_index
][
unload_area_index
]
print
(
"cout"
,
tra_para
.
priority_coefficient_goto_dump
,
tra_para
.
priority_coefficient_goto_excavator
)
#
print("cout", tra_para.priority_coefficient_goto_dump, tra_para.priority_coefficient_goto_excavator)
# except Exception as es:
# logger.error(es)
...
...
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