は私が前にソルバー財団を使ったことがないが、ここに(あなたの最適化機能に適応)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フレームワーク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
エラーは何ですか?あなたのリンクによると 'NelderMeadSolver.Solve'は静的メソッドなので、ソルバを使うためにオブジェクトをインスタンス化する必要はありません。 – pad
解決策= NelderMeadSolver.Solve(...)という行にエラーがあります。「メンバーまたはオブジェクトのコンストラクタ 'Solve'は1つの引数を取っていません」2つの引数を取ってオーバーロードが見つかりました。 SolveメソッドはC#couterpartと1対1のマッチをしていません。上記のリンクは引数に関する情報を提供しますが、実装方法はわかりません。ありがとうございました! – user1219664