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

异常处理BUG

parent ea54225b
......@@ -151,7 +151,7 @@ class DumpInfo(WalkManage):
if unload_ability < 200:
raise Exception("卸载点卸载能力异常")
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:
logger.error(es)
......
......@@ -177,7 +177,7 @@ class ExcavatorInfo(WalkManage):
if load_ability.mining_abililty < 200:
raise Exception("挖机装载能力异常")
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:
logger.error(es)
......
......@@ -287,9 +287,9 @@ class LaneInfo:
# json_value = json.loads(redis2.get(item))
key_value_dict = redis2.hgetall(item)
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()
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_dict[truck_name_to_uuid_dict[item]] = eval(truck_locate)
except Exception as es:
......
......@@ -54,6 +54,8 @@ class Dispatcher(WalkManage):
self.path = PathPlanner()
# 读取车流信息
self.traffic_flow = Traffic_flow(dump, excavator, truck)
self.group = Group(dump, excavator, truck, self.traffic_flow)
......@@ -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]]
# 3. 启用饱和度调度
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)
allow_flow_to_excavator = excavator.excavator_strength
......@@ -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]]
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]}")
except Exception as es:
logger.error("error07")
......@@ -524,6 +529,9 @@ class Dispatcher(WalkManage):
logger.error(es)
# 3. 饱和度调度
else:
logger.info("和度调度")
excavator_index = int(trip[1])
transport_value = self.group.group_walk_to_dump_cost[group_id][:, excavator_index].reshape(1, -1)
......@@ -551,10 +559,10 @@ class Dispatcher(WalkManage):
# 读取车流信息
try:
assert np.array(self.actual_goto_excavator_traffic_flow).shape == (
assert np.array(actual_goto_excavator_traffic_flow).shape == (
dynamic_dump_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_excavator_num,)
......@@ -654,6 +662,9 @@ class Dispatcher(WalkManage):
# 3. 饱和度调度
else:
logger.info("和度调度")
dump_index = int(trip[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
from equipment.dump import DumpInfo
from equipment.truck import TruckInfo
class Traffic_flow(WalkManage):
"""
Traffic flow information class
"""
def __init__(self, dump, excavator, truck):
self.dump = dump
self.excavator = excavator
......@@ -63,10 +65,12 @@ class Traffic_flow(WalkManage):
truck_current_trip = self.truck.get_truck_current_trip()
payload = self.truck.get_payload()
# 设备参数读取
dynamic_dump_num = get_value("dynamic_dump_num")
dynamic_excavator_num = get_value("dynamic_excavator_num")
dynamic_truck_num = get_value("dynamic_truck_num")
# 路网矿卡数量初始化
self.goto_dump_truck_num = np.zeros((dynamic_excavator_num, dynamic_dump_num))
self.actual_goto_dump_traffic_flow = np.zeros(
(dynamic_excavator_num, dynamic_dump_num)
......@@ -78,10 +82,7 @@ class Traffic_flow(WalkManage):
(dynamic_dump_num, dynamic_excavator_num)
)
# try:
logger.info("dynamic_truck_num")
logger.info(dynamic_truck_num)
# 统计路网矿卡数量
for i in range(dynamic_truck_num):
task = truck_current_task[self.truck.truck_index_to_uuid_dict[i]]
end_area_index = truck_current_trip[i][1]
......@@ -91,69 +92,41 @@ class Traffic_flow(WalkManage):
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])
# logger.info("debug2")
if task in empty_task_set:
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_dump_traffic_flow = self.actual_goto_dump_traffic_flow / (
self.distance_to_dump.reshape(dynamic_excavator_num, dynamic_dump_num)
/ (1000 * empty_speed)
+ np.expand_dims(unloading_task_time, axis=0).repeat(
dynamic_excavator_num, axis=0
)
self.distance_to_dump.reshape(dynamic_excavator_num, dynamic_dump_num) / (1000 * empty_speed)
+ 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.distance_to_excavator.reshape(
dynamic_dump_num, dynamic_excavator_num
)
/ (1000 * heavy_speed)
+ np.expand_dims(loading_task_time, axis=0).repeat(
dynamic_dump_num, axis=0
)
self.actual_goto_excavator_traffic_flow / (
self.distance_to_excavator.reshape(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.actual_goto_dump_traffic_flow")
logger.info("traffic_flow.actual_goto_dump_traffic_flow")
logger.info(self.actual_goto_dump_traffic_flow)
logger.info("self.goto_excavator_truck_num")
logger.info("traffic_flow.goto_excavator_truck_num")
logger.info(self.goto_excavator_truck_num)
logger.info("self.actual_goto_excavator_traffic_flow")
logger.info("traffic_flow.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(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(self.actual_goto_dump_traffic_flow)
logger.info("________________loading_task_time__________")
logger.info("装载任务时间(含出入场)")
logger.info(loading_task_time)
logger.info("卸载任务时间(含出入场)")
logger.info(unloading_task_time)
# 车流规划类
......@@ -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_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.full((num_of_unload_area, num_of_load_area), 1)
# # 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_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.avg_goto_dump_weight = np.full((num_of_load_area, num_of_unload_area), 1)
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.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 = 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