주메뉴 바로가기 본문 바로가기 하단 바로가기

고객지원

기술문의

cp optimizer에서 cp.getValue 문의

  • 민석홍
  • 2013.12.09
  • 조회수 1,242
안녕하세요.
혼자 꾸역꾸역 해나가다 ...
도저히 해답을 찾기가 어려워서 문의 드립니다.
고지가 눈 앞에 보이는데 막막합니다.

질문의 내용은
cp optimizer에서 cp.getValue를 이용하여 변수 확인 시 발생되는 에러에 대한 질문 입니다.

문제점]
object 값은 나오고(나와야 할 값이 제대로 나옴) 이후 결과에 대한 변수 값을 확인하려 액세스 하는 과정에서
다음과 같은 에러 메시지가 출력 됩니다.

Error: IloExtractable 29 IloNumVarI has not been extracted by IloAlgorithm 0104FA68


동일한 변수를 2차원 변수(edge[y][z])로 사용하고 액세스하는 과정에서는 잘 되었는데...
코드를 변경하여 ...
3차원 변수(edge[x][y][z]) 로 확장하여 적용하였더니 액세스하는 과정에서 문제가 발생합니다.



3차원 변수는 다음과 같이 생성 하였습니다.

ILOSTLBEGIN

typedef IloArray(IloNumVarArray) NumVarMatrix;
typedef IloArray(NumVarMatrix) NumVar3Matrix;



NumVar3Matrix edge(env ,sd_fairs);

for(i=0; i< sd_fairs; i++) // 3d array
{
edge[i] = NumVarMatrix(env, matrix_size);

for(j=0; j< matrix_size; j++)
{
edge[i][j] = IloNumVarArray(env, matrix_size);

for(k=0; k<matrix_size; k++)
{
edge[i][j][k] = IloNumVar(env, 0.0, 1.0, ILOINT);
}
}
}



아래는 변수 확인을 위한 코드 입니다... 에러 메시지가 발생하는 부분입니다.

for(IloInt i = 0; i < sd_fairs; i++){
for(IloInt j = 0; j < matrix_size; j++){
for(IloInt k = 0; k < matrix_size; k++){
cp.out() << cp.getValue(edge[i][j][k]) << std::endl;
}
cp.out() << std::endl;
}
cp.out() << std::endl;
}



}

댓글 1

  • 비회원2017-07-31
    Heckuva good job. I sure aprcipeate it.
    아이콘삭제

댓글 입력