首页 文章

如何使用Java解决CPLEX:不可行行'c2':0 = -3

提问于
浏览
0

我试图解决LP,但它不能解决它...

问题是,如果我有六个区域需要派遣一些人去那里建房子 . 在六个区域中彼此有一些子区域,每个子区域有不同的成本,一个子区域只需要一个人,但是所有子区域在我可以使用的一个区域中有一个人 .

例如:

我有五个人可以派遣

区域A1 ---> 3子区域:A11,A12,A13

A2 ---> 3子区域:A21,A22,A23

A3 ---> 3子区域:A31,A32,A33

A4 ---> 3子区域:A41,A42,A43

A5 ---> 3子区域:A51,A52,A53

A6 ---> 3子区域:A61,A62,A63

现在我使用cplex来选择派遣人员的最低成本,如果我假设A1有最低成本,那么我派遣三个人到A11,A12,A13 .

然后我仍然是两个人可以派遣,但没有任何区域有两个子区域,所以我不能再派遣 .

用这个代码

double[][] A = new double[6][];
A[0] = new double[3];
A[1] = new double[3];
A[2] = new double[3];
A[3] = new double[3];
A[4] = new double[3];
A[5] = new double[3];

//cost of sub area
A[0][0] = 999;
A[0][1] = 397;
A[0][2] = 698;

A[1][0] = 1717;
A[1][1] = 1147;
A[1][2] = 1192;

A[2][0] = 1752;
A[2][1] = 1154;
A[2][2] = 1453;

A[3][0] = 2059;
A[3][1] = 1528;
A[3][2] = 1788;

A[4][0] = 601;
A[4][1] = 270;
A[4][2] = 357;

A[5][0] = 1113;
A[5][1] = 815;
A[5][2] = 928;


// x for decision variable, if I dispatch person to sub area x = 1.
IloNumVar[][] x = new IloNumVar[6][];

for (int i = 0; i < x.length; i++) {

    x[i] = cplex.boolVarArray(A[i].length);

}



 IloLinearNumExpr numExpr_total = cplex.linearNumExpr();

    for (int i = 0; i < A.length; i++) {

        IloLinearNumExpr numExpr = cplex.linearNumExpr();           

        for (int j = 0; j < A[i].length; j++) {

            numExpr.addTerm(1.0, x[i][j]);

            numExpr_total.addTerm(1.0, x[i][j]);

       }

       cplex.addEq(numExpr, A[i].length);           
       cplex.addLe(numExpr_total, peopleNum);

    }

    loLinearNumExpr object = cplex.linearNumExpr();

    for (int i = 0; i < A.length; i++) {

        for (int j = 0; j < A[i].length; j++) {

             object.addTerm(A[i][j], x[i][j]);

        }

    }

cplex.addMaximize(object);

所以当我执行程序时,我显示错误

CPXPARAM_Read_APIEncoding“UTF8”

不可行行'c2':0 = -3 .

预先计算时间= 0.00秒 . (0.01滴答)

我该怎么办呢?

1 回答

  • 1

    正如Erwin所说,检查模型的.lp文件通常是开始调试的最佳方式 . 然而,经常发生在我身上的是,由于涉及其他一些错误的约束或限制,不可行行的根本原因并不明显 . 在这些情况下,CPLEX提供了'conflict refiner',可帮助您缩小潜在的因果模型成员 . Here是您使用JAVA API调用该工具的方式 .

相关问题