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

c# - How can I define a constraint that prevents a resource to be allocated to 2 tasks that overlap?

How can I define a constraint that prevents a resource to be allocated to 2 tasks that overlap?

I have defined 5 resources: R1,R2,...,R5 and 3 tasks: T1,T2,T3 that have their corresponding start and end date(s1, e1 represent the start and end date of the first task, s2,e2 of second task and so on). My constraint should prevent R1 to be allocated to task T1 and task T2 if these two tasks overlap. R1 can be allocated to any number of tasks so if T1 and T3 do not overlap, they can both be performed by R1.

I am planning to use C# and Microsoft Solver Foundation to solve this problem but of course this is not so important. My problem is that I don't know how to formulate this problem as a constraint.

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

c# - MS Solver Foundation CSP エラー - 入力のシンボル ドメインが異なります

Microsoft Solver Foundation を使用して、家族のクリスマス抽選 ( 「シークレット サンタ」や「クリス クリングル」に似ています) を解決しようとしています。

いくつかの複雑な制約があります (たとえば、兄弟のために購入できないなど)。これは、各参加者のドメインを整理するために既に使用しています。

ソルバーは機能しますが、人がプレゼントを 1 つだけ受け取る必要があるという制約がないことを除きます (つまり、アリスがボブのために購入するということは、他の誰もボブのために購入していないことを意味します)。

「AllDifferent」制約を追加しようとしましたが、引数例外が発生しています-

「入力アリスとボブは異なるシンボル ドメインを持っています。」

また、制約を OML 式として追加しようとしましたが、同じエラーが発生しました。

  • ドメインが異なる決定の間に制約を適用することは可能ですか?
  • そうでない場合、すべての決定に同じドメインを使用する必要がある場合、「含む」制約はありますか? (「ElementOf」を使用しようとしましたが、機能させることができませんでした。)

サンプルプログラム-

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

c# - SimplexSolver からのシャドウ プライスのレポート

AddRow、AddVariable、および SetCoefficientを使用して、SimplexSolverクラスを直接使用して線形計画法を解いています。これは非常にうまく機能します。

シャドウプライスを考え出す必要がありますが、シャドウプライスまたはシンプレックスマトリックスにアクセスする方法がわかりません。

SimpleSolverParams.GetSensitivityReportを trueに設定した場合、SimpleSolver.GetReport の戻り値をILinearSolverSensitivityReportにキャストすることがここでの鍵となる可能性があります。それをチェックアウトします。

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

c# - Microsoft Solver Foundation がモデルを解決できない場合がある

生産計画プロジェクトに取り組んでいるので、いくつかのマシン(A、B)で注文生産開始時間を見つけたいです。

簡単にするために、2 台のマシン (マシン A とマシン B) があるとします。次の制約があります。

  • A_TimeLimitation各マシンは 1 日の特定の時間帯 ( , B_TimeLimitation) にのみ動作します。

    • マシン A は、次の範囲で動作できます。

      (2014/12/4 00:00:00 - 2014/12/4 02:00:00) または(2014/12/4 04:00:00 - 2014/12/4 06:00:00)

    • マシン B は、次の範囲で動作できます。

      (2014/12/4 02:00:00 - 2014/12/4 04:00:00)または(2014/12/4 05:00:00 - 2014/12/4 07:00:00)

  • 各製品はマシン A を通過し、次にマシン B を通過する必要があります。

  • 各製品は、各マシンで数時間かかります (私のサンプルでは 60 分)。
  • マシン B は、マシン A が作業を終了した後に開始する必要があります。
  • B は、A が仕事を終えてから 10 分以内に仕事を始めることができます。[更新しました]
  • 目標は、注文生産時間を最小限に抑えることです。

次のコードを使用して、aDateTimeを分に変換しました。

var minutes = new TimeSpan(dateTime.Ticks).TotalMinutes;

したがって、上記のコードを使用すると、DateTime範囲が範囲に変換されDoubleます。

問題を解決するためにMicrosoft Solver Foundationを使用しているため、次のコードを使用しました。

しかし、コードを実行すると、無限ループに入るように見えます.10000ミリ秒後に を指定するTimeLimitと、解決策が見つからなかったことを意味します.マシンの2番目の範囲を削除すると、コードは解決策を見つけることができます.directivesolution.QualityUnknownMSFDateTimeA

誰が問題がどこにあるか知っていますか?