Hi,
Is there a way to configure proc optmodel to gracefully exit (and save the solutions that it has found so far) when it runs out of memory?
I am solving a binary linear model with the MILP solver. The relaxed problem finishes quickly but the branch and cut algorythm is getting stuck. After many iterations (1.5 days runing) the algorythm runs out of memory and terminates without saving the 7 solutions that it had found up to that point. The gap was not small (~35%) so I may not want to use any of those solutions anyway, but I would like to see the best one, at the very least. Unfortunatelty, the solver is terminating with status "OUT_OF_MEMORY", solution status "OUTMEM_NOSOL", and the create data statements saves zero (0) observations.
Here are some questions that come to mind in this situation:
Of course, I am also tweaking the solver options (probe, nodesel, cutting plane levels, etc.) to see if there is a way to converge faster to the solution. So far, all the runs are ending up in a similar way. I am attaching the SAS log produced by the SOLVE statement in one of those runs. It would be nice to be able to see what are the options producing (hence this question.) Since the question is not specific to this particular problem, I am not including the model code itself, but let me know if any other information would help.
Would appreciate any pointers!
This issue was inadvertently introduced in SAS/OR 14.1 and will be fixed in the next release. Until then, a workaround is to replace the SOLVE statement with the following statements:
save mps mpsdata;
submit;
proc optmilp data=mpsdata primalout=primalout;
run;
endsubmit;
read data primalout into [_N_] _VAR_[_N_]=_VALUE_;
You can add any solver options to the PROC OPTMILP statement.
If you would like assistance reducing the solve time for your specific problem, please post more details, preferably including code and data.
This issue was inadvertently introduced in SAS/OR 14.1 and will be fixed in the next release. Until then, a workaround is to replace the SOLVE statement with the following statements:
save mps mpsdata;
submit;
proc optmilp data=mpsdata primalout=primalout;
run;
endsubmit;
read data primalout into [_N_] _VAR_[_N_]=_VALUE_;
You can add any solver options to the PROC OPTMILP statement.
If you would like assistance reducing the solve time for your specific problem, please post more details, preferably including code and data.
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
Learn how to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.
Find more tutorials on the SAS Users YouTube channel.