問題タブ [ms-solver-foundation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
946 参照

c# - Microsoft Solver Foundation での実数の範囲の操作について

私が取り組んでいるソルバー プロジェクト (C#) では、品質に関係なく、解決策があるかどうか、または一部の入力が事前に定義された実数の範囲内に収まる問題がないかどうかをテストする必要があります。

値 (パラメーター型) と 2 つの変数 (決定型) で構成される方程式の間の単純な等価性テストを表す 1 つの制約を含む次の例をまとめました。

私が観察したことは、解がないように制約が変更され、そこに示されている方程式が除算または乗算である場合、ソルバーは停止しているように見え、まだ解いているかどうかに関するフィードバックを提供しないということです。

この失速のような動作は、ソルバーが実数を扱っており、徹底的な検索の最中にあるという事実に関係していると思われますが、既知の解があるように制約が変更された場合、非常に迅速に機能します。

さまざまなフォーラムを精査しましたが、何がこの動作を引き起こしているのか、またはこれが Microsoft Solver Foundation を使用した初めての経験であるため、私の実装アプローチが正しいものであるかどうかはまだわかりません。

他の誰かがこの問題を経験したことがありますか、または実際に解決策を持っていますか?

d.

0 投票する
1 に答える
353 参照

c# - ソルバーを使用して2D領域上の最適な点を見つける

ソルバーファンデーションは初めてですが、目標関数の指定方法がわかりません。ソルバーを使用して解決しようとしている問題は、ゴール関数に基づいて2Dサーフェス上の最適なポイントを見つけることです。入力データとして、私はこの表面に3つのポイントがあり、音波がソース(最適なポイント)からそれらの3つのポイントに到達する必要がある時間の差があります。この時間差は距離差につながります。

そしてここに私のコードがあります:

GoalFunction()は次のように定義されています。

decisionX.ToDouble()この時点では決定が初期化されていないため、上記のコードは例外()をスローします。

誰かが私がそれを書き直すのを手伝ってくれる?


GoalFunctionをall-Model.methods-callsに書き直しました。

このコードは機能しますが、LocalOptimalソリューションとして{0.0}を返しますが、optimalは{2,2}です(チェックしたところ、GoalFunctionは{2,2}に対して0を返し、{0,0}に対してはるかに高い値を返します。おそらく{0、 0}は、決定がDomain.Realである場合の開始点です。

Solution.GetNext()は何も変更しません。


ドメインを制限すると、返されるソリューションは{1.9999999984154413,1.9999999990963979}なので、正しいです。

しかし、なぜソルバーは完全な実領域で起動しないのですか?まだわからない

多分誰かがいつか答えるでしょう...私は願っています、しかし私は以下の答えを正しいとマークしています。

0 投票する
1 に答える
359 参照

c# - MSF の決定に依存するパラメーター

Microsoft Solver Foundation で、値が決定値に依存するパラメーターを追加できるかどうかを知りたいです。

つまり、TSP モデルに何かが必要ですが、あるポイントから別のポイントへのトラフィックも考慮に入れる必要があります。注意: トラフィックは、セールスマンがそのルートを移動する時間によって異なります。

モデルは次のとおりです。

都市間のすべての可能な組み合わせのマトリックスがあります。

Decision 変数はOrder、セールスマンのルートです。0 は最初、1 秒、...

値からルートが実行される時間を計算するプロパティtimeToTravelにバインドされたプロパティがあり、Orderその時間の交通量を含む移動時間を返します。

Solve関数が呼び出されると、パラメーター値が一度読み取られてキャッシュされるように思えますが、正しいですか? はいの場合、この問題を解決するための推奨事項はありますか?

もともと私は MSF フォーラムでこの質問をしましたが、スタック オーバーフローでもっと注目されるだろうと思っていました。また、MSF 以外のさまざまなソルバーにもオープンですが、.NET 環境にとどまりたいと思っています。

0 投票する
1 に答える
612 参照

c# - MS Solver FoundationでIf演算子を使用するには?

このコードの何が問題になっていますか?:

ソルバーがフリーズし、結果が得られません。オペレーターがどのように機能するかを試してIfいますが、期待どおりの動作をしていないようです。私がそれを正しい方法で使用しているかどうかはわかりません(私は、等しい場合は等しくなければならない、そうでない場合はそう言いたいと思ってaいます)。2b21

私も試しました

同じ結果で。

0 投票する
1 に答える
836 参照

c# - Microsoft Solver Foundationにはバグがありますか?

oml私は別のことをしようとしているときに、これを誤って実行不可能に書いた。何が問題なのかというと、右側の最小値はゼロでなければならず、左側の最大値はゼロより大きくなければならないため、下部の制約は不可能です(もちろん何かが欠けている場合を除きます)。

問題は、それを実行すると、MSFが実行不可能であると言うのではなく、喜んで答えを出すことです。

編集:

これは私のレポートが私に与えるものです:

0 投票する
1 に答える
347 参照

c# - 地理的分布を線形確率の制約として表しますか?

私は今ソルバー財団を学んでいます。私は実際に私のプロジェクトにlpsolveを接続していますが、私の問題は、制約を最もよく表す方法の一般的な問題だと思います。

私は、かなり典型的なナップザックまたはパッキングの問題を抱えていると思います。場所のコレクションがあり、それぞれに「スコア」があります。目標の「スコア」を満たすための場所の最小数を選択したい。

(実際には、それよりも少し複雑です。各場所にはいくつかの異なるプロパティがあり、複数のプロパティをターゲットにすることがよくあります)。

ここまでは順調ですね。ただし、追加の制約があります。選択した場所の地理的な分散を最大化したいのです。その制約をどのように表すことができますか?

これが私が今持っているものの基本的な例です:

これにより、最初の3つの場所が選択されるだけで、目標は60になりますが、これら3つの場所は非常に近くにクラスター化されています。私が好むのは、最初の3つ(ID 0〜2)と最後の2つ(ID 3と4)のいずれかを選択することです。

誰かがここでいくつかのガイダンスを提供できますか?よろしくお願いします。

0 投票する
1 に答える
1017 参照

ms-solver-foundation - MS Solver Foundation で double の 2D 配列をパラメーターにバインドする

Solver Foundationで2D配列をパラメータにバインドする方法は? 配列を double(,); として定義しようとしました。double()() およびタプル (double, i, j) のリストとして。

ここで提案されている拡張メソッドを SetBinding に実装することも試みました。http://blogs.msdn.com/b/solverfoundation/archive/2010/06/28/simpler-data-binding-using-linq-and-extension-methods.aspx

現在、下から 3 行目で失敗しています。m_cov.SetBinding(CovMatrix)、エラー「このメソッドは、インデックスが 0 のパラメーターで呼び出された場合にのみ有効です」

私は最新バージョンを使用しており、vb.net で作業しています。どんな助けでも感謝します。

ありがとう、ユグ

0 投票する
0 に答える
1436 参照

optimization - Microsoft Solver Foundation Servicesに、Excelのソルバーと一致するように指示がありますか?

ソルバーアドインを使用して、平方根を含む方程式のセットを最大化するExcelワークブックがあります(たとえば、非線形です)。Microsoft Solver Foundationを使用してC#でこれを再実装しようとしています。いくつかの異なるディレクティブを試しましたが、Excelで取得した結果を再現するソルバーを見つけることができませんでした。

ハイブリッドローカル検索を使用してみましたが、結果がすべて間違っており、結果として得られる最大化が優れているとは言えません。内点法を使用して(ExcelとC#の両方から)平方根を削除すると、Excelの最適化にかなり近づきますが、正方形を含むExcelモデルと一致させようとしているため、これは役に立ちません。根。

ハイブリッド局所探索の問題は、グローバルな最大値が得られないことだと思います。NLPをサポートする他の組み込みディレクティブは見つかりませんでした。

ExcelソルバーはGRG2アルゴリズムを使用していると思います。MSFでExcelソルバーが使用するアルゴリズムを再現する方法はありますか?

参考までに、コメント'//#######'を前に付けて変更を加えたMSFに付属のQPの例を次に示します。

0 投票する
4 に答える
2436 参照

c# - MicrosoftSolverFoundationの変数の制限

こんにちは私は線形計画問題を解決するためにMicrosoftSolverFoundationを使用していますが、変数が1000を超えており、次のエラーが表示されます:{"このバージョンの製品のモデルサイズ制限を超えました。ライセンスオプションについては、MicrosoftCorporationにお問い合わせください。\ r \ n制限:NonzeroLimit = 100000、MipVariableLimit = 2000、MipRowLimit = 2000、MipNonzeroLimit = 10000、CspTermLimit = 25000、有効期限=なし。 "}

Visual Studio IDEで機能する可能性のある、効率的で1000を超える変数を受け入れることができるより優れたソルバーはありますか?ありがとう。

0 投票する
1 に答える
319 参照

ms-solver-foundation - 目的関数の Math.Min

目的関数がそれらの合計である場合、数値 0 と 1 のみを受け取る 2 つの決定変数 d1、d2 が与えられた場合、次のように表すことができます。

ここで、それらの小さい方、つまり Term を取りたいと思います

目的関数を書きたい

ここで Math.min を表現する方法は?