1
votes

My MIP Model in OPL CPLEX V12.9 is currently working with a small amount of Data, but with a bigger database import from excel, after running for 1 hour I get the following error:

Error 1001: Out of memory.

I already know that I can change some Parameters at the .ops

I have already tried to set the following parameters: CPX_PARAM_WORKMEM = 1920.0 (default 2048.0) CPX_PARAM_NODEFILEIND = 3 (default Node file in memory and compressed)

and afterward I got:

Error 1422: Can not open file %s for writing

So I changed the Parameter: CPX_PARAM_WORKDIR to C:\Users\..\opl

But my main worry is about the memory issue. I am using a surface 4 pro with 4GB RAM and 1867MHz and i5-6300U CPU.

While the Model is running my CPU also goes to 99-100%.

Which parameters can I change to solve the memory problem and what value should I change these parameters to?

1

1 Answers

1
votes

It is expected that the CPU goes to almost 100%. Actually, this is what you want. You want CPLEX to use all the power your machine has. The CPU load should be unrelated to memory issues -- unless the operating system is swapping like crazy.

The parameters you set for workmem and nodefileind look correct and given that you got a "failure to write" it seems they are active. So this is the best you can do at the moment. If your model has a lot of constraints you could try setting CPX_PARAM_DPRIIND to 1. That allows for smaller search tree nodes and may save some memory. Another option is to limit parameter CPX_PARAM_TRELIM. This will stop CPLEX as soon as the size of the tree (on disk and in memory) exceeds that limit. Note that this will stop CPLEX no matter what. You will get the best solution CPLEX found until that point, it is not necessarily the optimal solution. If you run out of memory because the tree has a huge number of nodes then you could crank up parameters like node presolve, probing, strong branching, etc. to have CPLEX spend more work for each node so that the number of nodes to process can potentially be reduced.

You could update your question with the engine log, maybe that gives other/new ideas.