Commit 391d2602 authored by 张晓彤's avatar 张晓彤

分组调度架构更新

parent bbbfd63c
#!E:\Pycharm Projects\Waytous
# -*- coding: utf-8 -*-
# @Time : 2022/5/30 16:32
# @Author : Opfer
# @Site :
# @File : alg.py
# @Software: PyCharm
class AlgorithmBase:
"""
Base class for dispatch alg.
"""
def __init__(self):
pass
class Congestion(AlgorithmBase):
"""
class for congestion alg.
"""
def __init__(self, group):
super().__init__()
self.group = group
def solve(self):
pass
class ExpectedTime(AlgorithmBase):
"""
class for expected traveling time alg.
"""
def __init__(self, group):
super().__init__()
self.group = group
def solve(self):
pass
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# @Time : 2022/1/5 14:14 # @Time : 2022/1/5 14:14
# @Author : Opfer # @Author : Opfer
# @Site : # @Site :
# @File : algorithm.py # @File : alg.py
# @Software: PyCharm # @Software: PyCharm
...@@ -13,7 +13,7 @@ from equipment.dump import DumpInfo ...@@ -13,7 +13,7 @@ from equipment.dump import DumpInfo
from equipment.excavator import ExcavatorInfo from equipment.excavator import ExcavatorInfo
class ScheduleAlg(WalkManage): class ScheduleAlg(WalkManage):
""" class for the schedule algorithm. """ class for the schedule alg.
Description: Description:
根据设备状态计算调度价值 根据设备状态计算调度价值
......
#!E:\Pycharm Projects\Waytous
# -*- coding: utf-8 -*-
# @Time : 2022/5/30 15:35
# @Author : Opfer
# @Site :
# @File : group.py
# @Software: PyCharm
from data.dispatchInfo import DispatchInfo
from bidict import bidict
from alg.algorithm import AlgorithmBase
class Group:
"""
class for group instance.
"""
def __init__(self, group_id):
""" Generate a group obj.
:param group_id: (uuid) group_id
"""
self.group_id = group_id
# group devices
self.excavator_dict = {} # excavator_id -> unload_area_id
self.dump_dict = {} # dump_id -> load_area_id
self.truck_set = set() # truck_id
# road network info.
self.to_excavator_distance = None
self.to_dump_distance = None
self.park_to_excavator_distance = None
self.to_excavator_congestion = None
self.to_dump_congestion = None
self.park_to_excavator_congestion = None
# device map
self.truck_uuid_index_dict = bidict()
self.excavator_uuid_index_dict = bidict()
self.dump_uuid_index_dict = bidict()
def update_xx_(self):
"""
update above parameters.
:return:
"""
pass
def group_dispatch(self, solver):
"""
Receive a alg obj. and output dispatch plan for trucks in this group.
:param solver:
:return:
dispatch plan: Dict({truck_id: match_id})
"""
assert isinstance(solver, AlgorithmBase)
s = solver(self) # algorithm init
return s.solve() # algorithm solve
#!E:\Pycharm Projects\Waytous
# -*- coding: utf-8 -*-
# @Time : 2022/5/30 14:45
# @Author : Opfer
# @Site :
# @File : dispatchInfo.py
# @Software: PyCharm
class DispatchInfo:
"""
class for dispatch group info.
"""
# dispatch groups
group_num = 1
group_set = set()
# device group structure
group_dump_dict = {} # team_id -> dict {[dump_id, unload_area_id], [dump_id, unload_area_id], ...}
group_excavator_dict = {} # team_id -> dict {[excavator_id, load_area_id], ...}
group_truck_dict = {} # team_id -> dict {truck_id, ...}
dump_group_dict = {} # dump_id -> team_id
excavator_group_dict = {} # excavator_id -> team_id
truck_group_dict = {} # truck_id -> team_id
# group feature
group_mode = {}
@classmethod
def update_device_group_structure(cls):
pass
@classmethod
def update_group_mode(cls):
pass
@classmethod
def dispatch_group_init(cls):
"""
update basic paras (group_set, dict, num ...)
:return:
"""
pass
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