<?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 Re: PROC OPTMODEL FOR ROW WISE OPTIMIZATION in Mathematical Optimization, Discrete-Event Simulation, and OR</title>
    <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-FOR-ROW-WISE-OPTIMIZATION/m-p/579991#M2843</link>
    <description>&lt;P&gt;Here's one way:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc optmodel;
   set &amp;lt;str&amp;gt; DATA;
   var X &amp;gt;= 0 &amp;lt;= 100;
   num a{DATA}; 
   num b{DATA};
   str id;
   max Z = a[id] + b[id]*X;
   read data new into DATA = [id] a b;

   num Xsol{DATA};
   do id = DATA;
      put id=;
      solve;
      Xsol[id] = X.sol;
   end;
   print a b Xsol;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Alternatively, you could replace the DO loop with a COFOR loop to solve these independent problems concurrently:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;   cofor {i in DATA} do;
      id = i;
      put id=;
      solve;
      Xsol[id] = X.sol;
   end;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Thu, 08 Aug 2019 20:29:04 GMT</pubDate>
    <dc:creator>RobPratt</dc:creator>
    <dc:date>2019-08-08T20:29:04Z</dc:date>
    <item>
      <title>PROC OPTMODEL FOR ROW WISE OPTIMIZATION</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-FOR-ROW-WISE-OPTIMIZATION/m-p/579829#M2837</link>
      <description>&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have just started using the proc optmodel and I need help on calculation of max of a value for all ids in a data set with constraint values of a &amp;amp; b aggregated over all ids.&lt;/P&gt;&lt;P&gt;For example -&lt;/P&gt;&lt;P&gt;data new;&lt;BR /&gt;input id$ a b ;&lt;BR /&gt;datalines;&lt;BR /&gt;1 5 4&lt;BR /&gt;2 6 5&amp;nbsp;&lt;BR /&gt;3 5 3&lt;BR /&gt;4 6 4&lt;BR /&gt;;&lt;/P&gt;&lt;P&gt;Now I want to solve for x that maximizes Z = (a + bx) for all ids in data i.e. for id 1, 2 and etc.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My Code was like below -&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;proc optmodel;&lt;BR /&gt;set &amp;lt;str&amp;gt; DATA;&lt;BR /&gt;var X{DATA} &amp;gt;= 0;&lt;BR /&gt;num a{DATA}; num b{DATA};&lt;BR /&gt;max Z = (a[i] + b[i]*X[i]);&lt;/P&gt;&lt;P&gt;con sum{i in DATA} (a[i]+b[i])=5;&lt;BR /&gt;read data new into DATA = [id] a b;&lt;BR /&gt;solve with LP /logfreq= 1 ;&lt;BR /&gt;print X;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;But I am getting the below error -&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ERROR 525-782: The symbol 'i' is unknown.&lt;/P&gt;&lt;P&gt;ERROR 621-782: Subscript 1 must be a string, found a number.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would really appreciate some help on this.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;</description>
      <pubDate>Thu, 14 Nov 2019 10:36:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-FOR-ROW-WISE-OPTIMIZATION/m-p/579829#M2837</guid>
      <dc:creator>MS15</dc:creator>
      <dc:date>2019-11-14T10:36:09Z</dc:date>
    </item>
    <item>
      <title>Re: PROC OPTMODEL FOR ROW WISE OPTIMIZATION</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-FOR-ROW-WISE-OPTIMIZATION/m-p/579844#M2838</link>
      <description>&lt;P&gt;You are very close, but your constraint looks like not right.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data new;
input id$ a b ;
datalines;
1 5 4
2 6 5 
3 5 3
4 6 4
;


 

proc optmodel;
set &amp;lt;str&amp;gt; DATA;
var X{DATA} &amp;gt;= 0;
num a{DATA}; 
num b{DATA};
max Z =sum{i in DATA} (a[i] + b[i]*X[i]);

read data new into DATA = [id] a b;
solve with LP  ;
print X;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 08 Aug 2019 11:35:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-FOR-ROW-WISE-OPTIMIZATION/m-p/579844#M2838</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2019-08-08T11:35:44Z</dc:date>
    </item>
    <item>
      <title>Re: PROC OPTMODEL FOR ROW WISE OPTIMIZATION</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-FOR-ROW-WISE-OPTIMIZATION/m-p/579966#M2839</link>
      <description>&lt;P&gt;Do you want to solve one problem that involves all ids, or do you want to a separate problem for each id?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Also, without additional constraints, the problem is unbounded in the sense that you can make the objective value as large as you want just by making X[i] large.&lt;/P&gt;</description>
      <pubDate>Thu, 08 Aug 2019 18:43:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-FOR-ROW-WISE-OPTIMIZATION/m-p/579966#M2839</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2019-08-08T18:43:11Z</dc:date>
    </item>
    <item>
      <title>Re: PROC OPTMODEL FOR ROW WISE OPTIMIZATION</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-FOR-ROW-WISE-OPTIMIZATION/m-p/579977#M2840</link>
      <description>Hi Rob,&lt;BR /&gt;I am looking for separate optimisation for each ids. For example -&lt;BR /&gt;For id 1, max of z = 5 + 4X&lt;BR /&gt;and for id 2, max of z = 6 + 5X and so on.&lt;BR /&gt;And the contraints would be X &amp;lt; 100.&lt;BR /&gt;Appreciate your help&lt;BR /&gt;Thanks</description>
      <pubDate>Thu, 08 Aug 2019 19:37:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-FOR-ROW-WISE-OPTIMIZATION/m-p/579977#M2840</guid>
      <dc:creator>MS15</dc:creator>
      <dc:date>2019-08-08T19:37:20Z</dc:date>
    </item>
    <item>
      <title>Re: PROC OPTMODEL FOR ROW WISE OPTIMIZATION</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-FOR-ROW-WISE-OPTIMIZATION/m-p/579984#M2841</link>
      <description>&lt;P&gt;Do you have any other constraints?&amp;nbsp; Otherwise, the problem still has a trivial optimal solution: X[i] = 100 for each i.&lt;/P&gt;</description>
      <pubDate>Thu, 08 Aug 2019 19:59:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-FOR-ROW-WISE-OPTIMIZATION/m-p/579984#M2841</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2019-08-08T19:59:14Z</dc:date>
    </item>
    <item>
      <title>Re: PROC OPTMODEL FOR ROW WISE OPTIMIZATION</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-FOR-ROW-WISE-OPTIMIZATION/m-p/579986#M2842</link>
      <description>Hi Rob,&lt;BR /&gt;I will apply other constraint this is just a test constraint. For now I can go with z &amp;lt; 100 and that will suffice.&lt;BR /&gt;&lt;BR /&gt;Thanks</description>
      <pubDate>Thu, 08 Aug 2019 20:18:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-FOR-ROW-WISE-OPTIMIZATION/m-p/579986#M2842</guid>
      <dc:creator>MS15</dc:creator>
      <dc:date>2019-08-08T20:18:22Z</dc:date>
    </item>
    <item>
      <title>Re: PROC OPTMODEL FOR ROW WISE OPTIMIZATION</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-FOR-ROW-WISE-OPTIMIZATION/m-p/579991#M2843</link>
      <description>&lt;P&gt;Here's one way:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc optmodel;
   set &amp;lt;str&amp;gt; DATA;
   var X &amp;gt;= 0 &amp;lt;= 100;
   num a{DATA}; 
   num b{DATA};
   str id;
   max Z = a[id] + b[id]*X;
   read data new into DATA = [id] a b;

   num Xsol{DATA};
   do id = DATA;
      put id=;
      solve;
      Xsol[id] = X.sol;
   end;
   print a b Xsol;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Alternatively, you could replace the DO loop with a COFOR loop to solve these independent problems concurrently:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;   cofor {i in DATA} do;
      id = i;
      put id=;
      solve;
      Xsol[id] = X.sol;
   end;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 08 Aug 2019 20:29:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-FOR-ROW-WISE-OPTIMIZATION/m-p/579991#M2843</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2019-08-08T20:29:04Z</dc:date>
    </item>
    <item>
      <title>Re: PROC OPTMODEL FOR ROW WISE OPTIMIZATION</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-FOR-ROW-WISE-OPTIMIZATION/m-p/580551#M2844</link>
      <description>&lt;P&gt;Thank you so much Rob, this is working perfectly&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 12 Aug 2019 13:58:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/PROC-OPTMODEL-FOR-ROW-WISE-OPTIMIZATION/m-p/580551#M2844</guid>
      <dc:creator>MS15</dc:creator>
      <dc:date>2019-08-12T13:58:38Z</dc:date>
    </item>
  </channel>
</rss>

