Now that's something I hate to see. Especially if you are just trying to solve the "small" problems in you target instance set.
Of course there are many reasons for this to happen. You can try to get some help/inspiration from:
- Asking or searching (for lost souls with similar problem) in the CPLEX forum.
- 如果物理内存没使用满, 尝试扩大允许cplex使用的内存。如cplex.setParam(IloCplex.Param.WorkMem,2048);
- Following the advice of this technote from the IBM Support site.
In my case, I could not find a solution using the resources above. Maybe I did a lousy job searching, but in any case I want to leave a note here in case someone else finds it helpful.
The problem: Since I was using the same CPLEX environment and problem to reoptimize, solutions found at each iteration were kept in the solution pool. The solution pool started to grow like crazy and CPLEX would run out of memory.
That's it. I hope this eventually helps someone out there.
Edit: As Bo Jensen points out, is not always easy to just throw away solutions without hurting performance. Maybe a good solution is to limit the pool size, but also play with the CPX_PARAM_SOLNPOOLREPLACE parameter, which controls the replacement strategy for when the pool is full and a new solution appears.