2016-09-30 10 views
0

저는 Ilog Cplex를 C++로 사용하여 수학 모델을 구현했습니다. 대부분의 의사 결정 변수는 최적 해에서 분수 값을가집니다. 그 중 일부는 cplex가 0으로 출력하는 매우 작습니다. 정밀도를 높이는 방법이있어 변수의 값을 계속 볼 수 있습니까?계산의 정밀도 C++ Cplex

또한 cplex.getBestObjValue()을 사용하면 "-Inf"가 표시됩니다. (이것은 극대화 문제입니다.)

답변

0

당신이 파람 :: 강조 ::

수치 불안정하거나 어려운 문제의 정밀도를 강조 수치 설정 IloCplex ::를 사용을 시도 할 수 있습니다. 이 매개 변수를 사용하면 CPLEX에 수치 적으로 어렵거나 불안정한 문제의 정밀도를 강조해야하므로 결과적으로 시간과 메모리의 성능이 절충됩니다.

두 번째 질문에 대해서는 귀하의 모델이 LP입니까?

관해서는 아주 정상입니다 (하지만 정확히) 정수 값에 가까운 정수 변수의 값을 갖는

+0

답변 해 주셔서 감사합니다. IloCplex :: Param :: Emphasis :: Numerical 설정을 사용할 때 어떻게 정밀도를 지정할 수 있습니까? 이 매개 변수를 사용하는 방법에 대한 예를 들려 줄 수 있습니까? 그리고 네, 제 모델은 LP입니다. – user2147241

+0

기본값은 0입니다. 숫자 정밀도를 강조하지 마십시오. 그러나 1은 운동에서 극도의주의를 요한다는 것을 의미합니다. –

1

. CPLEX는 완전성 허용 오차를 가지므로이 값은 올바른 정수 값에 충분히 가깝게 받아 들여집니다. 표준 C++ 출력 함수를 사용하여 원하는 값으로 출력 할 수 있습니다.

대부분 문제는 아니지만 필요한 경우 더 작은 값으로 통합 허용 오차를 설정할 수 있습니다. 나는 일반적으로 가장 가까운 정수 값으로이 값을 반올림하고이를 내 솔루션으로 사용합니다. 또한 결정 변수를 반올림 한 정수 값으로 고정하여 모델을 재실행하여 솔루션이 실제로 유효한지 확인할 수도 있습니다. 충분하지 못하다면 Alex가 수치 정밀도 강조에 대한 제안을 시도해보십시오.