2009-07-30 53 views
14

我正在研究線性和非線性編程(優化)框架的選項。Microsoft Solver Foundation是否符合我的需求?

要求是:

  1. 支持線性,並用約非線性規劃問題。 100-1000個變量和約1000個約束(我認爲這很簡單)。非線性問題具有涉及多個變量乘法或除法的限制 - 沒有比這更復雜的了。

  2. 很好的集成與MS的環境(SQL服務器的MS Access,.NET和Excel)

  3. 很高興有將是特設的問題定義的支持(即某種腳本語言或支持的定義和在Excel前端解決問題)

  4. 我會單獨使用Excel,但我也需要能夠以編程方式(.NET環境)解決更大問題的解決方案。

對於編程式訪問,我打算開發求解器的抽象接口(所以我們可以在需要時更改求解器)。然後我偶然發現MS Solver Foundation(http://code.msdn.microsoft.com/solverfoundation)已經有這個接口。我想知道它是否符合我們的其他要求以及用戶對此的看法。

回答

4

事實證明,Microsoft Solver Foundation不支持非線性編程。截至2010年1月,球隊的official word就是他們正在考慮它,但它並不在他們的近期計劃中。

所以我已經解決了AMPL作爲建模語言接口和KNITRO爲求解算法。 KNITRO看起來不錯,因爲它由三種算法組成,其中一種(Interior Point Method的兩種變體和Active Set method的一種)。另見維基百科頁面KNITRO

我對能源的美國國家科學基金會和美國部門在美國Argonne National Laboratory稱爲NEOS顯然是資助一個優秀的門戶網站嘗試了兩種評估版後AMPL和KNITRO解決。 NEOS提供了一個Web界面,用於使用AMPL或GAMS(以及一些解算器和其他一些解算器)上傳數學模型,然後通過結果網頁和電子郵件將結果返回。假設有一個用於提交問題的電子郵件界面,但我沒有成功實現這一目標。

現在,這一切都需要花錢。 KNITRO和AMPL是商業產品。最終該解決方案的成本約爲8000美元。不便宜。如果您正在尋找免費的解決方案,我認爲這些選項幾乎侷限於求解器的IPOPT(我也在NEOS上嘗試過,發現它運行良好,但由於其他非技術原因,我無法選擇它)以及放棄AMPL接口。您可以通過IPOPT的API設置您的問題。雖然與Micrsoft Solver Foundation的API不同,但IPOPT接口稍微複雜一些,而且最具挑戰性的是,它要求您的調用應用程序實現回調,以計算模型非線性方程式的第一個(可能是第二個)導數。建模語言接口(如AMPL)會爲您提供幫助,因爲它們能夠計算用其語言編寫的所有方程的符號導數。

2

根據您列出的要求,它看起來像Microsoft Solver Foundation符合您的所有要求,然後一些。閱讀「什麼是解算器基礎?」 Solver基金會網站上的文件。它提到了線性編程,非線性編程,在.NET中開發,可以在Excel中使用,Solver Foundation還帶有一個Microsoft Office Excel插件,以便在熟悉的界面中提供完整的建模環境。

+2

我試過Microsoft Solver Foundation,但它不支持非線性問題。 – Emmanuel 2009-12-19 01:48:45

+4

截至2010年11月Solver Foundation 3.0確實支持非線性模型 – bobobobo 2011-01-31 02:46:18

3

我已經嘗試過Solver基金會,我曾嘗試(未成功)解決過去的問題,並在2天內破解了它,包括Solver API的學習。 求解器性能很好,SFS(Solver Foundation Services)API是AWESOME

1

基於GNU的GLPK庫是一個很好的免費選項。我已經拋出了1000和1000列的問題,不用擔心。它需要幾個不同的問題定義格式,但是通過C或C++ API使用最簡單。對它後面的引擎的改進始終發生。我相信也有一些包裝器(即Perl,Python)。

相關問題