2014-09-08 7 views
0

엔지니어링 문제를 해결하기 위해 MATLAB 2010b 64 비트 및 cplex 통합을 사용하고 있습니다. 그러나 cplex의 메모리 누수로 인해 cplex (가상 메모리를 포함하여 100GB)에서 메모리 사용이 허용 가능한 한계를 초과하므로 내 문제를 해결할 수 없습니다. 비슷한 게시물 here을 볼 수 있습니다.cplexlp 또는 linprog와 유사한 MATLAB 용 선형 프로그래밍 솔버

그런 다음 최적화 도구 상자에서 MATLAB linprog을 사용하려고했지만 실망 스러웠습니다. 작은 문제 인스턴스에 대한 알고리즘의 실행 시간이 80 cpu sec에서 2600 cpu sec로 증가했습니다.

이제 CPLEX 또는 linprog과 유사한 MATLAB과의 LP 솔버 통합이 필요합니다. "비슷한"이라는 말은 데이터 입력을 양식 (F, A, B, Aeq, Beq, ...etc)으로 받아들이는 방식을 의미합니다.

루프에서 사용할 수 있어야합니다. 그것에 대한 제안이 있습니까?

+0

관련 : http://stackoverflow.com/questions/25682199/growing -memory-usage-in-matlab/25682318 # 25682318 –

+0

필자는 [lp_solve'] (http://lpsolve.sourceforge.net/)와 함께 작업했습니다. – Shai

답변

0

MATLAB/CPLex API의 메모리 사용 문제 (메모리 누수)를 수정하기위한 몇 가지 시험을 마친 후 일부 연구를 언급 한 후 Gurobi 해석 도구로 전환하기로 결정했습니다. 순수한 LP 문제의 경우 CPlex에 비해 약간 느린 것 같지만 이것이 구로비를 사용하는 방식 때문일 수 있습니다. 누군가가 구로비를 CPlex에 비해 더 빨리 찾을 수 있습니다. 나는 다른 질문들 하에서 나의 이전 포스트들에 그것을 제안했다. 여기에 몇 가지 학술 연구 [상업 및 무료 및 오픈 소스 솔버의 분석은 선형 최적화 문제] [1]

[1] : http://www.statistik.tuwien.ac.at/forschung/CS/CS-2012-1complete.pdf

1

cplex에서 메모리 누수가 발생하면 매우 놀랄 것입니다. 큰 문제가있는 경우 메모리는 현명한 솔버로 커집니다. cplex에 대한 인터페이스에 메모리 누수가있을 수 있습니까? 문제가 얼마나 큰가요? 각 스레드가 문제의 복사본을 가져 와서 더 많은 메모리를 먹을 것이므로 다중 스레드를 실행하고 있습니까?

다른 해결사가 문제를 해결하기 위해 cplex보다 훨씬 오래 걸리는 것을 발견하더라도 놀랄 필요가 없습니다. 물론 무료 솔버는 어떤 큰 문제라도 cplex보다 훨씬 느릴 것입니다.

+0

cplex의 메모리 누수에 대한 인터넷 게시물이 있습니다. 해결하려고하는 문제는 일반적으로 100MB 미만의 메모리를 사용합니다. 그러나 cplex는 사용하는 메모리를 해제하지 않습니다. 메인 코드가 cplex를 수십 만 번 호출하기 때문에 메모리 누출은 무시할 수없는 수준이됩니다. 그게 문제 야. – HByrm

+1

CPLEX 자체에 심각한 메모리 누수가 없다는 것을 의미하는 것으로 추측합니다. C++ 또는 C# 코드에서 메모리 누수 문제없이 수천 번 호출 한 경우에 사용했습니다. 그러나 인터페이스 또는 라이센스 관리자에 누출이있을 수 있습니다. – TimChippingtonDerrick

+0

다른 프로그래밍 언어에 대해서는 알지 못하지만 matlab에 대한 cplex는 확실하게 메모리 누수의 원인이됩니다. 이전 연구에서 나는 실제로 cplex가 20-30K 번 호출 된 메모리 누수를 관찰했습니다. 그러나 메모리 요구가 내 컴퓨터 메모리 용량을 초과하지 않기 때문에 나는 그것에 대해 걱정하지 않았습니다. 현재 연구에서 cplex는 avarage 문제 인스턴스에 대해 700-800K 번 호출되며 메모리 누출은 무시할 수 없게됩니다. – HByrm