用Java解决Petri网的线性整数规划问题

时间:2016-03-03 11:19:16

标签: java linear-programming integer-programming

我的问题摘要:
我有这样的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或简单嵌入库中的解决方案。我真的很感谢你的帮助,因为我有点卡住了。

1 个答案:

答案 0 :(得分:0)

我可以使用一些Java代码将这些内容提供给SMT求解器。

Petri网基本上表示为两个稀疏矩阵,请参见类hosting the net

可以在此处找到一个使用示例作为约束将其馈送到SMT求解器:code feeding a state equation

根据我的经验,包装SMT求解器比插入ILP求解器更加通用和舒适。