我以前從未使用過求解基金會,但這裏是C# example in MSDN一個簡單的翻譯(適應您的優化功能):
open System
open Microsoft.SolverFoundation.Common
open Microsoft.SolverFoundation.Solvers
let xInitial = [| 0.; 0. |]
let xLower = [| 0.; 0. |]
let xUpper = [| 2.; 2. |]
let sqr x = x * x
let solution =
NelderMeadSolver.Solve(
Func<float [], _>(fun xs -> sqr(xs.[0] - 1.) + sqr(xs.[1] - 1.)),
xInitial, xLower, xUpper)
printfn "%A" solution.Result
printfn "solution = %A" (solution.GetSolutionValue 0)
printfn "x = %A" (solution.GetValue 1)
printfn "y = %A" (solution.GetValue 2)
你應該能夠添加解算器基金會的引用和構建程序。如果您使用F#Interactive中的代碼,請記住通過引用其確切路徑來添加Solver Foundation的dll文件。
來源
2012-02-19 19:55:53
pad
謝謝。我設法引用了SolverFoundation並重定向了.net framework 4.但是我擔心我無法使用VS 11編譯上面的代碼。我想我必須先實例化NelderMeadSolver類。例如,讓NMSolver = new NelderMeadSolver(),然後讓solution = NMSolver.Solver(.....)以下是該類的鏈接:http://msdn.microsoft.com/en-us/library/microsoft .solverfoundation.solvers.neldermeadsolver(v = vs.93).aspx – user1219664 2012-02-19 20:15:52
什麼是錯誤?根據你的鏈接'NelderMeadSolver.Solve'是一個靜態方法,所以你不必實例化一個對象來使用求解器。 – pad 2012-02-19 20:59:37
它有一個線路上的錯誤讓解= NelderMeadSolver.Solve(...)說,「成員或對象構造函數'解決'不帶1個參數(S)。重載被發現帶2個參數。解決方法沒有一對一的匹配它的C#couterpart。上面的鏈接給出了一些關於參數的信息,但我不知道如何實現它。謝謝!! – user1219664 2012-02-19 21:12:47