Cplex stopping rule (MIP에서)
cplex로 작업을 하던 중 다음과 같은 로그를 얻었습니다.
문제의 형식은 MIP입니다.
-------------------------------------------------------
Tried aggregator 2 times.
MIP Presolve eliminated 903 rows and 804 columns.
MIP Presolve modified 2698 coefficients.
Aggregator did 29 substitutions.
Reduced MIP has 700 rows, 4541 columns, and 40531 nonzeros.
Presolve time = 0.29 sec.
Clique table members: 2
MIP emphasis: optimality
Root relaxation solution time = 0.16 sec.
Objective is integral.
Nodes Cuts/
Node Left Objective IInf Best Integer Best Node ItCnt Gap Variable B Parent Depth
0 0 1181.0000 52 1181.0000 819
1181.0000 22 Fractcuts: 46 875
* 0+ 0 1183.0000 0 1183.0000 1181.0000 875 0.17%
Gomory fractional cuts applied: 2
-----------------------------------------------------------------
위의 문제에서 objective는 min으로 한 것입니다.
보는 것 처럼, objective값이 1183에서 멈추었습니다.
(cplex.getStatus에서, IloAlgorithm::Optimal로 나왔습니다.)
그런데, Gap을 보면 0.17%입니다.
(best integer:1183, best node:1181이므로, 이 둘의 gap이 0.17%
입니다.)
겉으로 보기엔, 이 값이 충분히 작아서 cplex가 stop을 한 것 같습니다.
그런데, IloCplex::EpGap 의 디폴트 값은 1e-4로 되어있더군요.
Gap이 0.17%이면, 1e-4보다 큰 값이라서, 이 때문에 stop한 것 같지
않습니다.
그러면, 위의 문제는 왜 멈추었는 지 궁금합니다.
즉, 어떤 stopping rule 때문에, 1183에서 멈추었는 지를 알고 싶습니다.
다른 방법으로 알아본 결과, 위 문제의 최소값은 1181이었습니다.
1181을 얻으려면 어떻게 하면 좋을 지도 알려주시면 감사하겠습니다.