一部電梯(已知所有命令)的調度演算法?
01-12
想了倆小時沒想出來,幾近崩潰,十分煩躁,累覺不愛。。所以來求助
具體問題簡化後是這樣:一共6層,沒有地下,兩種指令,格式分別是(電梯內部按鈕請求標誌"E",目標樓層,當前樓層,當前電梯狀態(分為1上行,0下行,2空載)),(電梯外部按鈕『F』,目標樓層,上or下,當前樓層,當前電梯狀態);現已知用字元串數組依次按照時間順序存所有的指令,怎麼把指令轉換成隊列,來實現調度?例如:(E,6,1,2)(E,4,3,1)存在隊列中為queue[1]="(E,4,3,1)",queue[2]="(E,6,1,2)"
以前大學時做過電梯,實際的電梯調度貌似很傻,它不管你是電梯內部、還是外部的命令,它只看「當前時刻」要到達的有哪些目標樓層(見下)。為什麼會這麼傻,因為尼瑪用的是梯形圖plc編程,直接控制與plc配套的變頻器和大電機(問:為毛不用單片機或pc,同時自己設計電機控制演算法(題主問的調度有用武之地了)? 答:出事故了誰負責。。。),太複雜的調度也懶得用plc搞,梯形圖拖拖 拖死人。而且貌似也沒有更符合實際的調度方法,題主想通過內外指令隊列調度,就要考慮到電梯的位置、電梯運動需要的時間、人發出指令的隨機性等等各種意想不到並且使問題複雜化的情形。
case 1 電梯剛剛快運動到某層:
電梯運動快到該層時他才根據「當前」的目標樓層思考要不要停,停則進入case 5,否則繼續case 4。
case 2 電梯剛剛停在某層X分鐘後:
原先D方向上「當前」還有目標樓層,那麼繼續按D方向繼續運動case 4,否則進入電梯「閑置」狀態case 3,且把D方向清空。case 3 電梯「閑置」地 停在某層:
不斷地檢查最先出現新的目標樓層,決定運動方向,標記運動方向D,開始運動case 4 。
case 4 電梯按D方向運動:
不斷地判斷電梯是否快到某層,則進入case 1。case 5 電梯剛剛停在某層,X分鐘後必然進入case 2。推薦閱讀:
※國內電梯維保行業真的很不盡人意嗎?
※修理電梯有前途嗎?
※武漢寫字樓電梯從40層狂跌至2層,為什麼一定要提升到46層才救人?
※在搭乘人數不同的時候,電梯的運行速度會有變化嗎?
※電梯進去了突然失控怎麼回事?