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

7-11更新 1.添加日志 2.异常修复

parent 8c155ed9
...@@ -24,7 +24,7 @@ class Dispatcher: ...@@ -24,7 +24,7 @@ class Dispatcher:
class for group dispatch program. class for group dispatch program.
""" """
def __init__(self, truck: TruckInfo, dump: DumpInfo, excavator: ExcavatorInfo, pre_sch: PreSchedule, request_mode=False): def __init__(self, truck: TruckInfo, dump: DumpInfo, excavator: ExcavatorInfo, pre_sch: PreSchedule, request_mode=False):
self.group_list = [] self.group_list = {}
self.truck = truck self.truck = truck
self.dump = dump self.dump = dump
self.excavator = excavator self.excavator = excavator
...@@ -51,18 +51,19 @@ class Dispatcher: ...@@ -51,18 +51,19 @@ class Dispatcher:
Generate and initialize dispatch groups. Generate and initialize dispatch groups.
:return: None :return: None
""" """
self.group_list = {}
groups = DispatchInfo.get_all_group() groups = DispatchInfo.get_all_group()
for group_id in groups: for group_id in groups:
if group_id not in self.group_list: if group_id not in self.group_list:
group = Group(group_id, self.truck, self.pre_sch) group = Group(group_id, self.truck, self.pre_sch)
self.group_list.append(group) self.group_list[group_id] = group
def group_info_update(self): def group_info_update(self):
""" """
Update group information. Update group information.
:return: None :return: None
""" """
for group in self.group_list: for group in self.group_list.values():
group.info_update() group.info_update()
def group_dispatch(self): def group_dispatch(self):
...@@ -72,9 +73,16 @@ class Dispatcher: ...@@ -72,9 +73,16 @@ class Dispatcher:
""" """
a = len(self.group_list) a = len(self.group_list)
aa = self.group_list aa = self.group_list
for group in self.group_list: for group in self.group_list.values():
try:
truck_dispatch_plan_dict = group.group_dispatch(ExpectedTime)
except Exception as es:
self.logger.error(es)
self.logger.error(f'分组{group.group_id} 调度异常')
truck_dispatch_plan_dict = group.group_dispatch(ExpectedTime)
self.logger.info(f'调度分组: {group.group_id} {DispatchInfo.group_name[group.group_id]}') self.logger.info(f'调度分组: {group.group_id} {DispatchInfo.group_name[group.group_id]}')
self.submission.group_dispatch_to_redis(group, truck_dispatch_plan_dict) self.submission.group_dispatch_to_redis(group, truck_dispatch_plan_dict)
...@@ -88,7 +96,7 @@ class DispatchSubmission: ...@@ -88,7 +96,7 @@ class DispatchSubmission:
""" """
def __init__(self, dump, excavator, truck): def __init__(self, dump, excavator, truck):
self.logger = self.logger = get_logger("zxt.submission") self.logger = get_logger("zxt.submission")
self.dump = dump self.dump = dump
self.excavator = excavator self.excavator = excavator
self.truck = truck self.truck = truck
...@@ -144,6 +152,8 @@ class DispatchSubmission: ...@@ -144,6 +152,8 @@ class DispatchSubmission:
record["haulFlag"] = -1 record["haulFlag"] = -1
record["groupName"] = DispatchInfo.group_name[group_id] record["groupName"] = DispatchInfo.group_name[group_id]
self.logger.info(f'redis 注入 {record}')
redis5.set(truck_id, str(json.dumps(record))) redis5.set(truck_id, str(json.dumps(record)))
except Exception as es: except Exception as es:
self.logger.error("调度结果写入异常-矿卡空载") self.logger.error("调度结果写入异常-矿卡空载")
...@@ -179,6 +189,8 @@ class DispatchSubmission: ...@@ -179,6 +189,8 @@ class DispatchSubmission:
record["haulFlag"] = -1 record["haulFlag"] = -1
record["groupName"] = DispatchInfo.group_name[group_id] record["groupName"] = DispatchInfo.group_name[group_id]
self.logger.info(f'redis 注入 {record}')
redis5.set(truck_id, str(json.dumps(record))) redis5.set(truck_id, str(json.dumps(record)))
except Exception as es: except Exception as es:
self.logger.error("调度结果写入异常-矿卡重载") self.logger.error("调度结果写入异常-矿卡重载")
......
...@@ -195,42 +195,68 @@ class Group: ...@@ -195,42 +195,68 @@ class Group:
# 全智能模式 # 全智能模式
if self.group_mode == 1: if self.group_mode == 1:
if truck_task in [-2, 3, 4]: if truck_task in [-2, 3, 4]:
try:
next_excavator_value = s.solve(truck_info)
# next_excavator_value = s.solve(i, truck_task, truck_trip) next_excavator_value = s.solve(truck_info)
# min_index = next_excavator_list.index(min(next_excavator_list)) # next_excavator_value = s.solve(i, truck_task, truck_trip)
min_index = np.argmin(next_excavator_value) # min_index = next_excavator_list.index(min(next_excavator_list))
next_excavator_id = self.excavator_uuid_index_dict.inverse[min_index] min_index = np.argmin(next_excavator_value)
if truck_task == -2: next_excavator_id = self.excavator_uuid_index_dict.inverse[min_index]
next_unload_area_id = "Park" if truck_task == -2:
else: next_unload_area_id = "Park"
next_unload_area_id = self.unload_area_uuid_index_dict.inverse[truck_trip[-1]] else:
truck_dispatch[i] = [next_excavator_id, next_unload_area_id] next_unload_area_id = self.unload_area_uuid_index_dict.inverse[truck_trip[-1]]
truck_dispatch[i] = [next_excavator_id, next_unload_area_id]
except Exception as es:
self.logger.error("重载车辆全智能模式-计算异常")
self.logger.error(es)
if truck_task in [0, 1]: if truck_task in [0, 1]:
bb = truck_task try:
next_unload_area_value = s.solve(truck_info)
min_index = np.argmin(next_unload_area_value) bb = truck_task
next_unload_area_id = self.unload_area_uuid_index_dict.inverse[min_index] next_unload_area_value = s.solve(truck_info)
next_excavator_id = self.excavator_uuid_index_dict.inverse[truck_trip[-1]] min_index = np.argmin(next_unload_area_value)
truck_dispatch[i] = [next_excavator_id, next_unload_area_id] 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]
except Exception as es:
self.logger.error("空载车辆全智能模式-计算异常")
self.logger.error(es)
# 空车智能模式 # 空车智能模式
elif self.group_mode == 2: elif self.group_mode == 2:
if truck_task in [-2, 3, 4]: if truck_task in [-2, 3, 4]:
next_excavator_value = s.solve(truck_info) try:
# min_index = next_excavator_list.index(min(next_excavator_list))
min_index = np.argmin(next_excavator_value) next_excavator_value = s.solve(truck_info)
next_excavator_id = self.excavator_uuid_index_dict.inverse[min_index] # min_index = next_excavator_list.index(min(next_excavator_list))
if truck_task == -2: min_index = np.argmin(next_excavator_value)
next_unload_area_id = "Park" next_excavator_id = self.excavator_uuid_index_dict.inverse[min_index]
else: if truck_task == -2:
next_unload_area_id = self.unload_area_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]
except Exception as es:
self.logger.error("重载车辆空车智能模式-计算异常")
self.logger.error(es)
if truck_task in [0, 1]: if truck_task in [0, 1]:
truck_dispatch[i] = DispatchInfo.get_truck_match(i) try:
truck_dispatch[i] = DispatchInfo.get_truck_match(i)
except Exception as es:
self.logger.error("空载车辆空车智能模式-计算异常")
self.logger.error(es)
# 定铲派车 # 定铲派车
elif self.group_mode == 3: elif self.group_mode == 3:
truck_dispatch[i] = DispatchInfo.get_truck_match(i) try:
truck_dispatch[i] = DispatchInfo.get_truck_match(i)
except Exception as es:
self.logger.error("固定派车-计算异常")
self.logger.error(es)
elif self.group_mode == 4: elif self.group_mode == 4:
pass pass
......
...@@ -378,8 +378,8 @@ class TruckInfo(WalkManage): ...@@ -378,8 +378,8 @@ class TruckInfo(WalkManage):
# print(self.excavator_hold_truck_num) # print(self.excavator_hold_truck_num)
self.truck_current_trip.flatten() self.truck_current_trip.flatten()
print("当前矿卡行程:") self.logger.info("当前矿卡行程:")
print(self.truck_current_trip) self.logger.info(self.truck_current_trip)
def update_eqp_hold_truck(self): def update_eqp_hold_truck(self):
......
...@@ -68,12 +68,12 @@ def process(dispatcher): ...@@ -68,12 +68,12 @@ def process(dispatcher):
global_period_para_update() global_period_para_update()
if get_value("dynamic_dump_num") * get_value("dynamic_excavator_num") == 0: # if get_value("dynamic_dump_num") * get_value("dynamic_excavator_num") == 0:
raise Exception("无动态派车计划可用") # raise Exception("无动态派车计划可用")
return # return
if get_value("dynamic_truck_num") == 0: # if get_value("dynamic_truck_num") == 0:
raise Exception("无动态派车可用矿卡") # raise Exception("无动态派车可用矿卡")
return # return
# 清空数据库缓存 # 清空数据库缓存
session_mysql.commit() session_mysql.commit()
......
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