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
d9c18bb7
Commit
d9c18bb7
authored
Nov 11, 2021
by
张晓彤
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复修BUG
parent
b95e895f
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
97 additions
and
94 deletions
+97
-94
truck.py
equipment/truck.py
+1
-1
realtime_dispatch.py
realtime_dispatch.py
+96
-93
No files found.
equipment/truck.py
View file @
d9c18bb7
...
@@ -614,7 +614,7 @@ class TruckInfo(WalkManage):
...
@@ -614,7 +614,7 @@ class TruckInfo(WalkManage):
# 矿卡绑定物料
# 矿卡绑定物料
self
.
truck_material_bind
=
{}
self
.
truck_material_bind
=
{}
# 矿卡绑定物料modify
# 矿卡绑定物料modify
self
.
dump_material_bind_modify
=
np
.
full
((
self
.
dynamic_truck_num
,
get_value
(
"dynamic_
excavator
_num"
)),
0
)
self
.
dump_material_bind_modify
=
np
.
full
((
self
.
dynamic_truck_num
,
get_value
(
"dynamic_
dump
_num"
)),
0
)
# self.excavator_material_bind_modify =np.zeros(self.dynamic_truck_num)
# self.excavator_material_bind_modify =np.zeros(self.dynamic_truck_num)
self
.
excavator_material_bind_modify
=
np
.
full
((
self
.
dynamic_truck_num
,
get_value
(
"dynamic_excavator_num"
)),
0
)
self
.
excavator_material_bind_modify
=
np
.
full
((
self
.
dynamic_truck_num
,
get_value
(
"dynamic_excavator_num"
)),
0
)
# # group_id
# # group_id
...
...
realtime_dispatch.py
View file @
d9c18bb7
...
@@ -852,37 +852,37 @@ class Dispatcher(WalkManage):
...
@@ -852,37 +852,37 @@ class Dispatcher(WalkManage):
for
truck_index
in
index
:
for
truck_index
in
index
:
if
len
(
Seq
[
truck_index
])
>
0
:
if
len
(
Seq
[
truck_index
])
>
0
:
try
:
# try:
# 获取矿卡id
# 获取矿卡id
truck_id
=
truck
.
truck_index_to_uuid_dict
[
truck_index
]
truck_id
=
truck
.
truck_index_to_uuid_dict
[
truck_index
]
# 判断矿卡是否禁用
if
truck_id
in
truck
.
update_truck_disable_list
():
continue
# 获取矿卡当前任务
# 判断矿卡是否禁用
task
=
truck_current_task
[
truck
.
truck_index_to_uuid_dict
[
truck_index
]]
if
truck_id
in
truck
.
update_truck_disable_list
():
continue
# 矿卡结束当前派车计划后的目的地
# 获取矿卡当前任务
end_eq_index
=
truck_current_trip
[
truck_index
][
1
]
task
=
truck_current_task
[
truck
.
truck_index_to_uuid_dict
[
truck_index
]
]
# 调用调度函数,得到最优目的地序号
# 矿卡结束当前派车计划后的目的地
target_eq_index
=
self
.
truck_schedule
(
truck
.
truck_index_to_uuid_dict
[
truck_index
])
end_eq_index
=
truck_current_trip
[
truck_index
][
1
]
# 写入Seq序列
# 调用调度函数,得到最优目的地序号
Seq
[
truck_index
][
1
]
=
target_eq_index
target_eq_index
=
self
.
truck_schedule
(
truck
.
truck_index_to_uuid_dict
[
truck_index
])
try
:
# 写入Seq序列
group_id
=
self
.
group
.
dispatch_truck_group
[
truck_id
]
Seq
[
truck_index
][
1
]
=
target_eq_index
except
Exception
as
es
:
logger
.
error
(
"非动态调度矿卡"
)
logger
.
error
(
es
)
try
:
group_id
=
self
.
group
.
dispatch_truck_group
[
truck_id
]
except
Exception
as
es
:
except
Exception
as
es
:
# logger.error(f'矿卡 {truck_uuid_to_name_dict[self.truck_index_to_uuid_dict[truck_index]]} 派车计划计算异常')
logger
.
error
(
"非动态调度矿卡"
)
logger
.
error
(
f
'矿卡派车计划计算异常'
)
logger
.
error
(
es
)
logger
.
error
(
es
)
# except Exception as es:
# # logger.error(f'矿卡 {truck_uuid_to_name_dict[self.truck_index_to_uuid_dict[truck_index]]} 派车计划计算异常')
# logger.error(f'矿卡派车计划计算异常')
# logger.error(es)
try
:
try
:
if
task
in
empty_task_set
:
if
task
in
empty_task_set
:
...
@@ -1064,43 +1064,44 @@ class Group(WalkManage):
...
@@ -1064,43 +1064,44 @@ class Group(WalkManage):
opt_goto_dump_traffic_flow
,
opt_goto_excavator_traffic_flow
=
traffic_flow_plan
(
truck
)
opt_goto_dump_traffic_flow
,
opt_goto_excavator_traffic_flow
=
traffic_flow_plan
(
truck
)
#
try:
try
:
print
(
"uuid_to_index_dict"
)
print
(
"uuid_to_index_dict"
)
print
(
dump
.
dump_uuid_to_index_dict
)
print
(
dump
.
dump_uuid_to_index_dict
)
print
(
excavator
.
excavator_uuid_to_index_dict
)
print
(
excavator
.
excavator_uuid_to_index_dict
)
for
group_id
in
self
.
group_set
:
for
group_id
in
self
.
group_set
:
dump_group
=
self
.
device_group
[
group_id
][
0
]
dump_group
=
self
.
device_group
[
group_id
][
0
]
# group 类最后更新,读取派车计划及分组情况,和前面的uuid 可能不一致
excavator_group
=
self
.
device_group
[
group_id
][
1
]
excavator_group
=
self
.
device_group
[
group_id
][
1
]
print
(
"group"
)
print
(
"group"
)
print
(
self
.
device_group
)
print
(
self
.
device_group
)
local_opt_goto_dump_traffic_flow
=
np
.
zeros
((
len
(
excavator_group
),
len
(
dump_group
)))
local_opt_goto_dump_traffic_flow
=
np
.
zeros
((
len
(
excavator_group
),
len
(
dump_group
)))
local_opt_goto_excavator_traffic_flow
=
np
.
zeros
((
len
(
dump_group
),
len
(
excavator_group
)))
local_opt_goto_excavator_traffic_flow
=
np
.
zeros
((
len
(
dump_group
),
len
(
excavator_group
)))
local_actual_goto_dump_traffic_flow
=
np
.
zeros
((
len
(
excavator_group
),
len
(
dump_group
)))
local_actual_goto_dump_traffic_flow
=
np
.
zeros
((
len
(
excavator_group
),
len
(
dump_group
)))
local_actual_goto_excavator_traffic_flow
=
np
.
zeros
((
len
(
dump_group
),
len
(
excavator_group
)))
local_actual_goto_excavator_traffic_flow
=
np
.
zeros
((
len
(
dump_group
),
len
(
excavator_group
)))
for
excavator_id
in
excavator_group
:
for
excavator_id
in
excavator_group
:
for
dump_id
in
dump_group
:
for
dump_id
in
dump_group
:
dump_group_index
=
self
.
group_dump_uuid_to_index_dict
[
group_id
][
dump_id
]
dump_group_index
=
self
.
group_dump_uuid_to_index_dict
[
group_id
][
dump_id
]
excavator_group_index
=
self
.
group_excavator_uuid_to_index_dict
[
group_id
][
excavator_id
]
excavator_group_index
=
self
.
group_excavator_uuid_to_index_dict
[
group_id
][
excavator_id
]
local_opt_goto_dump_traffic_flow
[
excavator_group_index
][
dump_group_index
]
=
\
local_opt_goto_dump_traffic_flow
[
excavator_group_index
][
dump_group_index
]
=
\
opt_goto_dump_traffic_flow
[
excavator
.
excavator_uuid_to_index_dict
[
excavator_id
]][
dump
.
dump_uuid_to_index_dict
[
dump_id
]]
opt_goto_dump_traffic_flow
[
excavator
.
excavator_uuid_to_index_dict
[
excavator_id
]][
dump
.
dump_uuid_to_index_dict
[
dump_id
]]
local_opt_goto_excavator_traffic_flow
[
dump_group_index
][
excavator_group_index
]
=
\
local_opt_goto_excavator_traffic_flow
[
dump_group_index
][
excavator_group_index
]
=
\
opt_goto_excavator_traffic_flow
[
dump
.
dump_uuid_to_index_dict
[
dump_id
]][
excavator
.
excavator_uuid_to_index_dict
[
excavator_id
]]
opt_goto_excavator_traffic_flow
[
dump
.
dump_uuid_to_index_dict
[
dump_id
]][
excavator
.
excavator_uuid_to_index_dict
[
excavator_id
]]
local_actual_goto_dump_traffic_flow
[
excavator_group_index
][
dump_group_index
]
=
\
local_actual_goto_dump_traffic_flow
[
excavator_group_index
][
dump_group_index
]
=
\
actual_goto_dump_traffic_flow
[
excavator
.
excavator_uuid_to_index_dict
[
excavator_id
]][
dump
.
dump_uuid_to_index_dict
[
dump_id
]]
actual_goto_dump_traffic_flow
[
excavator
.
excavator_uuid_to_index_dict
[
excavator_id
]][
dump
.
dump_uuid_to_index_dict
[
dump_id
]]
local_actual_goto_excavator_traffic_flow
[
dump_group_index
][
excavator_group_index
]
=
\
local_actual_goto_excavator_traffic_flow
[
dump_group_index
][
excavator_group_index
]
=
\
actual_goto_excavator_traffic_flow
[
dump
.
dump_uuid_to_index_dict
[
dump_id
]][
excavator
.
excavator_uuid_to_index_dict
[
excavator_id
]]
actual_goto_excavator_traffic_flow
[
dump
.
dump_uuid_to_index_dict
[
dump_id
]][
excavator
.
excavator_uuid_to_index_dict
[
excavator_id
]]
self
.
group_opt_goto_dump_traffic_flow
[
group_id
]
=
local_opt_goto_dump_traffic_flow
self
.
group_opt_goto_dump_traffic_flow
[
group_id
]
=
local_opt_goto_dump_traffic_flow
self
.
group_opt_goto_excavator_traffic_flow
[
group_id
]
=
local_opt_goto_excavator_traffic_flow
self
.
group_opt_goto_excavator_traffic_flow
[
group_id
]
=
local_opt_goto_excavator_traffic_flow
self
.
group_actual_goto_dump_traffic_flow
[
group_id
]
=
local_actual_goto_dump_traffic_flow
self
.
group_actual_goto_dump_traffic_flow
[
group_id
]
=
local_actual_goto_dump_traffic_flow
self
.
group_actual_goto_excavator_traffic_flow
[
group_id
]
=
local_actual_goto_excavator_traffic_flow
self
.
group_actual_goto_excavator_traffic_flow
[
group_id
]
=
local_actual_goto_excavator_traffic_flow
# except Exception as es:
except
Exception
as
es
:
# logger.info(es)
logger
.
error
(
es
)
logger
.
error
(
"分组车流更新异常"
)
logger
.
info
(
"group_opt_traffic_flow"
)
logger
.
info
(
"group_opt_traffic_flow"
)
logger
.
info
(
self
.
group_opt_goto_dump_traffic_flow
)
logger
.
info
(
self
.
group_opt_goto_dump_traffic_flow
)
...
@@ -1218,6 +1219,8 @@ class Group(WalkManage):
...
@@ -1218,6 +1219,8 @@ class Group(WalkManage):
for
group_dump_index
in
range
(
group_dump_num
):
for
group_dump_index
in
range
(
group_dump_num
):
dump_index
=
dump
.
dump_uuid_to_index_dict
[
self
.
group_dump_index_to_uuid_dict
[
group_id
][
group_dump_index
]]
dump_index
=
dump
.
dump_uuid_to_index_dict
[
self
.
group_dump_index_to_uuid_dict
[
group_id
][
group_dump_index
]]
print
(
truck
.
dump_material_bind_modify
,
truck_index
,
dump_index
)
print
(
truck
.
dump_material_bind_modify
[
truck_index
][
dump_index
],
truck_index
,
dump_index
)
dump_material_bind_modify
[
group_dump_index
]
=
truck
.
dump_material_bind_modify
[
truck_index
][
dump_index
]
dump_material_bind_modify
[
group_dump_index
]
=
truck
.
dump_material_bind_modify
[
truck_index
][
dump_index
]
self
.
group_excavator_exclude_modify
[
truck_id
]
=
excavator_exclude_modify
self
.
group_excavator_exclude_modify
[
truck_id
]
=
excavator_exclude_modify
...
@@ -1318,51 +1321,51 @@ class Group(WalkManage):
...
@@ -1318,51 +1321,51 @@ class Group(WalkManage):
# 下面三个函数保证程序定期执行,不用管他
# 下面三个函数保证程序定期执行,不用管他
def
process
(
dispatcher
):
def
process
(
dispatcher
):
try
:
# try:
# 更新周期参数
# 更新周期参数
logger
.
info
(
"#####################################周期更新开始#####################################"
)
logger
.
info
(
"#####################################周期更新开始#####################################"
)
period_para_update
()
if
get_value
(
"dynamic_dump_num"
)
*
get_value
(
"dynamic_excavator_num"
)
==
0
:
raise
Exception
(
"无动态派车计划可用"
)
return
if
get_value
(
"dynamic_truck_num"
)
==
0
:
raise
Exception
(
"无动态派车可用矿卡"
)
return
# para_process(dispatcher)
#
# state_process(dispatcher)
# 清空数据库缓存
session_mysql
.
commit
()
session_mysql
.
flush
()
# 清空数据库缓存
session_postgre
.
commit
()
session_postgre
.
flush
()
#
# # 周期更新
# dispatcher.para_period_update()
# 周期更新
dispatcher
.
dispatcher_period_update
()
# 参数重置
dispatcher
.
sim_para_reset
()
# try:
period_para_update
()
if
get_value
(
"dynamic_dump_num"
)
*
get_value
(
"dynamic_excavator_num"
)
==
0
:
raise
Exception
(
"无动态派车计划可用"
)
return
if
get_value
(
"dynamic_truck_num"
)
==
0
:
raise
Exception
(
"无动态派车可用矿卡"
)
return
# para_process(dispatcher)
#
# state_process(dispatcher)
# 调度计算
# 清空数据库缓存
dispatcher
.
schedule_construct
()
session_mysql
.
commit
()
session_mysql
.
flush
()
# except Exception as es:
# 清空数据库缓存
# logger.error("更新不及时")
session_postgre
.
commit
()
# logger.error(es)
session_postgre
.
flush
()
#
# # 周期更新
# dispatcher.para_period_update()
# 周期更新
dispatcher
.
dispatcher_period_update
()
# 参数重置
dispatcher
.
sim_para_reset
()
# try:
# 调度计算
dispatcher
.
schedule_construct
()
# except Exception as es:
# logger.error("更新不及时")
# logger.error(es)
logger
.
info
(
"#####################################周期更新结束#####################################"
)
logger
.
info
(
"#####################################周期更新结束#####################################"
)
except
Exception
as
es
:
#
except Exception as es:
logger
.
error
(
es
)
#
logger.error(es)
scheduler
=
sched
.
scheduler
(
time
.
time
,
time
.
sleep
)
scheduler
=
sched
.
scheduler
(
time
.
time
,
time
.
sleep
)
...
...
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