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

고객지원

기술문의

MIP에서 정수값의 numerical error 문제

  • 권성화
  • 2003.02.15
  • 조회수 1,276
이미 다른분이 질문한 내용과 유사한 질문입니다.

1. IloInt 타입으로 설정한 IloNumVar의 결과값을 읽어 올 때,
cplex.getValue()로 읽어오면 double값이기 때문에 이 값을 int형으로
변환하면 문제가 생길 수 있습니다.
물론, 정수값과의 차이가 매우 작으므로 눈으로 확인하면 문제가 없지만
이 값을 int로 저장할 때는 error bound를 고려해야 합니다.
제 질문은, 이 때 고려해야 하는 error bound가 얼마인지 하는 것
입니다.
CPlex 파라미터 중에, Integrality tolerance인 IloCplex::EpInt이 있
는데, 이 값을 기준으로 정수값과의 차이가 이 값 보다 작으면 그 정수
로 변환하면 문제가 없는 지 알고 싶습니다.

2. 비슷한 질문입니다.
1번 질문에서의 error bound를 IloCplex::EpInt로 하는 것이 맞다면,
cplex.getObjValue나 cplex.getValue(expr)과 같은 경우는 어떻게 하면
좋을까요?
(objective가 정수 형태인 경우나, IloExpr이 정수형태로 되어 있을
경우)
변수 하나가 아니라, 여러 변수가 연관되어 있어서, 각각의 error가 쌓
여서 전체 에러가 IloCplex::EpInt보다 에러보다 커질 수도 있을 것
같은데...
만일 그렇다면, getObjValue로 읽은 값을 int로 변환할 때 error bound
를 어떻게 고려하면 좋을까요?

다른 분이 질문하신 질문에 대한 답변을 찾아보니,
0.001(?)정도를 기준으로 하여 판단하면 된다고 되어있더군요.
그 보다, 좀 더 정확한 기준이 있었으면 하고 질문을 드립니다.
좋은 답변 기다리겠습니다.

댓글 0

댓글 입력