Hello All,
I'm working on an optimization problem and here is my issue:
I define the model in a sparse format and it is solved successfully. But when I check the details I see some constraints are ignored!
So the solution is wrong... It is a simple LP problem for flow management. I'm attaching the solution and data to this message. To see the problem if you check the result at TOTAL file (you find 3 rows for DC001 but there should be 4 rows at the first step considering the data file LPMATRIX). Also, none of them should be 0... they should be GE to 9500, 73000, 15000 and 14000. Otherwise, the solution should be infeasible regardless the other constraints... How can this be possible?
The TOTAL file is extracted from solufile which is the direct output of the procedure.
PROC LP DATA = LPMATRIX SPARSEDATA PRINTFREQ = 1 PRINTLEVEL = -1
TIME = 6000 MAXIT1 = 99000 MAXIT2 = 99000 IMAXIT = 99000
PRIMALOUT = SOLUFILE VARSELECT = PRIOR ;
RUN ;
Can you please show how you got from SOLUFILE to TOTAL?
The following PROC PRINT call shows several variables involving DC001:
proc print data=solufile(where=(_VAR_ contains 'DC001'));
run;
SAS Output
Obs | _OBJ_ID_ | _RHS_ID_ | _VAR_ | _TYPE_ | _STATUS_ | _LBOUND_ | _VALUE_ | _UBOUND_ | _PRICE_ | _R_COST_ |
---|---|---|---|---|---|---|---|---|---|---|
1 | MINCOST | _RHS_ | PFL__DC001H90 01RSL | NON-NEG | 0 | 0 | 1.7977E308 | 147.330 | 12.328 | |
2 | MINCOST | _RHS_ | PFL__DC001OFIL01RSL | NON-NEG | 0 | 0 | 1.7977E308 | 144.486 | 12.499 | |
3 | MINCOST | _RHS_ | PFL__DC001PG3 01RSL | NON-NEG | 0 | 0 | 1.7977E308 | 126.126 | 9.276 | |
717 | MINCOST | _RHS_ | PPT__DC001H-HG01RSL | NON-NEG | _BASIC_ | 0 | 9500 | 1.7977E308 | 177.481 | 0.000 |
718 | MINCOST | _RHS_ | PPT__DC001H90 01RSL | NON-NEG | 0 | 0 | 1.7977E308 | 154.553 | 19.551 | |
719 | MINCOST | _RHS_ | PPT__DC001OFIL01RSL | NON-NEG | 0 | 0 | 1.7977E308 | 155.804 | 23.816 | |
1003 | MINCOST | _RHS_ | PSY__DC001H90 01RSL | NON-NEG | _BASIC_ | 0 | 73000 | 1.7977E308 | 128.317 | 0.000 |
1004 | MINCOST | _RHS_ | PSY__DC001OFIL01RSL | NON-NEG | _BASIC_ | 0 | 15000 | 1.7977E308 | 125.132 | -0.000 |
1005 | MINCOST | _RHS_ | PSY__DC001PG3 01RSL | NON-NEG | _BASIC_ | 0 | 14000 | 1.7977E308 | 114.232 | 0.000 |
3423 | MINCOST | _RHS_ | D_DC001H-HG01RSL | SURPLUS | 0 | 0 | 1.7977E308 | 0.000 | 177.481 | |
3424 | MINCOST | _RHS_ | D_DC001H90 01RSL | SURPLUS | 0 | 0 | 1.7977E308 | 0.000 | 135.002 | |
3425 | MINCOST | _RHS_ | D_DC001OFIL01RSL | SURPLUS | 0 | 0 | 1.7977E308 | 0.000 | 131.987 | |
3426 | MINCOST | _RHS_ | D_DC001PG3 01RSL | SURPLUS | 0 | 0 | 1.7977E308 | 0.000 | 116.850 |
The numbers you mentioned do appear among the nonzero values.
Also, note that PROC LP has been considered legacy and no longer maintained since SAS/OR 9.3 (July 2011) and is not even documented as of SAS/OR 14.2 (November 2016). Please see this SAS Global Forum paper to migrate to PROC OPTMODEL. As demonstrated in that paper, I used the MPSOUT= option in PROC LP and then ran PROC OPTLP as a sanity check. I got the same optimal objective value (290555420.58) in both cases, so another possibility to consider is that maybe your LPMATRIX doesn't correctly capture the problem you want to solve.
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!
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.