我需要在 Java 或 .NET 中对约束满足 (CSP) 问题进行建模。该问题需要表示变量的层次结构。所以树的每个节点都是一个变量。
例如,如果变量 C1 是另一个变量 C2 的子变量,并且如果 C1 为真,那么 C2 应该为真,因为它是他的父变量。同时,如果一个分支中的一个变量节点为真,这意味着其他分支中的所有变量都是假的,因为在层次结构中只能选择一个分支。
我如何将其表示为 CSP 问题,我可以在 Java 或 .NET 中使用哪个工具?
我必须对其进行编辑以提供更多详细信息,因为还有更多:
在我的问题中,有 2 个部分:在第 1 部分中,有一个最大化函数 q1*x1+q2*x2+q3*x3.. 其中 qi 是系数(实数),xi 是变量(可以是 0或 1) 我必须选择一些最大化此功能的 xi。换句话说,节点只能是 0 或 1,我必须通过从层次结构中选择一个节点来最大化这个功能。
同样,这些 xi 变量是树的节点,所以当我选择一些 xi 时,它们必须来自树的同一分支,并且一次只能选择 1 个分支。因此我需要表示这些分层约束(第二部分)。最好的办法是将所有内容都表示为 lp 问题,但我不知道如何表示具有线性规划约束的树。
我不知道我是否可以同时使用最大化问题(第一部分)并施加 CSP 约束(而不是使用 LP 约束)。