我的问题摘要:
我有这样的petri网中的线性方程组(ILP):
int[][] a = {
{-1, 0, 0, 0},
{1, -1, 0, 0},
{1, 0, -1, 0},
{0, 1, 0, -1},
{0, 0, 1, -1},
{0, 0, 0, 1}};
int[] A = {0, 0, -1, 0, 0, 1};
x1, x2, x3, x4>=0;
x1, x2, x3, x4; //--> must be integer
这些问题可能有更多的变量和约束。 方程式永远不会是不等式。它也可以最大化或最小化。
我查看了所有整数问题的一些例子,但他们无法处理变量多于约束的系统,反之亦然。
在像lp_solve之类的软件中,我可以处理这些问题,但对于这个解决方案,我必须处理许多.dll文件和包装器。
我正在寻找Java或简单嵌入库中的解决方案。我真的很感谢你的帮助,因为我有点卡住了。
答案 0 :(得分:0)
我可以使用一些Java代码将这些内容提供给SMT求解器。
Petri网基本上表示为两个稀疏矩阵,请参见类hosting the net
可以在此处找到一个使用示例作为约束将其馈送到SMT求解器:code feeding a state equation
根据我的经验,包装SMT求解器比插入ILP求解器更加通用和舒适。