Commit 9b13cd89 authored by 张晓彤's avatar 张晓彤

异常处理BUG

parent ea54225b
...@@ -151,7 +151,7 @@ class DumpInfo(WalkManage): ...@@ -151,7 +151,7 @@ class DumpInfo(WalkManage):
if unload_ability < 200: if unload_ability < 200:
raise Exception("卸载点卸载能力异常") raise Exception("卸载点卸载能力异常")
else: else:
self.dump_strength = np.full(self.num_of_dump, 5000) self.dump_strength = np.full(self.dynamic_dump_num, 5000)
except Exception as es: except Exception as es:
logger.error(es) logger.error(es)
......
...@@ -177,7 +177,7 @@ class ExcavatorInfo(WalkManage): ...@@ -177,7 +177,7 @@ class ExcavatorInfo(WalkManage):
if load_ability.mining_abililty < 200: if load_ability.mining_abililty < 200:
raise Exception("挖机装载能力异常") raise Exception("挖机装载能力异常")
else: else:
self.excavator_strength = np.full(self.num_of_excavator, 5000) self.excavator_strength = np.full(self.dynamic_excavator_num, 5000)
except Exception as es: except Exception as es:
logger.error(es) logger.error(es)
......
...@@ -287,9 +287,9 @@ class LaneInfo: ...@@ -287,9 +287,9 @@ class LaneInfo:
# json_value = json.loads(redis2.get(item)) # json_value = json.loads(redis2.get(item))
key_value_dict = redis2.hgetall(item) key_value_dict = redis2.hgetall(item)
device_type = key_value_dict[str_to_byte('type')] device_type = key_value_dict[str_to_byte('type')]
# is_online = key_value_dict[str_to_byte('online')] is_online = key_value_dict[str_to_byte('online')]
key_set = key_value_dict.keys() key_set = key_value_dict.keys()
if device_type == str_to_byte("1") and str_to_byte('online') in key_set and str_to_byte('laneId') in key_set: if (device_type == str_to_byte("1")) and ((str_to_byte('online') in key_set) and bytes.decode(is_online)) and (str_to_byte('laneId') in key_set):
truck_locate = key_value_dict[str_to_byte('laneId')] truck_locate = key_value_dict[str_to_byte('laneId')]
truck_locate_dict[truck_name_to_uuid_dict[item]] = eval(truck_locate) truck_locate_dict[truck_name_to_uuid_dict[item]] = eval(truck_locate)
except Exception as es: except Exception as es:
......
...@@ -54,6 +54,8 @@ class Dispatcher(WalkManage): ...@@ -54,6 +54,8 @@ class Dispatcher(WalkManage):
self.path = PathPlanner() self.path = PathPlanner()
# 读取车流信息
self.traffic_flow = Traffic_flow(dump, excavator, truck) self.traffic_flow = Traffic_flow(dump, excavator, truck)
self.group = Group(dump, excavator, truck, self.traffic_flow) self.group = Group(dump, excavator, truck, self.traffic_flow)
...@@ -350,6 +352,7 @@ class Dispatcher(WalkManage): ...@@ -350,6 +352,7 @@ class Dispatcher(WalkManage):
target = excavator.excavator_uuid_to_index_dict[self.group.group_excavator_index_to_uuid_dict[group_id][target]] target = excavator.excavator_uuid_to_index_dict[self.group.group_excavator_index_to_uuid_dict[group_id][target]]
# 3. 启用饱和度调度 # 3. 启用饱和度调度
else: else:
logger.info("饱和度调度")
actual_flow_to_excavator = truck.excavator_hold_truck_num * truck.payload / self.group.group_park_to_excavator[group_id].reshape(1, -1) actual_flow_to_excavator = truck.excavator_hold_truck_num * truck.payload / self.group.group_park_to_excavator[group_id].reshape(1, -1)
allow_flow_to_excavator = excavator.excavator_strength allow_flow_to_excavator = excavator.excavator_strength
...@@ -358,6 +361,8 @@ class Dispatcher(WalkManage): ...@@ -358,6 +361,8 @@ class Dispatcher(WalkManage):
target = excavator.excavator_uuid_to_index_dict[self.group.group_excavator_index_to_uuid_dict[group_id][target]] target = excavator.excavator_uuid_to_index_dict[self.group.group_excavator_index_to_uuid_dict[group_id][target]]
logger.info(excavator.excavator_uuid_to_index_dict)
logger.info(self.group.group_excavator_uuid_to_index_dict)
logger.info(f"目的地:{excavator.excavator_index_to_uuid_dict[target]}") logger.info(f"目的地:{excavator.excavator_index_to_uuid_dict[target]}")
except Exception as es: except Exception as es:
logger.error("error07") logger.error("error07")
...@@ -524,6 +529,9 @@ class Dispatcher(WalkManage): ...@@ -524,6 +529,9 @@ class Dispatcher(WalkManage):
logger.error(es) logger.error(es)
# 3. 饱和度调度 # 3. 饱和度调度
else: else:
logger.info("和度调度")
excavator_index = int(trip[1]) excavator_index = int(trip[1])
transport_value = self.group.group_walk_to_dump_cost[group_id][:, excavator_index].reshape(1, -1) transport_value = self.group.group_walk_to_dump_cost[group_id][:, excavator_index].reshape(1, -1)
...@@ -551,10 +559,10 @@ class Dispatcher(WalkManage): ...@@ -551,10 +559,10 @@ class Dispatcher(WalkManage):
# 读取车流信息 # 读取车流信息
try: try:
assert np.array(self.actual_goto_excavator_traffic_flow).shape == ( assert np.array(actual_goto_excavator_traffic_flow).shape == (
dynamic_dump_num, dynamic_dump_num,
dynamic_excavator_num,) dynamic_excavator_num,)
assert np.array(self.opt_goto_excavator_traffic_flow).shape == ( assert np.array(opt_goto_excavator_traffic_flow).shape == (
dynamic_dump_num, dynamic_dump_num,
dynamic_excavator_num,) dynamic_excavator_num,)
...@@ -654,6 +662,9 @@ class Dispatcher(WalkManage): ...@@ -654,6 +662,9 @@ class Dispatcher(WalkManage):
# 3. 饱和度调度 # 3. 饱和度调度
else: else:
logger.info("和度调度")
dump_index = int(trip[1]) dump_index = int(trip[1])
transport_value = self.group.group_walk_to_excavator_cost[group_id][dump_index, :].reshape(1, -1) transport_value = self.group.group_walk_to_excavator_cost[group_id][dump_index, :].reshape(1, -1)
......
...@@ -13,8 +13,10 @@ from equipment.excavator import ExcavatorInfo ...@@ -13,8 +13,10 @@ from equipment.excavator import ExcavatorInfo
from equipment.dump import DumpInfo from equipment.dump import DumpInfo
from equipment.truck import TruckInfo from equipment.truck import TruckInfo
class Traffic_flow(WalkManage): class Traffic_flow(WalkManage):
"""
Traffic flow information class
"""
def __init__(self, dump, excavator, truck): def __init__(self, dump, excavator, truck):
self.dump = dump self.dump = dump
self.excavator = excavator self.excavator = excavator
...@@ -63,10 +65,12 @@ class Traffic_flow(WalkManage): ...@@ -63,10 +65,12 @@ class Traffic_flow(WalkManage):
truck_current_trip = self.truck.get_truck_current_trip() truck_current_trip = self.truck.get_truck_current_trip()
payload = self.truck.get_payload() payload = self.truck.get_payload()
# 设备参数读取
dynamic_dump_num = get_value("dynamic_dump_num") dynamic_dump_num = get_value("dynamic_dump_num")
dynamic_excavator_num = get_value("dynamic_excavator_num") dynamic_excavator_num = get_value("dynamic_excavator_num")
dynamic_truck_num = get_value("dynamic_truck_num") dynamic_truck_num = get_value("dynamic_truck_num")
# 路网矿卡数量初始化
self.goto_dump_truck_num = np.zeros((dynamic_excavator_num, dynamic_dump_num)) self.goto_dump_truck_num = np.zeros((dynamic_excavator_num, dynamic_dump_num))
self.actual_goto_dump_traffic_flow = np.zeros( self.actual_goto_dump_traffic_flow = np.zeros(
(dynamic_excavator_num, dynamic_dump_num) (dynamic_excavator_num, dynamic_dump_num)
...@@ -78,10 +82,7 @@ class Traffic_flow(WalkManage): ...@@ -78,10 +82,7 @@ class Traffic_flow(WalkManage):
(dynamic_dump_num, dynamic_excavator_num) (dynamic_dump_num, dynamic_excavator_num)
) )
# try: # 统计路网矿卡数量
logger.info("dynamic_truck_num")
logger.info(dynamic_truck_num)
for i in range(dynamic_truck_num): for i in range(dynamic_truck_num):
task = truck_current_task[self.truck.truck_index_to_uuid_dict[i]] task = truck_current_task[self.truck.truck_index_to_uuid_dict[i]]
end_area_index = truck_current_trip[i][1] end_area_index = truck_current_trip[i][1]
...@@ -91,69 +92,41 @@ class Traffic_flow(WalkManage): ...@@ -91,69 +92,41 @@ class Traffic_flow(WalkManage):
self.goto_dump_truck_num[start_area_index][end_area_index] += 1 self.goto_dump_truck_num[start_area_index][end_area_index] += 1
self.actual_goto_dump_traffic_flow[start_area_index][end_area_index] += float(payload[i]) self.actual_goto_dump_traffic_flow[start_area_index][end_area_index] += float(payload[i])
# logger.info("debug2")
if task in empty_task_set: if task in empty_task_set:
self.goto_excavator_truck_num[start_area_index][end_area_index] += 1 self.goto_excavator_truck_num[start_area_index][end_area_index] += 1
self.actual_goto_excavator_traffic_flow[start_area_index][end_area_index] += float(payload[i]) self.actual_goto_excavator_traffic_flow[start_area_index][end_area_index] += float(payload[i])
# 计算驶往卸点实际吞吐量
self.actual_goto_dump_traffic_flow = self.actual_goto_dump_traffic_flow / ( self.actual_goto_dump_traffic_flow = self.actual_goto_dump_traffic_flow / (
self.distance_to_dump.reshape(dynamic_excavator_num, dynamic_dump_num) self.distance_to_dump.reshape(dynamic_excavator_num, dynamic_dump_num) / (1000 * empty_speed)
/ (1000 * empty_speed) + np.expand_dims(unloading_task_time, axis=0).repeat(dynamic_excavator_num, axis=0)
+ np.expand_dims(unloading_task_time, axis=0).repeat(
dynamic_excavator_num, axis=0
)
) )
# 计算驶往挖机实际吞吐量
self.actual_goto_excavator_traffic_flow = ( self.actual_goto_excavator_traffic_flow = (
self.actual_goto_excavator_traffic_flow self.actual_goto_excavator_traffic_flow / (
/ ( self.distance_to_excavator.reshape(dynamic_dump_num, dynamic_excavator_num) / (1000 * heavy_speed)
self.distance_to_excavator.reshape( + np.expand_dims(loading_task_time, axis=0).repeat(dynamic_dump_num, axis=0)
dynamic_dump_num, dynamic_excavator_num
)
/ (1000 * heavy_speed)
+ np.expand_dims(loading_task_time, axis=0).repeat(
dynamic_dump_num, axis=0
)
) )
) )
logger.info("self.goto_dump_truck_num") logger.info("traffic_flow.goto_dump_truck_num")
logger.info(self.goto_dump_truck_num) logger.info(self.goto_dump_truck_num)
logger.info("traffic_flow.actual_goto_dump_traffic_flow")
logger.info("self.actual_goto_dump_traffic_flow")
logger.info(self.actual_goto_dump_traffic_flow) logger.info(self.actual_goto_dump_traffic_flow)
logger.info("traffic_flow.goto_excavator_truck_num")
logger.info("self.goto_excavator_truck_num")
logger.info(self.goto_excavator_truck_num) logger.info(self.goto_excavator_truck_num)
logger.info("traffic_flow.actual_goto_excavator_traffic_flow")
logger.info("self.actual_goto_excavator_traffic_flow")
logger.info(self.actual_goto_excavator_traffic_flow) logger.info(self.actual_goto_excavator_traffic_flow)
# except Exception as es:
# logger.error("未知错误001")
# logger.error(es)
# print("驶往卸点实际载重")
# print(self.actual_goto_dump_traffic_flow)
# print("卸点路段行驶时间(h)")
# print((self.distance_to_dump.reshape(dynamic_excavator_num, dynamic_dump_num) / (1000 * empty_speed)))
# print("驶往卸点实际车流")
# print(self.actual_goto_dump_traffic_flow)
logger.info("驶往卸点实际载重") logger.info("驶往卸点实际载重")
logger.info(self.actual_goto_dump_traffic_flow) logger.info(self.actual_goto_dump_traffic_flow)
logger.info("卸点路段行驶时间(h)")
logger.info(
(
self.distance_to_dump.reshape(dynamic_excavator_num, dynamic_dump_num)
/ (1000 * empty_speed)
)
)
logger.info("驶往卸点实际车流") logger.info("驶往卸点实际车流")
logger.info(self.actual_goto_dump_traffic_flow) logger.info(self.actual_goto_dump_traffic_flow)
logger.info("________________loading_task_time__________") logger.info("装载任务时间(含出入场)")
logger.info(loading_task_time) logger.info(loading_task_time)
logger.info("卸载任务时间(含出入场)")
logger.info(unloading_task_time)
# 车流规划类 # 车流规划类
...@@ -167,13 +140,14 @@ class Traffic_para(WalkManage): ...@@ -167,13 +140,14 @@ class Traffic_para(WalkManage):
self.walk_time_to_load_area = np.zeros((num_of_unload_area, num_of_load_area)) # 空载运输路线距离 self.walk_time_to_load_area = np.zeros((num_of_unload_area, num_of_load_area)) # 空载运输路线距离
self.walk_time_to_unload_area = np.zeros((num_of_load_area, num_of_unload_area)) # 重载运输路线距离 self.walk_time_to_unload_area = np.zeros((num_of_load_area, num_of_unload_area)) # 重载运输路线距离
# self.avg_goto_excavator_weight = np.zeros((num_of_load_area, num_of_unload_area)) # # self.avg_goto_excavator_weight = np.zeros((num_of_load_area, num_of_unload_area))
self.avg_goto_excavator_weight = np.full((num_of_unload_area, num_of_load_area), 1) # self.avg_goto_excavator_weight = np.full((num_of_unload_area, num_of_load_area), 1)
#
# # self.avg_goto_dump_weight = np.zeros((num_of_load_area, num_of_unload_area))
# self.avg_goto_dump_weight = np.full((num_of_load_area, num_of_unload_area), 1)
# self.avg_goto_dump_weight = np.zeros((num_of_load_area, num_of_unload_area)) # self.walk_time_to_excavator = np.zeros((num_of_dump, num_of_excavator)) # 逻辑空载运输路线距离
self.avg_goto_dump_weight = np.full((num_of_load_area, num_of_unload_area), 1) # self.walk_time_to_dump = np.zeros((num_of_excavator, num_of_dump)) # 逻辑重载运输路线距离
self.walk_time_to_excavator = np.zeros((num_of_dump, num_of_excavator)) # 逻辑空载运输路线距离
self.walk_time_to_dump = np.zeros((num_of_excavator, num_of_dump)) # 逻辑重载运输路线距离
# self.payload = 200 # 有效载重(不同型号矿卡载重不同,这里暂时认为车队是同质的) # self.payload = 200 # 有效载重(不同型号矿卡载重不同,这里暂时认为车队是同质的)
self.payload = np.mean(truck.get_payload()) self.payload = np.mean(truck.get_payload())
......
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