Commit b6c1a234 authored by 张晓彤's avatar 张晓彤

修复行程异常BUG

parent f9f2cf59
...@@ -365,8 +365,6 @@ class TruckInfo(WalkManage): ...@@ -365,8 +365,6 @@ class TruckInfo(WalkManage):
def update_eqp_hold_truck(self): def update_eqp_hold_truck(self):
# 初始化矿卡行程, -1代表备停区
self.truck_current_trip = np.full((self.dynamic_truck_num, 2), -1)
for i in range(self.dynamic_truck_num): for i in range(self.dynamic_truck_num):
try: try:
session_mysql.commit() session_mysql.commit()
...@@ -742,10 +740,9 @@ class TruckInfo(WalkManage): ...@@ -742,10 +740,9 @@ class TruckInfo(WalkManage):
if rule7: if rule7:
logger.info("物料优先级规则未启用") logger.info("物料优先级规则未启用")
else: else:
logger.info("物料优先级规则启用")
# 更新矿卡物料类型 # 更新矿卡物料类型
self.update_truck_material() self.update_truck_material()
logger.info("物料优先级规则启用")
......
...@@ -41,11 +41,15 @@ class PathPlanner(WalkManage): ...@@ -41,11 +41,15 @@ class PathPlanner(WalkManage):
self.num_of_unload_area = len(set(update_unload_area())) self.num_of_unload_area = len(set(update_unload_area()))
# 备停区数量 # 备停区数量
self.num_of_park_area = len(set(update_park_area())) self.num_of_park_area = len(set(update_park_area()))
# 路网行驶成本信息信息 # 路网行驶成本信息
self.cost_to_load_area = np.full((self.num_of_unload_area, self.num_of_load_area), M) self.cost_to_load_area = np.full((self.num_of_unload_area, self.num_of_load_area), M)
self.cost_to_unload_area = np.full((self.num_of_unload_area, self.num_of_load_area), M) self.cost_to_unload_area = np.full((self.num_of_unload_area, self.num_of_load_area), M)
# 路网信息(备停区) # 路网信息(备停区)
self.cost_park_to_load_area = np.full((self.num_of_park_area, self.num_of_load_area), M) self.cost_park_to_load_area = np.full((self.num_of_park_area, self.num_of_load_area), M)
# 设备路网成本信息
self.cost_to_excavator = np.zeros_like(get_value("distance_to_excavator"))
self.cost_to_dump = np.zeros_like(get_value("distance_to_dump"))
self.cost_park_to_excavator = np.zeros_like(get_value("distance_park_to_excavator"))
def path_cost_generate(self, load_area_id, unload_area_id, is_park): def path_cost_generate(self, load_area_id, unload_area_id, is_park):
...@@ -182,11 +186,11 @@ class PathPlanner(WalkManage): ...@@ -182,11 +186,11 @@ class PathPlanner(WalkManage):
logger.error('路网信息计成本计算异常') logger.error('路网信息计成本计算异常')
logger.error(es) logger.error(es)
cost_to_excavator = np.zeros_like(get_value("distance_to_excavator")) self.cost_to_excavator = np.zeros_like(get_value("distance_to_excavator"))
print("distance_to_excavator") print("distance_to_excavator")
print(cost_to_excavator) print(self.cost_to_excavator)
cost_to_dump = np.zeros_like(get_value("distance_to_dump")) self.cost_to_dump = np.zeros_like(get_value("distance_to_dump"))
cost_park_to_excavator = np.zeros_like(get_value("distance_park_to_excavator")) self.cost_park_to_excavator = np.zeros_like(get_value("distance_park_to_excavator"))
logger.info("distance_park_to_excavator") logger.info("distance_park_to_excavator")
logger.info(self.distance_park_to_excavator) logger.info(self.distance_park_to_excavator)
...@@ -214,14 +218,13 @@ class PathPlanner(WalkManage): ...@@ -214,14 +218,13 @@ class PathPlanner(WalkManage):
load_area_index = self.excavator_index_to_load_area_index_dict[j] load_area_index = self.excavator_index_to_load_area_index_dict[j]
unload_area_index = self.dump_index_to_unload_area_index_dict[i] unload_area_index = self.dump_index_to_unload_area_index_dict[i]
logger.info("cost_to_excavator") logger.info("cost_to_excavator")
logger.info(cost_to_excavator) logger.info(self.cost_to_excavator)
print(i, j) self.cost_to_excavator[i][j] = self.cost_to_load_area[unload_area_index][load_area_index] / walk_weight[i][j] + group_walk_available[i][j]
cost_to_excavator[i][j] = self.cost_to_load_area[unload_area_index][load_area_index] / walk_weight[i][j] + group_walk_available[i][j] self.cost_to_dump[i][j] = self.cost_to_unload_area[unload_area_index][load_area_index] / walk_weight[i][j] + walk_available[i][j] + group_walk_available[i][j]
cost_to_dump[i][j] = self.cost_to_unload_area[unload_area_index][load_area_index] / walk_weight[i][j] + walk_available[i][j] + group_walk_available[i][j]
for j in range(get_value("dynamic_excavator_num")): for j in range(get_value("dynamic_excavator_num")):
load_area_index = self.excavator_index_to_load_area_index_dict[j] load_area_index = self.excavator_index_to_load_area_index_dict[j]
cost_park_to_excavator[0][j] = self.cost_park_to_load_area[0][load_area_index] / park_walk_weight[0][j] self.cost_park_to_excavator[0][j] = self.cost_park_to_load_area[0][load_area_index] / park_walk_weight[0][j]
logger.info("真实路网距离-驶往挖机:") logger.info("真实路网距离-驶往挖机:")
logger.info(self.distance_to_excavator) logger.info(self.distance_to_excavator)
...@@ -233,15 +236,15 @@ class PathPlanner(WalkManage): ...@@ -233,15 +236,15 @@ class PathPlanner(WalkManage):
logger.info(self.distance_park_to_excavator) logger.info(self.distance_park_to_excavator)
logger.info("阻塞路网距离-驶往挖机:") logger.info("阻塞路网距离-驶往挖机:")
logger.info(cost_to_excavator) logger.info(self.cost_to_excavator)
logger.info("阻塞路网距离-驶往卸点:") logger.info("阻塞路网距离-驶往卸点:")
logger.info(cost_to_dump) logger.info(self.cost_to_dump)
logger.info("阻塞备停区路网距离-驶往挖机:") logger.info("阻塞备停区路网距离-驶往挖机:")
logger.info(cost_park_to_excavator) logger.info(self.cost_park_to_excavator)
return cost_to_excavator, cost_to_dump, cost_park_to_excavator return self.cost_to_excavator, self.cost_to_dump, self.cost_park_to_excavator
class LaneInfo: class LaneInfo:
......
...@@ -378,11 +378,6 @@ class Dispatcher(WalkManage): ...@@ -378,11 +378,6 @@ class Dispatcher(WalkManage):
truck.state_period_update() truck.state_period_update()
print("test_truck")
print(truck.dynamic_truck_set)
print(truck.truck_current_task)
print(truck.truck_uuid_to_index_dict)
# 更新实时车流 # 更新实时车流
self.update_actual_traffic_flow() self.update_actual_traffic_flow()
...@@ -1367,7 +1362,7 @@ def process(dispatcher): ...@@ -1367,7 +1362,7 @@ def process(dispatcher):
# except Exception as es: # except Exception as es:
# logger.error(es) # logger.error(es)
period_para_update()
scheduler = sched.scheduler(time.time, time.sleep) scheduler = sched.scheduler(time.time, time.sleep)
dispatcher = Dispatcher() dispatcher = Dispatcher()
......
...@@ -136,10 +136,16 @@ def update_deveices_map(unload_area_uuid_to_index_dict, load_area_uuid_to_index_ ...@@ -136,10 +136,16 @@ def update_deveices_map(unload_area_uuid_to_index_dict, load_area_uuid_to_index_
if excavator_num < 1 or dump_num < 1: if excavator_num < 1 or dump_num < 1:
raise Exception("无动态派车计划可用-动态派车挖机/卸载设备映射失败") raise Exception("无动态派车计划可用-动态派车挖机/卸载设备映射失败")
except Exception as es: except Exception as es:
logger.warning(es) logger.error("卸载区信息异常")
logger.error(es)
logger.info("excavator_index_to_load_area_index_dict")
logger.info(excavator_index_to_load_area_index_dict)
print("static_excavator_uuid_to_index_dict") logger.info("load_area_uuid_to_index_dict")
print(excavator_uuid_to_index_dict) logger.info(load_area_uuid_to_index_dict)
logger.info("static_excavator_uuid_to_index_dict")
logger.info(excavator_uuid_to_index_dict)
return { return {
"excavator_uuid_to_index_dict": excavator_uuid_to_index_dict, "excavator_uuid_to_index_dict": excavator_uuid_to_index_dict,
...@@ -164,9 +170,8 @@ def update_truck_uuid_index_map(dynamic_truck_set): ...@@ -164,9 +170,8 @@ def update_truck_uuid_index_map(dynamic_truck_set):
truck_index_to_uuid_dict[truck_num] = truck_id truck_index_to_uuid_dict[truck_num] = truck_id
truck_num = truck_num + 1 truck_num = truck_num + 1
print(dynamic_truck_set) logger.info("static_data_process.py-truck_uuid_to_index_dict")
print("static-truck_uuid_to_index_dict") logger.info(truck_uuid_to_index_dict)
print(truck_uuid_to_index_dict)
return { return {
"truck_uuid_to_index_dict": truck_uuid_to_index_dict, "truck_uuid_to_index_dict": truck_uuid_to_index_dict,
......
...@@ -130,27 +130,49 @@ class Traffic_para(WalkManage): ...@@ -130,27 +130,49 @@ class Traffic_para(WalkManage):
logger.error("挖机信息设置异常") logger.error("挖机信息设置异常")
def extract_walk_time_info(self): def extract_walk_time_info(self):
# try:
# # 车流规划部分矩阵格式与其余两个模块不同
# cost_to_load_area = self.path_planner.cost_to_load_area
# cost_to_unload_area = self.path_planner.cost_to_unload_area
#
# distance_to_load_area = self.path_planner.distance_to_load_area
# distance_to_unload_area = self.path_planner.distance_to_unload_area
#
# # 路网信息读取
# for unload_area_index in range(unload_area_num):
# for load_area_index in range(load_area_num):
# self.goto_load_area_factor[unload_area_index][load_area_index] = \
# (cost_to_load_area[unload_area_index][load_area_index] / (empty_speed * 1000)) / self.payload
#
# self.goto_unload_area_factor[load_area_index][unload_area_index] = \
# (cost_to_unload_area[unload_area_index][load_area_index] / (heavy_speed * 1000)) / self.payload
#
# logger.info("goto_unload_area_factor")
# logger.info(self.goto_unload_area_factor)
# logger.info("cost_to_unload_area")
# logger.info(cost_to_unload_area)
# except Exception as es:
# logger.error(es)
# logger.error("车流规划信息计算异常")
try: try:
# 车流规划部分矩阵格式与其余两个模块不同 # 车流规划部分矩阵格式与其余两个模块不同
cost_to_load_area = self.path_planner.cost_to_load_area cost_to_dump = self.path_planner.cost_to_dump
cost_to_unload_area = self.path_planner.cost_to_unload_area cost_to_excavator = self.path_planner.cost_to_excavator
distance_to_load_area = self.path_planner.distance_to_load_area
distance_to_unload_area = self.path_planner.distance_to_unload_area
# 路网信息读取 # 路网信息读取
for unload_area_index in range(unload_area_num): for dump_index in range(get_value("dynamic_dump_num")):
for load_area_index in range(load_area_num): for excavator_index in range(get_value("dynamic_excavator_num")):
self.goto_load_area_factor[unload_area_index][load_area_index] = \ self.goto_excavator_factor[dump_index][excavator_index] = \
(cost_to_load_area[unload_area_index][load_area_index] / (empty_speed * 1000)) / self.payload (cost_to_excavator[dump_index][excavator_index] / (empty_speed * 1000)) / self.payload
self.goto_unload_area_factor[load_area_index][unload_area_index] = \ self.goto_dump_factor[excavator_index][dump_index] = \
(cost_to_unload_area[unload_area_index][load_area_index] / (heavy_speed * 1000)) / self.payload (cost_to_dump[excavator_index][dump_index] / (heavy_speed * 1000)) / self.payload
logger.info("goto_unload_area_factor") logger.info("self.goto_dump_factor")
logger.info(self.goto_unload_area_factor) logger.info(self.goto_dump_factor)
logger.info("cost_to_unload_area") logger.info("self.goto_dump_factor")
logger.info(cost_to_unload_area) logger.info(self.goto_dump_factor)
except Exception as es: except Exception as es:
logger.error(es) logger.error(es)
logger.error("车流规划信息计算异常") logger.error("车流规划信息计算异常")
...@@ -193,25 +215,20 @@ def Traffic_para_init(num_of_load_area, num_of_unload_area, num_of_excavator, nu ...@@ -193,25 +215,20 @@ def Traffic_para_init(num_of_load_area, num_of_unload_area, num_of_excavator, nu
# 计算逻辑道路因子 # 计算逻辑道路因子
print("here4") # for i in range(num_of_excavator):
print(num_of_dump) # for j in range(num_of_dump):
# # 查找挖机绑定的装载区, 卸载设备绑定的卸载区
for i in range(num_of_excavator): # load_area_index = tra_para.excavator_index_to_load_area_index_dict[i]
for j in range(num_of_dump): # unload_area_index = tra_para.dump_index_to_unload_area_index_dict[j]
# 查找挖机绑定的装载区, 卸载设备绑定的卸载区 #
load_area_index = tra_para.excavator_index_to_load_area_index_dict[i] # # 逻辑道路因子赋值, 来自实际道路因子
unload_area_index = tra_para.dump_index_to_unload_area_index_dict[j] # tra_para.goto_excavator_factor[j][i] = \
# tra_para.goto_load_area_factor[unload_area_index][load_area_index]
# 逻辑道路因子赋值, 来自实际道路因子 #
tra_para.goto_excavator_factor[j][i] = \ # tra_para.goto_dump_factor[i][j] = \
tra_para.goto_load_area_factor[unload_area_index][load_area_index] # tra_para.goto_unload_area_factor[load_area_index][unload_area_index]
tra_para.goto_dump_factor[i][j] = \
tra_para.goto_unload_area_factor[load_area_index][unload_area_index]
# print("cout", tra_para.priority_coefficient_goto_dump, tra_para.priority_coefficient_goto_excavator)
# except Exception as es: # except Exception as es:
# logger.error(es) # logger.error(es)
# logger.error("车流规划类初始化异常") # logger.error("车流规划类初始化异常")
return tra_para return tra_para
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