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
6268ed28
Commit
6268ed28
authored
Dec 29, 2022
by
张晓彤
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
测试锁定排斥及问题修复
parent
89948a75
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
63 additions
and
31 deletions
+63
-31
group.py
core/group.py
+33
-5
schedule.py
core/schedule.py
+17
-13
submit.py
core/submit.py
+0
-1
truck.py
equipment/truck.py
+13
-12
No files found.
core/group.py
View file @
6268ed28
...
...
@@ -193,6 +193,10 @@ class Group:
# material control
self
.
group_walk_available
=
None
# device exclude
self
.
truck_excavator_exclude
=
set
()
self
.
truck_excavator_exclude_modify
=
{}
def
update_group_mode
(
self
):
"""
update group mode.
...
...
@@ -291,13 +295,33 @@ class Group:
else
:
self
.
excavator_truck_bind
[
excavator_id
]
.
append
(
truck_id
)
def
get_device_exclude
(
self
,
truck_id
):
def
update_device_exclude
(
self
):
"""
get device exclude modify vector.
:param truck_id: request truck id
:return:
"""
pass
self
.
truck_excavator_exclude
=
{}
self
.
truck_excavator_exclude_modify
=
{}
for
truck_id
in
self
.
group_trucks
:
self
.
truck_excavator_exclude_modify
[
truck_id
]
=
np
.
zeros
(
len
(
self
.
group_excavators
))
if
truck_id
in
self
.
truck
.
truck_excavator_exclude
:
exclude_excavators
=
self
.
truck
.
truck_excavator_exclude
[
truck_id
]
else
:
continue
for
excavator_id
in
exclude_excavators
:
if
excavator_id
in
self
.
group_excavators
:
if
truck_id
not
in
self
.
truck_excavator_exclude
:
self
.
truck_excavator_exclude
[
truck_id
]
=
[
excavator_id
]
else
:
self
.
truck_excavator_exclude
[
truck_id
]
.
append
(
excavator_id
)
excavator_index
=
self
.
excavator_uuid_index_dict
[
excavator_id
]
self
.
truck_excavator_exclude_modify
[
truck_id
][
excavator_index
]
=
1000000
self
.
logger
.
info
(
"group.truck_excavator_exclude"
)
self
.
logger
.
info
(
self
.
truck_excavator_exclude_modify
)
def
info_update
(
self
):
"""
...
...
@@ -309,6 +333,7 @@ class Group:
self
.
update_group_device_map
()
self
.
update_group_road_network
()
self
.
update_device_material
()
self
.
update_device_exclude
()
class
GroupDispatcher
:
...
...
@@ -477,7 +502,8 @@ class GroupDispatcher:
else
:
next_excavator_value
=
s
.
solve
(
truck_info
)
# min_index = next_excavator_list.index(min(next_excavator_list))
min_index
=
np
.
argmin
(
next_excavator_value
)
self
.
logger
.
info
(
f
'车辆排斥修正 {i}, {self.group.truck_excavator_exclude_modify[i]}'
)
min_index
=
np
.
argmin
(
next_excavator_value
+
self
.
group
.
truck_excavator_exclude_modify
[
i
])
next_excavator_id
=
self
.
group
.
excavator_uuid_index_dict
.
inverse
[
min_index
]
if
truck_task
==
-
2
:
next_unload_area_id
=
"Park"
...
...
@@ -513,7 +539,9 @@ class GroupDispatcher:
next_excavator_id
=
self
.
group
.
truck
.
truck_excavator_bind
[
i
]
else
:
next_excavator_value
=
s
.
solve
(
truck_info
)
min_index
=
np
.
argmin
(
next_excavator_value
)
self
.
logger
.
info
(
f
'车辆排斥修正 {i}, {self.group.truck_excavator_exclude_modify[i]}'
)
min_index
=
np
.
argmin
(
next_excavator_value
+
self
.
group
.
truck_excavator_exclude_modify
[
i
])
# min_index = np.argmin(next_excavator_value)
next_excavator_id
=
self
.
group
.
excavator_uuid_index_dict
.
inverse
[
min_index
]
self
.
logger
.
info
(
f
'目标挖机 {min_index} {next_excavator_id}'
)
...
...
core/schedule.py
View file @
6268ed28
...
...
@@ -57,23 +57,27 @@ class PreSchedule:
excavator_avl_ls: (list) 驶往挖机的各矿卡抵达时间
dump_avl_ls: (list) 驶往卸点的各矿卡抵达时间
"""
try
:
dynamic_excavator_num
=
self
.
excavator
.
get_excavator_num
()
dumps
=
self
.
dump
.
get_dump_num
()
trucks
=
self
.
truck
.
get_truck_num
()
# try:
# dynamic_excavator_num = self.excavator.get_excavator_num()
dynamic_excavator_num
=
get_value
(
"dynamic_excavator_num"
)
# dumps = self.dump.get_dump_num()
dumps
=
get_value
(
"dynamic_dump_num"
)
# trucks = self.truck.get_truck_num()
trucks
=
get_value
(
"dynamic_truck_num"
)
truck_current_task
=
self
.
truck
.
get_truck_current_task
()
truck_current_task
=
self
.
truck
.
get_truck_current_task
()
truck_current_trip
=
self
.
truck
.
get_truck_current_trip
()
truck_current_trip
=
self
.
truck
.
get_truck_current_trip
()
truck_reach_excavator
=
self
.
truck
.
get_truck_reach_excavator
()
truck_reach_excavator
=
self
.
truck
.
get_truck_reach_excavator
()
truck_reach_dump
=
self
.
truck
.
get_truck_reach_dump
()
truck_reach_dump
=
self
.
truck
.
get_truck_reach_dump
()
excavator_avl_ls
=
[[]
for
_
in
range
(
dynamic_excavator_num
)]
dump_avl_ls
=
[[]
for
_
in
range
(
dumps
)]
# self.logger.info("update_truck_reach_time-trucks")
# self.logger.info(trucks)
excavator_avl_ls
=
[[]
for
_
in
range
(
dynamic_excavator_num
)]
dump_avl_ls
=
[[]
for
_
in
range
(
dumps
)]
# self.logger.info("update_truck_reach_time-trucks")
# self.logger.info(trucks)
try
:
for
i
in
range
(
trucks
):
if
truck_id
is
not
None
and
i
==
self
.
truck
.
truck_uuid_to_index_dict
[
truck_id
]:
continue
...
...
@@ -99,7 +103,7 @@ class PreSchedule:
except
Exception
as
es
:
self
.
logger
.
error
(
"矿卡预计抵达时间计算异常"
)
self
.
logger
.
error
(
es
)
return
[],
[]
return
excavator_avl_ls
,
dump_avl_ls
return
excavator_avl_ls
,
dump_avl_ls
...
...
core/submit.py
View file @
6268ed28
...
...
@@ -246,7 +246,6 @@ class DispatchSubmission:
self
.
logger
.
info
(
"dispatch_plan_dict"
)
self
.
logger
.
info
(
dispatch_plan_dict
)
print
(
group
.
truck_info_list
)
for
truck_id
,
dispatch_plan
in
dispatch_plan_dict
.
items
():
try
:
...
...
equipment/truck.py
View file @
6268ed28
...
...
@@ -652,21 +652,22 @@ class TruckInfo(WalkManage):
except
Exception
as
es
:
session_postgre
.
rollback
()
session_mysql
.
rollback
()
if
rule5
.
disabled
==
0
:
if
not
rule5
.
disabled
:
for
excavator_id
in
get_value
(
"dynamic_excavator_set"
):
try
:
item
=
(
session_mysql
.
query
(
Equipment
)
.
filter_by
(
id
=
excavator_id
,
only_allowed
=
1
)
.
first
()
)
except
Exception
as
es
:
session_postgre
.
rollback
()
session_mysql
.
rollback
()
if
item
is
not
None
:
item
=
(
session_mysql
.
query
(
Equipment
)
.
filter_by
(
id
=
excavator_id
,
only_allowed
=
1
)
.
first
()
)
if
item
is
not
None
and
len
(
eval
(
item
.
bind_list
))
>
0
:
for
truck_id
in
self
.
dynamic_truck_set
:
if
truck_uuid_to_name_dict
[
truck_id
]
not
in
item
.
bind_list
:
self
.
truck_excavator_exclude
[
truck_id
]
=
excavator_id
if
truck_id
not
in
self
.
truck_excavator_exclude
:
self
.
truck_excavator_exclude
[
truck_id
]
=
set
()
self
.
truck_excavator_exclude
[
truck_id
]
.
add
(
excavator_id
)
else
:
self
.
truck_excavator_exclude
[
truck_id
]
.
add
(
excavator_id
)
# self.truck_excavator_exclude[truck_id] = excavator_id
self
.
excavator_exclude_modify
[
self
.
truck_uuid_to_index_dict
[
truck_id
]
][
...
...
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