研究多目標優化問題,往往需要做實驗來對比效果,所以需要很多多目標方面的經典代碼,比如NSGA-II, SPEA, MOEA,MOEA/D, 或者PSO等等。
想親自實現這些代碼,非常浪費時間,還有可能出錯,最好的方法就是找一些網上現成的開源代碼。
在這里記錄下我學習JMetal這個庫的過程。
JMetal 代碼寫得非常漂亮,非常好地利用了面向對象的設計思想,可以非常方便地拓展,自定義各種問題,還有各種評價指標。所以學習這個對於以后從事啟發式算法非常有幫助。
第一章 在Eclipse中配置JMetal代碼
1. 下載JMetal源代碼
代碼包可以在官方網站下載: http://jmetal.sourceforge.net/
我這里下載的是 jmetal4.5.2.src.tar.gz
同時下載了官方的手冊 jmetal4.5.userManual.pdf
2. 創建自己的項目
新建一個JAVA 項目,輸入項目名,下一步,然后點擊 Link additional source,然后把JMetal包解壓出來的路徑包含進去
剛導入的時候可能全部都是紅色的叉叉,是一些不認識的配置文件造成的,我的處理方法是在Problems選項卡中找到所有的問題,然后全選刪除。
或者直接在文件夾里面搜索 ._開頭的文件 全部刪除 就可以了
3. 嘗試運行NSGA-II
在這個包里面:
jmetal.metaheuristics.nsgaII 找到 NSGAII_main.java 然后右鍵 Run As -> Java Application 輸出:
在你新建的那個目錄里面,就看到了NSGAII的運行結果 其中FUN是目標函數的值,VAR是每個解
差不多到這里,整個JMetal框架就配置好了。
接下來我會用JMetal來解決一個大規模社區聚類的問題,感覺一下這個框架的好處。