cplex - CPLEX 中的“索引超出范围”错误
问题描述
在以下代码中,我无法运行我的程序,并且每次都会弹出错误“IBM ILOG Concert 异常:IloIntRangeI::getValue(IloInt index): index is out of bound”。
我写的代码片段如下
/*mod file*/
int NX=...;
range nx=1..NX;
tuple x{
int N;
float a;
float b;
}
x elem_x[nx]=...;
tuple y{
int u;
int v;
}
int L;
execute{
L=elem_x[1].N;
for (var i in nx){
L=Opl.maxl(elem_x[i].N,L);
}
}
y elem_y [nx][1..L]=...;
/*dat file*/
NX=3;
elem_x=[<1,7,9>,<3,1.5,9.4>,<2,2.7,3.4>];
elem_y=[[<2,3>,<3,4>,<3,6>],
[<4,7>,<1,9>,<5,7>]
[<0,4>,<9,3>,<2,2>]];
如果我写“y elem_y[nx][1..3]”而不是“y elem_y[nx][1..L]”,程序运行得非常好。如何消除此错误,因为在大型程序的情况下我总是不知道 L 的值。
解决方案
不要忘记在读取 .dat 之后执行块 tun!
所以在 .mod 如果你写
int NX=...;
range nx=1..NX;
tuple x{
int N;
float a;
float b;
}
x elem_x[nx]=...;
tuple y{
int u;
int v;
}
int L=max(i in nx) elem_x[i].N;
// execute{
// L=elem_x[1].N;
// for (var i in nx){
// L=Opl.maxl( ,L);
// }
// }
y elem_y [nx][1..L]=...;
那么你的模型很好
推荐阅读
- javascript - 如何在不使用 webpack 构建组件的情况下复制子目录?
- flutter - 如何复制listView颤振中的一些项目
- spring-boot - 如何生成war包以在Tomcat上运行?使用 Gradle 和 Springboot
- html - 从水平放置的 div 实现垂直结构
- image-processing - 残差网络可以更好地完成哪些图像分类任务?
- python - bash 中的并行进程
- python - 如何修复 SMTPRecipientsRefused: {'': (421, b'4.7.0 Too many protocol errors (6) on this connection, close transmission channel error Python?
- uipickerview - CoreData 的第一步
- javascript - 动态按钮事件和选择器连接无法正常工作
- javascript - Javascript用数组中的今天日期减去设置日期