2018年數學建模國賽B題 智能RGV的動態調度策略(附代碼)

第一種情況大致思路: 每秒判斷各個CNC的狀態,若工作完成或者是出於空閒狀態下則向RGV發出一個請求。同時,RGV每秒判斷自己的狀態(上下料、移動、閒置、清洗等),如果是處於閒置狀態,則啓用調度算法,把目前在閒置的CNC做一個全排列,計算把他們都換上料所花的時間。得到最優方案後再決定這次給誰上料,同時切換狀態。

第二種情況大致思路: 大致與上面的相同,還是每秒判斷各種狀態,再特殊時段啓用調度算法決定去哪,不過這裏是雙工序,所以需要在初始確定一種刀片分配方案。這裏用循環直接枚舉出所有的分配方案,每一種在仿真八個小時(實際上就是幾秒,不顯示界面的話)得到一個分數,選擇最好的一種分配方案。這裏對於某一種確定的分配方案,我們在調度的時候,選擇把空閒的一號刀片CNC與二號刀片CNC放在兩個列表中,也是對兩個列表做一個全排列,並計算交錯運行的間隔時間,找到最短方案。(比如1 2 是一號刀片 3 4 5是二號刀片 因爲一個長一個短,全排列後也無法正好一個一號一個二號全上一次料,所以我們以短的那組作爲上下料的數目 這裏第一個列表長度是2 第二個是3 所以計算兩對即可,去一個一號工序的,去一個二號工序的;再去一個一號,再去另一個二號;計算過程中所有CNC的等待時間),因爲我們兩個列表都做了全排列,且取較短的那個,所以可以窮舉所有情況:比如最終採取1 4 2 5,然後在完成1 4之前就不再變動,當1 4 完成後,重新啓用調度算法,對剩下的空閒CNC再算一次,決定當前狀態下怎麼抉擇最好。

第三種情況大致思路: 這裏我們啓用了一種智能的調度算法,框架大體同上,只是讓RGV每時每刻都處於一個接收命令的狀態,所以命令列表就是所有的CNC,而非空閒的CNC了。對所有CNC進行全排列,計算去哪一個花費的時間少。並直接過去,如果此CNC未完成工作就繼續等待。在完成一個工作後,立馬計算當前狀態下應該前往哪一個CNC那裏。雙刀片類似。

2018年數學建模國賽B題代碼 本代碼實現的是一個仿真模型,並在優化模型中使用了智能化的小車

具體代碼太長,已經上傳到Github:https://github.com/xiaoDragon/-2018-mathematical-modeling-competition-Question-B

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章