有人能给我展示一下如何使用F#中的NelderMeadSolver类的示例代码吗?
例如,我想要最小化以下函数:F(X,Y)
F = (X-1)^2 + (y-1)^2 其中0< X < 2,0< Y < 2 答案显然是X=1,Y=1
我在C#中找到了一个示例:
http://msdn.microsoft.com/en-us/library/hh404040(v=VS.93).aspx
如果有人能提供简单的F#代码来最小化上述函数,我将不胜感激。谢谢。
有人能给我展示一下如何使用F#中的NelderMeadSolver类的示例代码吗?
例如,我想要最小化以下函数:F(X,Y)
F = (X-1)^2 + (y-1)^2 其中0< X < 2,0< Y < 2 答案显然是X=1,Y=1
我在C#中找到了一个示例:
http://msdn.microsoft.com/en-us/library/hh404040(v=VS.93).aspx
如果有人能提供简单的F#代码来最小化上述函数,我将不胜感激。谢谢。
我以前从未使用过Solver Foundation,但这里是一个简单的翻译,来自MSDN中的C#示例(适用于您的优化函数):
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)
您应该能够添加 Solver Foundation 的引用并构建程序。如果您在 F# 交互中使用代码,请记得通过引用其精确路径来添加 Solver Foundation 的 dll 文件。
NelderMeadSolver.Solve
是一个静态方法,因此您无需实例化对象即可使用该求解器。 - pad