Tabu Search求解作業車間調度問題(Job Shop Scheduling)-附Java代碼


本文來源於公眾號【程序猿聲】,作者舟寒丶

作業車間調度問題

問題模型

舉個栗子

有關禁忌搜索算法的內容,公眾號內有詳細教程:

干貨 |【算法】禁忌搜索算法(Tabu Search,TS)超詳細通俗解析附C++代碼實例

干貨 | 到底是什么算法,能讓人們如此絕望?

禁忌搜索算法求解帶時間窗的車輛路徑規划問題詳解(附Java代碼)

大家可以點擊超鏈接回顧相關知識,這里就不再細說了。

一般而言,用禁忌搜索算法解決問題時,需要注意的點無非就是以下幾個:初始解的生成;禁忌對象的選擇;鄰域動作算子的選擇。

我們簡單介紹代碼中使用的算子:

代碼展示

代碼是github上的開源代碼,作者是Thiebout Dewitte。具體代碼比較長,講解需要花很長的篇幅,但是注解比較詳細,因此就不在此展示了。我們簡單介紹一下輸入輸出,感興趣的朋友可以文末看到下載方式,自行下載研究。

輸入部分

輸入算例格式如下:

第一行為注釋部分,第二行數字分別為工件數、機器數。

輸出部分

運行代碼時,可以多種運行方式:

在Main.java文件內選擇所需運行模式,算例設置也在同一文件中。

測試單一算例:使用opendeurdagKulak()方法。將測試算例路徑放入Main.java中:

測試算例附帶在代碼內。
結果生成在編譯器內部:

前三行按照機器順序排列,cost表示總耗時,最后一行表示最長耗時的加工順序。

測試多個算例,分別生成table1、2:

在上方輸入算例所在文件夾,下方輸入輸出部分文件名。
table輸出可放置在LaTeX環境中,在此就不展示了。

代碼下載

進入公眾號輸入【JSPTS】不帶【】,即可下載對應Java代碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM