Originally posted by: SystemAdmin
> In my code I made sure that the screen indicator is turned on. However,
> in the cplex.log file only statement is: "Log started (V12.2.0.0) Tue
> Mar 15 14:49:27 2011". Should I do something else or look somewhere
> else?
I was referring to the node logs that get printed in your application run and not the cplex.log file.
> Total (root+branch &cut) = 2348.63 sec.
> Warning: MIP starts not constructed because of out-of-memory status.
> Consider using CPLEX node files to reduce memory usage.
> CPLEX Error 1001: Out of memory.+
Thank you for sending over the LP file. I was able to run the model to completion with default settings using the interactive optimizer, a C program and a C++ program on a windows dual core machine with CPLEX 12.2.0.2, Visual Studio 2008 and 3Gbs of RAM.
The message itself does not indicate an error- it shows that you faced an out-of-memory condition. Are you using any non-default settings for your run; in other words do you set any CPLEX parameters before calling CPXmipopt? From the logs it looks like CPLEX kept looking through the B&C in search of the optimal solution, but before it could reach it, the huge tree size may have caused the out-of-memory condition. I am assuming that you are running this application on a 32 bit machine (with a 32 bit CPLEX installation) where the OS will not be able to allocate more than 2Gbs of space for any given application and when your application reaches close to consuming 1-1.5Gbs of space, then you may see this message.
There are many ways to deal with this:
1) Firstly to check if default settings can help solve the model or not, please use the attached lpex2.c sample (that comes with the distribution) to see if that solves the model. You will need to invoke the exe as such :
cmd> lpex2.exe mipmodel.lp o
(assuming that you are running this on a windows machine)
2) Setting certain CPLEX parameters to either help converge to the optimal solution quicker and/or reduce the memory consumption by the model. To do this you will need to add the following lines to your application before the CPXmipopt call:
status = CPXsetintparam (env, CPX_PARAM_MIPEMPHASIS , 2);//setting MIPEmphasis to 2 or optimality
if(status){
cout<<"Error setting MIPEmphasis"<<endl;
}
status = CPXsetintparam (env, CPX_PARAM_MEMORYEMPHASIS , CPX_ON);//setting MemoryEmphasis to CPX_ON
if(status){
cout<<"Error setting MemoryEmphasis"<<endl;
}
3) Ultimately, if you have large problems to solve and you suspect that some of them may require more than 2Gbs by the application, then moving to a 64 bit machine (with a 64 bit CPLEX Optimization Studio installation and adequate RAM) would serve as the ultimate solution.
Here's a documentation link which talks more about the out-of-memory condition:
http://publib.boulder.ibm.com/infocenter/cosinfoc/v12r2/index.jsp?topic=%2Filog.odms.cplex.help%2FContent%2FOptimization%2FDocumentation%2FCPLEX%2F_pubskel%2FCPLEX582.html Hope this helps.
#CPLEXOptimizers#DecisionOptimization