BookmarkSubscribeRSS Feed
abhik_giri
Calcite | Level 5

Hi,

I am running proc optmodel using MILP solver on two different datasets (let's call them A & B) but more or less equivalent in terms of #variables, #integers, #constraints etc.

Surprisingly, A takes 16 min to converge, while B converges in negligible time (2-3 seconds). However, B seems to give correct output (I am also running Excel Analytic Solver Platform for the same problem, and results more or less match with that of SAS/OR).

The code for A & B are exactly same.

Any help will be greatly appreciated.

3 REPLIES 3
RobPratt
SAS Super FREQ
Unfortunately, that is the nature of MILP. Two similar instances of the same problem can yield very different performance. On the other hand, the likelihood of this situation can sometimes be reduced. If you attach your code and data, I'll take a look.
abhik_giri
Calcite | Level 5

Thanks a lot for the reply. Unfortunately, I cannot share the code/data due to confidentiality issues. Is there a way in proc optmodel to diagnose which particular variable eats up more time? 

RobPratt
SAS Super FREQ

In SAS/OR 14.1 (just released in July), PROC OPTMODEL has a new PROFILE statement that shows execution time for each statement:

http://support.sas.com/documentation/cdl/en/ormpug/68156/HTML/default/viewer.htm#ormpug_optmodel_syn...

 

But it sounds like you are looking for detailed information about the solver execution invoked by the SOLVE statement, and the best source for that is the node log:

http://support.sas.com/documentation/cdl/en/ormpug/68156/HTML/default/viewer.htm#ormpug_milpsolver_d...

 

Can you share that?  And can you share the MILP formulation?

sas-innovate-white.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9.

 

Early bird rate extended! Save $200 when you sign up by March 31.

Register now!

Discussion stats
  • 3 replies
  • 1592 views
  • 0 likes
  • 2 in conversation