F # Microsoft Solver Foundation - класс NelderMeadSolver - PullRequest
3 голосов
/ 19 февраля 2012

Может ли кто-нибудь показать мне пример кода для использования класса NelderMeadSolver в F #?

Например, я хочу свернуть следующую функцию: F (X, Y)

F = (X-1) ^ 2 + (y-1) ^ 2, где 0

Я нашел пример для C #:
http://msdn.microsoft.com/en-us/library/hh404040(v=VS.93).aspx

Я был бы очень признателен, если бы кто-томожет дать мне простой код F #, чтобы минимизировать функцию выше.Спасибо.

1 Ответ

4 голосов
/ 19 февраля 2012

Я никогда раньше не использовал Solver Foundation, но вот простой перевод из примера C # в 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, не забудьте добавить dll-файлы Solver Foundation, ссылаясь на их точные пути.

...