我正在尝试使用带有Cplex链接器的C来解决MIP问题。我需要找到两个决策变量的最小值,据我所知,我应该写为约束因为它们是决策变量。 if
语句不适用于决策变量。以下是我在C中的模型的一部分。
void TSPMIP(int Scenario, int Agency)
{
int i,j;
double tmpDouble;
IloEnv env; //Intialize the Cplex Environment
try{
IloModel model(env);
D2Array Q_bar(env,Scenario);
for(i=0;i<Scenario;i++)
{
Q_bar[i] = IloNumVarArray(env,Agency,0,IloInfinity,ILOINT);
}
IloNumVarArray Q(env,Agency,0,IloInfinity,ILOINT); //definition of decision variables.
我想做的是
for(i=0;i<Scenario;i++){
for (j=0;j<Agency;j++){
IloExpr v9(env);
if (Q_bar[i][j]>=Q[j]){
v9=min-Q_bar[i][j];
}else {
v9=min-Q[[j];
}
cons.add(v9==0);
v9.end();
}
}
model.add(cons);
但它不适用于决策变量。
答案 0 :(得分:1)
对此进行建模的一种简单方法是添加另一个变量并添加约束以强制新变量必须小于其他每个变量。