簡體   English   中英

CPLEX中的“索引超出范圍”錯誤

[英]“Index is out of bound” error in CPLEX

在以下代碼中,我無法運行我的程序,並且每次都會彈出錯誤“ IBM ILOG Concert異常:IloIntRangeI :: getValue(IloInt index):索引越界”。

我編寫的代碼片段如下

/*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讀取后,execute塊已調整!

所以在.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]=...;

那你的模特就好了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM