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

代码优化v3

parent 8edf3046
...@@ -223,7 +223,7 @@ class ExpectedTime(AlgorithmBase): ...@@ -223,7 +223,7 @@ class ExpectedTime(AlgorithmBase):
self.logger.error(es) self.logger.error(es)
transport_value = np.zeros(group_dynamic_excavator_num) transport_value = np.zeros(group_dynamic_excavator_num)
if task in [1, 2]: if task in [0, 1, 2]:
################################################ 矿卡空载 ############################################### ################################################ 矿卡空载 ###############################################
# try: # try:
...@@ -290,7 +290,7 @@ class ExpectedTime(AlgorithmBase): ...@@ -290,7 +290,7 @@ class ExpectedTime(AlgorithmBase):
self.logger.error(es) self.logger.error(es)
transport_value = np.zeros(group_dynamic_unload_area_num) transport_value = np.zeros(group_dynamic_unload_area_num)
elif task in [4, 5]: elif task in [3, 4, 5]:
################################################ 矿卡重载 ############################################### ################################################ 矿卡重载 ###############################################
# try: # try:
...@@ -369,6 +369,9 @@ class DistributionRatio(object): ...@@ -369,6 +369,9 @@ class DistributionRatio(object):
@desc:计算分流配比模式下,卡车与卸载区的对应关系 @desc:计算分流配比模式下,卡车与卸载区的对应关系
""" """
# TODO:
# 统一与预期等待时间的接口
def __init__(self, exactor_id, truck): def __init__(self, exactor_id, truck):
self.truck = truck self.truck = truck
self.exactor_id = exactor_id self.exactor_id = exactor_id
......
...@@ -10,6 +10,8 @@ from flask_caching import Cache ...@@ -10,6 +10,8 @@ from flask_caching import Cache
from alg.algorithm import ExpectedTime from alg.algorithm import ExpectedTime
from data.dispatchInfo import DispatchInfo from data.dispatchInfo import DispatchInfo
from core.submit import DispatchSubmission from core.submit import DispatchSubmission
from core.group import GroupDispatcher
from realtime_dispatch import group_direct2redis
config = { config = {
"DEBUG": True, # some Flask specific configs "DEBUG": True, # some Flask specific configs
...@@ -140,9 +142,29 @@ def dispatch_request(): ...@@ -140,9 +142,29 @@ def dispatch_request():
try: try:
# # 调度分组派车计划计算
# try:
# truck_dispatch_plan_dict = group.group_dispatch(ExpectedTime)
# except Exception as es:
# logger.error(es)
# logger.error(f'分组{group.group_id} 调度计算异常')
#
# try:
#
# logger.info(f'调度分组: {group.group_id} {DispatchInfo.group_name[group.group_id]}')
# submission.group_dispatch_to_redis(group, truck_dispatch_plan_dict)
# except Exception as es:
# logger.error(es)
# logger.error(f'分组{group.group_id} 调度写入异常')
# 调度分组派车计划计算 # 调度分组派车计划计算
try: try:
truck_dispatch_plan_dict = group.group_dispatch(ExpectedTime) group_dispatcher = GroupDispatcher(group)
truck_dispatch_plan_dict = group_dispatcher.group_dispatch(ExpectedTime)
if truck_dispatch_plan_dict is None:
logger.error(f'分组 {group.group_id} 调度异常')
except Exception as es: except Exception as es:
logger.error(es) logger.error(es)
logger.error(f'分组{group.group_id} 调度计算异常') logger.error(f'分组{group.group_id} 调度计算异常')
...@@ -152,9 +174,11 @@ def dispatch_request(): ...@@ -152,9 +174,11 @@ def dispatch_request():
logger.info(f'调度分组: {group.group_id} {DispatchInfo.group_name[group.group_id]}') logger.info(f'调度分组: {group.group_id} {DispatchInfo.group_name[group.group_id]}')
submission.group_dispatch_to_redis(group, truck_dispatch_plan_dict) submission.group_dispatch_to_redis(group, truck_dispatch_plan_dict)
except Exception as es: except Exception as es:
group_direct2redis(group)
logger.error(es) logger.error(es)
logger.error(f'分组{group.group_id} 调度写入异常') logger.error(f'分组{group.group_id} 调度写入异常')
except Exception as es: except Exception as es:
logger.error("最外层异常捕获") logger.error("最外层异常捕获")
logger.error(es) logger.error(es)
......
#!E:\Pycharm Projects\Waytous
# -*- coding: utf-8 -*-
# @Time : 2022/10/29 22:07
# @Author : Opfer
# @Site :
# @File : __init__.py
# @Software: PyCharm
\ No newline at end of file
This diff is collapsed.
...@@ -120,6 +120,9 @@ class DispatchSubmission: ...@@ -120,6 +120,9 @@ class DispatchSubmission:
record = redis_format(truck_id, group_id, str(uuid.uuid1()), item) record = redis_format(truck_id, group_id, str(uuid.uuid1()), item)
# TODO:
# 判断了两次是否拥堵,需要改善
# 车辆重载等待,且前方道路阻塞 # 车辆重载等待,且前方道路阻塞
if task == 3 and state == 2 and truck_id in self.truck.get_truck_locate_dict() and \ if task == 3 and state == 2 and truck_id in self.truck.get_truck_locate_dict() and \
self.truck.get_truck_locate_dict()[truck_id] in self.topo.cross_bf_lanes: self.truck.get_truck_locate_dict()[truck_id] in self.topo.cross_bf_lanes:
......
...@@ -18,6 +18,7 @@ from core.dispatcher import Dispatcher ...@@ -18,6 +18,7 @@ from core.dispatcher import Dispatcher
from core.schedule import PreSchedule from core.schedule import PreSchedule
from data.dispatchInfo import DispatchInfo from data.dispatchInfo import DispatchInfo
from util import CoreException from util import CoreException
from core.group import Group
def direct2redis(): def direct2redis():
...@@ -35,7 +36,7 @@ def direct2redis(): ...@@ -35,7 +36,7 @@ def direct2redis():
try: try:
truck_disp = {} truck_disp = []
for item in session_mysql.query(DispatchSetting).filter_by(isdeleted=0, ).all(): for item in session_mysql.query(DispatchSetting).filter_by(isdeleted=0, ).all():
if item is None: if item is None:
raise CoreException(101, "无可用派车计划") raise CoreException(101, "无可用派车计划")
...@@ -49,6 +50,41 @@ def direct2redis(): ...@@ -49,6 +50,41 @@ def direct2redis():
# 写入redis # 写入redis
redis5.set(item.truck_id, str(json.dumps(record))) redis5.set(item.truck_id, str(json.dumps(record)))
truck_disp.append(item.truck_id)
except CoreException as ce:
logger.error(ce)
session_postgre.rollback()
session_mysql.rollback()
def group_direct2redis(group: Group):
"""
根据分组车辆直接读取数据库写入redis
:return: None
"""
# 清空数据库缓存
session_mysql.commit()
session_mysql.flush()
# 清空数据库缓存
session_postgre.commit()
session_postgre.flush()
try:
for truck_id in group.group_trucks:
item = session_mysql.query(DispatchSetting).filter_by(truck_id=truck_id, isdeleted=0, ).first()
if item is None:
raise CoreException(101, "无可用派车计划")
record = {"truckId": item.truck_id, "dispatchId": item.id, "exactorId": item.exactor_id,
"dumpId": item.dump_id, "loadAreaId": item.load_area_id, "unloadAreaId": item.unload_area_id,
"groupId": item.group_id, "isdeleted": False, "isTemp": False, "haulFlag": -1,
"groupName": DispatchInfo.group_name[item.group_id]}
logger.info(f'写入redis调度结果: {record}')
# 写入redis
redis5.set(item.truck_id, str(json.dumps(record)))
except CoreException as ce: except CoreException as ce:
logger.error(ce) logger.error(ce)
session_postgre.rollback() session_postgre.rollback()
......
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