Commit 2ed48496 authored by 张晓彤's avatar 张晓彤

分组调度算法更新

parent 391d2602
This diff is collapsed.
This diff is collapsed.
...@@ -855,9 +855,12 @@ class PreSchedule: ...@@ -855,9 +855,12 @@ class PreSchedule:
self.truck_reach_excavator = np.zeros(self.truck.get_truck_num()) self.truck_reach_excavator = np.zeros(self.truck.get_truck_num())
self.excavator_avl_time = np.zeros(self.excavator.get_excavator_num()) self.excavator_avl_time = np.zeros(self.excavator.get_excavator_num())
self.dump_avl_time = np.zeros(self.dump.get_dump_num()) self.dump_avl_time = np.zeros(self.dump.get_dump_num())
# 卡车完成装载及卸载时间(矿卡可用时间)
self.truck_avl_time = np.zeros(self.truck.get_truck_num()) self.truck_avl_time = np.zeros(self.truck.get_truck_num())
self.excavator_avl_time_dict = {}
self.dump_avl_time_dict = {}
self.truck_avl_time_dict = {}
self.logger = get_logger("zxt.pre_schedule") self.logger = get_logger("zxt.pre_schedule")
def update_truck_reach_time(self): def update_truck_reach_time(self):
...@@ -925,6 +928,10 @@ class PreSchedule: ...@@ -925,6 +928,10 @@ class PreSchedule:
/ timedelta(hours=0, minutes=1, seconds=0), / timedelta(hours=0, minutes=1, seconds=0),
) )
for excavator_id in get_value("dynamic_excavator_set"):
self.excavator_avl_time_dict[excavator_id] = (datetime.now() - self.start_time) \
/ timedelta(hours=0, minutes=1, seconds=0)
loading_time = self.excavator.get_loading_time() loading_time = self.excavator.get_loading_time()
loading_task_time = self.excavator.get_loading_task_time() loading_task_time = self.excavator.get_loading_task_time()
...@@ -943,14 +950,19 @@ class PreSchedule: ...@@ -943,14 +950,19 @@ class PreSchedule:
reach_ls = np.array(reach_ls) reach_ls = np.array(reach_ls)
tmp = reach_ls[np.lexsort(reach_ls[:, ::-1].T)] tmp = reach_ls[np.lexsort(reach_ls[:, ::-1].T)]
for i in range(len(tmp)): for i in range(len(tmp)):
excavator_index = int(tmp[i][2]) excavator_index = int(tmp[i][2])
excavator_id = self.excavator.excavator_index_to_uuid_dict[excavator_index]
self.excavator_avl_time[excavator_index] = ( self.excavator_avl_time[excavator_index] = (
max(tmp[i][0], self.excavator_avl_time[excavator_index]) max(tmp[i][0], self.excavator_avl_time[excavator_index])
+ loading_task_time[excavator_index] + loading_task_time[excavator_index]
) )
self.truck_avl_time[ self.excavator_avl_time_dict[excavator_id] = self.excavator_avl_time[excavator_index]
int(tmp[i][1])
] = self.excavator_avl_time[excavator_index] truck_index = int(tmp[i][1])
truck_id = self.truck.truck_index_to_uuid_dict[truck_index]
self.truck_avl_time[truck_index] = self.excavator_avl_time[excavator_index]
self.truck_avl_time_dict[truck_id] = self.truck_avl_time[truck_index]
# # 若挖机可用时间严重偏离,进行修正 # # 若挖机可用时间严重偏离,进行修正
# if abs(self.excavator_avl_time[excavator_index] - now) > 60: # if abs(self.excavator_avl_time[excavator_index] - now) > 60:
...@@ -961,7 +973,7 @@ class PreSchedule: ...@@ -961,7 +973,7 @@ class PreSchedule:
self.logger.error("挖机可用时间计算异常") self.logger.error("挖机可用时间计算异常")
self.logger.error(es) self.logger.error(es)
return self.excavator_avl_time return self.excavator_avl_time_dict
def update_dump_avl_time(self, dump_avl_ls): def update_dump_avl_time(self, dump_avl_ls):
""" """
...@@ -981,6 +993,10 @@ class PreSchedule: ...@@ -981,6 +993,10 @@ class PreSchedule:
/ timedelta(hours=0, minutes=1, seconds=0), / timedelta(hours=0, minutes=1, seconds=0),
) )
for dump_id in get_value("dynamic_dump_set"):
self.dump_avl_time_dict[dump_id] = (datetime.now() - self.start_time) \
/ timedelta(hours=0, minutes=1, seconds=0)
unloading_time = self.dump.get_unloading_time() unloading_time = self.dump.get_unloading_time()
unloading_task_time = self.dump.get_unloading_task_time() unloading_task_time = self.dump.get_unloading_task_time()
...@@ -997,14 +1013,19 @@ class PreSchedule: ...@@ -997,14 +1013,19 @@ class PreSchedule:
reach_ls = np.array(reach_ls) reach_ls = np.array(reach_ls)
tmp = reach_ls[np.lexsort(reach_ls[:, ::-1].T)] tmp = reach_ls[np.lexsort(reach_ls[:, ::-1].T)]
for i in range(len(tmp)): for i in range(len(tmp)):
dump_index = int(tmp[i][2]) dump_index = int(tmp[i][2])
dump_id = self.dump.dump_index_to_uuid_dict[dump_index]
self.dump_avl_time[dump_index] = ( self.dump_avl_time[dump_index] = (
max(tmp[i][0], self.dump_avl_time[dump_index]) max(tmp[i][0], self.dump_avl_time[dump_index])
+ unloading_task_time[dump_index] + unloading_task_time[dump_index]
) )
self.truck_avl_time[ self.dump_avl_time_dict[dump_id] = self.dump_avl_time[dump_index]
int(tmp[i][1])
] = self.dump_avl_time[dump_index] truck_index = int(tmp[i][1])
truck_id = self.truck.truck_index_to_uuid_dict[truck_index]
self.truck_avl_time[truck_index] = self.dump_avl_time[dump_index]
self.truck_avl_time_dict[truck_id] = self.truck_avl_time[truck_index]
# # 若卸载设备可用时间严重偏离,进行修正 # # 若卸载设备可用时间严重偏离,进行修正
# if abs(self.dump_avl_time[dump_index] - now) > 60: # if abs(self.dump_avl_time[dump_index] - now) > 60:
...@@ -1015,7 +1036,7 @@ class PreSchedule: ...@@ -1015,7 +1036,7 @@ class PreSchedule:
self.logger.error("卸载设备可用时间计算异常") self.logger.error("卸载设备可用时间计算异常")
self.logger.error(es) self.logger.error(es)
return self.dump_avl_time return self.dump_avl_time_dict
def _reset(self): def _reset(self):
""" """
...@@ -1027,9 +1048,12 @@ class PreSchedule: ...@@ -1027,9 +1048,12 @@ class PreSchedule:
self.truck_reach_excavator = np.zeros(self.truck.get_truck_num()) self.truck_reach_excavator = np.zeros(self.truck.get_truck_num())
self.excavator_avl_time = np.zeros(self.excavator.get_excavator_num()) self.excavator_avl_time = np.zeros(self.excavator.get_excavator_num())
self.dump_avl_time = np.zeros(self.dump.get_dump_num()) self.dump_avl_time = np.zeros(self.dump.get_dump_num())
# 卡车完成装载及卸载时间(矿卡可用时间)
self.truck_avl_time = np.zeros(self.truck.get_truck_num()) self.truck_avl_time = np.zeros(self.truck.get_truck_num())
self.excavator_avl_time_dict = {}
self.dump_avl_time_dict = {}
self.truck_avl_time_dict = {}
def get_dump_avl_time(self): def get_dump_avl_time(self):
""" """
获取卸载点最早可用时间 获取卸载点最早可用时间
......
...@@ -4,4 +4,8 @@ ...@@ -4,4 +4,8 @@
# @Author : Opfer # @Author : Opfer
# @Site : # @Site :
# @File : __init__.py # @File : __init__.py
# @Software: PyCharm # @Software: PyCharm
\ No newline at end of file
from .excavator import ExcavatorInfo
from .dump import DumpInfo
from .truck import TruckInfo
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment