2

F#でNelderMeadSolverクラスを使用するサンプルコードを誰にでも表示できますか? F(X、Y)F#Microsoft Solver Foundation - NelderMeadSolverクラス

F =(X-1)^ 2 +(Y-1)^ 2 0 < X < 2,0:

は、例えば、私は、次の関数を最小化します誰かが私に上記の機能を最小限にするために、単純なF#コードを与えることができれば、私は非常に感謝し
http://msdn.microsoft.com/en-us/library/hh404040(v=VS.93).aspx

:< Y < 2回答は、私はC#のための一例を見つけobviousely X = 1、Y = 1

です。ありがとうございました。

答えて

3

は私が前にソルバー財団を使ったことがないが、ここに(あなたの最適化機能に適応)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ファイルを追加してください。

+0

ありがとうございます。私はSolverFoundationを参照し、.NETフレームワーク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

+0

エラーは何ですか?あなたのリンクによると 'NelderMeadSolver.Solve'は静的メソッドなので、ソルバを使うためにオブジェクトをインスタンス化する必要はありません。 – pad

+0

解決策= NelderMeadSolver.Solve(...)という行にエラーがあります。「メンバーまたはオブジェクトのコンストラクタ 'Solve'は1つの引数を取っていません」2つの引数を取ってオーバーロードが見つかりました。 SolveメソッドはC#couterpartと1対1のマッチをしていません。上記のリンクは引数に関する情報を提供しますが、実装方法はわかりません。ありがとうございました! – user1219664

関連する問題