Commit 659c93e9 authored by z5335534 Ao Guo's avatar z5335534 Ao Guo

添加dump映射

parent c8302415
......@@ -236,7 +236,8 @@ class ExpectedTime(AlgorithmBase):
dump_val_time_global = self.pre_sch.get_dump_avl_time()
# 局部卸点可用时间 list
dump_val_time = np.full(len(self.group.dump), 0)
dump_val_time = np.full(len(self.group.unload_area), 0)
bb = self.group.dump_uuid_index_dict
for dump_id, dump_index in self.group.dump_uuid_index_dict.items():
dump_val_time[dump_index] = dump_val_time_global[dump_id]
......
......@@ -72,8 +72,10 @@ class Group:
# group devices
self.excavator = {} # excavator_id -> unload_area_id
self.unload_area = {} # unload_area_id -> load_area_id
self.dump = {}
self.truck_set = set() # truck_id
# road network info.
self.to_excavator_distance = None
self.to_unload_area_distance = None
......@@ -87,6 +89,7 @@ class Group:
self.truck_uuid_index_dict = bidict()
self.excavator_uuid_index_dict = bidict()
self.unload_area_uuid_index_dict = bidict()
self.dump_uuid_index_dict = bidict()
def update_group_mode(self):
"""
......@@ -107,9 +110,11 @@ class Group:
# DispatchInfo.update_device_group_structure()
self.excavator = {}
self.unload_area = {}
self.dump = {}
self.truck_set = set()
self.excavator = DispatchInfo.get_excavator(self.group_id)
self.unload_area = DispatchInfo.get_unload_area(self.group_id)
self.dump = DispatchInfo.get_dump(self.group_id)
self.truck_set = DispatchInfo.get_truck_set(self.group_id)
def update_group_road_network(self):
......@@ -135,6 +140,7 @@ class Group:
self.excavator_uuid_index_dict = {}
self.unload_area_uuid_index_dict = {}
self.truck_uuid_index_dict = {}
self.dump_uuid_index_dict = {}
for i in range(len(self.excavator)):
self.excavator_uuid_index_dict[list(self.excavator)[i]] = i
......@@ -142,13 +148,16 @@ class Group:
for i in range(len(self.unload_area)):
self.unload_area_uuid_index_dict[list(self.unload_area)[i]] = i
b = self.truck_set
for i in range(len(self.dump)):
self.dump_uuid_index_dict[list(self.dump)[i]] = i
for i in range(len(self.truck_set)):
self.truck_uuid_index_dict[list(self.truck_set)[i]] = i
self.excavator_uuid_index_dict = bidict(self.excavator_uuid_index_dict)
self.unload_area_uuid_index_dict = bidict(self.unload_area_uuid_index_dict)
self.truck_uuid_index_dict = bidict(self.truck_uuid_index_dict)
self.dump_uuid_index_dict = bidict(self.dump_uuid_index_dict)
# group_excavator_dict = {group_1: {excavator_1: load_area_1}, group_2: {excavator_2: load_area_2}}
......@@ -199,6 +208,7 @@ class Group:
truck_dispatch[i] = [next_excavator_id, next_unload_area_id]
if truck_task in [0, 1]:
bb = truck_task
next_unload_area_value = s.solve(truck_info)
min_index = np.argmin(next_unload_area_value)
next_unload_area_id = self.unload_area_uuid_index_dict.inverse[min_index]
......
......@@ -24,14 +24,18 @@ class DispatchInfo:
load_excavator_dict = {} # 装载区id-->>电铲编号的映射
excavator_load_dict = {} # 电铲编号->>装载区id的映射
# excavator <-> team_id
# excavator <-> group id
group_excavator_dict = {} # team_id -> dict {[excavator_id, excavator_id], ...}
excavator_group_dict = {} # excavator_id -> team_id 问题:多个key值对应一个value值
# unload_area <-> team_id
# unload_area <-> group id
group_unload_area_dict = {} # team_id -> dict {unload_area_id, unload_area_id, ...}
unload_area_group_dict = {} # unload_area_id -> team_id
# dump <-> group id
group_dump_dict = {}
dump_group_dict = {}
# truck_id <-> team_id
group_truck_dict = {} # team_id -> dict # {group_id:[truck_id,truck_id],...}
truck_group_dict = {} # truck_id -> team_id
......@@ -67,6 +71,9 @@ class DispatchInfo:
cls.group_unload_area_dict = {}
cls.unload_area_group_dict = {}
cls.group_dump_dict = {}
cls.dump_group_dict = {}
cls.group_truck_dict = {}
cls.truck_group_dict = {}
......@@ -111,7 +118,6 @@ class DispatchInfo:
# update excavator_id <-> group_id && unload_area_id <-> group_id && truck_id <-> group_id
try:
for item in session_mysql.query(DispatchSetting).all():
# add excavator
if item.group_id not in cls.group_excavator_dict.keys():
cls.group_excavator_dict[item.group_id] = [item.exactor_id]
......@@ -128,6 +134,14 @@ class DispatchInfo:
cls.group_unload_area_dict[item.group_id].append(item.unload_area_id)
cls.unload_area_group_dict[item.unload_area_id] = item.group_id
# add dump
if item.dump_id not in cls.group_dump_dict.keys():
cls.group_dump_dict[item.group_id] = [item.dump_id]
else:
if item.dump_id not in cls.group_dump_dict[item.group_id]:
cls.group_dump_dict[item.group_id].append(item.dump_id)
cls.dump_group_dict[item.dump_id] = item.group_id
# add truck
if item.group_id not in cls.group_truck_dict.keys():
cls.group_truck_dict[item.group_id] = [item.truck_id]
......@@ -136,7 +150,6 @@ class DispatchInfo:
cls.group_truck_dict[item.group_id].append(item.truck_id)
cls.truck_group_dict[item.truck_id] = item.group_id
print("存在的分组")
print(cls.group_excavator_dict.keys())
except Exception as es:
......@@ -256,6 +269,10 @@ class DispatchInfo:
return set(cls.group_unload_area_dict[group_id])
@classmethod
def get_dump(cls, group_id):
return set(cls.group_dump_dict[group_id])
@classmethod
def get_truck_set(cls, group_id):
return set(cls.group_truck_dict[group_id])
......
......@@ -135,6 +135,8 @@ class TruckInfo(WalkManage):
key_value_dict = redis2.hgetall(item) # reids str可以自动转为bytes
device_type = int(key_value_dict[str_to_byte("type")])
if device_type == 1:
bb = self.dynamic_truck_set
cc = truck_name_to_uuid_dict
if truck_name_to_uuid_dict[item] in self.dynamic_truck_set:
currentTask = int(key_value_dict[str_to_byte("currentTask")])
self.truck_current_task[
......@@ -270,7 +272,9 @@ class TruckInfo(WalkManage):
.filter_by(truck_id=truck_id, isdeleted=0)
.first()
)
if task in empty_task_set + heavy_task_set and item is None:
point = empty_task_set
point2 = heavy_task_set
if task in (empty_task_set + heavy_task_set) and item is None:
raise Exception(f"矿卡 {truck_id} 配对关系异常")
except Exception as es:
self.logger.error(es)
......@@ -383,6 +387,8 @@ class TruckInfo(WalkManage):
try:
session_mysql.commit()
truck_id = self.truck_index_to_uuid_dict[i]
aa = self.truck_index_to_uuid_dict
bb = self.truck_current_task
task = self.truck_current_task[self.truck_index_to_uuid_dict[i]]
item = (
session_mysql.query(EquipmentPair)
......
import numpy as np
b = np.full(2,0)
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