Javaまたは.NETのいずれかで制約充足(CSP)問題をモデル化する必要があります。この問題では、変数の階層を表す必要があります。したがって、ツリーのすべてのノードは変数です。
たとえば、変数C1が別の変数C2の子であり、C1がtrueの場合、C2はその親であるため、C2はtrueである必要があります。同時に、ブランチ内の変数ノードがtrueの場合、階層内で選択できるブランチは1つだけであるため、他のブランチ内のすべての変数がfalseであることを意味します。
CSPの問題としてどのように表現できますか?また、Javaまたは.NETでどのツールを使用できますか?
これ以上のものがあるので、詳細を提供するために編集する必要があります。
私の問題には2つの部分があります。最初の部分には、最大化関数q1 * x1 + q2 * x2 + q3 * x3 ..があります。ここで、qiは係数(実数)、xiは変数(0にすることができます)です。または1)そして私はこの関数を最大化するxiのいくつかを選択する必要があります。つまり、ノードは0または1のみであり、階層からノードを選択してこの機能を最大化する必要があります。
繰り返しますが、これらのxi変数はツリーのノードであるため、いくつかのxiを選択する場合、それらはツリーの同じブランチからのものである必要があり、一度に1つのブランチのみを選択できます。したがって、これらの階層的制約を表す必要があります(第2部)。すべてをlp問題として表現するのが最善かもしれませんが、線形計画法の制約を使用してツリーを表現する方法がわかりません。
同時に、最大化問題(前半)を使用してCSP制約を課すことができるかどうか(LP制約を使用しないかどうか)はわかりません。