본문 바로가기

Research/EIP

GAMS, Out of Memory 에러 메시지 해결방법

아주 오랫만에 올리는 연구 관련 포스트입니다. 오늘은 최적화 관련 연구를 수행하는 분이라면 한 번쯤 이름을 들어봤을 GAMS[각주:1] Out of Memory 관련 팁을 공개할까 합니다.

Out of Memory는 GAMS를 이용해 MIP(Mixed Integer Programming) 문제를 풀 때, 종종 발생하는 문제인데요...
말 그대로 가용 메모리가 부족할 때 발생하는 메세지입니다.

제 경우 변수가 많은 문제를 풀다보니 종종 Out of Memory 문제에 부딪히곤 했는데, 오늘 이 문제를 속시원히 풀수 있는 방법을 발견했습니다.

간단히 요약해보자면 다음과 같습니다.
  • 컴퓨터의 물리적 메모리 추가 : 제 경우 이미 4G의 메모리를 사용중이라 해당사항이 없네요...
  • 32bit 운영체제로 전환 : 이건 기회비용이 너무 큰 옵션이구요...
  • 모델에서 꼭 필요한 수식만 생성 : 이건 코딩 단계에서 점검해야 할 문제인데... 대부분의 경우 해당사항이 없다고 볼 수 있으므로 다시 패스!
  • GAMS option 추가 : 이게 문제 해결에 주요한 열쇄였습니다.
    • model_name.holdfixed = 1;
    • model_name.dictfile = 0;
  • Cplex option 추가 : 이건 저도 적용해보지는 않았는데, GAMS option으로 안될 경우에 유용할 것 같네요...
    • Do not load GAMS names (names no)[각주:2]
    • Do not use multiple threads (threads 1)
    • Conserve memory where possible (memoryemphasis 1)
    • Use the Simplex algorithm (lpmethod 1 or 2) instead of the Barrier algorithm (lpmethod 4)
    • Increase the refactorization frequency (decrease reinv)
    • (MIP)[각주:3] Let Cplex store information on disk (nodefileind 2 or 3 / workmem)
    • (MIP) Do not solve the final LP (solvefinal 0). Please keep in mind that without solving the final LP, the solution will be primal only - no marginals will be reported.
    • (MIP) Set option nodesel to use a best estimate strategy (nodesel 2) or more drastically a depth-first-search (nodesel 0).
    • (MIP) Set option varsel to use strong branching (varsel 3).
    • (MIP) Turn off cut generation (cuts -1).
    • (Barrier) Do not do a crossover at the end of the barrier optimization (barcrossalg -1). In that case the solution will also be primal only - no marginals will be reported.



해법의 원문 주소는 아래와 같습니다. 참고하세요~
http://support.gams-software.com/doku.php?id=solver:error_1001_out_of_memory




그런데, 과연 이 팁이 필요한 사람이 있을까 :)

짤방은 미국에서 본 신기한 저울입니다. 과연 뭐가 신기한 걸까요? ^^;
  1. The General Algebraic Modeling System (GAMS) is a high-level modeling system for mathematical programming problems. [본문으로]
  2. 괄호 안의 값이 추가해야 할 옵션입니다. [본문으로]
  3. 적용가능한 문제의 타입을 의미합니다. 이 경우, MIP를 의미합니다. [본문으로]

'Research > EIP' 카테고리의 다른 글

스팀의 종류와 정의  (1) 2009.06.30
열량(kJ) - 동력(kWh) 환산  (1) 2008.08.26
[리뷰] 유틸리티 시스템의 최적운용 (1)  (0) 2008.08.26
집단에너지 시설 (열병합 발전)  (0) 2007.01.16
열역학 법칙  (0) 2007.01.08