Commit 4c78fd78 authored by 张晓彤's avatar 张晓彤

7-15更新 1.数据更新同步 2.添加挖机可用时间-异常捕获

parent 73d461b0
{ {
"para": { "para": {
"log_path": "/Users/guoao/Desktop/work_log/Logs", "log_path": "./Logs/",
"empty_speed": 17, "empty_speed": 17,
"heavy_speed": 17, "heavy_speed": 17,
"dump_target_mass": 5000, "dump_target_mass": 5000,
......
...@@ -142,18 +142,43 @@ class PreSchedule: ...@@ -142,18 +142,43 @@ class PreSchedule:
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]) try:
excavator_id = self.excavator.excavator_index_to_uuid_dict[excavator_index]
self.excavator_avl_time[excavator_index] = (
max(tmp[i][0], self.excavator_avl_time[excavator_index])
+ loading_task_time[excavator_index]
)
self.excavator_avl_time_dict[excavator_id] = self.excavator_avl_time[excavator_index]
truck_index = int(tmp[i][1]) excavator_index = int(tmp[i][2])
truck_id = self.truck.truck_index_to_uuid_dict[truck_index] excavator_id = self.excavator.excavator_index_to_uuid_dict[excavator_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] except Exception as es:
self.logger.error("excavator_error_1")
self.logger.error(es)
try:
self.excavator_avl_time[excavator_index] = (
max(tmp[i][0], self.excavator_avl_time[excavator_index])
+ loading_task_time[excavator_index]
)
self.excavator_avl_time_dict[excavator_id] = self.excavator_avl_time[excavator_index]
except Exception as es:
self.logger.error("excavator_error_2")
self.logger.error(es)
try:
truck_index = int(tmp[i][1])
truck_id = self.truck.truck_index_to_uuid_dict[truck_index]
except Exception as es:
self.logger.error("excavator_error_3")
self.logger.error(es)
try:
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]
except Exception as es:
self.logger.error("excavator_error_4")
self.logger.error(es)
# # 若挖机可用时间严重偏离,进行修正 # # 若挖机可用时间严重偏离,进行修正
# if abs(self.excavator_avl_time[excavator_index] - now) > 60: # if abs(self.excavator_avl_time[excavator_index] - now) > 60:
......
...@@ -268,16 +268,16 @@ class TruckInfo(WalkManage): ...@@ -268,16 +268,16 @@ class TruckInfo(WalkManage):
truck_id = self.truck_index_to_uuid_dict[i] truck_id = self.truck_index_to_uuid_dict[i]
task = self.truck_current_task[self.truck_index_to_uuid_dict[i]] task = self.truck_current_task[self.truck_index_to_uuid_dict[i]]
# print("truck_task:", truck_id, task) # print("truck_task:", truck_id, task)
# item = (
# session_mysql.query(EquipmentPair)
# .filter_by(truck_id=truck_id, isdeleted=0)
# .first()
# )
item = ( item = (
session_mysql.query(DispatchSetting) session_mysql.query(EquipmentPair)
.filter_by(truck_id=truck_id, isdeleted=0) .filter_by(truck_id=truck_id, isdeleted=0)
.first() .first()
) )
# item = (
# session_mysql.query(DispatchSetting)
# .filter_by(truck_id=truck_id, isdeleted=0)
# .first()
# )
point = empty_task_set point = empty_task_set
point2 = heavy_task_set point2 = heavy_task_set
if task in (empty_task_set + heavy_task_set) and item is None: if task in (empty_task_set + heavy_task_set) and item is None:
...@@ -288,100 +288,107 @@ class TruckInfo(WalkManage): ...@@ -288,100 +288,107 @@ class TruckInfo(WalkManage):
session_mysql.rollback() session_mysql.rollback()
continue continue
try: # try:
load_area_uuid_to_index_dict = get_value("load_area_uuid_to_index_dict") load_area_uuid_to_index_dict = get_value("load_area_uuid_to_index_dict")
unload_area_uuid_to_index_dict = get_value("unload_area_uuid_to_index_dict") unload_area_uuid_to_index_dict = get_value("unload_area_uuid_to_index_dict")
aa = task aa = task
tt = truck_id tt = truck_id
# 若矿卡状态为空运 # 若矿卡状态为空运
if task in [0, 1, 2]: # 矿卡空载或仍未出装载区 if task in [0, 1, 2]: # 矿卡空载或仍未出装载区
# last_unload_time = self.relative_last_unload_time[ # last_unload_time = self.relative_last_unload_time[
# self.truck_index_to_uuid_dict[i] # self.truck_index_to_uuid_dict[i]
# ] # ]
bb = self.relative_last_unload_time bb = self.relative_last_unload_time
last_unload_time = self.relative_last_unload_time[ last_unload_time = self.relative_last_unload_time[
truck_id truck_id
] ]
if item.dump_id in DeviceMap.dump_uuid_to_unload_area_uuid_dict: if item.dump_id in DeviceMap.dump_uuid_to_unload_area_uuid_dict:
start_area_id = self.dump_uuid_to_unload_area_uuid_dict[item.dump_id] start_area_id = self.dump_uuid_to_unload_area_uuid_dict[item.dump_id]
start_area_index = unload_area_uuid_to_index_dict[start_area_id] start_area_index = unload_area_uuid_to_index_dict[start_area_id]
start_eq_index = self.dump_uuid_to_index_dict[item.dump_id] start_eq_index = self.dump_uuid_to_index_dict[item.dump_id]
else: else:
start_area_index = -1 start_area_index = -1
start_eq_index = -1 start_eq_index = -1
if item.exactor_id in DeviceMap.excavator_uuid_to_load_area_uuid_dict:
end_area_id = self.excavator_uuid_to_load_area_uuid_dict[item.exactor_id]
end_area_index = load_area_uuid_to_index_dict[end_area_id]
end_eq_index = self.excavator_uuid_to_index_dict[item.exactor_id]
else:
end_area_index = -1
end_eq_index = -1
self.truck_current_trip[i] = [start_eq_index, end_eq_index]
self.cur_truck_reach_excavator[i] = (
last_unload_time
+ walk_time_to_load_area[start_area_index][end_area_index]
)
self.logger.info(f'update_truck_trip-{truck_id}-last_unload_time')
self.logger.info(last_unload_time)
self.logger.info(f'update_truck_trip-walk_time_to_load_area')
self.logger.info(walk_time_to_load_area[start_area_index][end_area_index])
# # 目的地矿卡数加一
# self.excavator_hold_truck_num[end_eqp_index] = self.excavator_hold_truck_num[end_eqp_index] + 1
# 若矿卡状态为重载
elif task in [3, 4, 5]: # 矿卡重载或仍未出卸载区
# print("读取重载行程")
# print(item.exactor_id, item.dump_id)
last_load_time = self.relative_last_load_time[
self.truck_index_to_uuid_dict[i]
]
if item.exactor_id in DeviceMap.excavator_uuid_to_load_area_uuid_dict:
start_area_id = self.excavator_uuid_to_load_area_uuid_dict[item.exactor_id]
start_area_index = load_area_uuid_to_index_dict[start_area_id]
start_eq_index = self.excavator_uuid_to_index_dict[item.exactor_id]
else:
start_area_index = -1
start_eq_index = -1
if item.dump_id in DeviceMap.dump_uuid_to_index_dict:
end_area_id = self.dump_uuid_to_unload_area_uuid_dict[item.dump_id]
end_area_index = unload_area_uuid_to_index_dict[end_area_id]
end_eq_index = self.dump_uuid_to_index_dict[item.dump_id]
else:
end_area_index = -1
end_eq_index = -1
# # 结束设备index
# end_eqp_index = self.dump_uuid_to_index_dict[item.dump_id]
self.truck_current_trip[i] = [start_eq_index, end_eq_index]
self.cur_truck_reach_dump[i] = (
last_load_time
+ walk_time_to_unload_area[end_area_index][start_area_index]
)
self.logger.info(f'update_truck_trip-{truck_id}-last_load_time')
self.logger.info(last_load_time)
self.logger.info(f'update_truck_trip-walk_time_to_unload_area')
self.logger.info(walk_time_to_unload_area[end_area_index][start_area_index])
# 目的地矿卡数加一 if item.exactor_id in DeviceMap.excavator_uuid_to_load_area_uuid_dict:
# self.dump_hold_truck_num[end_eqp_index] = self.dump_hold_truck_num[end_eqp_index] + 1 end_area_id = self.excavator_uuid_to_load_area_uuid_dict[item.exactor_id]
# 其他状态,矿卡状态为-2,equipment_pair表不存在该矿卡 end_area_index = load_area_uuid_to_index_dict[end_area_id]
end_eq_index = self.excavator_uuid_to_index_dict[item.exactor_id]
else: else:
# end_eqp_index = excavator.excavator_uuid_to_index_dict[item.exactor_id] end_area_index = -1
# self.excavator_hold_truck_num[end_eqp_index] = self.excavator_hold_truck_num[end_eqp_index] + 1 end_eq_index = -1
pass
except Exception as es: self.truck_current_trip[i] = [start_eq_index, end_eq_index]
self.logger.error("矿卡行程读取异常")
self.logger.error(es) self.cur_truck_reach_excavator[i] = (
last_unload_time
+ walk_time_to_load_area[start_area_index][end_area_index]
)
self.logger.info(f'update_truck_trip-{truck_id}-last_unload_time')
self.logger.info(last_unload_time)
self.logger.info(f'update_truck_trip-walk_time_to_load_area')
self.logger.info(walk_time_to_load_area[start_area_index][end_area_index])
# # 目的地矿卡数加一
# self.excavator_hold_truck_num[end_eqp_index] = self.excavator_hold_truck_num[end_eqp_index] + 1
# 若矿卡状态为重载
elif task in [3, 4, 5]: # 矿卡重载或仍未出卸载区
# print("读取重载行程")
# print(item.exactor_id, item.dump_id)
last_load_time = self.relative_last_load_time[
self.truck_index_to_uuid_dict[i]
]
if item.exactor_id in DeviceMap.excavator_uuid_to_load_area_uuid_dict:
start_area_id = self.excavator_uuid_to_load_area_uuid_dict[item.exactor_id]
start_area_index = load_area_uuid_to_index_dict[start_area_id]
start_eq_index = self.excavator_uuid_to_index_dict[item.exactor_id]
else:
start_area_index = -1
start_eq_index = -1
if item.dump_id in DeviceMap.dump_uuid_to_index_dict:
end_area_id = self.dump_uuid_to_unload_area_uuid_dict[item.dump_id]
end_area_index = unload_area_uuid_to_index_dict[end_area_id]
end_eq_index = self.dump_uuid_to_index_dict[item.dump_id]
else:
end_area_index = -1
end_eq_index = -1
# # 结束设备index
# end_eqp_index = self.dump_uuid_to_index_dict[item.dump_id]
self.truck_current_trip[i] = [start_eq_index, end_eq_index]
self.logger.info("walk_time_to_unload_area")
self.logger.info(walk_time_to_unload_area)
self.logger.info("end_area_index")
self.logger.info(end_area_index)
self.logger.info("start_area_index")
self.logger.info(start_area_index)
self.cur_truck_reach_dump[i] = (
last_load_time
+ walk_time_to_unload_area[end_area_index][start_area_index]
)
self.logger.info(f'update_truck_trip-{truck_id}-last_load_time')
self.logger.info(last_load_time)
self.logger.info(f'update_truck_trip-walk_time_to_unload_area')
self.logger.info(walk_time_to_unload_area[end_area_index][start_area_index])
# 目的地矿卡数加一
# self.dump_hold_truck_num[end_eqp_index] = self.dump_hold_truck_num[end_eqp_index] + 1
# 其他状态,矿卡状态为-2,equipment_pair表不存在该矿卡
else:
# end_eqp_index = excavator.excavator_uuid_to_index_dict[item.exactor_id]
# self.excavator_hold_truck_num[end_eqp_index] = self.excavator_hold_truck_num[end_eqp_index] + 1
pass
# except Exception as es:
# self.logger.error("矿卡行程读取异常")
# self.logger.error(es)
# print("self.dump_hold_truck_num") # print("self.dump_hold_truck_num")
# print(self.dump_hold_truck_num) # print(self.dump_hold_truck_num)
...@@ -693,10 +700,24 @@ class TruckInfo(WalkManage): ...@@ -693,10 +700,24 @@ class TruckInfo(WalkManage):
def truck_reset(self, dump, excavator): def truck_reset(self, dump, excavator):
# 更新矿卡数量 # 更新矿卡数量
self.dynamic_truck_num = get_value("dynamic_truck_num") self.dynamic_truck_num = get_value("dynamic_truck_num")
# 更新矿卡集合 # 更新矿卡集合
self.dynamic_truck_set = get_value("dynamic_truck_set") self.dynamic_truck_set = get_value("dynamic_truck_set")
aa = self.dynamic_truck_set # 矿卡抵达卸载设备时间
self.cur_truck_reach_dump = np.zeros(self.dynamic_truck_num)
# 矿卡抵达挖机时间
self.cur_truck_reach_excavator = np.zeros(self.dynamic_truck_num)
# 矿卡最后装载/卸载时间
self.last_load_time = {}
self.last_unload_time = {}
# 相对矿卡最后装载/卸载时间
self.relative_last_load_time = {}
self.relative_last_unload_time = {}
# 矿卡当前任务
self.truck_current_task = {}
# 矿卡当前行程(第一列为出发地序号, 第二列为目的地序号)
self.truck_current_trip = np.full((self.dynamic_truck_num, 2), -1)
# 矿卡不可用列表
self.truck_disable_list = []
# 矿卡挖机绑定关系 # 矿卡挖机绑定关系
self.truck_excavator_bind = {} self.truck_excavator_bind = {}
# 矿卡卸点绑定关系 # 矿卡卸点绑定关系
......
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