用c++调用cplex,在返回计算结果时遇到下面的错误,麻烦大家帮我看下。
弹出的框框:
example1.exe 中的 0x7c812afb 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012fabc 处的 IloAlgorithm::NotExtractedException。
c++的提示:
example1.exe 中的 0x7c812afb 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0012fabc 处的 IloAlgorithm::NotExtractedException。
example1.exe 中的 0x7c812afb 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012fabc 处的 IloAlgorithm::NotExtractedException。
出现错误的相关语句(把这些语句注释掉就没错误了):
定义y[][]:
NumVar2Matrix y(env,N); //N是y中元素的个数
for(i=1;i<=N;i++)
{
y[i]=IloNumVarArray(env,N);
for(j=1;j<=N;j++)
{
y[i][j]=IloNumVar(env,0,1,ILOINT);
}
}
cplex计算之后返回结果的语句:
IloInt yy[N][N];
for(i=1; i<=N;i++)
{
for(j=1; j<=N; j++)
{
yy[i][j]=cplex.getValue(y[i][j]);
}
}
cout<<"here4"<<endl;
getchar();
[解决办法]
cplex计算之后返回结果的语句:
IloInt yy[N][N]; // 如果这是N的话
for(i=1; i<=N;i++) //这里就是 i=0;i<N ;;;;;;;;;;;;;;;;;;i=N时就越界了。因为数组的下标是从0开始的
{
for(j=1; j<=N; j++)
{
yy[i][j]=cplex.getValue(y[i][j]);
}
}
cout<<"here4"<<endl;
getchar();
[解决办法]
最好还是下个断点调试,单步运行吧.一步步执行,就看容易看出错在哪里了