есть проблемы с моим C++ Concert Cplex. Я пытаюсь воссоздать проблему самого короткого пути. Вывод в текстовый файл является:Cplex модель: нет решения
Minimize
obj: 2 x_12 + x_13 + 2 x_21 + x_24 + x_31 + 3 x_34 + x_42 + 3 x_43 + x9
Subject To
c1: x_12 + x_13 - x_21 - x_31 + x_14 - x_41 = 1
c2: - x_12 + x_21 + x_24 - x_42 + x_23 - x_32 = 0
c3: - x_13 + x_31 + x_34 - x_43 - x_23 + x_32 = 0
c4: - x_24 - x_34 + x_42 + x_43 - x_14 + x_41 = -1
Bounds
x9 = 0
End
Затем я использовал следующий код для получения решения:
IloCplex spp(model);
spp.setParam(IloCplex::RootAlg, IloCplex::AutoAlg);
spp.solve();
IloArray<IloNumArray> vals(env);
env.out() << "Solution status = " << spp.getStatus() << endl;
env.out() << "Solution value = " << spp.getObjValue() << endl;
env.out() << "Values x = " << vals << endl;
Однако выход я получаю это:
Solution status = Optimal
Solution value = 0
Values x = []
Кто-нибудь знает что случилось с моей программой? Благодаря
EDIT:
Моя модель построена в самой программе, вот первая часть:
IloEnv env;
IloModel model(env);
IloArray<IloNumVarArray> x(env);
IloRangeArray c(env);
IloInt nnodes = G.size();
IloInt i, j;
IloEnv env = model.getEnv();
//SHORTEST PATH PROBLEM
for (i = 0; i < nnodes; i++){ //x decision variables
x.add(IloNumVarArray(env, nnodes, 0, IloInfinity));
}
for (i = 0; i < nnodes; i++){
for (j = 0; j < nnodes; j++){
stringstream sts;
sts << "x_" << i + 1 << j + 1;
x[i][j].setName(sts.str().c_str()); //SET NAMES
}
}
//set objective min sum_(all ij)[c_ij][x_ij]
IloExpr obj(env);
for (i = 0; i < nnodes; i++){
for (j = 0; j < nnodes; j++){
obj += G[i][j] * x[i][j];
}
}
model.add(IloMinimize(env, obj));
obj.end();
//constraints sum_j[x_ij]-sum_j[x_ji] = 1 for s, -1 for t, or 0
for (i = 0; i < nnodes; i++){
int ss = 0;
if (i == s) ss = 1;
if (i == t) ss = -1;
IloExpr sum1(env);
IloExpr sum2(env);
for (j = 0; j < nnodes; j++){
sum1 += x[i][j];
sum2 += x[j][i];
}
c.add(sum1 - sum2 == ss);
sum1.end();
sum2.end();
}
model.add(c);
//solving---------------------------------------------------------
IloCplex spp(model);
//write to file
spp.exportModel("model1.lp");
spp.solve();
Спасибо за ответ, я сделал редактирование на свое оригинальное сообщение. Модель, о которой идет речь, создается cplex. Выход текстового файла является результатом «exportModel()». Так в моем случае, есть ли ошибка в решении()? – Michael