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

代码优化

parent de8e769f
......@@ -16,9 +16,9 @@ class ExcavatorInfo(WalkManage):
# # 挖机集合
# self.dynamic_excavator_set = set(update_autodisp_excavator())
# 装载设备数量
self.dynamic_excavator_num = len(dynamic_excavator_set)
self.dynamic_excavator_num = get_value("dynamic_excavator_num")
# 用于动态调度的卸载设备集合
self.dynamic_excavator_set = []
self.dynamic_excavator_set = get_value("dynamic_excavator_set")
# 开始时间
self.start_time = datetime.now()
# 装载时间
......@@ -141,7 +141,7 @@ class ExcavatorInfo(WalkManage):
logger.info("dynamic_excavator_set")
logger.info(self.dynamic_excavator_set)
for excavator_id in self.dynamic_excavator_set:
for excavator_id in get_value("dynamic_excavator_set"):
item = session_mysql.query(Equipment).filter_by(id=excavator_id).first()
logger.info("excavator_priority_coefficient")
logger.info(self.excavator_priority_coefficient)
......@@ -194,14 +194,17 @@ class ExcavatorInfo(WalkManage):
logger.info(rule7)
# 装载周期参数
self.period_map_para_update()
self.period_map_para_load()
self.period_walk_para_update()
print("truck.excavator_uuid_index_dict")
print(self.excavator_uuid_to_index_dict)
# 用于动态调度的挖机设备
self.dynamic_excavator_set = set(update_autodisp_excavator())
self.period_walk_para_load()
self.dynamic_excavator_num = len(self.dynamic_excavator_set)
# # 用于动态调度的挖机设备
# self.dynamic_excavator_set = set(update_autodisp_excavator())
#
# self.dynamic_excavator_num = len(self.dynamic_excavator_set)
# 计算平均装载时间
self.update_excavator_loadtime()
......
......@@ -132,6 +132,12 @@ class TruckInfo(WalkManage):
self.truck_current_task = {}
device_name_set = redis2.keys()
print("tast_truck_set")
print(get_value("dynamic_truck_set")) ## 两个
print(self.dynamic_truck_set)
print(self.truck_uuid_to_index_dict)
for item in device_name_set:
try:
item = item.decode(encoding="utf-8")
......@@ -150,6 +156,23 @@ class TruckInfo(WalkManage):
logger.info("矿卡当前任务:")
logger.info(self.truck_current_task)
# self.truck_current_task = {}
#
# dynamic_truck_set = get_value("dynamic_truck_set")
#
# for item in dynamic_truck_set:
# # try:
# # item = item.decode(encoding="utf-8")
# key_value_dict = redis2.hgetall(item) # reids str可以自动转为bytes
# currentTask = int(key_value_dict[str_to_byte("currentTask")])
# self.truck_current_task[item] = currentTask
# # except Exception as es:
# # logger.error("读取矿卡任务异常-reids读取异常")
# # logger.error(es)
#
# logger.info("矿卡当前任务:")
# logger.info(self.truck_current_task)
# 更新矿卡最后装载/卸载时间
def update_truck_last_leave_time(self):
self.last_load_time = {}
......@@ -500,6 +523,8 @@ class TruckInfo(WalkManage):
def update_truck_material(self):
try:
self.truck_material_bind = {}
self.update_truck_excavator_bind()
self.update_truck_dump_area_bind()
......@@ -540,6 +565,9 @@ class TruckInfo(WalkManage):
dump_index = self.dump_uuid_to_index_dict[dump_id]
if dump_material_id != material:
self.dump_material_bind_modify[truck_index][dump_index] = 1000000
except Exception as es:
logger.error(es)
logger.error("矿卡物料更新异常")
def update_truck_spec(self):
for truck_id in self.dynamic_truck_set:
......@@ -621,6 +649,54 @@ class TruckInfo(WalkManage):
# 设备优先级启用
rule6 = session_mysql.query(DispatchRule).filter_by(id=6).first().disabled
# logger.info("Para truck update!")
#
# # 装载周期参数
# self.period_map_para_load()
#
# self.period_walk_para_load()
#
# # 更新有效载重
# self.update_truck_payload()
#
# logger.info("距离成本规则")
# logger.info(rule1)
#
# logger.info("拥堵成本规则")
# logger.info(rule2)
#
# logger.info("车流规划规则")
# logger.info(rule3 or rule4)
#
# logger.info("生产组织规则")
# logger.info(rule5)
#
# logger.info("设备优先级规则")
# logger.info(rule6)
#
# if not rule5:
# # 更新绑定关系
# self.update_truck_dump_area_bind()
#
# self.update_truck_excavator_bind()
#
# # 更新禁止关系
# self.update_truck_excavator_exclude()
#
# if not rule6:
# # 更新矿卡调度优先级
# self.update_truck_priority()
#
# # # 更新矿卡group
# # self.update_truck_group()
#
# # 更新矿卡物料类型
# self.update_truck_material()
# 物料优先级启用
rule7 = session_mysql.query(DispatchRule).filter_by(id=7).first().disabled
logger.info("Para truck update!")
# 装载周期参数
......@@ -631,39 +707,47 @@ class TruckInfo(WalkManage):
# 更新有效载重
self.update_truck_payload()
logger.info("距离成本规则")
logger.info(rule1)
logger.info("拥堵成本规则")
logger.info(rule2)
logger.info("车流规划规则")
logger.info(rule3 or rule4)
if rule1:
logger.info("距离成本规则未启用")
else:
logger.info("距离成本规则启用")
logger.info("生产组织规则")
logger.info(rule5)
if rule2:
logger.info("拥堵成本规则未启用")
else:
logger.info("拥堵成本规则启用")
logger.info("设备优先级规则")
logger.info(rule6)
if rule3 or rule4:
logger.info("车流规划规则未启用")
else:
logger.info("车流规划规则启用")
if not rule5:
if rule5:
logger.info("生产组织规则未启用")
else:
# 更新绑定关系
self.update_truck_dump_area_bind()
self.update_truck_excavator_bind()
# 更新禁止关系
self.update_truck_excavator_exclude()
logger.info("生产组织规划规则启用")
if not rule6:
if rule6:
logger.info("设备优先级规则未启用")
else:
# 更新矿卡调度优先级
self.update_truck_priority()
logger.info("设备优先级规则启用")
# # 更新矿卡group
# self.update_truck_group()
if rule7:
logger.info("物料优先级规则未启用")
else:
# 更新矿卡物料类型
self.update_truck_material()
logger.info("物料优先级规则启用")
def state_period_update(self):
......
......@@ -174,6 +174,10 @@ class DeviceMap:
self.excavator_uuid_to_index_dict = device_map_dict[
"excavator_uuid_to_index_dict"
]
print("device.dump_uuid_to_index_dict")
print(self.dump_uuid_to_index_dict)
self.dump_uuid_to_index_dict = device_map_dict["dump_uuid_to_index_dict"]
self.excavator_index_to_uuid_dict = device_map_dict[
"excavator_index_to_uuid_dict"
......@@ -286,9 +290,9 @@ class WalkManage(DeviceMap):
def reset(self):
dynamic_excavator_num = get_value("dynamic_excavator_num")
dynamic_dump_num = get_value("dynamic_dump_num")
park_num = get_value("park_num")
# dynamic_excavator_num
# dynamic_dump_num
# park_num
# 路网真实距离
self.walk_time_to_excavator = np.full(
......@@ -492,6 +496,15 @@ def period_para_update():
global_dict["dynamic_dump_num"] = dynamic_dump_num
global_dict["park_num"] = park_num
print("walk_manage.distance_to_excavator")
print(dynamic_dump_num, dynamic_excavator_num)
print(walk_manage.distance_to_excavator)
print("walk_manage.excavator_dict")
print(walk_manage.excavator_uuid_to_index_dict)
print("walk_manage.dump_dict")
print(walk_manage.dump_uuid_to_index_dict)
global_dict["distance_to_excavator"] = walk_manage.distance_to_excavator
global_dict["distance_park_to_excavator"] = walk_manage.distance_park_to_excavator
global_dict["distance_to_dump"] = walk_manage.distance_to_dump
......@@ -509,3 +522,8 @@ def period_para_update():
logger.info(walk_manage.dump_uuid_to_index_dict)
logger.info("walk_manage.distance_park_to_excavator")
logger.info(walk_manage.distance_park_to_excavator)
logger.info("walk_manage.truck_index_to_uuid_dict")
logger.info(walk_manage.truck_index_to_uuid_dict)
logger.info("walk_manage.dynamic_truck_set")
logger.info(dynamic_truck_set)
......@@ -145,10 +145,20 @@ class PathPlanner(WalkManage):
def walk_cost(self):
self.excavator.para_period_update()
self.dump.para_period_update()
self.truck.para_period_update(self.dump, self.excavator)
self.truck.state_period_update()
self.period_walk_para_load()
self.period_map_para_load()
self.controller.period_update(self.dump, self.excavator, self.truck)
# 计算行驶成本前,更新路网速度信息
self.lane.lane_speed_generate()
......@@ -173,6 +183,8 @@ class PathPlanner(WalkManage):
logger.error(es)
cost_to_excavator = np.zeros_like(get_value("distance_to_excavator"))
print("distance_to_excavator")
print(cost_to_excavator)
cost_to_dump = np.zeros_like(get_value("distance_to_dump"))
cost_park_to_excavator = np.zeros_like(get_value("distance_park_to_excavator"))
......@@ -203,6 +215,7 @@ class PathPlanner(WalkManage):
unload_area_index = self.dump_index_to_unload_area_index_dict[i]
logger.info("cost_to_excavator")
logger.info(cost_to_excavator)
print(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]
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]
......
......@@ -20,6 +20,12 @@ class PriorityController():
self.excavator = excavator
self.truck = truck
def period_update(self, dump, excavator, truck):
# 设备类
self.dump = dump
self.excavator = excavator
self.truck = truck
def weighted_walk_cost(self):
dynamic_dump_num = get_value("dynamic_dump_num")
dynamic_excavator_num = get_value("dynamic_excavator_num")
......@@ -54,9 +60,13 @@ class PriorityController():
excavator_material_priority[excavator_inedx]
park_walk_weight = park_walk_weight * self.excavator.excavator_material_priority
try:
walk_weight = walk_weight - (walk_weight.min() - 1)
park_walk_weight = park_walk_weight - (park_walk_weight.min() - 1)
except Exception as es:
logger.errro(es)
logger.error("数值异常")
return walk_weight, park_walk_weight
......@@ -67,12 +77,20 @@ class PriorityController():
dynamic_excavator_set = get_value("dynamic_excavator_set")
walk_weight = np.zeros((dynamic_dump_num, dynamic_excavator_num))
print("here")
print(dynamic_dump_set)
try:
for dump_id in dynamic_dump_set:
for excavator_id in dynamic_excavator_set:
dump_index = self.dump.dump_uuid_to_index_dict[dump_id]
excavator_inedx = self.excavator.excavator_uuid_to_index_dict[excavator_id]
if self.excavator.excavator_material[excavator_id] != self.dump.dump_material[dump_id]:
walk_weight[dump_index][excavator_inedx] += 1000000
except Exception as es:
logger.info(es)
logger.info("error-12")
return walk_weight
......
......@@ -226,8 +226,9 @@ class Dispatcher(WalkManage):
truck_current_trip = truck.get_truck_current_trip()
payload = truck.get_payload()
dynamic_dump_num = dump.get_dump_num()
dynamic_excavator_num = excavator.get_excavator_num()
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(
......@@ -241,6 +242,14 @@ class Dispatcher(WalkManage):
)
# try:
logger.info("dynamic_truck_num")
logger.info(dynamic_truck_num)
print("truck.truck_index_to_uuid_dict")
print(truck.truck_index_to_uuid_dict)
print("truck_current_task")
print(truck_current_task)
for i in range(dynamic_truck_num):
task = truck_current_task[truck.truck_index_to_uuid_dict[i]]
......@@ -351,12 +360,7 @@ class Dispatcher(WalkManage):
logger.info("驶往挖机实际车流")
logger.info(self.actual_goto_excavator_traffic_flow)
def para_period_update(self):
logger.info("#####################################周期更新开始#####################################")
# 调度分组更新
self.group.period_update()
def dispatcher_period_update(self):
# 装载映射参数及
self.period_map_para_load()
......@@ -372,11 +376,13 @@ class Dispatcher(WalkManage):
# 更新矿卡对象
truck.para_period_update(dump, excavator)
def state_period_update(self):
# try:
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()
......@@ -394,9 +400,8 @@ class Dispatcher(WalkManage):
self.cost_to_excavator, self.cost_to_dump, self.cost_park_to_excavator = self.path.walk_cost()
# except Exception as es:
# logger.error("周期更新异常")
# logger.error(es)
# 调度分组更新
self.group.period_update()
def sim_para_reset(self):
......@@ -805,10 +810,10 @@ class Dispatcher(WalkManage):
print("self.cur_truck_ava_time", self.cur_truck_ava_time)
# try:
try:
# 读取所需信息
trucks = truck.get_truck_num()
dynamic_truck_num = get_value("dynamic_truck_num")
truck_current_trip = truck.get_truck_current_trip()
truck_current_task = truck.get_truck_current_task()
payload = truck.get_payload()
......@@ -823,7 +828,7 @@ class Dispatcher(WalkManage):
walk_time_to_load_area = walk_manage.get_walk_time_to_load_area()
# Seq初始化
Seq = [[truck_current_trip[i][1], -1] for i in range(trucks)]
Seq = [[truck_current_trip[i][1], -1] for i in range(dynamic_truck_num)]
# 根据矿卡最早可用时间顺序进行规划
print(self.cur_truck_ava_time)
......@@ -832,7 +837,7 @@ class Dispatcher(WalkManage):
try:
# 没有启动的矿卡加上一个很大的值,降低其优先级
for i in range(trucks):
for i in range(dynamic_truck_num):
task = truck_current_task[truck.truck_index_to_uuid_dict[i]]
if task == -2:
temp[i] = temp[i] + M
......@@ -847,7 +852,7 @@ class Dispatcher(WalkManage):
for truck_index in index:
if len(Seq[truck_index]) > 0:
# try:
try:
# 获取矿卡id
truck_id = truck.truck_index_to_uuid_dict[truck_index]
......@@ -873,9 +878,10 @@ class Dispatcher(WalkManage):
logger.error("非动态调度矿卡")
logger.error(es)
# except Exception as es:
except Exception as es:
# logger.error(f'矿卡 {truck_uuid_to_name_dict[self.truck_index_to_uuid_dict[truck_index]]} 派车计划计算异常')
# logger.error(es)
logger.error(f'矿卡派车计划计算异常')
logger.error(es)
try:
......@@ -911,7 +917,7 @@ class Dispatcher(WalkManage):
logger.error(es)
for i in range(len(Seq)):
# try:
try:
truck_id = truck.truck_index_to_uuid_dict[i]
group_id = self.group.dispatch_truck_group[truck_id]
......@@ -970,19 +976,17 @@ class Dispatcher(WalkManage):
pass
redis5.set(truck.truck_index_to_uuid_dict[i], str(json.dumps(record)))
# except Exception as es:
# logger.error("调度结果写入异常-redis写入异常")
# logger.error(f"调度结果:{Seq}")
# logger.error(es)
except Exception as es:
logger.error("调度结果写入异常-redis写入异常")
logger.error(f"调度结果:{Seq}")
logger.error(es)
for i in range(trucks):
for i in range(dynamic_truck_num):
print("dispatch_setting:")
print(redis5.get(truck.truck_index_to_uuid_dict[i]))
# except Exception as es:
# logger.error("更新不及时")
# logger.error(es)
logger.info("#####################################周期更新结束#####################################")
except Exception as es:
logger.error("更新不及时-1")
logger.error(es)
return Seq
......@@ -1017,16 +1021,22 @@ class Group(WalkManage):
# 更新矿卡-调度分组隶属关系
self.dispatch_truck_group = {}
dynamic_truck_set = get_value("dynamic_truck_set")
print("dispatch_truck_group-dynamic_truck_set")
print(dynamic_truck_set)
# 动态派车数量没变,但是此时某条派车计划被删除,dispatch_truck_group 就会缺失矿卡
for truck_id in dynamic_truck_set:
item = session_mysql.query(Dispatch).filter_by(truck_id=truck_id, isauto=1, isdeleted=0).first()
if item is None:
print(truck_id)
continue
self.dispatch_truck_group[truck_id] = item.group_id
print(self.dispatch_truck_group)
def update_group_set(self):
# 更新调度组
self.group_set = set()
for item in session_mysql.query(Dispatch).all():
for item in session_mysql.query(Dispatch).filter_by(isauto=1, isdeleted=0).all():
if item.group_id is not None:
self.group_set.add(item.group_id)
self.group_num = len(self.group_set)
......@@ -1035,7 +1045,10 @@ class Group(WalkManage):
# 更新设备分组group_id -> {set(dump_id), set(excavator_id)}
self.device_group = {}
for group_id in self.get_group_set():
if group_id not in self.device_group:
self.device_group[group_id] = [set(), set()]
else:
continue
for item in session_mysql.query(Dispatch).filter_by(group_id=group_id, isauto=1, isdeleted=0).all():
self.device_group[group_id][0].add(item.dump_id)
self.device_group[group_id][1].add(item.exactor_id)
......@@ -1053,9 +1066,15 @@ class Group(WalkManage):
# try:
print("uuid_to_index_dict")
print(dump.dump_uuid_to_index_dict)
print(excavator.excavator_uuid_to_index_dict)
for group_id in self.group_set:
dump_group = self.device_group[group_id][0]
excavator_group = self.device_group[group_id][1]
print("group")
print(self.device_group)
local_opt_goto_dump_traffic_flow = np.zeros((len(excavator_group), len(dump_group)))
local_opt_goto_excavator_traffic_flow = np.zeros((len(dump_group), len(excavator_group)))
local_actual_goto_dump_traffic_flow = np.zeros((len(excavator_group), len(dump_group)))
......@@ -1065,7 +1084,7 @@ class Group(WalkManage):
dump_group_index = self.group_dump_uuid_to_index_dict[group_id][dump_id]
excavator_group_index = self.group_excavator_uuid_to_index_dict[group_id][excavator_id]
local_opt_goto_dump_traffic_flow[excavator_group_index][dump_group_index] = \
opt_goto_dump_traffic_flow[dump.excavator_uuid_to_index_dict[excavator_id]][dump.dump_uuid_to_index_dict[dump_id]]
opt_goto_dump_traffic_flow[excavator.excavator_uuid_to_index_dict[excavator_id]][dump.dump_uuid_to_index_dict[dump_id]]
local_opt_goto_excavator_traffic_flow[dump_group_index][excavator_group_index] = \
opt_goto_excavator_traffic_flow[dump.dump_uuid_to_index_dict[dump_id]][excavator.excavator_uuid_to_index_dict[excavator_id]]
......@@ -1094,7 +1113,7 @@ class Group(WalkManage):
walk_to_excavator_cost, walk_to_dump_cost, park_to_excavator_cost = self.path.walk_cost()
# try:
try:
for group_id in self.group_set:
dump_group = self.device_group[group_id][0]
......@@ -1106,6 +1125,8 @@ class Group(WalkManage):
for dump_id in dump_group:
dump_group_index = self.group_dump_uuid_to_index_dict[group_id][dump_id]
excavator_group_index = self.group_excavator_uuid_to_index_dict[group_id][excavator_id]
print("dump_group")
print(dump_group)
local_walk_to_excavator_cost[dump_group_index][excavator_group_index] = \
walk_to_excavator_cost[dump.dump_uuid_to_index_dict[dump_id]][excavator.excavator_uuid_to_index_dict[excavator_id]]
......@@ -1121,8 +1142,9 @@ class Group(WalkManage):
self.group_walk_to_excavator_cost[group_id] = local_walk_to_excavator_cost
self.group_walk_to_dump_cost[group_id] = local_walk_to_dump_cost
self.group_park_to_excavator[group_id] = local_park_to_excavator_cost
# except Exception as es:
# logger.info(es)
except Exception as es:
logger.info(es)
logger.info("error-11")
def update_group_device_map(self):
# 更新调度分组内设备映射
......@@ -1162,6 +1184,16 @@ class Group(WalkManage):
logger.info(self.group_excavator_uuid_to_index_dict)
def update_modify(self):
try:
dynamic_truck_set = get_value("dynamic_truck_set")
print("update_modify")
print(dynamic_truck_set)
print("self.dispatch_truck_group")
print(self.dispatch_truck_group)
self.group_excavator_exclude_modify = {}
self.group_excavator_material_bind_modify = {}
self.group_dump_material_bind_modify = {}
......@@ -1191,6 +1223,9 @@ class Group(WalkManage):
self.group_excavator_exclude_modify[truck_id] = excavator_exclude_modify
self.group_excavator_material_bind_modify[truck_id] = excavator_material_bind_modify
self.group_dump_material_bind_modify[truck_id] = dump_material_bind_modify
except Exception as es:
logger.error(es)
logger.error("modify update 异常")
def period_update(self):
self.reset()
......@@ -1235,27 +1270,68 @@ class Group(WalkManage):
self.group_dump_material_bind_modify = {}
def para_process(dispatcher):
logger.info("papa_process!")
# def para_process(dispatcher):
#
# logger.info("papa_process!")
#
# # 清空数据库缓存
# session_mysql.commit()
# session_mysql.flush()
#
# # 清空数据库缓存
# session_postgre.commit()
# session_postgre.flush()
#
# # 周期更新
# dispatcher.para_period_update()
#
#
# def state_process(dispatcher):
#
# print("state_process!")
#
# logger.info("state_process!")
#
# # 清空数据库缓存
# session_mysql.commit()
# session_mysql.flush()
#
# # 清空数据库缓存
# session_postgre.commit()
# session_postgre.flush()
#
# # 周期更新
# dispatcher.state_period_update()
#
# # 参数重置
# dispatcher.sim_para_reset()
#
# # try:
#
# # 调度计算
# dispatcher.schedule_construct()
#
# # except Exception as es:
# # logger.error("更新不及时")
# # logger.error(es)
# 清空数据库缓存
session_mysql.commit()
session_mysql.flush()
# 清空数据库缓存
session_postgre.commit()
session_postgre.flush()
# 周期更新
dispatcher.para_period_update()
def state_process(dispatcher):
# 下面三个函数保证程序定期执行,不用管他
def process(dispatcher):
print("state_process!")
try:
# 更新周期参数
logger.info("#####################################周期更新开始#####################################")
logger.info("state_process!")
period_para_update()
if get_value("dynamic_dump_num") * get_value("dynamic_excavator_num") == 0:
raise Exception("无动态派车计划可用")
return
if get_value("dynamic_truck_num") == 0:
raise Exception("无动态派车可用矿卡")
return
# para_process(dispatcher)
#
# state_process(dispatcher)
# 清空数据库缓存
session_mysql.commit()
......@@ -1264,9 +1340,12 @@ def state_process(dispatcher):
# 清空数据库缓存
session_postgre.commit()
session_postgre.flush()
#
# # 周期更新
# dispatcher.para_period_update()
# 周期更新
dispatcher.state_period_update()
dispatcher.dispatcher_period_update()
# 参数重置
dispatcher.sim_para_reset()
......@@ -1280,21 +1359,7 @@ def state_process(dispatcher):
# logger.error("更新不及时")
# logger.error(es)
# 下面三个函数保证程序定期执行,不用管他
def process(dispatcher):
try:
# 更新周期参数
period_para_update()
if get_value("dynamic_dump_num") * get_value("dynamic_excavator_num") == 0:
raise Exception("无动态派车计划可用")
return
if get_value("dynamic_truck_num") == 0:
raise Exception("无动态派车可用矿卡")
return
para_process(dispatcher)
state_process(dispatcher)
logger.info("#####################################周期更新结束#####################################")
except Exception as es:
logger.error(es)
......
......@@ -138,6 +138,9 @@ def update_deveices_map(unload_area_uuid_to_index_dict, load_area_uuid_to_index_
except Exception as es:
logger.warning(es)
print("static_excavator_uuid_to_index_dict")
print(excavator_uuid_to_index_dict)
return {
"excavator_uuid_to_index_dict": excavator_uuid_to_index_dict,
"dump_uuid_to_index_dict": dump_uuid_to_index_dict,
......@@ -161,6 +164,10 @@ def update_truck_uuid_index_map(dynamic_truck_set):
truck_index_to_uuid_dict[truck_num] = truck_id
truck_num = truck_num + 1
print(dynamic_truck_set)
print("static-truck_uuid_to_index_dict")
print(truck_uuid_to_index_dict)
return {
"truck_uuid_to_index_dict": truck_uuid_to_index_dict,
"truck_index_to_uuid_dict": truck_index_to_uuid_dict,
......@@ -275,6 +282,9 @@ def update_autodisp_dump():
raise Exception("无动态派车计划可用-动态派车挖机/卸载设备集合读取异常")
except Exception as es:
logger.warning(es)
print("here1")
print(set(dynamic_dump_list))
return set(dynamic_dump_list)
......
......@@ -180,12 +180,22 @@ def Traffic_para_init(num_of_load_area, num_of_unload_area, num_of_excavator, nu
# 动态派车矿卡集合
tra_para.truck_total_num = get_value("dynamic_truck_num")
print("truck.get_dump_hold_truck_num")
print(truck.get_dump_hold_truck_num())
print("truck.get_excavator_hold_truck_num")
print(truck.get_excavator_hold_truck_num())
# 目的地矿卡数量
tra_para.dump_hold_truck_num = truck.get_dump_hold_truck_num()
tra_para.excavator_hold_truck_num = truck.get_excavator_hold_truck_num()
# 计算逻辑道路因子
print("here4")
print(num_of_dump)
for i in range(num_of_excavator):
for j in range(num_of_dump):
# 查找挖机绑定的装载区, 卸载设备绑定的卸载区
......
......@@ -109,11 +109,13 @@ def transportation_problem_slove(coefficient_goto_dump, coefficient_goto_excavat
# 约束四:车流可行性约束
# 当前车流可行性约束
for i in range(row):
print(excavator_hold_truck_num[i])
print("excavator_hold_truck_num")
print(excavator_hold_truck_num, i)
prob += (pulp.lpSum((np.array(var_x))[i]) <= excavator_hold_truck_num[i] * 220 + 0.001)
for j in range(col):
print(dump_hold_truck_num[j])
print(dump_hold_truck_num)
print(dump_hold_truck_num, j)
prob += (pulp.lpSum((np.array(var_y))[j]) <= dump_hold_truck_num[j] * 220 + 0.001)
......@@ -153,14 +155,21 @@ def traffic_flow_plan(truck):
unload_area_set = set(unload_area_list)
excavator_num = len(excavator_set)
dump_num = len(dump_set)
# excavator_num = len(excavator_set)
#
# dump_num = len(dump_set)
unload_area_num = len(unload_area_set)
load_area_num = len(load_area_set)
dump_num = get_value("dynamic_dump_num")
print("here5")
print(dump_num)
excavator_num = get_value("dynamic_excavator_num")
print("装载区数量:", load_area_num, "卸载区数量:", unload_area_num, "挖机数量:", excavator_num, "卸载设备数量:", dump_num)
# try:
......@@ -190,6 +199,9 @@ def traffic_flow_plan(truck):
walk_time_to_excavator = traffic_programme_para.walk_time_to_excavator
walk_time_to_dump = traffic_programme_para.walk_time_to_dump
truck_total_num = traffic_programme_para.truck_total_num
print("here1212")
print(traffic_programme_para.dump_hold_truck_num)
print(traffic_programme_para.excavator_hold_truck_num)
dump_hold_truck_num = traffic_programme_para.dump_hold_truck_num
excavator_hold_truck_num = traffic_programme_para.excavator_hold_truck_num
......
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