BookmarkSubscribeRSS Feed
RogerP57
Calcite | Level 5
I have the below optmodel code to solve an LP problem with optmodel.  This is a very large model and the program runs 2.5 hours to solve.  My question is, this model spends 2 hours searching for negative solutions and the actual answer is never negative.  Is there a way to tell optmodel that the cost must be => 0 and to skip the negative tries?
 
minimize cost =
sum{<k,f,p,t> in ixPS} XP[k,f,p,t] * XPCost[p] 
+ sum{<k,f,p,t> in ixPU} PU[k,f,p,t] * PUCost[k,f,p,t]
+   sum{<ki,ko,w,pl,p,t> in ixPK} PK[ki,ko,w,pl,p,t] * pkgCost[ko,p,w]
+   sum{<k,f,fic,p,t> in ixIK} IK[k,f,fic,p,t] * invCost[k,p]
+   sum{<f,p,t> in ixIKMax1} X5[f,p,t] * X5Cst
+   sum{<fic,p,t> in ixIKMax2} X6[fic,p,t] * X6Cst
+   sum{<k,t> in ixMaxSku} XA[k,t] * XACst
+   sum{<k,t> in ixMinSku} XI[k,t] * XICst
+   sum{<k,f,fic,p,t> in ixIR} IR[k,f,fic,p,t] * LRInvCost[p,t]
+   sum{<k,f,fic,m,p1,p2,t> in ixTS} TS[k,f,fic,m,p1,p2,t] * TScost[k,f,fic,m,p1,p2,t]
+   sum{<k,f,fic,c,p,m,t> in ixS1} S1[k,f,fic,c,p,m,t] * FrtCost[k,f,fic,c,p,m,t]
+   sum{<k,f,fic,c,p,m,t> in ixS2} S2[k,f,fic,c,p,m,t] * OuCost[k,f,fic,c,p,m,t] 
+   sum{<k,c,m,t> in ixDMD1} X1[k,c,m,t] * X1Cst 
+   sum{<k,c,p,m,t> in ixMD1} XMD1[k,c,p,m,t] * X1Cst
+   sum{<k,c,m,t> in ixDMD2} X2[k,c,m,t] * X2Cst
+   sum{<k,c,p,m,t> in ixMD2} XMD2[k,c,p,m,t] * X2Cst
+   sum{<k,f,m,p,pr,t> in ixLR} LR[k,f,m,p,pr,t] * LRCost[k,f,m,p,pr,t]
+   sum{<c,p,t> in ixCP3Coeff} X3[c,p,t] * X3Cst
+   sum{<f,p,t> in ixMinBulk} X4[f,p,t] * X4Cst
+   sum{<k,g,t> in ixSkuAvgDem} X1Mos[k,g,t] * X1MosCst 
+   sum{<k,g,t> in ixSkuAvgDem} X2Mos[k,g,t] * X2MosCst
+   sum{<p,k,t> in ixFFTP} FFDX[p,k,t] * XFCst 
+   sum{<p,w,k,k2,t> in ixWCSal} X7[p,w,k,k2,t] * X7Cst
+   sum{<p,w,k,k2,t> in ixWCSal} X8[p,w,k,k2,t] * X8Cst                          
;  
 
Thanks,
Roger
1 REPLY 1
RobPratt
SAS Super FREQ

You can impose an explicit "objective cut" constraint:

con NonnegativeCost:
   cost >= 0;

But that will probably actually increase the solve time.

 

A more promising approach is to try different choices for the ALGORITHM= option.  If you can share the SOLVE statement you are currently using, as well as the LP solver's iteration log, I might be able to give a more specific recommendation.

sas-innovate-2026-white.png



April 27 – 30 | Gaylord Texan | Grapevine, Texas

Registration is open

Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!

Register now

Discussion stats
  • 1 reply
  • 751 views
  • 0 likes
  • 2 in conversation