2014-10-30 5 views
2

Python 2.7.8, Windows 32 비트에서 PuLP 프로그래밍 라이브러리를 실행 중입니다. GLPK를 혼합 정수 선형 프로그래밍 문제에 대한 솔버로 사용하고 있습니다. 솔버는 대략 수렴합니다. 최적의 1 %는 신속하지만 정확한 최적의 솔루션을 계산하는 시간은 길다. PuLP를 사용하는 GLPK 해석기의 허용 오차 비율을 지정하는 방법이 있습니까? https://pythonhosted.org/PuLP/solvers.html을 검색했지만 GLPK 해결사에 대한 답변을 제공하지 않습니다.PuLP에서 GLPK 해석을위한 허용 오차를 지정하는 Python

답변

3

"--help"명령 줄에서 "glpsol"을 실행하면 "--mipgap tol"이 표시됩니다. 여기서 tol은 공차입니다.

그래서, 펄프, 당신이 시도 :

model.solve(GLPK(options=['--mipgap', '0.01'])) 

(얼마 전에 this discussion에서) (당신이 이상의 인수를 전달하기 위해이 같은 방법을 사용할 수있는 방법을 알 당신을하시기 바랍니다).

또한, 나는 소스 코드 ("solvers.py")에 들어가서 GLPK가 "옵션"인수를 기대하는 방식을 살펴 보았고 실제로 인수가 위와 같을 것으로 기대합니다 (345 줄 참조). 파일 아래 복제) :

proc = ["glpsol", "--cpxlp", tmpLp, "-o", tmpSol] 
if not self.mip: proc.append('--nomip') 
proc.extend(self.options) 

그래서 나중에 파이썬의 "서브 프로세스"를 사용하여 실행됩니다 "PROC"(명령)가 우연히 변수에 저장 (당신은 "옵션"을 통해 지정하는 것과 "확장"것을 볼 self.options). 그래서, 위의 접근법처럼 보인다. (리스트에서 '--mipgap'등을 사용한다.) 여전히 맞다.

마지막으로, 나는 그 자신을 시도하지 않았지만 이것이 도움이되기를 바랍니다.

+0

잘 작동합니다. 고마워. – Akhil

+0

GLPK의 경우 MIPGap = 0.01 옵션도 사용할 수 있는지 모르겠지만 일부 솔버의 경우 'model.solve (GLPK (MIPGap = 0.01))' –