如何在使用Java向Cplex添加列时避免StackOverflowerError
我正在使用列生成,但有时当我想添加一个新列时,它会导致如何在使用Java向Cplex添加列时避免StackOverflowerError,java,exception,stack-overflow,cplex,line-numbers,Java,Exception,Stack Overflow,Cplex,Line Numbers,我正在使用列生成,但有时当我想添加一个新列时,它会导致 java.lang.StackOverflowError at ilog.concert.IloColumn$Link.install(IloColumn.java:134) 当我点击链接(IloColumn.java:134)链接时,将出现无效行号错误: 134不是ilog.concert.ilo列中的有效行号 我不知道如何修复它,它发生在一些测试问题上,而不是所有问题上 这是我的密码 我首先创建模型: IloCp
java.lang.StackOverflowError at ilog.concert.IloColumn$Link.install(IloColumn.java:134)
当我点击链接(IloColumn.java:134)
链接时,将出现无效行号错误:
134不是ilog.concert.ilo列中的有效行号
我不知道如何修复它,它发生在一些测试问题上,而不是所有问题上
这是我的密码
我首先创建模型:
IloCplex_master = new IloCplex();
_totalConflict = _master.addMinimize();
for (int j=0; j<_d; j++){
_set13Constraint[j] = _master.addRange(1,1.,"Set13-"+j);
}
for (int i=0; i<_o; i++){
for (int k=0; k<_nShipment; k++){
_set14Constraint[i][k] = _master.addRange(0,_capacity[i][k],"Set14-"+i+"."+k);
}
}
for (int vI=0; vI<_v; vI++){
_set16Constraint[vI] = _master.addRange(0,1.0,"Set16-"+vI);
}
for (int i1=0; i1<_o; i1++){
for (int j1=0; j1<_d; j1++){
for (int i2=0; i2<_o; i2++){
for (int j2=0; j2<_d; j2++){
_set17Constraint[i1][j1][i2][j2] = _master.addRange(-bigM-_coefficient[i1*_d+j1][i2*_d+j2],Double.MAX_VALUE, "Set17-o"+i1+".d"+j1+".o'"+i2+".d'"+j2);
}
}
}
}
for (int j=0; j<_d; j++){
_allDFormation[j] = new IloNumVarArray();
}
IloCplex_master=new IloCplex();
_totalConflict=_master.addMinimize();
对于@Thrasher的(int j=0;j可能重复)我尝试使用-Xss
标志来增加线程堆栈大小,但没有任何帮助。但现在我知道,当for循环的数量相对较大时,会发生这种情况,
IloColumn new_columnW = _master.column(_totalConflict ,1);
for (int j=0; j<_d; j++){
new_columnW = new_columnW.and(_master.column(_set13Constraint[j],0));
}
for (int i=0; i<_o; i++){
for (int k=0; k<_nShipment; k++){
new_columnW = new_columnW.and(_master.column(_set14Constraint[i][k],0));
}
}
for (int vI=0; vI<_v; vI++){
new_columnW = new_columnW.and(_master.column(_set16Constraint[vI],0));
}
for (int i1=0; i1<_o; i1++){
for (int j1=0; j1<_d; j1++){
for (int i2=0; i2<_o; i2++){
for (int j2=0; j2<_d; j2++){
new_columnW = new_columnW.and(_master.column(_set17Constraint[i1][j1][i2][j2],1));
}
}
}
}
IloNumVar W = _master.numVar(new_columnW, 0, Double.MAX_VALUE,"W");