Как добавить массивы Excel в Cplex - PullRequest
0 голосов
/ 19 января 2020

Я хочу добавить Excel в Cplex, но я только что получил эту ошибку: Исключение из IBM ILOG Concert: Excel: размер диапазона не является размером массива. Я использовал SheetConnection.

int M1=3;
int M2=3; 
int P1=3; 
int P2=3; 
int T=12;
int D=12; 
int H=2; 
int J=3;
range patients_meli=0..(M1+1);//0ta4
range patients_Tourist=(M1+2)..(M2+M1+2);
range providers_meli=1..P1;//1ta6
range providers_Tourist=(P1+1)..(P2+P1);
range Period=0..H;

int Cexcl[1..P1, 1..J*3]=...;
int C[p in providers_meli][j in 1..J][h in Period]=Cexcl[p,h+3*(J-1)];
int Cpexcl[1..P2, 1..J*3]=...;
int Cp[p in 1..3][j in 1..J][h in Period]=Cpexcl[p,h+3*(J-1)];

in my .dat file i add code like this:


SheetConnection sheetInput("Book1.xlsx");
Cexcl from SheetRead (sheetInput,"'cost1'!B3:G5");   
Cpexcl from SheetRead (sheetInput,"'cost2'!B3:G5");

Я изменил числа, я чувствую, что неправильно определил свои массивы. или что-то не так с моим Excel. Помогите, пожалуйста.

Изображения файла Excel: [1]: https://i.stack.imgur.com/MTWvQ.png [1]: https://i.stack.imgur.com/pRCuS.png

1 Ответ

0 голосов
/ 19 января 2020

в .mod вы написали

int Cexcl[1..P1, 1..J*3]=...;

, поэтому размер должен быть в 3 раза 9

, но в .dat

Cexcl from SheetRead (sheetInput,"'cost1'!B3:G5"); 

это размер в 3 раза 6

Так что это не может быть хорошо.

Вы можете взглянуть на пример масла в examples / opl / oil

...