Commit 0163c08a authored by 张晓彤's avatar 张晓彤

仿真测试问题优化

parent 728a06ca
...@@ -62,7 +62,8 @@ class Dispatcher: ...@@ -62,7 +62,8 @@ class Dispatcher:
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, self.excavator, self.dump, self.topo) group = Group(group_id, self.truck, self.pre_sch, self.excavator, self.dump, self.topo)
group.info_update() group.info_update()
self.group_list[group_id] = group if len(group.group_trucks) != 0:
self.group_list[group_id] = group
def group_info_update(self): def group_info_update(self):
""" """
......
...@@ -370,11 +370,15 @@ class DispatchInfo: ...@@ -370,11 +370,15 @@ class DispatchInfo:
for dump_id in cls.group_dump_dict[item]: for dump_id in cls.group_dump_dict[item]:
unload_area_id = cls.dump_unload_area_dict[dump_id] unload_area_id = cls.dump_unload_area_dict[dump_id]
load_area_id = cls.excavator_load_dict[excavator_id] load_area_id = cls.excavator_load_dict[excavator_id]
distance = int(session_postgre.query(WalkTime).filter_by( distance = session_postgre.query(WalkTime).filter_by(
unload_area_id=unload_area_id, unload_area_id=unload_area_id,
load_area_id=load_area_id).first().to_load_distance) load_area_id=load_area_id).first()
unload_load_distance[group_dump_count][group_excavator_count] = distance if distance is not None:
logger.warning(f'装载区 {load_area_id} 与 卸载区 {unload_area_id} 间路网不通')
unload_load_distance[group_dump_count][group_excavator_count] = float(distance.to_load_distance)
else:
unload_load_distance[group_dump_count][group_excavator_count] = 1000000
if excavator_id not in group_excavator_uuid_to_index: if excavator_id not in group_excavator_uuid_to_index:
group_excavator_uuid_to_index[excavator_id] = group_excavator_count group_excavator_uuid_to_index[excavator_id] = group_excavator_count
...@@ -419,8 +423,10 @@ class DispatchInfo: ...@@ -419,8 +423,10 @@ class DispatchInfo:
load_unload_distance = np.zeros((len(load_areas), len(unload_areas))) load_unload_distance = np.zeros((len(load_areas), len(unload_areas)))
for i in range(len(load_areas)): for i in range(len(load_areas)):
for j in range(len(unload_areas)): for j in range(len(unload_areas)):
distance = int(session_postgre.query(WalkTime).filter_by(load_area_id=load_areas[i], unload_area_id=unload_areas[j]).first().to_unload_distance) distance = session_postgre.query(WalkTime).filter_by(load_area_id=load_areas[i],
load_unload_distance[i][j] = distance unload_area_id=unload_areas[j]).first()
if distance is not None:
load_unload_distance[i][j] = float(distance.to_unload_distance)
cls.unload_distance[item] = load_unload_distance cls.unload_distance[item] = load_unload_distance
except Exception as es: except Exception as es:
......
...@@ -379,12 +379,9 @@ class WalkManage(DeviceMap): ...@@ -379,12 +379,9 @@ class WalkManage(DeviceMap):
park_area = str(item.park_area_id) park_area = str(item.park_area_id)
load_area_index = load_area_uuid_to_index_dict[load_area] load_area_index = load_area_uuid_to_index_dict[load_area]
park_index = park_uuid_to_index_dict[park_area] park_index = park_uuid_to_index_dict[park_area]
cls.distance_park_to_load_area[park_index][load_area_index] = float( cls.distance_park_to_load_area[park_index][load_area_index] = float(item.park_load_distance)
item.park_load_distance cls.walk_time_park_to_load_area[park_index][load_area_index] = \
) float(60 / 1000 * item.park_load_distance / empty_speed)
cls.walk_time_park_to_load_area[park_index][load_area_index] = float(
60 / 1000 * item.park_load_distance / empty_speed
)
except Exception as es: except Exception as es:
logger.error("备停区路网信息异常") logger.error("备停区路网信息异常")
logger.error(es) logger.error(es)
...@@ -393,14 +390,10 @@ class WalkManage(DeviceMap): ...@@ -393,14 +390,10 @@ class WalkManage(DeviceMap):
try: try:
for i in range(park_num): for i in range(park_num):
for j in range(dynamic_excavator_num): for j in range(dynamic_excavator_num):
cls.distance_park_to_excavator[i][j] = cls.distance_park_to_load_area[ cls.distance_park_to_excavator[i][j] = \
i cls.distance_park_to_load_area[i][cls.excavator_index_to_load_area_index_dict[j]]
][cls.excavator_index_to_load_area_index_dict[j]] cls.walk_time_park_to_excavator[i][j] = \
cls.walk_time_park_to_excavator[i][ cls.walk_time_park_to_load_area[i][cls.excavator_index_to_load_area_index_dict[j]]
j
] = cls.walk_time_park_to_load_area[i][
cls.excavator_index_to_load_area_index_dict[j]
]
except Exception as es: except Exception as es:
logger.error("备停区设备路网信息异常") logger.error("备停区设备路网信息异常")
logger.error(es) logger.error(es)
......
...@@ -171,10 +171,13 @@ class DumpInfo(WalkManage): ...@@ -171,10 +171,13 @@ class DumpInfo(WalkManage):
self.logger.error(es) self.logger.error(es)
session_mysql.rollback() session_mysql.rollback()
session_postgre.rollback() session_postgre.rollback()
self.dump_strength[dump_index] = unload_ability # 卸载设备最大卸载能力,单位吨/小时 unload_ability = 200
if unload_ability < 200: if unload_ability < 200:
self.dump_strength[dump_index] = 200
raise Exception("卸载点卸载能力异常") raise Exception("卸载点卸载能力异常")
else:
self.dump_strength[dump_index] = unload_ability # 卸载设备最大卸载能力,单位吨/小时
else: else:
self.dump_strength = np.full(self.dynamic_dump_num, 5000) self.dump_strength = np.full(self.dynamic_dump_num, 5000)
......
...@@ -520,14 +520,14 @@ class TruckInfo(WalkManage): ...@@ -520,14 +520,14 @@ class TruckInfo(WalkManage):
:return: truck_locate_dict :return: truck_locate_dict
""" """
try: truck_uuid_to_name_dict = get_value("truck_uuid_to_name_dict")
truck_name_to_uuid_dict = get_value("truck_name_to_uuid_dict")
self.truck_locate_dict = {} self.truck_locate_dict = {}
device_name_set = redis2.keys() for truck_id in self.dynamic_truck_set:
for item in device_name_set: try:
item = item.decode(encoding='utf-8') # item = item.decode(encoding='utf-8')
key_value_dict = redis2.hgetall(item) truck_name = truck_uuid_to_name_dict[truck_id]
key_value_dict = redis2.hgetall(truck_name)
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()
...@@ -537,18 +537,16 @@ class TruckInfo(WalkManage): ...@@ -537,18 +537,16 @@ class TruckInfo(WalkManage):
and (str_to_byte('laneId') in key_set): 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')]
if eval(truck_locate) is not '': if eval(truck_locate) is not '':
self.truck_locate_dict[truck_name_to_uuid_dict[item]] = eval(truck_locate) self.truck_locate_dict[truck_id] = eval(truck_locate)
except Exception as es:
except Exception as es: self.logger.error(es)
logger.error("车辆所在路段读取异常") self.logger.error(f'车辆 {truck_id} 位置信息丢失')
logger.error(es)
return {}
################################################ long term update ################################################ ################################################ long term update ################################################
# 更新矿卡实际容量 # 更新矿卡实际容量
def update_truck_payload(self): def update_truck_payload(self):
self.payload = np.full(self.dynamic_truck_num, 220); self.payload = np.full(self.dynamic_truck_num, 220)
# try: # try:
# self.payload = np.zeros(self.dynamic_truck_num) # self.payload = np.zeros(self.dynamic_truck_num)
# for truck_id in self.dynamic_truck_set: # for truck_id in self.dynamic_truck_set:
......
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