Commit 8c37fda5 authored by 张晓彤's avatar 张晓彤 Committed by z5335534 Ao Guo

group, info 层修改

parent 6594fd44
......@@ -116,8 +116,8 @@ class Group:
"""
self.update_group_mode()
self.update_group_device()
self.update_group_road_network()
self.update_group_device_map()
self.update_group_road_network()
def group_dispatch(self, solver: object):
"""
......
......@@ -92,58 +92,102 @@ class DispatchInfo:
# build excavator group map
# try:
# for item in session_postgre.query(DiggingWorkArea).all():
#
# if item.ExactorUuid is not None:
# cls.load_excavator_dict[str(item.Id)] = item.ExactorUuid
# cls.excavator_load_dict[item.ExactorUuid] = str(item.Id)
# aa = cls.load_excavator_dict
# except Exception as es:
# logger.error("挖机和装载区映射更新异常")
# logger.error(es)
try:
for item in session_postgre.query(DiggingWorkArea).all():
for item in session_mysql.query(DispatchSetting).all():
if item.ExactorUuid is not None:
cls.load_excavator_dict[str(item.Id)] = item.ExactorUuid
cls.excavator_load_dict[item.ExactorUuid] = str(item.Id)
cls.load_excavator_dict[item.load_area_id] = item.exactor_id
cls.excavator_load_dict[item.exactor_id] = item.load_area_id
# aa = cls.load_excavator_dict
except Exception as es:
logger.error("挖机和装载区映射更新异常")
logger.error(es)
# update excavator<->group and dump<->group map
try:
for item in session_mysql.query(DispatchMatch).filter_by(group_type=1).all():
for item in session_mysql.query(DispatchSetting).filter_by(group_type=1).all():
# if item.group_code not in cls.group_excavator_dict.keys():
# cls.group_excavator_dict[item.group_code] = item.excavator_id
# else:
# cls.group_excavator_dict[item.group_code].append(item.excavator_id)
# cls.excavator_group_dict[item.excavator_id] = item.group_code
if item.load_area_id is not None and item.dump_id is not None:
# if item.load_area_id is not None and item.dump_id is not None:
if item.group_code not in cls.group_excavator_dict.keys():
cls.group_excavator_dict[item.group_code] = [item.exactor_id]
cls.group_excavator_dict[item.group_id] = [item.exactor_id]
else:
cls.group_excavator_dict[item.group_code].append(item.exactor_id)
cls.excavator_group_dict[item.exactor_id] = item.group_code
cls.group_excavator_dict[item.group_id].append(item.exactor_id)
cls.excavator_group_dict[item.exactor_id] = item.group_id
if item.group_code not in cls.group_dump_dict.keys():
cls.group_dump_dict[item.group_code] = [item.unload_area_id]
if item.group_id not in cls.group_dump_dict.keys():
cls.group_dump_dict[item.group_id] = [item.unload_area_id]
else:
cls.group_dump_dict[item.group_code].append(item.unload_area_id)
cls.dump_group_dict[item.unload_area_id] = item.group_code
except Exception as es:
logger.error("挖机/卸载区与group_id映射更新异常")
logger.error(es)
cls.group_dump_dict[item.group_id].append(item.unload_area_id)
cls.dump_group_dict[item.unload_area_id] = item.group_id
# update truck<->group map
try:
for item in session_mysql.query(DispatchEquipment).filter_by(group_type=1).all():
if item.group_code not in cls.group_truck_dict.keys():
cls.group_truck_dict[item.group_code] = [item.equipment_id]
if item.group_id not in cls.group_truck_dict.keys():
cls.group_truck_dict[item.group_id] = [item.truck_id]
else:
cls.group_truck_dict[item.group_code].append(item.equipment_id)
cls.truck_group_dict[item.equipment_id] = item.group_code
cls.group_truck_dict[item.group_id].append(item.truck_id)
cls.truck_group_dict[item.truck_id] = item.group_id
hh = cls.group_excavator_dict
except Exception as es:
logger.error("矿卡与group_id映射更新异常")
logger.error("挖机/卸载区/矿卡与group_id映射更新异常")
logger.error(es)
# update group set
try:
cls.group_set = set(cls.group_excavator_dict.keys())
except Exception as es:
logger.error(es)
# try:
# for item in session_mysql.query(DispatchMatch).filter_by(group_type=1).all():
#
# # if item.group_code not in cls.group_excavator_dict.keys():
# # cls.group_excavator_dict[item.group_code] = item.excavator_id
# # else:
# # cls.group_excavator_dict[item.group_code].append(item.excavator_id)
# # cls.excavator_group_dict[item.excavator_id] = item.group_code
# if item.load_area_id is not None and item.dump_id is not None:
# if item.group_code not in cls.group_excavator_dict.keys():
# cls.group_excavator_dict[item.group_code] = [item.exactor_id]
# else:
# cls.group_excavator_dict[item.group_code].append(item.exactor_id)
# cls.excavator_group_dict[item.exactor_id] = item.group_code
#
# if item.group_code not in cls.group_dump_dict.keys():
# cls.group_dump_dict[item.group_code] = [item.unload_area_id]
# else:
# cls.group_dump_dict[item.group_code].append(item.unload_area_id)
# cls.dump_group_dict[item.unload_area_id] = item.group_code
# except Exception as es:
# logger.error("挖机/卸载区与group_id映射更新异常")
# logger.error(es)
# update truck<->group map
# try:
# for item in session_mysql.query(DispatchEquipment).filter_by(group_type=1).all():
# if item.group_code not in cls.group_truck_dict.keys():
# cls.group_truck_dict[item.group_code] = [item.equipment_id]
# else:
# cls.group_truck_dict[item.group_code].append(item.equipment_id)
# cls.truck_group_dict[item.equipment_id] = item.group_code
# except Exception as es:
# logger.error("矿卡与group_id映射更新异常")
# logger.error(es)
# update group set
# try:
# # group_dump_dict = {} -->> {team_id:[unload_area_id,unload_area_id],...}
......@@ -363,11 +407,20 @@ class DispatchInfo:
@classmethod
def get_park_to_excavator_distance(cls, group_id):
excavators = cls.group_excavator_dict[group_id]
park_matrix = np.zeros((1, len(excavators)))
park_matrix = np.ones((1, len(excavators)))
try:
for i in range(len(excavators)):
load_area_id = cls.excavator_load_dict[excavators[i]]
try:
distance = session_postgre.query(WalkTimePark).filter_by(load_area_id=load_area_id).first().park_load_distance
park_matrix[0][i] = distance
except Exception as es:
logger.error("查询不到距离,设置为100000000")
logger.error(es)
park_matrix[0][i] = 100000000 # 设置为一个很大的数字
except Exception as es:
logger.error("park->load距离更新异常, 存在备停区不可达的装载区")
logger.error(es)
return park_matrix
......
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