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

手把手教你使用Python構(gòu)建一種預(yù)約式電梯調(diào)控系統(tǒng)

開發(fā) 后端
本文通過用Python設(shè)計一種任務(wù)型預(yù)約電梯系統(tǒng),更深刻地理解了獨立電梯轉(zhuǎn)換為群控電梯不單單是電梯的簡單組合。

大家好,我是【🌑(這是月亮的背面)】。

今天給大家介紹使用Python構(gòu)建一種預(yù)約式電梯調(diào)控系統(tǒng).

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

設(shè)計平臺

  • windows 10
  • python 3.8

獨立控制電梯系統(tǒng)設(shè)計

群控電梯各電梯間的運行本質(zhì)來講就是單個電梯獨立運行,從而先設(shè)計出獨立電梯運行系統(tǒng),簡單來畫下流程圖: 

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

  1. def take_elevator(self, elevator_data): 
  2.     """進電梯""" 
  3.     if not elevator_data: 
  4.         return elevator_data 
  5.     elevator_data = pd.DataFrame(elevator_data, dtype='int'
  6.     data = elevator_data[elevator_data['up'] == self.up].copy() 
  7.     data2 = elevator_data[elevator_data['up'] != self.up].copy() 
  8.     while data['weight'].sum() > self.weight and not data.empty:  # 超重 
  9.         weight_max = data[data['weight'] == data['weight'].max()].index 
  10.         data2 = data2.append(data.loc[weight_max, :]) 
  11.         data.drop(weight_max, inplace=True
  12.     while len(data) > self.persons and not data.empty:  # 超載 
  13.         weight_min = data[data['weight'] == data['weight'].min()].index 
  14.         data2 = data2.append(data.loc[weight_min, :]) 
  15.         data.drop(weight_min, inplace=True
  16.     self.person_data = self.person_data.append(data) 
  17.     self.update_person_data(data, 'sub'
  18.     return data2.to_dict(orient='records'

為了更好的模擬現(xiàn)實電梯的請求受理狀態(tài),構(gòu)造樓宇類、人物模型類、電梯類、隨機生成人物類。

當(dāng)電梯內(nèi)的乘客數(shù)大于指定數(shù)或者載重大于限定數(shù)時,電梯不乘載當(dāng)前層的乘客。

人物模型類

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

  1. class PeopleRandom: 
  2.     ""
  3.     構(gòu)造隨機人物模型 
  4.     返回各人物屬性值,包含:所在樓層,體重,是否上樓,去往樓層 
  5.     ""
  6.  
  7.     def __init__(self, floor: int, floors: tuple = (1, 30), people: int = 1): 
  8.         self.floor = floor 
  9.         self.floor_min, self.floor_max = floors 
  10.         self.people = people 
  11.         self.weight = self.set_weight() 
  12.         self.up = random.randint(0, 1) 
  13.         self.floor_go = self.go() 

隨機樓層生成類

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

  1. class FloorsRandom: 
  2.     ""
  3.     隨機樓層生成,樓層隨機人數(shù)生成。 
  4.     ""
  5.  
  6.     def __init__(self, floor_min: int, floor_max: int, people: int = 6): 
  7.         ""
  8.         輸入的樓層是不存在0層,故而在floor_min進行加1后進行隨機取數(shù),如果小于等于0則減去1還原最低樓層。 
  9.         :param floor_min: 最低樓層 
  10.         :param floor_max: 最高樓層 
  11.         ""

電梯類

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

  1. class Elevator: 
  2.     ""
  3.     電梯模型: 
  4.     能夠運行到的最低樓層,最高樓層及當(dāng)前樓層 
  5.     ""
  6.  
  7.     def __init__(self, floor_min, floor_max, floor: int = 1): 
  8.         self.floor = floor 
  9.         self.go_max = self.floor 
  10.         self.floor_min = floor_min 
  11.         self.floor_max = floor_max 
  12.         self.up = 1  # 1: 電梯上行,0:電梯下行 
  13.         self.weight = 1000  # 電梯限重 
  14.         self.persons = 12  # 電梯限制人員數(shù)量 
  15.         self.person_data = pd.DataFrame(columns=['floor''weight''up''floor_go']) 

樓宇類

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

  1. class BuildingList: 
  2.     ""
  3.     樓宇模型: 
  4.     最低樓層,最高樓層 
  5.     ""
  6.  
  7.     def __init__(self, floor_min: int = -1, floor_max: int = 30): 
  8.         self.floor_min = floor_min 
  9.         self.floor_max = floor_max 
  10.         self.data = pd.DataFrame(columns=['floor''weight''up''floor_go']) 
  11.         self.set_data_all('simple'

為了簡化運算,簡化了部分模型的設(shè)計,通過隨機生成人物模型,電梯在樓宇最高層至最低層往返能夠?qū)⑺泻蛱莩丝瓦\送至各個指定層。

設(shè)計模型代碼已開源:

https://github.com/lk20200413/FunnyCodeRepository/tree/main/預(yù)約式電梯任務(wù)系統(tǒng)

群控電梯系統(tǒng)設(shè)計

群控電梯系統(tǒng)的設(shè)計可以有效的緩解各層樓乘客的等待時間及提高電梯內(nèi)乘客的舒適度。

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

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

任務(wù)系統(tǒng)設(shè)計流程圖: 

各個電梯執(zhí)行流程圖:

 

流程圖畫得比較粗糙,煩請各位將就著看。任務(wù)系統(tǒng)采用距離優(yōu)先進行代碼設(shè)計,限于文章篇幅設(shè)計不方便展示有關(guān)代碼部分,可移步至

https://github.com/lk20200413/FunnyCodeRepository/tree/main/預(yù)約式電梯任務(wù)系統(tǒng)

此處或聯(lián)系作者索取代碼,TaskSystem.py為任務(wù)系統(tǒng)設(shè)計模塊,相關(guān)類的調(diào)用均沿用獨立電梯設(shè)計。

總結(jié)

大家好,我是【🌑(這是月亮的背面)】。本文通過用Python設(shè)計一種任務(wù)型預(yù)約電梯系統(tǒng),更深刻地理解了獨立電梯轉(zhuǎn)換為群控電梯不單單是電梯的簡單組合,整個電梯系統(tǒng)設(shè)計因素應(yīng)該以時間運行為主,將各個電梯拆分為多線程運行,在本設(shè)計中簡化了時間因素,用跳過樓層替代各電梯間的運行差異。

世界上任何美好的事物都值得我們?nèi)チ魬伲粦?yīng)該因為當(dāng)下的不堪而放棄了追逐夢想的權(quán)利!

 

責(zé)任編輯:姜華 來源: Python爬蟲與數(shù)據(jù)挖掘
相關(guān)推薦

2024-08-05 12:58:53

2025-05-07 00:31:30

2021-07-14 09:00:00

JavaFX開發(fā)應(yīng)用

2010-09-16 14:08:13

無線雙網(wǎng)

2021-12-15 08:49:21

gpio 子系統(tǒng)pinctrl 子系統(tǒng)API

2021-12-28 08:38:26

Linux 中斷喚醒系統(tǒng)Linux 系統(tǒng)

2022-01-08 20:04:20

攔截系統(tǒng)調(diào)用

2022-12-07 08:42:35

2021-08-02 07:35:19

Nacos配置中心namespace

2011-01-10 14:41:26

2011-05-03 15:59:00

黑盒打印機

2021-06-23 07:16:06

buildroot Linux內(nèi)核根文件系統(tǒng)

2020-12-08 10:32:15

Python郵件tcp

2020-08-12 09:07:53

Python開發(fā)爬蟲

2022-07-22 12:45:39

GNU

2022-10-30 10:31:42

i2ccpuftrace

2020-05-15 08:07:33

JWT登錄單點

2021-03-12 10:01:24

JavaScript 前端表單驗證

2021-01-19 09:06:21

MysqlDjango數(shù)據(jù)庫

2020-05-22 08:52:08

LinuxPython工具
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: av黄色免费 | 亚洲精品二区 | 天天爱天天操 | 懂色一区二区三区免费观看 | 国产一区二区电影网 | 人碰人操 | 欧美日韩三级视频 | 亚洲免费视频网址 | 日韩精品免费播放 | 懂色中文一区二区三区在线视频 | 国产一区视频在线 | 81精品国产乱码久久久久久 | 九九热这里只有精品6 | 人人干天天干 | 国内精品久久久久久久影视简单 | 日韩精品一区二区三区视频播放 | 久久婷婷国产香蕉 | 亚洲一区视频 | 国产精品久久久久国产a级 欧美日韩国产免费 | 久久久久久久久久久91 | 日本手机看片 | 香蕉久久网 | 欧美一区二区三区的 | 狠狠色综合久久丁香婷婷 | 在线视频91| 国产成人网 | 精品视频一区在线 | 罗宾被扒开腿做同人网站 | 精品久久久久久亚洲综合网 | 毛片网站在线观看 | 91传媒在线观看 | 精品欧美乱码久久久久久 | 精品伦精品一区二区三区视频 | 精品视频在线观看 | 影视一区 | 伊人手机在线视频 | 在线免费国产 | 精品欧美一区二区三区久久久 | 日韩欧美国产精品综合嫩v 一区中文字幕 | xxx国产精品视频 | 亚洲一区欧美 |