成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

手把手教你使用Python構建一種預約式電梯調控系統

開發 前端
為了更好的模擬現實電梯的請求受理狀態,構造樓宇類、人物模型類、電梯類、隨機生成人物類。當電梯內的乘客數大于指定數或者載重大于限定數時,電梯不乘載當前層的乘客。

最近在通勤過程中發現電梯系統也是一個有趣的項目,獨控電梯也許沒有那么大的吸引力,但在群控電梯中的系統設計似乎有趣了起來,如何有效的利用電梯系統內所有電梯將樓宇候梯層的所有乘客準確、省時、舒適的接送至目標層成為了一個可供思考的方向。

設計平臺

  • windows 10
  • python 3.8

獨立控制電梯系統設計

群控電梯各電梯間的運行本質來講就是單個電梯獨立運行,從而先設計出獨立電梯運行系統,簡單來畫下流程圖:

圖片圖片

通過程序掃描樓宇的所有樓層的上下樓請求,并驅動電梯抵達,完成乘客從請求層到目標層的需求。主要代碼貼圖:

def take_elevator(self, elevator_data):
    """進電梯"""
    if not elevator_data:
        return elevator_data
    elevator_data = pd.DataFrame(elevator_data, dtype='int')
    data = elevator_data[elevator_data['up'] == self.up].copy()
    data2 = elevator_data[elevator_data['up'] != self.up].copy()
    while data['weight'].sum() > self.weight and not data.empty:  # 超重
        weight_max = data[data['weight'] == data['weight'].max()].index
        data2 = data2.append(data.loc[weight_max, :])
        data.drop(weight_max, inplace=True)
    while len(data) > self.persons and not data.empty:  # 超載
        weight_min = data[data['weight'] == data['weight'].min()].index
        data2 = data2.append(data.loc[weight_min, :])
        data.drop(weight_min, inplace=True)
    self.person_data = self.person_data.append(data)
    self.update_person_data(data, 'sub')
    return data2.to_dict(orient='records')

為了更好的模擬現實電梯的請求受理狀態,構造樓宇類、人物模型類、電梯類、隨機生成人物類。當電梯內的乘客數大于指定數或者載重大于限定數時,電梯不乘載當前層的乘客。

人物模型類

傳入所在樓層,去往樓層范圍,返回乘坐電梯的人物屬性。

class PeopleRandom:
    """
    構造隨機人物模型
    返回各人物屬性值,包含:所在樓層,體重,是否上樓,去往樓層
    """

    def __init__(self, floor: int, floors: tuple = (1, 30), people: int = 1):
        self.floor = floor
        self.floor_min, self.floor_max = floors
        self.people = people
        self.weight = self.set_weight()
        self.up = random.randint(0, 1)
        self.floor_go = self.go()

隨機樓層生成類

傳入樓層范圍及該層最大生成人數,返回樓宇所有樓層乘客情況。

class FloorsRandom:
    """
    隨機樓層生成,樓層隨機人數生成。
    """

    def __init__(self, floor_min: int, floor_max: int, people: int = 6):
        """
        輸入的樓層是不存在0層,故而在floor_min進行加1后進行隨機取數,如果小于等于0則減去1還原最低樓層。
        :param floor_min: 最低樓層
        :param floor_max: 最高樓層
        """

電梯類

電梯往返樓層的范圍、限重限載、運行方向、電梯內乘客狀況。

class Elevator:
    """
    電梯模型:
    能夠運行到的最低樓層,最高樓層及當前樓層
    """

    def __init__(self, floor_min, floor_max, floor: int = 1):
        self.floor = floor
        self.go_max = self.floor
        self.floor_min = floor_min
        self.floor_max = floor_max
        self.up = 1  # 1: 電梯上行,0:電梯下行
        self.weight = 1000  # 電梯限重
        self.persons = 12  # 電梯限制人員數量
        self.person_data = pd.DataFrame(columns=['floor', 'weight', 'up', 'floor_go'])

樓宇類

樓宇間電梯運行的樓層范圍及候梯乘客情況。

class BuildingList:
    """
    樓宇模型:
    最低樓層,最高樓層
    """

    def __init__(self, floor_min: int = -1, floor_max: int = 30):
        self.floor_min = floor_min
        self.floor_max = floor_max
        self.data = pd.DataFrame(columns=['floor', 'weight', 'up', 'floor_go'])
        self.set_data_all('simple')

為了簡化運算,簡化了部分模型的設計,通過隨機生成人物模型,電梯在樓宇最高層至最低層往返能夠將所有候梯乘客運送至各個指定層。

設計模型代碼已開源:https://github.com/lk20200413/FunnyCodeRepository/tree/main/預約式電梯任務系統

群控電梯系統設計

群控電梯系統的設計可以有效的緩解各層樓乘客的等待時間及提高電梯內乘客的舒適度。

就以我自己為例,小區的電梯是獨立控制電梯,為了自身能夠更早的乘坐電梯,會按下每個電梯的請求按鍵,就造成了電梯內不同程度的擁擠或延長了其他乘客的等候時間。

在此次設計前沒有查閱相關資料,在整體設計上肯定不如現有的成熟的算法設計,我把這個系統稱之為任務系統,應該是有與之對應的更專業的算法。簡單來講,把樓層間請求當做任務,系統整理任務并分發給各個電梯,每過一段時間,系統再次掃描樓宇中的請求,直至沒有請求,將每個電梯轉換為獨立電梯模式,完成電梯內乘客的目的層請求。

任務系統設計流程圖:

圖片圖片

各個電梯執行流程圖:

圖片圖片

流程圖畫得比較粗糙,煩請各位將就著看。任務系統采用距離優先進行代碼設計,限于文章篇幅設計不方便展示有關代碼部分,可移步至https://github.com/lk20200413/FunnyCodeRepository/tree/main/預約式電梯任務系統

此處或聯系作者索取代碼,TaskSystem.py為任務系統設計模塊,相關類的調用均沿用獨立電梯設計。

責任編輯:武曉燕 來源: Python爬蟲與數據挖掘
相關推薦

2022-01-04 09:01:40

Python電梯調控系統Python基礎

2025-05-07 00:31:30

2021-07-14 09:00:00

JavaFX開發應用

2010-09-16 14:08:13

無線雙網

2021-12-15 08:49:21

gpio 子系統pinctrl 子系統API

2021-12-28 08:38:26

Linux 中斷喚醒系統Linux 系統

2022-01-08 20:04:20

攔截系統調用

2022-12-07 08:42:35

2021-06-23 07:16:06

buildroot Linux內核根文件系統

2011-01-10 14:41:26

2011-05-03 15:59:00

黑盒打印機

2021-08-02 07:35:19

Nacos配置中心namespace

2020-12-08 10:32:15

Python郵件tcp

2020-08-12 09:07:53

Python開發爬蟲

2020-05-22 08:52:08

LinuxPython工具

2022-07-22 12:45:39

GNU

2021-03-12 10:01:24

JavaScript 前端表單驗證

2020-05-15 08:07:33

JWT登錄單點

2022-10-30 10:31:42

i2ccpuftrace

2021-01-19 09:06:21

MysqlDjango數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 毛片a级毛片免费播放100 | 国产精品高潮呻吟久久av野狼 | 日韩欧美中文字幕在线观看 | 91久久国产综合久久 | 91tv在线观看| 婷婷成人在线 | 国产午夜精品视频 | 欧美精品中文字幕久久二区 | 在线视频91| 欧美a级成人淫片免费看 | 亚洲激情视频在线 | 天天干.com| 日韩免费av| 国产精品久久久久久久久久久免费看 | 成人av免费在线观看 | 亚洲欧美综合 | 亚洲看片 | 拍拍无遮挡人做人爱视频免费观看 | 国内精品视频在线观看 | 亚洲精品电影在线观看 | 国产欧美日韩一区 | 成人毛片一区二区三区 | 天天插天天操 | 国产精品综合色区在线观看 | 神马久久久久久久久久 | 亚洲精品在线免费 | 精品久久久久久国产 | 国产高清免费视频 | 日韩国产一区二区三区 | 国产一区二区在线播放视频 | 亚洲精品一区二区三区中文字幕 | 理论片午午伦夜理片影院 | 日韩国产一区二区三区 | 中文字幕 国产 | 亚洲激情av | 五月天激情综合网 | 日韩精品视频在线 | 蜜桃精品在线 | 久久久激情视频 | 国产亚洲高清视频 | 免费精品 |