Commit db860cc7 authored by z5335534 Ao Guo's avatar z5335534 Ao Guo

空车智能,定铲派车,bug修复

parent 39d4f4f7
No preview for this file type
......@@ -157,9 +157,9 @@ class ExpectedTime(AlgorithmBase):
truck_avl_time = self.pre_sch.get_truck_avl_time(truck_id=truck_id)
group_dynamic_excavator_num = len(self.group.dump)
group_dynamic_excavator_num = len(self.group.excavator)
group_dynamic_dump_num = len(self.group.excavator)
group_dynamic_unload_area_num = len(self.group.unload_area)
except Exception as es:
self.logger.error("车辆调度信息读取异常")
......@@ -237,7 +237,7 @@ class ExpectedTime(AlgorithmBase):
excavator_group_index = self.group.excavator_uuid_index_dict[excavator_id]
# 车辆驶往各目的地时间
truck_reach_time = 60 * self.group.to_dump_distance[excavator_group_index, :] \
truck_reach_time = 60 * self.group.to_unload_area_distance[excavator_group_index, :] \
/ 1000 / self.truck.heavy_speed[truck_id] + truck_avl_time
# 车辆得到服务时间
......@@ -261,7 +261,7 @@ class ExpectedTime(AlgorithmBase):
except Exception as es:
self.logger.error("矿卡空载调度异常")
self.logger.error(es)
transport_value = np.zeros(group_dynamic_dump_num)
transport_value = np.zeros(group_dynamic_unload_area_num)
elif task in [3, 4, 5]:
################################################ 矿卡重载 ###############################################
......@@ -286,10 +286,10 @@ class ExpectedTime(AlgorithmBase):
dump_id = DeviceMap.dump_index_to_uuid_dict[int(trip[1])]
# 卸点对应分组编号
dump_group_index = self.group.dump_uuid_index_dict[dump_id]
unload_area_group_index = self.group.unload_area_uuid_index_dict[unload_area_id]
# 车辆驶往各目的地时间
truck_reach_time = 60 * self.group.to_excavator_distance[dump_group_index, :] \
truck_reach_time = 60 * self.group.to_excavator_distance[unload_area_group_index, :] \
/ 1000 / self.truck.empty_speed[truck_id] + truck_avl_time
# 计算车辆得到服务时间
......@@ -301,7 +301,7 @@ class ExpectedTime(AlgorithmBase):
except Exception as es:
self.logger.error("矿卡重载调度异常")
self.logger.error(es)
transport_value = np.zeros(group_dynamic_dump_num)
transport_value = np.zeros(group_dynamic_unload_area_num)
return transport_value
{
"para": {
"log_path": "/usr/local/fleet-log/dispatch",
"log_path": "/Users/guoao/Desktop/work_log/wek46/code_1/integrated-scheduling-v4/Logs",
"empty_speed": 17,
"heavy_speed": 17,
"dump_target_mass": 5000,
......@@ -27,4 +27,4 @@
"host": "192.168.9.152",
"password": "Huituo@123"
}
}
\ No newline at end of file
}
......@@ -51,7 +51,7 @@ class Dispatcher:
Generate and initialize dispatch groups.
:return: None
"""
for group_id in DispatchInfo.group_dump_dict.keys():
for group_id in DispatchInfo.group_excavator_dict.keys():
group = Group(group_id, self.truck, self.pre_sch)
self.group_list.append(group)
......@@ -69,6 +69,7 @@ class Dispatcher:
:return:
"""
for group in self.group_list:
truck_dispatch_plan_dict = group.group_dispatch(ExpectedTime)
self.logger.info(f'调度分组: {group.group_id} {DispatchInfo.group_name[group.group_id]}')
self.submission.group_dispatch_to_redis(group, truck_dispatch_plan_dict)
......@@ -112,10 +113,10 @@ class DispatchSubmission:
session_mysql.query(DispatchSetting)
.filter_by(
# exactor_id=dispatch_seq[0],
dump_id=dispatch_seq[1],
# dump_id=dispatch_seq[1],
truck_id=truck_id,
group_id=group_id,
isauto=1, isdeleted=0, ).first())
isdeleted=0, ).first())
if item is None:
raise Exception("调度计划表与实时监控不匹配")
......@@ -125,7 +126,7 @@ class DispatchSubmission:
session_mysql.query(DispatchSetting)
.filter_by(truck_id=truck_id,
# group_id=group_id,
isauto=1, isdeleted=0, ).first())
isdeleted=0, ).first())
try:
record["id"] = item.id
......@@ -148,11 +149,11 @@ class DispatchSubmission:
item = (
session_mysql.query(DispatchSetting)
.filter_by(
exactor_id=dispatch_seq[0],
# exactor_id=dispatch_seq[0],
# dump_id=dispatch_seq[1],
truck_id=truck_id,
group_id=group_id,
isauto=1, isdeleted=0, ).first())
isdeleted=0, ).first())
if item is None:
raise Exception("调度计划表与实时监控不匹配")
except Exception as es:
......@@ -161,7 +162,7 @@ class DispatchSubmission:
session_mysql.query(DispatchSetting)
.filter_by(truck_id=truck_id,
# group_id=group_id,
isauto=1, isdeleted=0, ).first())
isdeleted=0, ).first())
try:
record["id"] = item.id
record["exactorId"] = dispatch_seq[0]
......@@ -183,10 +184,10 @@ class DispatchSubmission:
item = (
session_mysql.query(DispatchSetting)
.filter_by(
exactor_id=dispatch_seq[0],
# exactor_id=dispatch_seq[0],
truck_id=truck_id,
group_id=group_id,
isauto=1, isdeleted=0).first())
isdeleted=0).first())
if item is None:
raise Exception("调度计划表与实时监控不匹配")
......@@ -202,7 +203,7 @@ class DispatchSubmission:
session_mysql.query(DispatchSetting)
.filter_by(truck_id=truck_id,
# group_id=group_id,
isauto=1, isdeleted=0).first())
isdeleted=0).first())
try:
......
......@@ -29,7 +29,7 @@ class Group:
""" Generate a group obj.
:param group_id: (uuid) group_id
"""
self.to_dump_congestion = None
self.to_unload_area_congestion = None
self.group_id = group_id
self.group_mode = 1
self.truck = truck
......@@ -37,23 +37,23 @@ class Group:
# group devices
self.excavator = {} # excavator_id -> unload_area_id
self.dump = {} # dump_id -> load_area_id
self.unload_area = {} # unload_area_id -> load_area_id
self.truck_set = set() # truck_id
# road network info.
self.to_excavator_distance = None
self.to_dump_distance = None
self.to_unload_area_distance = None
self.park_to_excavator_distance = None
# self.to_excavator_congestion = None
# self.to_dump_congestion = None
# self.to_unload_area_congestion = None
# self.park_to_excavator_congestion = None
# device map
self.truck_uuid_index_dict = bidict()
self.excavator_uuid_index_dict = bidict()
self.dump_uuid_index_dict = bidict()
self.unload_area_uuid_index_dict = bidict()
def update_group_mode(self):
"""
......@@ -72,7 +72,7 @@ class Group:
# update group devices
# DispatchInfo.update_device_group_structure()
self.excavator = DispatchInfo.get_excavator(self.group_id)
self.dump = DispatchInfo.get_dump(self.group_id)
self.unload_area = DispatchInfo.get_unload_area(self.group_id)
self.truck_set = DispatchInfo.get_truck_set(self.group_id)
def update_group_road_network(self):
......@@ -83,7 +83,7 @@ class Group:
# update group road network
# DispatchInfo.update_route_distance()
self.to_excavator_distance = DispatchInfo.get_to_excavator_distance(self.group_id)
self.to_dump_distance = DispatchInfo.get_to_dump_distance(self.group_id)
self.to_unload_area_distance = DispatchInfo.get_to_unload_area_distance(self.group_id)
self.park_to_excavator_distance = DispatchInfo.get_park_to_excavator_distance(self.group_id)
def update_group_device_map(self):
......@@ -96,15 +96,15 @@ class Group:
for i in range(len(self.excavator)):
self.excavator_uuid_index_dict[list(self.excavator)[i]] = i
for i in range(len(self.dump)):
self.dump_uuid_index_dict[list(self.dump)[i]] = i
for i in range(len(self.unload_area)):
self.unload_area_uuid_index_dict[list(self.unload_area)[i]] = i
for i in range(len(self.truck_set)):
self.truck_uuid_index_dict[list(self.truck_set)[i]] = i
self.truck_uuid_index_dict = bidict(self.truck_uuid_index_dict)
self.excavator_uuid_index_dict = bidict(self.excavator_uuid_index_dict)
self.dump_uuid_index_dict = bidict(self.dump_uuid_index_dict)
self.unload_area_uuid_index_dict = bidict(self.unload_area_uuid_index_dict)
# group_excavator_dict = {group_1: {excavator_1: load_area_1}, group_2: {excavator_2: load_area_2}}
......@@ -127,31 +127,57 @@ class Group:
"""
truck_dispatch = {}
assert issubclass(solver, AlgorithmBase)
s = solver(self, self.truck, self.pre_sch) # algorithm init
tt = self.truck_set
for i in list(self.truck_set):
truck_trip = self.truck.get_truck_current_trip()[self.truck_uuid_index_dict[i]]
truck_task = self.truck.get_truck_current_task()[i]
if truck_task in [-2, 3, 4]:
next_excavator_value = s.solve(i)
# min_index = next_excavator_list.index(min(next_excavator_list))
min_index = np.argmin(next_excavator_value)
bb = self.excavator_uuid_index_dict
next_excavator_id = self.excavator_uuid_index_dict.inverse[min_index]
if truck_task == -2:
next_dump_id = "Park"
else:
next_dump_id = self.dump_uuid_index_dict.inverse[truck_trip[-1]]
truck_dispatch[i] = [next_excavator_id, next_dump_id]
if truck_task in [0, 1]:
next_dump_value = s.solve(i)
min_index = np.argmin(next_dump_value)
next_dump_id = self.dump_uuid_index_dict.inverse[min_index]
next_excavator_id = self.excavator_uuid_index_dict.inverse[truck_trip[-1]]
truck_dispatch[i] = [next_excavator_id, next_dump_id]
if self.group_mode == 1:
assert issubclass(solver, AlgorithmBase)
s = solver(self, self.truck, self.pre_sch) # algorithm init
for i in list(self.truck_set):
truck_trip = self.truck.get_truck_current_trip()[self.truck_uuid_index_dict[i]]
truck_task = self.truck.get_truck_current_task()[i]
if truck_task in [-2, 3, 4]:
next_excavator_value = s.solve(i)
# min_index = next_excavator_list.index(min(next_excavator_list))
min_index = np.argmin(next_excavator_value)
next_excavator_id = self.excavator_uuid_index_dict.inverse[min_index]
if truck_task == -2:
next_unload_area_id = "Park"
else:
next_unload_area_id = self.unload_area_uuid_index_dict.inverse[truck_trip[-1]]
truck_dispatch[i] = [next_excavator_id, next_unload_area_id]
if truck_task in [0, 1]:
next_unload_area_value = s.solve(i)
min_index = np.argmin(next_unload_area_value)
next_unload_area_id = self.unload_area_uuid_index_dict.inverse[min_index]
next_excavator_id = self.excavator_uuid_index_dict.inverse[truck_trip[-1]]
truck_dispatch[i] = [next_excavator_id, next_unload_area_id]
# 空车智能模式
if self.group_mode == 2:
assert issubclass(solver, AlgorithmBase)
s = solver(self, self.truck, self.pre_sch) # algorithm init
for i in list(self.truck_set):
truck_trip = self.truck.get_truck_current_trip()[self.truck_uuid_index_dict[i]]
truck_task = self.truck.get_truck_current_task()[i]
if truck_task in [-2, 3, 4]:
next_excavator_value = s.solve(i)
# min_index = next_excavator_list.index(min(next_excavator_list))
min_index = np.argmin(next_excavator_value)
next_excavator_id = self.excavator_uuid_index_dict.inverse[min_index]
if truck_task == -2:
next_unload_area_id = "Park"
else:
next_unload_area_id = self.unload_area_uuid_index_dict.inverse[truck_trip[-1]]
truck_dispatch[i] = [next_excavator_id, next_unload_area_id]
if truck_task in [0, 1]:
truck_dispatch[i] = DispatchInfo.get_truck_team_trip(i)
if self.group_mode == 3:
for i in list(self.truck_set):
truck_dispatch[i] = DispatchInfo.get_truck_team_trip(i)
if self.group_mode == 4:
pass
# return dispatch plan
return truck_dispatch
......@@ -177,22 +203,22 @@ class Group:
#
# # group devices
# self.excavator_dict = {} # excavator_id -> unload_area_id
# self.dump = {} # dump_id -> load_area_id
# self.unload_area = {} # unload_area_id -> load_area_id
# self.truck_set = set() # truck_id
#
# # road network info.
# self.to_excavator_distance = None
# self.to_dump_distance = None
# self.to_unload_area_distance = None
# self.park_to_excavator_distance = None
#
# self.to_excavator_congestion = None
# self.to_dump_congestion = None
# self.to_unload_area_congestion = None
# self.park_to_excavator_congestion = None
#
# # device map
# self.truck_uuid_index_dict = bidict()
# self.excavator_uuid_index_dict = bidict()
# self.dump_uuid_index_dict = bidict()
# self.unload_area_uuid_index_dict = bidict()
#
# def update_xx_(self):
# """
......
This diff is collapsed.
......@@ -569,7 +569,7 @@ class DispatchSubmission:
exactor_id=DeviceMap.excavator_index_to_uuid_dict[Seq[i][0]],
truck_id=truck_id,
group_id=group_id,
isauto=1, isdeleted=0, ).first())
isdeleted=0, ).first())
if item is None:
raise Exception("调度计划表与实时监控不匹配")
except Exception as es:
......@@ -578,7 +578,7 @@ class DispatchSubmission:
session_mysql.query(Dispatch)
.filter_by(truck_id=truck_id,
# group_id=group_id,
isauto=1, isdeleted=0, ).first())
isdeleted=0, ).first())
try:
record["exactorId"] = item.exactor_id
......@@ -598,11 +598,12 @@ class DispatchSubmission:
try:
item = (
session_mysql.query(Dispatch)
.filter_by(exactor_id=DeviceMap.excavator_index_to_uuid_dict[Seq[i][1]],
.filter_by(
exactor_id=DeviceMap.excavator_index_to_uuid_dict[Seq[i][1]],
dump_id=DeviceMap.dump_index_to_uuid_dict[Seq[i][0]],
truck_id=truck_id,
group_id=group_id,
isauto=1, isdeleted=0, ).first())
isdeleted=0, ).first())
if item is None:
raise Exception("调度计划表与实时监控不匹配")
except Exception as es:
......@@ -611,7 +612,7 @@ class DispatchSubmission:
session_mysql.query(Dispatch)
.filter_by(truck_id=truck_id,
# group_id=group_id,
isauto=1, isdeleted=0, ).first())
isdeleted=0, ).first())
try:
record["exactorId"] = self.excavator.excavator_index_to_uuid_dict[Seq[i][1]]
record["dumpId"] = item.dump_id
......@@ -634,7 +635,7 @@ class DispatchSubmission:
.filter_by(exactor_id=DeviceMap.excavator_index_to_uuid_dict[Seq[i][1]],
truck_id=truck_id,
group_id=group_id,
isauto=1, isdeleted=0).first())
isdeleted=0).first())
if item is None:
raise Exception("调度计划表与实时监控不匹配")
......@@ -651,7 +652,7 @@ class DispatchSubmission:
session_mysql.query(Dispatch)
.filter_by(truck_id=truck_id,
# group_id=group_id,
isauto=1, isdeleted=0).first())
isdeleted=0).first())
try:
record["exactorId"] = item.exactor_id
......@@ -713,7 +714,7 @@ class DispatchSubmission:
exactor_id=DeviceMap.excavator_index_to_uuid_dict[dispatch_seq[0]],
truck_id=truck_id,
group_id=group_id,
isauto=1, isdeleted=0, ).first())
isdeleted=0, ).first())
if item is None:
raise Exception("调度计划表与实时监控不匹配")
except Exception as es:
......@@ -722,7 +723,7 @@ class DispatchSubmission:
session_mysql.query(Dispatch)
.filter_by(truck_id=truck_id,
# group_id=group_id,
isauto=1, isdeleted=0, ).first())
isdeleted=0, ).first())
try:
record["exactorId"] = item.exactor_id
......@@ -746,7 +747,7 @@ class DispatchSubmission:
dump_id=DeviceMap.dump_index_to_uuid_dict[dispatch_seq[0]],
truck_id=truck_id,
group_id=group_id,
isauto=1, isdeleted=0, ).first())
isdeleted=0, ).first())
if item is None:
raise Exception("调度计划表与实时监控不匹配")
except Exception as es:
......@@ -755,7 +756,7 @@ class DispatchSubmission:
session_mysql.query(Dispatch)
.filter_by(truck_id=truck_id,
# group_id=group_id,
isauto=1, isdeleted=0, ).first())
isdeleted=0, ).first())
try:
record["exactorId"] = self.excavator.excavator_index_to_uuid_dict[dispatch_seq[1]]
record["dumpId"] = item.dump_id
......@@ -778,7 +779,7 @@ class DispatchSubmission:
.filter_by(exactor_id=DeviceMap.excavator_index_to_uuid_dict[dispatch_seq[1]],
truck_id=truck_id,
group_id=group_id,
isauto=1, isdeleted=0).first())
isdeleted=0).first())
if item is None:
raise Exception("调度计划表与实时监控不匹配")
......@@ -795,7 +796,7 @@ class DispatchSubmission:
session_mysql.query(Dispatch)
.filter_by(truck_id=truck_id,
# group_id=group_id,
isauto=1, isdeleted=0).first())
isdeleted=0).first())
try:
record["exactorId"] = item.exactor_id
......
......@@ -118,8 +118,9 @@ class DumpInfo(WalkManage):
self.dump_material = {}
for dump_id in get_value("dynamic_dump_set"):
try:
unload_area_id = session_mysql.query(DispatchSetting).filter_by(dump_id=dump_id, isauto=1, isdeleted=0).first().unload_area_id
dump_material_id = session_postgre.query(DumpArea).filter_by(Id=unload_area_id).first().Materials
# unload_area_id = session_mysql.query(DispatchSetting).filter_by(dump_id=dump_id, isauto=1, isdeleted=0).first().unload_area_id
unload_area_id = session_mysql.query(DispatchSetting).filter_by(dump_id=dump_id, isdeleted=0).first().unload_area_id
dump_material_id = list(session_postgre.query(DumpArea).filter_by(Id=unload_area_id).first().Materials)
self.dump_material[dump_id] = dump_material_id
except Exception as es:
self.logger.error("卸点物料更新异常")
......
......@@ -131,7 +131,8 @@ class ExcavatorInfo(WalkManage):
self.logger.info(self.dynamic_excavator_set)
for excavator_id in self.dynamic_excavator_set:
try:
load_area_id = session_mysql.query(DispatchSetting).filter_by(exactor_id=excavator_id, isdeleted=0, isauto=1).first().load_area_id
# load_area_id = session_mysql.query(DispatchSetting).filter_by(exactor_id=excavator_id, isdeleted=0, isauto=1).first().load_area_id
load_area_id = session_mysql.query(DispatchSetting).filter_by(exactor_id=excavator_id, isdeleted=0).first().load_area_id
excavator_material_id = session_postgre.query(DiggingWorkArea).filter_by(Id=load_area_id).first().Material
self.excavator_material[excavator_id] = excavator_material_id
except Exception as es:
......
......@@ -570,7 +570,6 @@ class TruckInfo(WalkManage):
def update_truck_material(self):
try:
self.truck_material_bind = {}
self.update_truck_excavator_bind()
self.update_truck_dump_area_bind()
......@@ -579,7 +578,6 @@ class TruckInfo(WalkManage):
self.dump_material_bind_modify = np.full((self.dynamic_truck_num, get_value("dynamic_dump_num")), 0)
for truck_id in self.dynamic_truck_set:
if truck_id in self.truck_dump_bind:
unload_area_id = self.truck_dump_bind[truck_id]
try:
......
......@@ -357,22 +357,19 @@ class WalkManage(DeviceMap):
# 计算设备路网距离及行走时间
try:
n = dynamic_dump_num
m = dynamic_excavator_num
for i in range(dynamic_dump_num):
for j in range(dynamic_excavator_num):
cls.distance_to_excavator[i][j] = cls.distance_to_load_area[
cls.dump_index_to_unload_area_index_dict[i]
][cls.excavator_index_to_load_area_index_dict[j]]
cls.walk_time_to_excavator[i][j] = cls.walk_time_to_load_area[
cls.dump_index_to_unload_area_index_dict[i]
][cls.excavator_index_to_load_area_index_dict[j]]
cls.distance_to_dump[i][j] = cls.distance_to_unload_area[
cls.dump_index_to_unload_area_index_dict[i]
][cls.excavator_index_to_load_area_index_dict[j]]
cls.walk_time_to_dump[i][j] = cls.walk_time_to_unload_area[
cls.dump_index_to_unload_area_index_dict[i]
][cls.excavator_index_to_load_area_index_dict[j]]
cls.distance_to_excavator[i][j] = cls.distance_to_load_area[cls.dump_index_to_unload_area_index_dict[i]][cls.excavator_index_to_load_area_index_dict[j]]
cls.walk_time_to_excavator[i][j] = cls.walk_time_to_load_area[cls.dump_index_to_unload_area_index_dict[i]][cls.excavator_index_to_load_area_index_dict[j]]
cls.distance_to_dump[i][j] = cls.distance_to_unload_area[cls.dump_index_to_unload_area_index_dict[i]][cls.excavator_index_to_load_area_index_dict[j]]
cls.walk_time_to_dump[i][j] = cls.walk_time_to_unload_area[cls.dump_index_to_unload_area_index_dict[i]][cls.excavator_index_to_load_area_index_dict[j]]
except Exception as es:
logger.error("设备路网信息异常异常")
logger.error("设备路网信息异常")
logger.error(es)
try:
......
......@@ -119,20 +119,29 @@ def process(dispatcher):
# load_distance = {}
# unload_distance = {}
logger.info("Dispatchinfo,更新后信息")
logger.info("group_set")
logger.info(DispatchInfo.group_set)
logger.info("group_excavator_dict")
logger.info(DispatchInfo.group_excavator_dict)
logger.info(DispatchInfo.group_dump_dict)
logger.info("group_unload_area_dict")
logger.info(DispatchInfo.group_unload_area_dict)
logger.info("group_truck_dict")
logger.info(DispatchInfo.group_truck_dict)
logger.info("group_mode")
logger.info(DispatchInfo.group_mode)
logger.info("load_distance")
logger.info(DispatchInfo.load_distance)
logger.info("unload_distance")
logger.info(DispatchInfo.unload_distance)
logger.info(DispatchInfo.load_excavator_dict)
logger.info(DispatchInfo.excavator_load_dict)
logger.info(DispatchInfo.excavator_group_dict)
logger.info(DispatchInfo.dump_group_dict)
logger.info(DispatchInfo.truck_group_dict)
# logger.info("load_excavator_dict")
# logger.info(DispatchInfo.load_excavator_dict)
# logger.info("excavator_load_dict")
# logger.info(DispatchInfo.excavator_load_dict)
# logger.info(DispatchInfo.excavator_group_dict)
# logger.info(DispatchInfo.dump_group_dict)
# logger.info(DispatchInfo.truck_group_dict)
# 调度生成
dispatcher.period_update()
......
......@@ -152,7 +152,8 @@ def update_deveices_map(unload_area_uuid_to_index_dict, load_area_uuid_to_index_
excavator_num = 0
dump_num = 0
for item in (
session_mysql.query(DispatchSetting).filter_by(isdeleted=0, isauto=1).all()
# session_mysql.query(DispatchSetting).filter_by(isdeleted=0, isauto=1).all()
session_mysql.query(DispatchSetting).filter_by(isdeleted=0).all()
):
# excavator_id <-> excavator_index
# dump_id <-> dump_index
......@@ -227,7 +228,6 @@ def update_truck_uuid_index_map(dynamic_truck_set):
"truck_index_to_uuid_dict": truck_index_to_uuid_dict,
}
def update_total_truck():
# 矿卡集合
truck_list = []
......@@ -238,13 +238,11 @@ def update_total_truck():
.filter_by(device_type=1, isdeleted=0)
.all()
)
# for item in query:
# json_value = json.loads(redis2.get(item.equipment_id))
# is_online = json_value.get('isOnline')
# if is_online:
# truck_list.append(item.id)
for item in query:
truck_list.append(item.id)
......@@ -281,9 +279,8 @@ def update_dynamic_truck():
query = np.array(
session_mysql.query(DispatchSetting).filter_by(isdeleted=0).all()
)
for item in query:
if item.truck_id is not None:
if item.truck_id is not None and item.truck_id not in dynamic_truck_list:
dynamic_truck_list.append(item.truck_id)
except Exception as es:
......@@ -337,10 +334,9 @@ def update_autodisp_excavator():
# 用于动态派车的挖机集合
dynamic_excavator_list = []
try:
for item in (
session_mysql.query(DispatchSetting).filter_by().all()
):
dynamic_excavator_list.append(item.exactor_id)
for item in (session_mysql.query(DispatchSetting).filter_by().all()):
if item.exactor_id not in dynamic_excavator_list:
dynamic_excavator_list.append(item.exactor_id)
if len(dynamic_excavator_list) < 1:
raise Exception("无动态派车计划可用-动态派车挖机/卸载设备集合读取异常")
except Exception as es:
......@@ -355,10 +351,9 @@ def update_autodisp_dump():
# 用于动态调度的卸载点集合
dynamic_dump_list = []
try:
for item in (
session_mysql.query(DispatchSetting).filter_by().all()
):
dynamic_dump_list.append(item.dump_id)
for item in (session_mysql.query(DispatchSetting).filter_by().all()):
if item.dump_id not in dynamic_dump_list:
dynamic_dump_list.append(item.dump_id)
if len(dynamic_dump_list) < 1:
raise Exception("无动态派车计划可用-动态派车挖机/卸载设备集合读取异常")
except Exception as es:
......
......@@ -17,11 +17,11 @@ class DispatchInfo:
group_set = set()
# device group structure
group_dump_dict = {} # team_id -> dict {[dump_id, unload_area_id], [dump_id, unload_area_id], ...}
group_unload_area_dict = {} # team_id -> dict {[unload_area_id, unload_area_id], [unload_area_id, unload_area_id], ...}
group_excavator_dict = {} # team_id -> dict {[excavator_id, load_area_id], ...}
group_truck_dict = {} # team_id -> dict {truck_id, ...}
dump_group_dict = {} # dump_id -> team_id
unload_area_group_dict = {} # unload_area_id -> team_id
excavator_group_dict = {} # excavator_id -> team_id
truck_group_dict = {} # truck_id -> team_id
......
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