Я пытаюсь решить пластинку, но она не может ее решить ...
Проблема в том, что если у меня есть шесть областей, мне нужно отправить туда людей, чтобы построить дом.В шести областях есть некоторые подзоны друг для друга, каждая подзона имеет разную стоимость, и в одной подзоне нужен только один человек, но во всех подрайонах есть один человек в одной области, которую я могу использовать.
Например:
У меня есть пять человек, которые могут отправить
Область 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, чтобы выбратьМинимальная стоимость отправки людей, если я предполагаю, что А1 имеет минимальную стоимость, поэтому я отправляю трех человек на А11, А12, А13.
, тогда я остаюсь двумя людьми, которые могут отправлять, но ни в одной области нет двух суб.области, поэтому я не могу больше отправлять.
с этим кодом
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 тика)
как я могу это исправить?