我一直在尋找3天的時間來獲得能夠在java中進行多變量非線性優化的Java庫。我想出了幾個,最着名的是Apache Commons優化器包。不幸的是,我找不到很多例子,而且我沒有足夠的經驗去弄清楚如何在沒有例子的情況下使用他們的優化軟件包。有人能告訴我一個關於如何用Apache Commons軟件包解決多變量優化問題的例子,或者指出一些可以幫助我的文檔嗎?具有約束條件的Java多變量非線性優化程序庫
回答
(另請參閱最近的question的答案)。
如果您正在尋找Java中可以處理(非)線性約束並且不依賴於派生的非線性優化器,那麼我會推薦Michael Powell的COBYLA2算法。我已將此算法的原始FORTRAN實現轉換爲Java,並且您可以在Github和CodeProject上找到相應的代碼。
現在,267個變量可能是對COBYLA2的挑戰,或者對於這個問題,任何優化器都不依賴衍生產品。請確保您允許進行大量的目標函數計算,以確保算法有足夠的空間向最佳收斂。
如果你願意考慮基於梯度的算法,我可以推薦IPOPT。 IPOPT以C++實現,但通過JNI的Java interface是官方發行版的一部分。
使用IPOPT算法,我必須手動計算梯度嗎?我試圖避免使用這個267變量函數,並讓算法去完成這項工作。 – Kammeot
IPOPT本身不提供任何梯度估計或[自動分化](http://en.wikipedia.org/wiki/Automatic_differentiation),但您可以在Apache Commons Math中找到AD對Java的支持。 –
如果您的變量的值範圍是離散的:OptaPlanner也是一個能夠進行多變量非線性優化的Java庫。它有高達50000個變量的示例(每個值有5000個值)。
- 1. Java中的非線性多變量函數的約束優化
- 2. C++ WITH約束條件下的順序非線性優化庫
- 3. 非線性約束條件參數matlab
- 4. 如何使用optaplanner解決非線性約束多變量方程 - Java的
- 5. 具有兩個非線性相等約束的最小二乘法優化
- 6. 如何解決Matlab中的非線性約束優化問題?
- 7. 約束線性優化設置
- 8. 帶約束條件的優化
- 9. 如何在c中解決非線性約束優化問題#
- 10. Gurobi中具有底層函數的線性約束條件
- 11. java/cplex約束的線性化
- 12. 在線性編程中將條件約束轉換爲線性約束
- 13. Java:聲明變量具有多個通用的「約束」
- 14. scipy.optimize與非線性約束
- 15. 優先約束條件
- 16. 具有約束的樣本,矢量化
- 17. 非類型變量約束
- 18. Matlab:多維約束非線性最小化,如Nelder-Mead?
- 19. Matlab的:非線性方程優化
- 20. 約束的非線性優化微軟求解基礎VS Matlab的fmincon
- 21. matlab中的fmincon的非線性約束
- 22. Gurobi優化器(Python):線性化二次約束?
- 23. AngularJS - $ scope變量不具有約束力
- 24. Mathematica:幫助求解具有不等式約束的非線性方程組
- 25. fPortfolio工作中的非線性約束?
- 26. 約束優化R建立約束
- 27. 兩個因子變量之間具有相等約束的線性模型
- 28. 對同一變量有雙重約束的線性規劃
- 29. Matlab的優化工具箱中的多重等式約束
- 30. 求解具有多個變量和不等式約束條件的多個方程
您一直在搜索3天的官方文檔? http://commons.apache.org/proper/commons-math/userguide/optimization.html TBH我見過更糟糕的開源項目文檔。 –
好的,所以我的問題是267尺寸。雖然它是可區分的,但我不想被卡住的267偏導數卡住。所以我查看了他們擁有的4個多變量直接求解器。我需要一些可以採用線性約束的東西。在他們的網站上它說他們提供了4個求解器,其中兩個不能自己管理約束。所以我看了另外兩個求解器,Bobyqa和CMA求解器。當談到優化方法時,沒有指示參數應該是什麼。在文檔中它只是說OptimizationData ... – Kammeot