Commit cf685232 authored by 张晓彤's avatar 张晓彤

优化调度数据

parent 659c93e9
...@@ -254,6 +254,7 @@ class DispatchSubmission: ...@@ -254,6 +254,7 @@ class DispatchSubmission:
for truck_id, dispatch_plan in dispatch_plan_dict.items(): for truck_id, dispatch_plan in dispatch_plan_dict.items():
self.logger.info(f'======================================= 调度车辆 =======================================') self.logger.info(f'======================================= 调度车辆 =======================================')
self.logger.info(f'矿车编号 {get_value("truck_uuid_to_name_dict")[truck_id]} {truck_id}') self.logger.info(f'矿车编号 {get_value("truck_uuid_to_name_dict")[truck_id]} {truck_id}')
self.logger.info(f'车辆任务 {group.truck_info_list[truck_id].get_task()}')
self.logger.info(f'配对挖机 {dispatch_plan[0]}') self.logger.info(f'配对挖机 {dispatch_plan[0]}')
self.logger.info(f'配对卸点 {dispatch_plan[1]}') self.logger.info(f'配对卸点 {dispatch_plan[1]}')
self.truck_dispatch_to_redis(truck_id, dispatch_plan) self.truck_dispatch_to_redis(truck_id, dispatch_plan)
......
...@@ -91,6 +91,9 @@ class Group: ...@@ -91,6 +91,9 @@ class Group:
self.unload_area_uuid_index_dict = bidict() self.unload_area_uuid_index_dict = bidict()
self.dump_uuid_index_dict = bidict() self.dump_uuid_index_dict = bidict()
# truck info.
self.truck_info_list = {}
def update_group_mode(self): def update_group_mode(self):
""" """
update group mode. update group mode.
...@@ -179,72 +182,125 @@ class Group: ...@@ -179,72 +182,125 @@ class Group:
dispatch plan: Dict({truck_id: match_id}) dispatch plan: Dict({truck_id: match_id})
""" """
truck_dispatch = {} truck_dispatch = {}
self.truck_info_list = {}
assert issubclass(solver, AlgorithmBase)
s = solver(self, self.truck, self.pre_sch) # algorithm init
try: for i in list(self.truck_set):
truck_trip = self.truck.get_truck_current_trip()[self.truck_uuid_index_dict[i]]
truck_task = self.truck.get_truck_current_task()[i]
truck_info = CurrentTruck(i, self.group_id, truck_trip, truck_task)
self.truck_info_list[i] = truck_info
# 全智能模式 # 全智能模式
if self.group_mode == 1: if self.group_mode == 1:
assert issubclass(solver, AlgorithmBase) if truck_task in [-2, 3, 4]:
s = solver(self, self.truck, self.pre_sch) # algorithm init
next_excavator_value = s.solve(truck_info)
for i in list(self.truck_set): # next_excavator_value = s.solve(i, truck_task, truck_trip)
truck_trip = self.truck.get_truck_current_trip()[self.truck_uuid_index_dict[i]] # min_index = next_excavator_list.index(min(next_excavator_list))
truck_task = self.truck.get_truck_current_task()[i] min_index = np.argmin(next_excavator_value)
truck_info = CurrentTruck(i, self.group_id, truck_trip, truck_task) next_excavator_id = self.excavator_uuid_index_dict.inverse[min_index]
# a = truck_info._truck_id if truck_task == -2:
# b = truck_info._trip next_unload_area_id = "Park"
# c = truck_info._task else:
# d = truck_info._group_id next_unload_area_id = self.unload_area_uuid_index_dict.inverse[truck_trip[-1]]
if truck_task in [-2, 3, 4]: truck_dispatch[i] = [next_excavator_id, next_unload_area_id]
next_excavator_value = s.solve(truck_info) if truck_task in [0, 1]:
# next_excavator_value = s.solve(i, truck_task, truck_trip) bb = truck_task
# min_index = next_excavator_list.index(min(next_excavator_list)) next_unload_area_value = s.solve(truck_info)
min_index = np.argmin(next_excavator_value) min_index = np.argmin(next_unload_area_value)
next_excavator_id = self.excavator_uuid_index_dict.inverse[min_index] next_unload_area_id = self.unload_area_uuid_index_dict.inverse[min_index]
if truck_task == -2: next_excavator_id = self.excavator_uuid_index_dict.inverse[truck_trip[-1]]
next_unload_area_id = "Park" truck_dispatch[i] = [next_excavator_id, next_unload_area_id]
else:
next_unload_area_id = self.unload_area_uuid_index_dict.inverse[truck_trip[-1]]
truck_dispatch[i] = [next_excavator_id, next_unload_area_id]
if truck_task in [0, 1]:
bb = truck_task
next_unload_area_value = s.solve(truck_info)
min_index = np.argmin(next_unload_area_value)
next_unload_area_id = self.unload_area_uuid_index_dict.inverse[min_index]
next_excavator_id = self.excavator_uuid_index_dict.inverse[truck_trip[-1]]
truck_dispatch[i] = [next_excavator_id, next_unload_area_id]
# 空车智能模式 # 空车智能模式
elif self.group_mode == 2: elif self.group_mode == 2:
assert issubclass(solver, AlgorithmBase) if truck_task in [-2, 3, 4]:
s = solver(self, self.truck, self.pre_sch) # algorithm init next_excavator_value = s.solve(truck_info)
# min_index = next_excavator_list.index(min(next_excavator_list))
for i in list(self.truck_set): min_index = np.argmin(next_excavator_value)
truck_trip = self.truck.get_truck_current_trip()[self.truck_uuid_index_dict[i]] next_excavator_id = self.excavator_uuid_index_dict.inverse[min_index]
truck_task = self.truck.get_truck_current_task()[i] if truck_task == -2:
truck_info = CurrentTruck(i, self.group_id, truck_trip, truck_task) next_unload_area_id = "Park"
if truck_task in [-2, 3, 4]: else:
next_excavator_value = s.solve(truck_info) next_unload_area_id = self.unload_area_uuid_index_dict.inverse[truck_trip[-1]]
# min_index = next_excavator_list.index(min(next_excavator_list)) truck_dispatch[i] = [next_excavator_id, next_unload_area_id]
min_index = np.argmin(next_excavator_value) if truck_task in [0, 1]:
next_excavator_id = self.excavator_uuid_index_dict.inverse[min_index] truck_dispatch[i] = DispatchInfo.get_truck_match(i)
if truck_task == -2:
next_unload_area_id = "Park"
else:
next_unload_area_id = self.unload_area_uuid_index_dict.inverse[truck_trip[-1]]
truck_dispatch[i] = [next_excavator_id, next_unload_area_id]
if truck_task in [0, 1]:
truck_dispatch[i] = DispatchInfo.get_truck_match(i)
# 定铲派车 # 定铲派车
elif self.group_mode == 3: elif self.group_mode == 3:
for i in list(self.truck_set): truck_dispatch[i] = DispatchInfo.get_truck_match(i)
truck_dispatch[i] = DispatchInfo.get_truck_match(i)
elif self.group_mode == 4: elif self.group_mode == 4:
pass pass
except Exception as es:
self.logger.error("group调度出错")
self.logger.error(es) # try:
# # 全智能模式
# if self.group_mode == 1:
# assert issubclass(solver, AlgorithmBase)
# s = solver(self, self.truck, self.pre_sch) # algorithm init
#
# for i in list(self.truck_set):
# truck_trip = self.truck.get_truck_current_trip()[self.truck_uuid_index_dict[i]]
# truck_task = self.truck.get_truck_current_task()[i]
# truck_info = CurrentTruck(i, self.group_id, truck_trip, truck_task)
# # a = truck_info._truck_id
# # b = truck_info._trip
# # c = truck_info._task
# # d = truck_info._group_id
# if truck_task in [-2, 3, 4]:
#
# next_excavator_value = s.solve(truck_info)
# # next_excavator_value = s.solve(i, truck_task, truck_trip)
# # min_index = next_excavator_list.index(min(next_excavator_list))
# min_index = np.argmin(next_excavator_value)
# next_excavator_id = self.excavator_uuid_index_dict.inverse[min_index]
# if truck_task == -2:
# next_unload_area_id = "Park"
# else:
# next_unload_area_id = self.unload_area_uuid_index_dict.inverse[truck_trip[-1]]
# truck_dispatch[i] = [next_excavator_id, next_unload_area_id]
#
# if truck_task in [0, 1]:
# bb = truck_task
# next_unload_area_value = s.solve(truck_info)
# min_index = np.argmin(next_unload_area_value)
# next_unload_area_id = self.unload_area_uuid_index_dict.inverse[min_index]
# next_excavator_id = self.excavator_uuid_index_dict.inverse[truck_trip[-1]]
# truck_dispatch[i] = [next_excavator_id, next_unload_area_id]
# # 空车智能模式
# elif self.group_mode == 2:
# assert issubclass(solver, AlgorithmBase)
# s = solver(self, self.truck, self.pre_sch) # algorithm init
#
# for i in list(self.truck_set):
# truck_trip = self.truck.get_truck_current_trip()[self.truck_uuid_index_dict[i]]
# truck_task = self.truck.get_truck_current_task()[i]
# truck_info = CurrentTruck(i, self.group_id, truck_trip, truck_task)
# if truck_task in [-2, 3, 4]:
# next_excavator_value = s.solve(truck_info)
# # min_index = next_excavator_list.index(min(next_excavator_list))
# min_index = np.argmin(next_excavator_value)
# next_excavator_id = self.excavator_uuid_index_dict.inverse[min_index]
# if truck_task == -2:
# next_unload_area_id = "Park"
# else:
# next_unload_area_id = self.unload_area_uuid_index_dict.inverse[truck_trip[-1]]
# truck_dispatch[i] = [next_excavator_id, next_unload_area_id]
# if truck_task in [0, 1]:
# truck_dispatch[i] = DispatchInfo.get_truck_match(i)
# # 定铲派车
# elif self.group_mode == 3:
# for i in list(self.truck_set):
# truck_dispatch[i] = DispatchInfo.get_truck_match(i)
#
# elif self.group_mode == 4:
# pass
# except Exception as es:
# self.logger.error("group调度出错")
# self.logger.error(es)
# return dispatch plan # return dispatch plan
return truck_dispatch return truck_dispatch
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