Commit c8302415 authored by z5335534 Ao Guo's avatar z5335534 Ao Guo

Good so far2

parent ab16d8ce
......@@ -158,6 +158,8 @@ class ExpectedTime(AlgorithmBase):
truck_id = truck_info.get_truck_id()
truck_index = self.truck.truck_uuid_to_index_dict[truck_id]
# task = truck_task
# trip = truck_trip
trip = truck_info.get_trip()
......
......@@ -51,7 +51,9 @@ class Dispatcher:
Generate and initialize dispatch groups.
:return: None
"""
for group_id in DispatchInfo.group_excavator_dict.keys():
groups = DispatchInfo.get_all_group()
for group_id in groups:
if group_id not in self.group_list:
group = Group(group_id, self.truck, self.pre_sch)
self.group_list.append(group)
......@@ -68,6 +70,8 @@ class Dispatcher:
Group dispatching logic.
:return:
"""
a = len(self.group_list)
aa = self.group_list
for group in self.group_list:
truck_dispatch_plan_dict = group.group_dispatch(ExpectedTime)
......
......@@ -20,6 +20,7 @@ from bidict import bidict
from alg.algorithm import AlgorithmBase
import numpy as np
# from settings import get_logger
class CurrentTruck:
""" class for the information of current dispatching truck.
......@@ -69,8 +70,8 @@ class Group:
self.pre_sch = pre_sch
# group devices
self.excavators = {} # excavator_id -> unload_area_id
self.unload_areas = {} # unload_area_id -> load_area_id
self.excavator = {} # excavator_id -> unload_area_id
self.unload_area = {} # unload_area_id -> load_area_id
self.truck_set = set() # truck_id
# road network info.
......@@ -104,11 +105,11 @@ class Group:
"""
# update group devices
# DispatchInfo.update_device_group_structure()
self.excavators = {}
self.unload_areas = {}
self.excavator = {}
self.unload_area = {}
self.truck_set = set()
self.excavators = DispatchInfo.get_excavator(self.group_id)
self.unload_areas = DispatchInfo.get_unload_area(self.group_id)
self.excavator = DispatchInfo.get_excavator(self.group_id)
self.unload_area = DispatchInfo.get_unload_area(self.group_id)
self.truck_set = DispatchInfo.get_truck_set(self.group_id)
def update_group_road_network(self):
......@@ -135,11 +136,11 @@ class Group:
self.unload_area_uuid_index_dict = {}
self.truck_uuid_index_dict = {}
for i in range(len(self.excavators)):
self.excavator_uuid_index_dict[list(self.excavators)[i]] = i
for i in range(len(self.excavator)):
self.excavator_uuid_index_dict[list(self.excavator)[i]] = i
for i in range(len(self.unload_areas)):
self.unload_area_uuid_index_dict[list(self.unload_areas)[i]] = i
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.truck_set)):
......@@ -180,8 +181,14 @@ class Group:
truck_trip = self.truck.get_truck_current_trip()[self.truck_uuid_index_dict[i]]
truck_task = self.truck.get_truck_current_task()[i]
truck_info = CurrentTruck(i, self.group_id, truck_trip, truck_task)
# a = truck_info._truck_id
# b = truck_info._trip
# c = truck_info._task
# d = truck_info._group_id
if truck_task in [-2, 3, 4]:
next_excavator_value = s.solve(i, truck_info)
next_excavator_value = s.solve(truck_info)
# next_excavator_value = s.solve(i, truck_task, truck_trip)
# min_index = next_excavator_list.index(min(next_excavator_list))
min_index = np.argmin(next_excavator_value)
next_excavator_id = self.excavator_uuid_index_dict.inverse[min_index]
......@@ -192,7 +199,7 @@ class Group:
truck_dispatch[i] = [next_excavator_id, next_unload_area_id]
if truck_task in [0, 1]:
next_unload_area_value = s.solve(i)
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]
next_excavator_id = self.excavator_uuid_index_dict.inverse[truck_trip[-1]]
......@@ -207,7 +214,7 @@ class Group:
truck_task = self.truck.get_truck_current_task()[i]
truck_info = CurrentTruck(i, self.group_id, truck_trip, truck_task)
if truck_task in [-2, 3, 4]:
next_excavator_value = s.solve(i, truck_info)
next_excavator_value = s.solve(truck_info)
# min_index = next_excavator_list.index(min(next_excavator_list))
min_index = np.argmin(next_excavator_value)
next_excavator_id = self.excavator_uuid_index_dict.inverse[min_index]
......
......@@ -110,7 +110,7 @@ class DispatchInfo:
# update excavator_id <-> group_id && unload_area_id <-> group_id && truck_id <-> group_id
try:
for item in session_mysql.query(DispatchSetting).filter_by(group_type=1).all():
for item in session_mysql.query(DispatchSetting).all():
# add excavator
if item.group_id not in cls.group_excavator_dict.keys():
......@@ -136,6 +136,9 @@ 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:
logger.error("挖机/卸载区/矿卡与group_id映射更新异常")
logger.error(es)
......@@ -236,6 +239,9 @@ class DispatchInfo:
logger.error("路网距离更新异常-调度部分和路网部分不一致")
logger.error(es)
@classmethod
def get_all_group(cls):
return set(cls.group_excavator_dict.keys())
@classmethod
def get_group_mode(cls, group_id):
......
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