IloIntVarArray 선언 및 초기화 문의드립니다.
안녕하세요.
이제 곧 추석이네요. 넉넉한 추석연휴 되시길 바랍니다.
다름이 아니고, 배열 선언하는데 궁금한 점이 있어 문의드립니다.
concert를 사용하고 있는데요. 구현하고자 하는 것은
3차원 배열을 선언(ex, IloIntVarArray 형태)하고, 이 배열은 0과 1의 값만 가집니다.
초기화 값에는 0으로 셋팅하고 계산이 끝난후에 해당되는 배열에 1의 값이 셋팅됩니다.
구현한 코드가 다음과 같습니다.
typedef IloArray <IloIntVarArray> IloIntVarArray2;
typedef IloArray <IloIntVarArray2> IloIntVarArray3;
typedef IloArray <IloIntVarArray3> IloIntVarArray4;
IloIntVarArray3 bx(env, numDCs);
for(IloInt ibx=0; ibx < numDCs; ibx++){
bx[ibx] = IloIntVarArray2(env, numServices);
for(IloInt jbx=0; jbx < numServices; jbx++){
bx[ibx][jbx] = IloIntVarArray(env, K);
for(IloInt kbx=0; kbx < K; kbx++){
bx[ibx][jbx][kbx] = IloIntVar(env, 0, 1);
}
}
}
bx라는 이름의 IloIntVarArray3입니다. numDCs, numServices, K 는 배열의 크기를 나타내는 상수입니다.
[질문1] bx[ibx][jbx][kbx] = IloIntVar(env, 0, 1); => 이렇게 하면 bx 배열에 처음에 0의 값이 셋팅되는건지요?
[질문2] 0으로 초기화가 잘 됐는지 값을 확인하고자 아래와 같이 하면 에러가 납니다. 어떻게 수정해야하는지요?
for(IloInt i=0; i<numServices; i++){
equationfile << " BX[" << setw(3) << i << "] :";
for(IloInt j=0; j<numDCs; j++){
for(IloInt k=0; k < K; k++){
equationfile << " " << cplex.getValue(bx[j][i][k]);
}
equationfile << setw(3);
}
equationfile << endl;
}
[질문3] 어짜피 0과 1의 값만 가지므로 차라리 IloBoolVarArray 형태로 하는 것이 나을까요? 만약 이렇게 바꿀경우 초기값을 0으로 셋팅하고 싶으면 어떻게 해야하는지요?
추석연휴 앞두고 질문을 드려 죄송합니다.
이번주까지 일을 끝내야 되는데 진도가 안 나가네요. 바쁘시더라도 빠른 답변을 주시면 대단히 감사하겠습니다.
감사합니다.