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

二次调度调试

parent 4ef1d396
...@@ -147,7 +147,7 @@ class ExpectedTime(AlgorithmBase): ...@@ -147,7 +147,7 @@ class ExpectedTime(AlgorithmBase):
:return: travel_time_value :return: travel_time_value
""" """
# try: try:
# truck_index = self.truck.truck_uuid_to_index_dict[truck_id] # truck_index = self.truck.truck_uuid_to_index_dict[truck_id]
...@@ -170,10 +170,10 @@ class ExpectedTime(AlgorithmBase): ...@@ -170,10 +170,10 @@ class ExpectedTime(AlgorithmBase):
group_dynamic_excavator_num = len(self.group.excavator) group_dynamic_excavator_num = len(self.group.excavator)
group_dynamic_unload_area_num = len(self.group.unload_area) group_dynamic_unload_area_num = len(self.group.unload_area)
#
# except Exception as es: except Exception as es:
# self.logger.error("车辆调度信息读取异常") self.logger.error("车辆调度信息读取异常")
# self.logger.error(es) self.logger.error(es)
if task == -2: if task == -2:
################################################ 矿卡启动 ############################################### ################################################ 矿卡启动 ###############################################
......
...@@ -137,6 +137,7 @@ class DispatchSubmission: ...@@ -137,6 +137,7 @@ class DispatchSubmission:
if group_mode == 3: if group_mode == 3:
try: try:
self.logger.info(f'调度0 {truck_id}')
item = session_mysql.query(DispatchSetting).filter_by(truck_id=truck_id, isdeleted=0, ).first() item = session_mysql.query(DispatchSetting).filter_by(truck_id=truck_id, isdeleted=0, ).first()
record["dispatchId"] = item.id record["dispatchId"] = item.id
record["exactorId"] = item.exactor_id record["exactorId"] = item.exactor_id
...@@ -159,8 +160,9 @@ class DispatchSubmission: ...@@ -159,8 +160,9 @@ class DispatchSubmission:
redis5.set(truck_id, str(json.dumps(record))) redis5.set(truck_id, str(json.dumps(record)))
else: else:
if task in [1, 2] or (task == 3 and state == 2): # 卡车空载或在装载区出场前, 可变更卸载目的地 if (task in [1, 2]) or (task == 3 and state == 2): # 卡车空载或在装载区出场前, 可变更卸载目的地
self.logger.info(f'调度1 {truck_id}')
# 查询车辆相关派车计划 # 查询车辆相关派车计划
try: try:
dump_id = DispatchInfo.unload_area_dump_dict[dispatch_seq[1]] dump_id = DispatchInfo.unload_area_dump_dict[dispatch_seq[1]]
...@@ -191,14 +193,16 @@ class DispatchSubmission: ...@@ -191,14 +193,16 @@ class DispatchSubmission:
record["groupName"] = DispatchInfo.group_name[group_id] record["groupName"] = DispatchInfo.group_name[group_id]
self.logger.info(f'redis 注入 {record}') self.logger.info(f'redis 注入 {record}')
redis5.set(truck_id, str(json.dumps(record)))
except Exception as es: except Exception as es:
self.logger.error("调度结果写入异常-矿卡空载") self.logger.error("调度结果写入异常-矿卡空载")
self.logger.error(es) self.logger.error(es)
finally: finally:
redis5.set(truck_id, str(json.dumps(record))) redis5.set(truck_id, str(json.dumps(record)))
elif task in [4, 5] or (task == 0 and state == 2): # 卡车重载或在卸载区出场前, 可变更装载目的地 elif (task in [4, 5]) or (task == 0 and state == 2): # 卡车重载或在卸载区出场前, 可变更装载目的地
self.logger.info(f'调度2 {truck_id}')
# 查询车辆相关派车计划 # 查询车辆相关派车计划
try: try:
item = (session_mysql.query(DispatchSetting).filter_by(exactor_id=dispatch_seq[0], group_id=group_id, item = (session_mysql.query(DispatchSetting).filter_by(exactor_id=dispatch_seq[0], group_id=group_id,
...@@ -226,12 +230,14 @@ class DispatchSubmission: ...@@ -226,12 +230,14 @@ class DispatchSubmission:
record["groupName"] = DispatchInfo.group_name[group_id] record["groupName"] = DispatchInfo.group_name[group_id]
self.logger.info(f'redis 注入 {record}') self.logger.info(f'redis 注入 {record}')
redis5.set(truck_id, str(json.dumps(record)))
except Exception as es: except Exception as es:
self.logger.error("调度结果写入异常-矿卡重载") self.logger.error("调度结果写入异常-矿卡重载")
finally: finally:
redis5.set(truck_id, str(json.dumps(record))) redis5.set(truck_id, str(json.dumps(record)))
elif task == -2: elif task == -2:
self.logger.info(f'调度3 {truck_id}')
try: try:
# 查询车辆相关派车计划 # 查询车辆相关派车计划
...@@ -263,6 +269,7 @@ class DispatchSubmission: ...@@ -263,6 +269,7 @@ class DispatchSubmission:
record["groupName"] = DispatchInfo.group_name[group_id] record["groupName"] = DispatchInfo.group_name[group_id]
self.logger.info(f'redis 注入 {record}') self.logger.info(f'redis 注入 {record}')
redis5.set(truck_id, str(json.dumps(record)))
# record["createtime"] = datetime.now().strftime( # record["createtime"] = datetime.now().strftime(
# "%b %d, %Y %I:%M:%S %p") # "%b %d, %Y %I:%M:%S %p")
......
...@@ -12,6 +12,7 @@ from alg.algorithm import AlgorithmBase,DistributionRatio ...@@ -12,6 +12,7 @@ from alg.algorithm import AlgorithmBase,DistributionRatio
import numpy as np import numpy as np
# from settings import get_logger # from settings import get_logger
from data.para_config import get_value from data.para_config import get_value
from core.util import redispatch_request
class CurrentTruck: class CurrentTruck:
...@@ -245,7 +246,6 @@ class Group: ...@@ -245,7 +246,6 @@ class Group:
""" """
pass pass
def info_update(self): def info_update(self):
""" """
update group info. update group info.
...@@ -281,6 +281,8 @@ class Group: ...@@ -281,6 +281,8 @@ class Group:
# except Exception as es: # except Exception as es:
# self.logger.error("车辆调度信息读取异常") # self.logger.error("车辆调度信息读取异常")
# self.logger.error(es) # self.logger.error(es)
try:
# 全智能模式 # 全智能模式
if self.group_mode == 1: if self.group_mode == 1:
# 车辆停止或者车辆位于装载区内, 调度车辆前往卸载区 # 车辆停止或者车辆位于装载区内, 调度车辆前往卸载区
...@@ -338,29 +340,37 @@ class Group: ...@@ -338,29 +340,37 @@ class Group:
except Exception as es: except Exception as es:
self.logger.error("空载车辆全智能模式-计算异常") self.logger.error("空载车辆全智能模式-计算异常")
self.logger.error(es.__traceback__.tb_lineno)
self.logger.error(es) self.logger.error(es)
truck_dispatch[i] = [None, None] truck_dispatch[i] = [None, None]
elif truck_task == 0: elif truck_task == 0:
try:
truck_locate = self.truck.get_truck_locate_dict()[i] truck_locate = self.truck.get_truck_locate_dict()[i]
except Exception as es:
self.logger.error("es")
self.logger.error(es)
# 车辆当前位于交叉路口前,且排队等待 # 车辆当前位于交叉路口前,且排队等待
self.logger.info(f'车辆位置 {truck_locate}') self.logger.info(f'车辆位置 {truck_locate}')
self.logger.info(f'车辆状态 {self.truck.truck_current_state[i]}') self.logger.info(f'车辆状态 {self.truck.truck_current_state[i]}')
if truck_locate in self.topo.cross_bf_lanes and self.truck.truck_current_state[i] == 2: if truck_locate in self.topo.cross_bf_lanes and self.truck.truck_current_state[i] == 2:
self.logger.info("触发二次调度") self.logger.info("触发二次调度")
# 当前绑定卸载区 # 当前绑定卸载区
if truck_trip[0] == -1: # if truck_trip[0] == -1:
next_unload_area_id = session_mysql.query(EquipmentPair).filter_by(truck_id=i, isdeleted=0).first().unload_area_id next_unload_area_id = session_mysql.query(EquipmentPair).filter_by(truck_id=i, isdeleted=0).first().unload_area_id
else: # else:
dump_id = get_value("dump_index_to_uuid_dict")[truck_trip[0]] # dump_id = get_value("dump_index_to_uuid_dict")[truck_trip[0]]
next_unload_area_id = get_value("dump_uuid_to_unload_area_uuid_dict")[dump_id] # next_unload_area_id = get_value("dump_uuid_to_unload_area_uuid_dict")[dump_id]
# 当前绑定装载区 # 当前绑定装载区
if truck_trip[-1] == -1: # if truck_trip[-1] == -1:
item = session_mysql.query(EquipmentPair).filter_by(truck_id=i, isdeleted=0).first() item = session_mysql.query(EquipmentPair).filter_by(truck_id=i, isdeleted=0).first()
current_excavator_id = item.exactor_id current_excavator_id = item.exactor_id
current_load_area_id = item.load_area_id current_load_area_id = item.load_area_id
else:
current_excavator_id = get_value("excavator_index_to_uuid_dict")[truck_trip[-1]] self.logger.info(f'truck_id {i}')
current_load_area_id = DispatchInfo.excavator_load_dict[current_excavator_id] self.logger.info(f'current_load_area_id {current_load_area_id}')
# else:
# current_excavator_id = get_value("excavator_index_to_uuid_dict")[truck_trip[-1]]
# current_load_area_id = DispatchInfo.excavator_load_dict[current_excavator_id]
load_area_dict = self.topo.get_load_target_node_real(truck_locate, current_load_area_id) load_area_dict = self.topo.get_load_target_node_real(truck_locate, current_load_area_id)
self.logger.info(load_area_dict) self.logger.info(load_area_dict)
...@@ -393,11 +403,18 @@ class Group: ...@@ -393,11 +403,18 @@ class Group:
truck_dispatch[i] = [next_excavator_id, next_unload_area_id] truck_dispatch[i] = [next_excavator_id, next_unload_area_id]
res = redispatch_request(i, next_excavator_id, next_unload_area_id)
self.logger.info(res)
self.logger.info("二次调度结果") self.logger.info("二次调度结果")
self.logger.info(truck_dispatch[i]) self.logger.info(truck_dispatch[i])
elif truck_task == 3: elif truck_task == 3:
try:
truck_locate = self.truck.get_truck_locate_dict()[i] truck_locate = self.truck.get_truck_locate_dict()[i]
except Exception as es:
self.logger.error("es")
self.logger.error(es)
# 车辆当前位于交叉路口前,且排队等待 # 车辆当前位于交叉路口前,且排队等待
if truck_locate in self.topo.cross_bf_lanes and self.truck.truck_current_state[i] == 0: if truck_locate in self.topo.cross_bf_lanes and self.truck.truck_current_state[i] == 0:
# 当前绑定装载区 # 当前绑定装载区
...@@ -440,6 +457,9 @@ class Group: ...@@ -440,6 +457,9 @@ class Group:
truck_dispatch[i] = [next_excavator_id, next_unload_area_id] truck_dispatch[i] = [next_excavator_id, next_unload_area_id]
res = redispatch_request(i, next_excavator_id, next_unload_area_id)
self.logger.info(res)
self.logger.info("二次调度结果") self.logger.info("二次调度结果")
self.logger.info(truck_dispatch[i]) self.logger.info(truck_dispatch[i])
...@@ -466,6 +486,7 @@ class Group: ...@@ -466,6 +486,7 @@ class Group:
except Exception as es: except Exception as es:
self.logger.error("重载车辆空车智能模式-计算异常") self.logger.error("重载车辆空车智能模式-计算异常")
self.logger.error(es) self.logger.error(es)
if truck_task in [0, 1, 2]: if truck_task in [0, 1, 2]:
try: try:
truck_dispatch[i] = DispatchInfo.get_truck_match(i) truck_dispatch[i] = DispatchInfo.get_truck_match(i)
...@@ -530,5 +551,8 @@ class Group: ...@@ -530,5 +551,8 @@ class Group:
truck_dispatch[i] = [next_exactor_id, next_unload_area_id] truck_dispatch[i] = [next_exactor_id, next_unload_area_id]
except Exception as es:
self.logger.info(es)
# return dispatch plan # return dispatch plan
return truck_dispatch return truck_dispatch
#!E:\Pycharm Projects\Waytous
# -*- coding: utf-8 -*-
# @Time : 2022/9/8 9:42
# @Author : Opfer
# @Site :
# @File : util.py
# @Software: PyCharm
import requests
from tables import *
import uuid
def redispatch_request(truck_id, excavator_id, unload_area_id):
"""
redispatch request.
:param truck_id:
:param excavator_id:
:param unload_area_id:
:return:
"""
exactor_no = session_mysql.query(Equipment).filter_by(id=excavator_id).first().device_name
unload_area_name = session_postgre.query(DumpArea).filter_by(Id=unload_area_id).first().Name
truck_name = session_mysql.query(Equipment).filter_by(id=truck_id).first().device_name
real_data = {
"exactorId": excavator_id,
"exactorNo": exactor_no,
"id": str(uuid.uuid4()),
"unloadAreaId": unload_area_id,
"unloadAreaName": unload_area_name,
"truckId": truck_id,
"truckNo": truck_name,
"isauto": "true",
"tempChange": 1,
"immediateEffect": 1
}
return POST(real_data)
def POST(real_data):
"""
Post.
:param real_data:
:return:
"""
# real_data = {
# "exactorId": "ddaa65cc-2658-4e35-b6ec-9deb046e0bfb",
# "exactorNo": "WJ001",
# "id": "d83f09cb-8df3-44d5-8e46-10dbaa317e19",
# "unloadAreaId": "10c75b23-4134-3ef1-9097-114bacac1982",
# "unloadAreaName": "卸载区4",
# "truckId": "de4080b3-fb89-460d-b511-c2ecd73c815c",
# "truckNo": "de4080b3-fb89-460d-b511-c2ecd73c815c",
# "isauto": "false",
# "tempChange": 1,
# "immediateEffect": 1
# }
#
# real_data = {
# 'exactorId': 'a3d09975-82d7-4a30-8c54-fe4ed8ff5a29',
# 'exactorNo': 'BI395-02',
# 'id': '76cb19a8-6541-4245-8ef6-40682aca9635',
# 'unloadAreaId': 'd4675d61-2134-8be7-fb36-fb9ef3c97f7c',
# 'unloadAreaName': '哈卸4',
# 'truckId': '7c196882-8850-4344-aff8-846a597f7792',
# 'truckNo': '7c196882-8850-4344-aff8-846a597f7792',
# 'isauto': 'true',
# 'tempChange': 1,
# 'immediateEffect': 1
# }
#
# head = {"Content-Type":"application/json; charset=UTF-8", 'Connection': 'close'}
url_d = "http://172.16.0.103:8020/ht/api/dispatch/update"
real_data = json.dumps(real_data)
print(real_data)
res_d = requests.post(url=url_d, data=real_data)
return res_d.text
#
# truck_id, excavator_id, unload_area_id = "9ce82957-b1e1-4dee-8dd1-3bbfa2a496b5", \
# "a3d09975-82d7-4a30-8c54-fe4ed8ff5a29", \
# "d4675d61-2134-8be7-fb36-fb9ef3c97f7c"
#
# res = redispatch_request(truck_id, excavator_id, unload_area_id)
#
# print(res)
\ No newline at end of file
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