<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic optmodel solve time in Mathematical Optimization, Discrete-Event Simulation, and OR</title>
    <link>https://communities.sas.com/t5/Mathematical-Optimization/optmodel-solve-time/m-p/969805#M4337</link>
    <description>&lt;DIV&gt;I have the below optmodel code to solve an LP problem with optmodel.&amp;nbsp; This is a very large model and the program runs 2.5 hours to solve.&amp;nbsp; My question is, this model spends 2 hours searching for negative solutions and the actual answer is never negative.&amp;nbsp; Is there a way to tell optmodel that the cost must be =&amp;gt; 0 and to skip the negative tries?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;minimize cost =&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;sum{&amp;lt;k,f,p,t&amp;gt; in ixPS} XP[k,f,p,t] * XPCost[p]&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;+ sum{&amp;lt;k,f,p,t&amp;gt; in ixPU} PU[k,f,p,t] * PUCost[k,f,p,t]&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;ki,ko,w,pl,p,t&amp;gt; in ixPK} PK[ki,ko,w,pl,p,t] * pkgCost[ko,p,w]&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,f,fic,p,t&amp;gt; in ixIK} IK[k,f,fic,p,t] * invCost[k,p]&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;f,p,t&amp;gt; in ixIKMax1} X5[f,p,t] * X5Cst&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;fic,p,t&amp;gt; in ixIKMax2} X6[fic,p,t] * X6Cst&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,t&amp;gt; in ixMaxSku} XA[k,t] * XACst&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,t&amp;gt; in ixMinSku} XI[k,t] * XICst&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,f,fic,p,t&amp;gt; in ixIR} IR[k,f,fic,p,t] * LRInvCost[p,t]&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,f,fic,m,p1,p2,t&amp;gt; in ixTS} TS[k,f,fic,m,p1,p2,t] * TScost[k,f,fic,m,p1,p2,t]&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,f,fic,c,p,m,t&amp;gt; in ixS1} S1[k,f,fic,c,p,m,t] * FrtCost[k,f,fic,c,p,m,t]&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,f,fic,c,p,m,t&amp;gt; in ixS2} S2[k,f,fic,c,p,m,t] * OuCost[k,f,fic,c,p,m,t]&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,c,m,t&amp;gt; in ixDMD1} X1[k,c,m,t] * X1Cst&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,c,p,m,t&amp;gt; in ixMD1} XMD1[k,c,p,m,t] * X1Cst&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,c,m,t&amp;gt; in ixDMD2} X2[k,c,m,t] * X2Cst&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,c,p,m,t&amp;gt; in ixMD2} XMD2[k,c,p,m,t] * X2Cst&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,f,m,p,pr,t&amp;gt; in ixLR} LR[k,f,m,p,pr,t] * LRCost[k,f,m,p,pr,t]&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;c,p,t&amp;gt; in ixCP3Coeff} X3[c,p,t] * X3Cst&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;f,p,t&amp;gt; in ixMinBulk} X4[f,p,t] * X4Cst&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,g,t&amp;gt; in ixSkuAvgDem} X1Mos[k,g,t] * X1MosCst&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,g,t&amp;gt; in ixSkuAvgDem} X2Mos[k,g,t] * X2MosCst&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;p,k,t&amp;gt; in ixFFTP} FFDX[p,k,t] * XFCst&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;p,w,k,k2,t&amp;gt; in ixWCSal} X7[p,w,k,k2,t] * X7Cst&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;p,w,k,k2,t&amp;gt; in ixWCSal} X8[p,w,k,k2,t] * X8Cst&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks,&lt;/DIV&gt;&lt;DIV&gt;Roger&lt;/DIV&gt;</description>
    <pubDate>Thu, 26 Jun 2025 16:36:08 GMT</pubDate>
    <dc:creator>RogerP57</dc:creator>
    <dc:date>2025-06-26T16:36:08Z</dc:date>
    <item>
      <title>optmodel solve time</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/optmodel-solve-time/m-p/969805#M4337</link>
      <description>&lt;DIV&gt;I have the below optmodel code to solve an LP problem with optmodel.&amp;nbsp; This is a very large model and the program runs 2.5 hours to solve.&amp;nbsp; My question is, this model spends 2 hours searching for negative solutions and the actual answer is never negative.&amp;nbsp; Is there a way to tell optmodel that the cost must be =&amp;gt; 0 and to skip the negative tries?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;minimize cost =&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;sum{&amp;lt;k,f,p,t&amp;gt; in ixPS} XP[k,f,p,t] * XPCost[p]&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;+ sum{&amp;lt;k,f,p,t&amp;gt; in ixPU} PU[k,f,p,t] * PUCost[k,f,p,t]&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;ki,ko,w,pl,p,t&amp;gt; in ixPK} PK[ki,ko,w,pl,p,t] * pkgCost[ko,p,w]&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,f,fic,p,t&amp;gt; in ixIK} IK[k,f,fic,p,t] * invCost[k,p]&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;f,p,t&amp;gt; in ixIKMax1} X5[f,p,t] * X5Cst&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;fic,p,t&amp;gt; in ixIKMax2} X6[fic,p,t] * X6Cst&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,t&amp;gt; in ixMaxSku} XA[k,t] * XACst&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,t&amp;gt; in ixMinSku} XI[k,t] * XICst&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,f,fic,p,t&amp;gt; in ixIR} IR[k,f,fic,p,t] * LRInvCost[p,t]&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,f,fic,m,p1,p2,t&amp;gt; in ixTS} TS[k,f,fic,m,p1,p2,t] * TScost[k,f,fic,m,p1,p2,t]&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,f,fic,c,p,m,t&amp;gt; in ixS1} S1[k,f,fic,c,p,m,t] * FrtCost[k,f,fic,c,p,m,t]&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,f,fic,c,p,m,t&amp;gt; in ixS2} S2[k,f,fic,c,p,m,t] * OuCost[k,f,fic,c,p,m,t]&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,c,m,t&amp;gt; in ixDMD1} X1[k,c,m,t] * X1Cst&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,c,p,m,t&amp;gt; in ixMD1} XMD1[k,c,p,m,t] * X1Cst&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,c,m,t&amp;gt; in ixDMD2} X2[k,c,m,t] * X2Cst&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,c,p,m,t&amp;gt; in ixMD2} XMD2[k,c,p,m,t] * X2Cst&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,f,m,p,pr,t&amp;gt; in ixLR} LR[k,f,m,p,pr,t] * LRCost[k,f,m,p,pr,t]&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;c,p,t&amp;gt; in ixCP3Coeff} X3[c,p,t] * X3Cst&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;f,p,t&amp;gt; in ixMinBulk} X4[f,p,t] * X4Cst&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,g,t&amp;gt; in ixSkuAvgDem} X1Mos[k,g,t] * X1MosCst&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;k,g,t&amp;gt; in ixSkuAvgDem} X2Mos[k,g,t] * X2MosCst&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;p,k,t&amp;gt; in ixFFTP} FFDX[p,k,t] * XFCst&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;p,w,k,k2,t&amp;gt; in ixWCSal} X7[p,w,k,k2,t] * X7Cst&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp; &amp;nbsp;sum{&amp;lt;p,w,k,k2,t&amp;gt; in ixWCSal} X8[p,w,k,k2,t] * X8Cst&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks,&lt;/DIV&gt;&lt;DIV&gt;Roger&lt;/DIV&gt;</description>
      <pubDate>Thu, 26 Jun 2025 16:36:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/optmodel-solve-time/m-p/969805#M4337</guid>
      <dc:creator>RogerP57</dc:creator>
      <dc:date>2025-06-26T16:36:08Z</dc:date>
    </item>
    <item>
      <title>Re: optmodel solve time</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/optmodel-solve-time/m-p/969807#M4338</link>
      <description>&lt;P&gt;You can impose an explicit "objective cut" constraint:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;con NonnegativeCost:
   cost &amp;gt;= 0;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;But that will probably actually increase the solve time.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A more promising approach is to try different choices for the ALGORITHM= option.&amp;nbsp; 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.&lt;/P&gt;</description>
      <pubDate>Thu, 26 Jun 2025 17:35:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/optmodel-solve-time/m-p/969807#M4338</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2025-06-26T17:35:32Z</dc:date>
    </item>
  </channel>
</rss>

