BookmarkSubscribeRSS Feed
wutao9999
Obsidian | Level 7

I am using SAS optmodel procedure to solve a MIP model.  The MIP model is complicated so it takes more than 30 minutes to solve for optimality.

The disadvantage of SAS to me is that:  I cannot see the updates of solution procedures (listed as below) during the SAS solution procedure but only can see the solution results when the solution is completely done.

My question is that: Are there any settings I can make in the SAS optmodel procedure so I can see the updates of solution procedures (something like below) during the SAS solving process?  Thank you.

NOTE: Problem generation will use 16 threads.


NOTE: The problem has 1331476 variables (0 free, 0 fixed).


NOTE: The problem uses 86413 implicit variables.


NOTE: The problem has 200 binary and 0 integer variables.


NOTE: The problem has 117375 linear constraints (14532 LE, 98896 EQ, 3947 GE, 0 range).


NOTE: The problem has 415692 linear constraint coefficients.


NOTE: The problem has 0 nonlinear constraints (0 LE, 0 EQ, 0 GE, 0 range).


NOTE: The MILP presolver value AUTOMATIC is applied.


NOTE: The MILP presolver removed 1317510 variables and 106537 constraints.


NOTE: The MILP presolver removed 371533 constraint coefficients.


NOTE: The MILP presolver modified 3540 constraint coefficients.


NOTE: The presolved problem has 13966 variables, 10838 constraints, and 44159 constraint coefficients.


NOTE: The MILP solver is called.


          Node  Active    Sols    BestInteger      BestBound      Gap    Time


             0       1       0              .    902.6018387        .       9


             0       1       1    814.6069142    900.9672256    9.59%      11


             0       1       1    814.6069142    900.4865258    9.54%      12


             0       1       1    814.6069142    900.2167364    9.51%      12


             0       1       1    814.6069142    899.7749303    9.47%      13


             0       1       1    814.6069142    899.4164731    9.43%      13


             0       1       1    814.6069142    898.9094739    9.38%      14


             0       1       1    814.6069142    898.8483212    9.37%      14


             0       1       1    814.6069142    898.8138935    9.37%      14


             0       1       1    814.6069142    898.7976841    9.37%      15


             0       1       1    814.6069142    898.7828394    9.37%      15


             0       1       1    814.6069142    898.7828394    9.37%      18


NOTE: The MILP solver added 122 cuts with 1071 cut coefficients at the root.


           100      92       1    814.6069142    889.9604539    8.47%      28


           200     183       1    814.6069142    889.2168580    8.39%      37


           300     274       1    814.6069142    888.7913289    8.35%      43


           400     365       1    814.6069142    888.5257066    8.32%      49


           500     456       1    814.6069142    888.1843388    8.28%      54

6 REPLIES 6
RobPratt
SAS Super FREQ

I'm not sure I understand your question, but you can control the amount of logging by using the LOGFREQ= and LOGLEVEL= options.  See the documentation here:

SAS/OR(R) 13.1 User's Guide: Mathematical Programming

Also, if you can share your code, we might be able to suggest something to speed up the computation.

wutao9999
Obsidian | Level 7

My problem is that: I cannot see the solution process after clicking run so I have no ideas about what are the current BestInteger BestBound Gap until the whole solution process is done.  I am hoping to see the below output can be keeping on updating during the solution procedure.

Like, say, after 20 seconds, I can see something like,

          Node  Active    Sols    BestInteger      BestBound      Gap    Time
             0       1       0              .    902.6018387        .       9

             0       1       1    814.6069142    900.9672256    9.59%      11

             0       1       1    814.6069142    900.4865258    9.54%      20

Then, after 50 seconds, I can see something like,

          Node  Active    Sols    BestInteger      BestBound      Gap    Time
             0       1       0              .    902.6018387        .       9

             0       1       1    814.6069142    900.9672256    9.59%      11

             0       1       1    814.6069142    900.4865258    9.54%      20

             0       1       1    814.6069142    899.4164731    9.43%      30

Basically, I want to see where the current solution quality is during the entire solution procedure.  Instead of waiting until the last minutes when the optimality is already found.

RobPratt
SAS Super FREQ

This information should be updated in real time in the Log window while PROC OPTMODEL is running, but you have to click the Log tab to switch focus from the Editor window.

LeoLopes
SAS Employee

As Rob says, you should be getting updates in real time. Which interface are you using to run SAS? It may be that a custom UI is buffering the log output.

wutao9999
Obsidian | Level 7


I am using SAS Enterprise Guide 5.1. I do check log window, but cannot see the information in real time.  Any setting may cause this?

RobPratt
SAS Super FREQ

If you use Display Manager, the log is streamed the way you want.  In Enterprise Guide, the log is available only at the end of the PROC OPTMODEL call.  As a workaround, you can redirect log output to a file by using PROC PRINTTO.

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!

Submit your idea!

Multiple Linear Regression in SAS

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.

Discussion stats
  • 6 replies
  • 1864 views
  • 0 likes
  • 3 in conversation