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

Missed SAS Innovate in Orlando?

Catch the best of SAS Innovate 2025 — anytime, anywhere. Stream powerful keynotes, real-world demos, and game-changing insights from the world’s leading data and AI minds.

 

Register now

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