Commit 64893550 authored by Allvey's avatar Allvey

redis变动修改

parent 7852b5be
...@@ -150,6 +150,7 @@ class ExcavatorInfo(WalkManage): ...@@ -150,6 +150,7 @@ class ExcavatorInfo(WalkManage):
# 物料优先级控制 # 物料优先级控制
rule = 2 rule = 2
rule7 = session_mysql.query(DispatchRule).filter_by(id=7).first() rule7 = session_mysql.query(DispatchRule).filter_by(id=7).first()
material_priority_use = rule7.disabled material_priority_use = rule7.disabled
if material_priority_use == 0: if material_priority_use == 0:
rule = rule7.rule_weight rule = rule7.rule_weight
...@@ -187,6 +188,11 @@ class ExcavatorInfo(WalkManage): ...@@ -187,6 +188,11 @@ class ExcavatorInfo(WalkManage):
logger.info("Excavator update!") logger.info("Excavator update!")
rule7 = session_mysql.query(DispatchRule).filter_by(id=7).first().disabled
logger.info("物料优先级规则")
logger.info(rule7)
# 装载周期参数 # 装载周期参数
self.period_map_para_load() self.period_map_para_load()
......
...@@ -114,15 +114,14 @@ class TruckInfo(WalkManage): ...@@ -114,15 +114,14 @@ class TruckInfo(WalkManage):
self.truck_current_task = {} self.truck_current_task = {}
device_name_set = redis2.keys() device_name_set = redis2.keys()
# try:
for item in device_name_set: for item in device_name_set:
try: try:
item = item.decode(encoding="utf-8") item = item.decode(encoding="utf-8")
json_value = json.loads(redis2.get(item)) key_value_dict = redis2.hgetall(item) # reids str可以自动转为bytes
device_type = json_value.get("type") device_type = int(key_value_dict[str_to_byte("type")])
if device_type == 1: if device_type == 1:
if truck_name_to_uuid_dict[item] in self.dynamic_truck_set: if truck_name_to_uuid_dict[item] in self.dynamic_truck_set:
currentTask = json_value.get("currentTask") currentTask = int(key_value_dict[str_to_byte("currentTask")])
self.truck_current_task[ self.truck_current_task[
truck_name_to_uuid_dict[item] truck_name_to_uuid_dict[item]
] = currentTask ] = currentTask
...@@ -130,10 +129,6 @@ class TruckInfo(WalkManage): ...@@ -130,10 +129,6 @@ class TruckInfo(WalkManage):
logger.error("读取矿卡任务异常-reids读取异常") logger.error("读取矿卡任务异常-reids读取异常")
logger.error(es) logger.error(es)
# except Exception as es:
# logger.error("读取矿卡任务异常-reids读取异常")
# logger.error(es)
logger.info("矿卡当前任务:") logger.info("矿卡当前任务:")
logger.info(self.truck_current_task) logger.info(self.truck_current_task)
...@@ -148,19 +143,27 @@ class TruckInfo(WalkManage): ...@@ -148,19 +143,27 @@ class TruckInfo(WalkManage):
try: try:
for item in self.dynamic_truck_set: for item in self.dynamic_truck_set:
json_value = json.loads(redis2.get(truck_uuid_to_name_dict[item])) key_value_dict = redis2.hgetall(truck_uuid_to_name_dict[item])
device_type = json_value.get("type") device_type = int(key_value_dict[str_to_byte("type")])
# 判断是否为矿卡 # 判断是否为矿卡
if device_type == 1: if device_type == 1:
task = self.truck_current_task[item] task = self.truck_current_task[item]
if task in heavy_task_set: if task in heavy_task_set:
last_load_time_tmp = json_value.get("lastLoadTime") if str_to_byte("lastLoadTime") in key_value_dict.keys(): # 若最后装载时间存在
if last_load_time_tmp is not None: last_load_time_tmp = eval(byte_to_str(key_value_dict[str_to_byte("lastLoadTime")]))
self.last_load_time[item] = datetime.strptime( tmp_time = datetime.strptime(last_load_time_tmp, "%Y-%m-%d %H:%M:%S")
last_load_time_tmp, "%b %d, %Y %I:%M:%S %p" if tmp_time > datetime.strptime("2000-01-01 01:01:01", "%Y-%m-%d %H:%M:%S"): # 若最后装载时间异常
) self.last_load_time[item] = tmp_time
else:
self.last_load_time[item] = datetime.now()
redis2.hsetnx(truck_uuid_to_name_dict[item], str_to_byte("lastLoadTime"),
"\"" + datetime.now().strftime("%Y-%m-%d %H:%M:%S") + "\"")
logger.info("lastLoadTime is Error")
else: else:
self.last_load_time[item] = datetime.now() self.last_load_time[item] = datetime.now()
redis2.hsetnx(truck_uuid_to_name_dict[item], str_to_byte("lastLoadTime"),
"\"" + datetime.now().strftime("%Y-%m-%d %H:%M:%S") + "\"")
logger.info("lastLoadTime is None")
self.relative_last_load_time[item] = float( self.relative_last_load_time[item] = float(
(self.last_load_time[item] - self.start_time) (self.last_load_time[item] - self.start_time)
/ timedelta(hours=0, minutes=1, seconds=0) / timedelta(hours=0, minutes=1, seconds=0)
...@@ -169,21 +172,24 @@ class TruckInfo(WalkManage): ...@@ -169,21 +172,24 @@ class TruckInfo(WalkManage):
logger.info("相对last_load_time") logger.info("相对last_load_time")
logger.info(self.relative_last_load_time[item]) logger.info(self.relative_last_load_time[item])
if task in empty_task_set: if task in empty_task_set:
last_unload_time_tmp = json_value.get("lastUnloadTime") if str_to_byte("lastUnloadTime") in key_value_dict.keys():
if last_unload_time_tmp is not None: last_unload_time_tmp = eval(key_value_dict[str_to_byte("lastUnloadTime")])
self.last_unload_time[item] = datetime.strptime( tmp_time = datetime.strptime(last_unload_time_tmp, "%Y-%m-%d %H:%M:%S")
last_unload_time_tmp, "%b %d, %Y %I:%M:%S %p" if tmp_time > datetime.strptime("2000-01-01 01:01:01", "%Y-%m-%d %H:%M:%S"):
) self.last_unload_time[item] = tmp_time
else: else:
self.last_unload_time[item] = datetime.now() self.last_unload_time[item] = datetime.now()
json_value["lastUnloadTime"] = datetime.now().strftime( redis2.hsetnx(truck_uuid_to_name_dict[item], str_to_byte("lastUnloadTime"),
"%b %d, %Y %I:%M:%S %p" "\"" + datetime.now().strftime("%Y-%m-%d %H:%M:%S") + "\"")
) logger.info("lastUnloadTime is Error")
redis2.set( else:
truck_uuid_to_name_dict[item], self.last_unload_time[item] = datetime.now()
str(json.dumps(json_value)), # key_value_dict[str_to_byte("lastUnloadTime")] = datetime.now().strftime(
) # "%b %d, %Y %I:%M:%S %p"
logger.info("lastUnlaodTime is None") # )
redis2.hsetnx(truck_uuid_to_name_dict[item], str_to_byte("lastUnloadTime"),
"\"" + datetime.now().strftime("%Y-%m-%d %H:%M:%S") + "\"")
logger.info("lastUnloadTime is None")
self.relative_last_unload_time[item] = float( self.relative_last_unload_time[item] = float(
(self.last_unload_time[item] - self.start_time) (self.last_unload_time[item] - self.start_time)
/ timedelta(hours=0, minutes=1, seconds=0) / timedelta(hours=0, minutes=1, seconds=0)
...@@ -192,13 +198,19 @@ class TruckInfo(WalkManage): ...@@ -192,13 +198,19 @@ class TruckInfo(WalkManage):
logger.info("相对last_unload_time") logger.info("相对last_unload_time")
logger.info(self.relative_last_unload_time[item]) logger.info(self.relative_last_unload_time[item])
elif task == -2: elif task == -2:
# print(datetime.now())
self.last_unload_time[item] = datetime.now() self.last_unload_time[item] = datetime.now()
json_value["lastUnloadTime"] = datetime.now().strftime( # key_value_dict["lastUnloadTime"] = datetime.now().strftime(
"%b %d, %Y %I:%M:%S %p" # "%b %d, %Y %I:%M:%S %p")
) if str_to_byte("lastUnloadTime") in key_value_dict.keys():
redis2.set( # redis2.hset(truck_uuid_to_name_dict[item], str_to_byte("lastUnloadTime"),
truck_uuid_to_name_dict[item], str(json.dumps(json_value)) # datetime.now().strftime("%b %d, %Y %I:%M:%S %p"))
) redis2.hset(truck_uuid_to_name_dict[item], str_to_byte("lastUnloadTime"),
"\"" + datetime.now().strftime("%Y-%m-%d %H:%M:%S") + "\"")
else:
redis2.hsetnx(truck_uuid_to_name_dict[item], str_to_byte("lastUnloadTime"),
"\"" + datetime.now().strftime("%Y-%m-%d %H:%M:%S") + "\"")
# redis2.hsetnx(truck_uuid_to_name_dict[item], str(json.dumps(key_value_dict)))
except Exception as es: except Exception as es:
logger.error("读取矿卡可用时间异常-redis读取异常") logger.error("读取矿卡可用时间异常-redis读取异常")
logger.error(es) logger.error(es)
...@@ -492,12 +504,23 @@ class TruckInfo(WalkManage): ...@@ -492,12 +504,23 @@ class TruckInfo(WalkManage):
# 初始化参数 # 初始化参数
self.reset() self.reset()
# 设备优先级启用 # 距离成本启动
rule6 = session_mysql.query(DispatchRule).filter_by(id=6).first().disabled rule1 = session_mysql.query(DispatchRule).filter_by(id=1).first().disabled
# 拥堵成本启用
rule2 = session_mysql.query(DispatchRule).filter_by(id=2).first().disabled
# 车流规划启用
rule3 = session_mysql.query(DispatchRule).filter_by(id=3).first().disabled
rule4 = session_mysql.query(DispatchRule).filter_by(id=4).first().disabled
# 锁定禁止启用 # 锁定禁止启用
rule5 = session_mysql.query(DispatchRule).filter_by(id=5).first().disabled rule5 = session_mysql.query(DispatchRule).filter_by(id=5).first().disabled
# 设备优先级启用
rule6 = session_mysql.query(DispatchRule).filter_by(id=6).first().disabled
logger.info("Para truck update!") logger.info("Para truck update!")
# 装载周期参数 # 装载周期参数
...@@ -517,6 +540,22 @@ class TruckInfo(WalkManage): ...@@ -517,6 +540,22 @@ class TruckInfo(WalkManage):
# 更新有效载重 # 更新有效载重
self.update_truck_payload() 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: if not rule5:
# 更新绑定关系 # 更新绑定关系
...@@ -528,7 +567,6 @@ class TruckInfo(WalkManage): ...@@ -528,7 +567,6 @@ class TruckInfo(WalkManage):
self.update_truck_excavator_exclude() self.update_truck_excavator_exclude()
if not rule6: if not rule6:
# 更新矿卡调度优先级 # 更新矿卡调度优先级
self.update_truck_priority() self.update_truck_priority()
......
...@@ -234,10 +234,11 @@ class LaneInfo: ...@@ -234,10 +234,11 @@ class LaneInfo:
device_name_set = redis2.keys() device_name_set = redis2.keys()
for item in device_name_set: for item in device_name_set:
item = item.decode(encoding='utf-8') item = item.decode(encoding='utf-8')
json_value = json.loads(redis2.get(item)) # json_value = json.loads(redis2.get(item))
device_type = json_value.get('type') key_value_dict = redis2.hgetall(item)
if device_type == 1: device_type = key_value_dict[str_to_byte('type')]
truck_speed = json_value.get('speed') if device_type == 1 and str_to_byte('speed') in key_value_dict.keys():
truck_speed = key_value_dict[str_to_byte('speed')]
truck_speed_dict[truck_name_to_uuid_dict[item]] = truck_speed truck_speed_dict[truck_name_to_uuid_dict[item]] = truck_speed
except Exception as es: except Exception as es:
logger.error(f'矿卡{item}实时速度读取异常') logger.error(f'矿卡{item}实时速度读取异常')
...@@ -252,14 +253,17 @@ class LaneInfo: ...@@ -252,14 +253,17 @@ class LaneInfo:
device_name_set = redis2.keys() device_name_set = redis2.keys()
for item in device_name_set: for item in device_name_set:
item = item.decode(encoding='utf-8') item = item.decode(encoding='utf-8')
json_value = json.loads(redis2.get(item)) # json_value = json.loads(redis2.get(item))
device_type = json_value.get('type') key_value_dict = redis2.hgetall(item)
is_online = json_value.get('isOnline') device_type = key_value_dict[str_to_byte('type')]
if device_type == 1 and is_online: # is_online = key_value_dict[str_to_byte('online')]
truck_locate = json_value.get('laneId') key_set = key_value_dict.keys()
if device_type == 1 and str_to_byte('online') in key_set and str_to_byte('laneId') in key_set:
truck_locate = key_value_dict[str_to_byte('laneId')]
truck_locate_dict[truck_name_to_uuid_dict[item]] = truck_locate truck_locate_dict[truck_name_to_uuid_dict[item]] = truck_locate
except Exception as es: except Exception as es:
logger.error(f'矿卡{item}所在路段信息读取异常') logger.error(f'矿卡{item}所在路段信息读取异常')
logger.error(es)
return truck_locate_dict return truck_locate_dict
......
...@@ -548,7 +548,7 @@ class Dispatcher(WalkManage): ...@@ -548,7 +548,7 @@ class Dispatcher(WalkManage):
try: try:
logger.info("挖机id:") logger.info("挖机id:")
logger.info(excavator.xcavator_uuid_to_index_dict) logger.info(excavator.excavator_uuid_to_index_dict)
logger.info("卸点id:") logger.info("卸点id:")
logger.info(dump.dump_uuid_to_index_dict) logger.info(dump.dump_uuid_to_index_dict)
logger.info(f"卸载点实际车流:") logger.info(f"卸载点实际车流:")
...@@ -590,7 +590,7 @@ class Dispatcher(WalkManage): ...@@ -590,7 +590,7 @@ class Dispatcher(WalkManage):
/ (self.opt_goto_dump_traffic_flow[int(trip[1]), :] + 0.001) / (self.opt_goto_dump_traffic_flow[int(trip[1]), :] + 0.001)
logger.info("transport_value") logger.info("transport_value")
logger.info(transport_value) logger.info(transport_value)
logger.info("_____________here________") logger.info("dump_material_bind_modify")
logger.info(truck.dump_material_bind_modify[truck_index]) logger.info(truck.dump_material_bind_modify[truck_index])
target = np.argmin( target = np.argmin(
transport_value transport_value
......
...@@ -96,3 +96,10 @@ try: ...@@ -96,3 +96,10 @@ try:
except Exception as es: except Exception as es:
logger.error("数据库连接失败") logger.error("数据库连接失败")
logger.error(es) logger.error(es)
def str_to_byte(item):
return bytes(item, encoding='utf8')
def byte_to_str(item):
return str(item, encoding='utf-8')
...@@ -200,7 +200,7 @@ def Traffic_para_init(num_of_load_area, num_of_unload_area, num_of_excavator, nu ...@@ -200,7 +200,7 @@ def Traffic_para_init(num_of_load_area, num_of_unload_area, num_of_excavator, nu
tra_para.goto_dump_factor[i][j] = \ tra_para.goto_dump_factor[i][j] = \
tra_para.goto_unload_area_factor[load_area_index][unload_area_index] 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) # 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)
......
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