問題タブ [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 に答える
2901 参照

c# - Microsoft Solver Foundation に Nelder-Mead ソルバーを使用したサンプルはありますか?

Neler-Mead ソルバーを使用した例について、Microsoft Solver Foundation に付属の例を確認しています。サンプル Web サイトには 1 つあると書かれていますが、C# で記述された NLP サンプルを開くと、SineX と呼ばれるコンパクトな準ニュートン ソルバーの例しか表示されません。

問題のサンプルを見つけた人、または Nelder-Mead ソルバーを使用した他のサンプルを持っている人はいますか?

MSDN の MSF サンプル リスト (2 つの NLP サンプルが示されていますが、1 つしか表示されません) http://msdn.microsoft.com/en-us/library/ff524501(v=vs.93).aspx

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

c# - タイプ'Microsoft.SolverFoundation.Services.Term'を'bool'に暗黙的に変換することはできません

以下のコードで「タイプ'Microsoft.SolverFoundation.Services.Term'を'bool'に暗黙的に変換できません」という例外が発生しました。どのように解決すればよいですか?

以下はスナップショットです

ここに画像の説明を入力してください

0 投票する
2 に答える
6772 参照

visual-studio-2012 - vs12でMicrosoft.Solver.Foundationを参照するには?

Visual Studio 2012 で作業しているプロジェクトに Solver Foundation を追加しようとしていますが、リストに見つかりません。

サンプル プロジェクトの 1 つを開きました。参照は Microsoft.Solver.Foundation ですが、プロジェクトで使用可能なすべてのリストで Microsoft.S を検索しようとしましたが、表示されませんでした。

Solver Foundation をプロジェクトに組み込むにはどうすればよいですか?

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

solver - ソルバーの基礎目標で天井関数を使用しますか?

ソルバーゴール関数で、決定変数の1つの上限を2.5倍にしようとしていますが、foobar変数がdoubleではないため、Math.Ceiling()関数を適用できません。これは「項」です。 " 変数。ソルバーで機能する、これと同じコードを表現できる別の方法はありますか?

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

c# - 行列乗算での MS Solver Foundation の使用

Microsoft Solver Foundationを使用して、行列の乗算に関する問題を最適化しようとしています。Excel のソルバーを使用してこれを行うことができますが、C# に統合しようとしていて問題が発生しています。以下に例を挙げて説明します。

次のように定義された (3x3) 行列yがあるとします。

最小化されるような(1x3) 行列xを見つけたいです。x * y * x'さらに、x値の合計が 1 になる必要があり、どの x値も 0 未満であってはなりません。

これが私がこれまでに持っているコードです:

私が立ち往生している部分は、最小化したいものを伝えるときです。

通常、この部分には方程式 ( などd1 * d2 + d3) が含まれますが、行列の乗算はそれほど単純ではありません。

乗算を実行して を返す関数を作成できますがdoubleAddGoal()Termオブジェクトが必要であり、オブジェクトに対して算術演算を行う必要がありDecisionます。

別の方法として、この乗算を大きなstring式に分解することもできますが (これは既に行っています)、この方法で行う必要がない方がよいと思います。(この文字列は次のようになります"d1 * 5 + d2 * 1 + d3 * 0 ...":)

何か案は?ありがとう。

PS: 正解 (Excel による) は次のとおりです。

n注: ソリューションは、多数の「決定」を行うためにスケーラブルである必要があります。

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

c# - Microsoft Solution Foundation を使用して目標を定義する

プログラムの目的: 統合。高次元 (最大 100) の適応求積 (別名数値積分) アルゴリズムを実装しています。アイデアは、そのポイントでのエラーの推定値に比例するサンプリング密度を使用してポイントを評価することにより、ボリュームをランダムに小さなセクションに分割することです。早い段階で、均一なサンプルを「バーンイン」してから、推定誤差に対するガウス分布に従ってポイントをランダムに選択します。シミュレートされたアニーリングと同様の方法で、「温度を下げ」、時間の経過とともにガウス分布の標準偏差を減らします。これにより、最初はエラーの少ないポイントが選択される可能性がかなり高くなりますが、後で着実に減少して選択されます。確率。これにより、プログラムは、エラー関数の不完全性のために見逃される可能性のあるスパイクに遭遇することができます。(私のアルゴリズムは精神的に似ていますマルコフ連鎖モンテカルロ積分.)

機能特性。統合する機能は、自然災害による複数の建物の保険損害の推定です。ポリシー機能はスムーズではありません: 免責額、上限、レイヤー (たとえば、100 万ドルの損失まではゼロの支払い、100 万ドルから 200 万ドルまでは 100% の支払い、200 万ドルを超えるとゼロの支払い)、およびその他の奇妙なポリシー条件があります。これにより、多くの平面で導関数を持たない非線形の動作と関数が導入されます。ポリシー関数に加えて被害関数があります。これは、建物の種類とハリケーンの強さによって異なり、決して釣鐘型ではありません。

問題のコンテキスト: エラー関数。難しいのは、適切な誤差関数を選択することです。各ポイントについて、これに役立つと思われる測定値を記録します。関数の大きさ、以前の測定の結果としてどれだけ変化したか (一次導関数のプロキシ)、ポイントが占める領域の体積 (より大きな体積はエラーをよりよく隠す)、および領域の形状に関連する幾何学的要因。私の誤差関数は、各測定値に異なる重みが割り当てられているこれらの測定値の線形結合になります。(悪い結果が得られた場合は、非線形関数を検討します。) この取り組みを支援するために、各重みの可能な値の広い範囲にわたって最適化を実行することにしました。これが Microsoft Solution Foundation です。

最適化するもの: エラー ランク。私の測定値は、0 から 1 まで正規化されています。これらのエラー値は、積分が関数値、変更などの最近の平均を反映するように進行するにつれて、徐々に修正されます。その結果、実際のエラー値を生成する関数を作成しようとしているのではなく、真の誤差、つまり、すべてのサンプル ポイントがこの推定誤差値で並べ替えられた場合、真の誤差で並べ替えられた場合と同様のランクが付けられるはずです。

すべてのポイントが等しいわけではありません。#1 の真のエラーを含むポイント領域が #1000 にランク付けされているかどうか (またはその逆) は非常に気にしますが、#500 のポイントが #1000 にランク付けされているかどうかはほとんど気にしません。私の成功の尺度は、アルゴリズムの実行の途中の時点で、多くの領域にわたって次の合計を最小化することです。

ABS(Log2(trueErrorRank) - Log2(estimatedErrorRank))

Log2 の場合、数値以下の最大の 2 乗を返す関数を使用しています。この定義から、有用な結果が得られます。1 番と 2 番を入れ替えると 1 ポイントかかりますが、2 番と 3 番を入れ替えても無料です。これには、ポイントを 2 の累乗範囲に階層化する効果があります。範囲内で交換されたポイントは機能に追加されません。

私が評価する方法これを行うRankというクラスを作成しました。

  1. すべての領域を真の誤差で 1 回ランク付けします。

  2. パラメーター化された重みの個別のセットごとに、その領域の試行 (推定) エラーを計算します。

  3. その試行錯誤で領域を並べ替えます。

  4. 各地域のトライアル ランクを計算します。

  5. 2 つのランクのログの絶対差を合計し、これをパラメーター化の値と呼びます。したがって、値を最小化する必要があります。

C# コード. 以上のことをすべて行った後は、最適なパラメーターを見つけるために Microsoft Solver Foundation をセットアップする方法が必要です。構文は私を困惑させました。これが、これまでに作成した C# コードです。そこには、私が特定した 3 つの問題に対するコメントが表示されます。多分あなたはさらに多くを見つけることができます!これを機能させる方法はありますか?

更新: フォールバックとして別のライブラリを探すことにし、DotNumerics ( http://dotnumerics.com/ ) を見つけました。彼らの Nelder-Mead シンプレックス ソルバーは、簡単に呼び出すことができました。

必要なのは、ObjectiveFunction を double 配列を取るメソッドとして実装することだけでした。

実際のデータに対して試したことはありませんが、Excel でシミュレーションを作成してテスト データを設定し、スコアを付けました。アルゴリズムから返された結果は完璧ではありませんでしたが、非常に優れたソリューションが得られました。

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

f# - F# での引用符とパターン マッチング

新しいコンソール アプリケーションでは、次のコードを貼り付けるだけで、「パラメーターは認識されたメソッド名ではありません」という例外が発生します。

  • 次のコードはインストールで機能しますか?
  • ジョーカー: それが私のものでうまくいかない理由を知っていますか?

コンパイラで定義されたアクティブ パターン SpecificCall の定義を見ると、次のことがわかります。

0 投票する
3 に答える
1939 参照

c# - 64ビットOSで動作しないMicrosoftSolverFoundationのLpSolveプラグイン

MSF用のLPSolvePlugInを64ビットOSで動作させることができません。(asp mvc 3アプリケーションから呼び出されたホストされたac#dll内)

このための特定のバージョンはありますか?x86をターゲットとするアプリケーションを構築する必要がありますか?ソルバープラグインをソースコードからターゲットx64に再構築する必要がありますか?

私は途方に暮れていて、プラグインに関するドキュメントはあまりなく、最新のコードはMSF 2.0.7をターゲットにしているようです(私は現在3.0.1または3.0.2を持っています)

どんな助けでもいただければ幸いです。月曜日に確認し、必要に応じて情報を追加します。

ありがとう

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

c# - Microsoft Solver Foundation の場所分散目標

場所のコレクションから最も分散した 3 つの場所を選択できるように、Microsoft Solver Foundation を使用しようとしています。モデルに 2 つの目標を追加しました。1 つは 3 つの場所が選択されるようにすること、もう 1 つはそれらが最も分散された 3 つの場所であることを確認することです。

さらに、私の Location クラスは次のようになります。

私の距離計算は次のとおりです。

今、私のコードには2つの問題があり、それらがどこから来たのかわかりません.

まず、

現状の私のコードは、5 つの場所のほとんどの順列で機能し、そのうちの 3 つが同じ経度緯度 (つまり、この例では候補 2、候補 4、および候補 5) ですが、特定の候補の順列では、最も分散した 3 を返しません (つまり、同じ問題インスタンスは、候補宣言の順序を変更するだけです)。理由がわかりません。

第二に、

少なくとも 3 つの場所を選択するように制約をコメント アウトすると、すべての場所が選択されるのではなく、何も選択されません。

私の目標がほとんどの場合に機能するという事実は、それが正しいことを示しているようです。

これは宿題ではありません。返信してくれた人に感謝します。