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

代码优化v3

parent 8edf3046
......@@ -223,7 +223,7 @@ class ExpectedTime(AlgorithmBase):
self.logger.error(es)
transport_value = np.zeros(group_dynamic_excavator_num)
if task in [1, 2]:
if task in [0, 1, 2]:
################################################ 矿卡空载 ###############################################
# try:
......@@ -290,7 +290,7 @@ class ExpectedTime(AlgorithmBase):
self.logger.error(es)
transport_value = np.zeros(group_dynamic_unload_area_num)
elif task in [4, 5]:
elif task in [3, 4, 5]:
################################################ 矿卡重载 ###############################################
# try:
......@@ -369,6 +369,9 @@ class DistributionRatio(object):
@desc:计算分流配比模式下,卡车与卸载区的对应关系
"""
# TODO:
# 统一与预期等待时间的接口
def __init__(self, exactor_id, truck):
self.truck = truck
self.exactor_id = exactor_id
......
......@@ -10,6 +10,8 @@ from flask_caching import Cache
from alg.algorithm import ExpectedTime
from data.dispatchInfo import DispatchInfo
from core.submit import DispatchSubmission
from core.group import GroupDispatcher
from realtime_dispatch import group_direct2redis
config = {
"DEBUG": True, # some Flask specific configs
......@@ -140,9 +142,29 @@ def dispatch_request():
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:
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:
logger.error(es)
logger.error(f'分组{group.group_id} 调度计算异常')
......@@ -152,9 +174,11 @@ def dispatch_request():
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:
group_direct2redis(group)
logger.error(es)
logger.error(f'分组{group.group_id} 调度写入异常')
except Exception as es:
logger.error("最外层异常捕获")
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:
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 \
self.truck.get_truck_locate_dict()[truck_id] in self.topo.cross_bf_lanes:
......
......@@ -18,6 +18,7 @@ from core.dispatcher import Dispatcher
from core.schedule import PreSchedule
from data.dispatchInfo import DispatchInfo
from util import CoreException
from core.group import Group
def direct2redis():
......@@ -35,7 +36,7 @@ def direct2redis():
try:
truck_disp = {}
truck_disp = []
for item in session_mysql.query(DispatchSetting).filter_by(isdeleted=0, ).all():
if item is None:
raise CoreException(101, "无可用派车计划")
......@@ -49,6 +50,41 @@ def direct2redis():
# 写入redis
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:
logger.error(ce)
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