<?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 Error: NLP solver does not allow integer variables in Mathematical Optimization, Discrete-Event Simulation, and OR</title>
    <link>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611124#M2935</link>
    <description>&lt;P&gt;When I add that I don't get the error message anymore, but the results are not expected in that optimal ROE is negative and my constraint isn't holding that X for a segment must equal 1.&amp;nbsp; I'm guessing it's because we have the outdated version here.&lt;/P&gt;</description>
    <pubDate>Wed, 11 Dec 2019 20:10:47 GMT</pubDate>
    <dc:creator>candlerb</dc:creator>
    <dc:date>2019-12-11T20:10:47Z</dc:date>
    <item>
      <title>Proc Optmodel Error: NLP solver does not allow integer variables</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611098#M2928</link>
      <description>&lt;P&gt;Hi all, this is the first time I am using proc optmodel and I am running into the error stating that NLP solver does not allow integer variables.&amp;nbsp; Any advice or help on how to get around this would be greatly appreciated.&amp;nbsp; I am able to use Excel solver to find a solution but would like to migrate to SAS so I can use more decision variables. &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Some context around the problem I am trying to solve (in case my code setup is way off base).&amp;nbsp; I am trying to maximize weighted average roe, by deciding which one of 3 rate changes to select for each segment (only one can be selected per segment).&amp;nbsp; Each rate change carries its own weightings as the price change impacts volume.&amp;nbsp; Ultimately roewgt/wgt = the roe, this is true for any particular segment, but also when you sum them across all segments which is what I am trying to maximize. Please let me know if more details are needed as this is my first time posting.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data elast_input;
   input segid $ rtechg_1 rtechg_2 rtechg_3 wgt_1 wgt_2 wgt_3 roewgt_1 roewgt_2 roewgt_3;
   datalines;
AAA -0.0020 0.0000 0.0020 7000000 6800000 6000000 530000 560000 600000
AAB -0.0022 0.0000 0.0022 5000000 4900000 4850000 450000 490000 500000
AAC -0.0017 0.0000 0.0017 6500000 6150000 6000000 800000 820000 850000
AAD -0.0010 0.0000 0.0010 8000000 7950000 7900000 250000 270000 300000
;
proc optmodel;
	set &amp;lt;string&amp;gt; segment;
	set rate = 1..3;
	num rtechg {segment, rate};
	num wgt {segment, rate};
	num roewgt {segment, rate};

	read data elast_input into segment=[segid] {j in rate} &amp;lt;rtechg[segid,j]=col('rtechg_'||(j))&amp;gt;;
	read data elast_input into segment=[segid] {j in rate} &amp;lt;wgt[segid,j]=col('wgt_'||(j))&amp;gt;;
	read data elast_input into segment=[segid] {j in rate} &amp;lt;roewgt[segid,j]=col('roewgt_'||(j))&amp;gt;;

	print rtechg wgt roewgt;

	var X {segment, rate} binary;
	max roe = (sum {segid in segment, j in rate} (roewgt[segid,j]*X[segid,j])) / (sum {segid in segment, j in rate} (wgt[segid,j]*X[segid,j]));
	con SelectOne {segid in segment}:
	  sum {j in rate} X[segid,j] = 1;

	solve;
	print X;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 11 Dec 2019 19:12:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611098#M2928</guid>
      <dc:creator>candlerb</dc:creator>
      <dc:date>2019-12-11T19:12:54Z</dc:date>
    </item>
    <item>
      <title>Re: Proc Optmodel Error: NLP solver does not allow integer variables</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611102#M2929</link>
      <description>&lt;P&gt;In order to use both integer (binary) variables and nonlinear expressions, you need to use LSO solver. Add "&lt;EM&gt;with lso&lt;/EM&gt;" to your &lt;EM&gt;solve&lt;/EM&gt; statement.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I also have changed your &lt;EM&gt;read data&lt;/EM&gt; statement. This version should work:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc optmodel;
	
	set &amp;lt;string&amp;gt; segment;
	set rate = 1..3;
	num rtechg {segment, rate};
	num wgt {segment, rate};
	num roewgt {segment, rate};

	read data elast_input into segment=[segment] {j in rate} &amp;lt;rtechg[segment,j]=col('rtechg_'||(j))&amp;gt;;
	read data elast_input into segment=[segment] {j in rate} &amp;lt;wgt[segment,j]=col('wgt_'||(j))&amp;gt;;
	read data elast_input into segment=[segment] {j in rate} &amp;lt;roewgt[segment,j]=col('roewgt_'||(j))&amp;gt;;

	print rtechg wgt roewgt;

	var X {segment, rate} binary;
	max roe = (sum {segid in segment, j in rate} (roewgt[segid,j]*X[segid,j])) / (sum {segid in segment, j in rate} (wgt[segid,j]*X[segid,j]));
	con SelectOne {segid in segment}:
	  sum {j in rate} X[segid,j] = 1;

	solve with lso;
	print X;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;EM&gt;read data&lt;/EM&gt; is complaining for me since "&lt;EM&gt;segid&lt;/EM&gt;" is not a column in the table &lt;EM&gt;elast_input&lt;/EM&gt;.&lt;/P&gt;</description>
      <pubDate>Wed, 11 Dec 2019 18:45:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611102#M2929</guid>
      <dc:creator>sertalpb</dc:creator>
      <dc:date>2019-12-11T18:45:10Z</dc:date>
    </item>
    <item>
      <title>Re: Proc Optmodel Error: NLP solver does not allow integer variables</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611108#M2930</link>
      <description>&lt;P&gt;Thanks for the quick reply! Sorry for the confusion with segid, I messed up when creating the dataset as segment should have been segid, I edited that in the post now.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;When I add "with LSO" to the solve statement the "solve with" part highlights in red for me.&amp;nbsp; If I run the code anyway I get an error message stating :Unknown TKLSO status 0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My updated code is below, in case I made a mistake and missed something you asked me to do.&amp;nbsp; Below that is the log&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data elast_input;
   input segid $ rtechg_1 rtechg_2 rtechg_3 wgt_1 wgt_2 wgt_3 roewgt_1 roewgt_2 roewgt_3;
   datalines;
AAA -0.0020 0.0000 0.0020 7000000 6800000 6000000 530000 560000 600000
AAB -0.0022 0.0000 0.0022 5000000 4900000 4850000 450000 490000 500000
AAC -0.0017 0.0000 0.0017 6500000 6150000 6000000 800000 820000 850000
AAD -0.0010 0.0000 0.0010 8000000 7950000 7900000 250000 270000 300000
;
proc optmodel;
	set &amp;lt;string&amp;gt; segment;
	set rate = 1..3;
	num rtechg {segment, rate};
	num wgt {segment, rate};
	num roewgt {segment, rate};

	read data elast_input into segment=[segid] {j in rate} &amp;lt;rtechg[segid,j]=col('rtechg_'||(j))&amp;gt;;
	read data elast_input into segment=[segid] {j in rate} &amp;lt;wgt[segid,j]=col('wgt_'||(j))&amp;gt;;
	read data elast_input into segment=[segid] {j in rate} &amp;lt;roewgt[segid,j]=col('roewgt_'||(j))&amp;gt;;

	print rtechg wgt roewgt;

	var X {segment, rate} binary;
	max roe = (sum {segid in segment, j in rate} (roewgt[segid,j]*X[segid,j])) / (sum {segid in segment, j in rate} (wgt[segid,j]*X[segid,j]));
	con SelectOne {segid in segment}:
	  sum {j in rate} X[segid,j] = 1;

	solve with lso;
	print X;
quit;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;FONT&gt;NOTE: Problem generation will use 4 threads.&lt;BR /&gt;NOTE: The problem has 12 variables (0 free, 0 fixed).&lt;BR /&gt;NOTE: The problem has 12 binary and 0 integer variables.&lt;BR /&gt;NOTE: The problem has 4 linear constraints (0 LE, 4 EQ, 0 GE, 0 range).&lt;BR /&gt;NOTE: The problem has 12 linear constraint coefficients.&lt;BR /&gt;NOTE: The problem has 0 nonlinear constraints (0 LE, 0 EQ, 0 GE, 0 range).&lt;BR /&gt;NOTE: The OPTLSO algorithm is using up to 4 threads.&lt;BR /&gt;NOTE: The problem has 12 variables (12 integer, 0 continuous).&lt;BR /&gt;NOTE: The problem has 0 constraints (0 linear, 0 nonlinear).&lt;BR /&gt;NOTE: The problem has 1 FCMP function definitions.&lt;BR /&gt;NOTE: The deterministic parallel mode is enabled.&lt;BR /&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Best&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Iteration&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Objective&amp;nbsp;&amp;nbsp;&amp;nbsp; Infeasibility&amp;nbsp;&amp;nbsp;&amp;nbsp; Evals&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Time&lt;BR /&gt;&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;&amp;nbsp; 1 0.10983981693364&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;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 168&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;&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;&amp;nbsp; 2 0.11572700296736&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;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 184&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;&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;&amp;nbsp; 3 0.12442396313364&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;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 199&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;&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;&amp;nbsp; 4 0.14166666666667&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;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 209&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;&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;&amp;nbsp; 5 0.14166666666667&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;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 220&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;&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;&amp;nbsp; 6 0.14166666666667&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;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 220&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;&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;&amp;nbsp; 7 0.14166666666667&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;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 221&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;ERROR: Unknown TKLSO status 0.&lt;BR /&gt;53&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print X;&lt;BR /&gt;54&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; quit;&lt;BR /&gt;NOTE: The SAS System stopped processing this step because of errors.&lt;BR /&gt;NOTE: PROCEDURE OPTMODEL used (Total process time):&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.19 seconds&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cpu time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.09 seconds&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Dec 2019 19:19:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611108#M2930</guid>
      <dc:creator>candlerb</dc:creator>
      <dc:date>2019-12-11T19:19:49Z</dc:date>
    </item>
    <item>
      <title>Re: Proc Optmodel Error: NLP solver does not allow integer variables</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611110#M2931</link>
      <description>&lt;P&gt;You can get by with one READ DATA statement:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;read data elast_input into segment=[segid] 
   {j in rate} &amp;lt;rtechg[segid,j]=col('rtechg_'||(j))&amp;gt;
   {j in rate} &amp;lt;wgt[segid,j]=col('wgt_'||(j))&amp;gt;
   {j in rate} &amp;lt;roewgt[segid,j]=col('roewgt_'||(j))&amp;gt;;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;It looks like you are using an older release of SAS/OR, before the LSO solver was officially supported in SAS/OR 15.1 (SAS 9.4M6, November 2018).&amp;nbsp; I'll work on a linearization of the problem instead.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Are you planning to use rtechg anywhere in the problem?&lt;/P&gt;</description>
      <pubDate>Wed, 11 Dec 2019 19:26:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611110#M2931</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2019-12-11T19:26:18Z</dc:date>
    </item>
    <item>
      <title>Re: Proc Optmodel Error: NLP solver does not allow integer variables</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611112#M2932</link>
      <description>&lt;P&gt;Code runs fine on the latest version of SAS/OR. For an older version, adding a small amount to denominator can fix the issue. Can you try this one:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data elast_input;
   input segid $ rtechg_1 rtechg_2 rtechg_3 wgt_1 wgt_2 wgt_3 roewgt_1 roewgt_2 roewgt_3;
   datalines;
AAA -0.0020 0.0000 0.0020 7000000 6800000 6000000 530000 560000 600000
AAB -0.0022 0.0000 0.0022 5000000 4900000 4850000 450000 490000 500000
AAC -0.0017 0.0000 0.0017 6500000 6150000 6000000 800000 820000 850000
AAD -0.0010 0.0000 0.0010 8000000 7950000 7900000 250000 270000 300000
;
proc optmodel;
	set &amp;lt;string&amp;gt; segment;
	set rate = 1..3;
	num rtechg {segment, rate};
	num wgt {segment, rate};
	num roewgt {segment, rate};

	read data elast_input into segment=[segid] {j in rate} &amp;lt;rtechg[segid,j]=col('rtechg_'||(j))&amp;gt;;
	read data elast_input into segment=[segid] {j in rate} &amp;lt;wgt[segid,j]=col('wgt_'||(j))&amp;gt;;
	read data elast_input into segment=[segid] {j in rate} &amp;lt;roewgt[segid,j]=col('roewgt_'||(j))&amp;gt;;

	print rtechg wgt roewgt;

	var X {segment, rate} binary;
	max roe = (sum {segid in segment, j in rate} (roewgt[segid,j]*X[segid,j])) / (sum {segid in segment, j in rate} (wgt[segid,j]*X[segid,j]) + 1e-12);
	con SelectOne {segid in segment}:
	  sum {j in rate} X[segid,j] = 1;

	solve with lso;
	print X;
quit;&lt;/PRE&gt;
&lt;P&gt;Notice that I have added 1e-12 to the denominator of roe.&lt;/P&gt;</description>
      <pubDate>Wed, 11 Dec 2019 19:30:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611112#M2932</guid>
      <dc:creator>sertalpb</dc:creator>
      <dc:date>2019-12-11T19:30:58Z</dc:date>
    </item>
    <item>
      <title>Re: Proc Optmodel Error: NLP solver does not allow integer variables</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611115#M2933</link>
      <description>&lt;P&gt;No, I don't think I will be using rtechg in the optimization.&amp;nbsp; I have it in there in the hopes that I can take the results of the optimization and output the rtechg for each segment.&amp;nbsp; For example, if for segid AAA, X was set to 1 for rate 2, then I would like to return the rtechg associated with that. I have no clue if that's possible of how to do it as I am was just taking this one step at a time for now.&amp;nbsp; Thanks so much for the quick reply and help! &amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Dec 2019 19:40:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611115#M2933</guid>
      <dc:creator>candlerb</dc:creator>
      <dc:date>2019-12-11T19:40:39Z</dc:date>
    </item>
    <item>
      <title>Re: Proc Optmodel Error: NLP solver does not allow integer variables</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611117#M2934</link>
      <description>&lt;P&gt;Here is code to do the linearization, whereby the MILP solver is called, and print the rtechg output you requested:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc optmodel;
   set &amp;lt;string&amp;gt; segment;
   set rate = 1..3;
   num rtechg {segment, rate};
   num wgt {segment, rate};
   num roewgt {segment, rate};

   read data elast_input into segment=[segid] 
      {j in rate} &amp;lt;rtechg[segid,j]=col('rtechg_'||(j))&amp;gt;
      {j in rate} &amp;lt;wgt[segid,j]=col('wgt_'||(j))&amp;gt;
      {j in rate} &amp;lt;roewgt[segid,j]=col('roewgt_'||(j))&amp;gt;;

   num scale = 1e6;
   for {segid in segment, j in rate} do;
      wgt[segid,j]    = wgt[segid,j]    / scale;
      roewgt[segid,j] = roewgt[segid,j] / scale;
   end;

   print rtechg wgt roewgt;

   var X {segment, rate} binary;
   max roe = 
      (sum {segid in segment, j in rate} (roewgt[segid,j]*X[segid,j])) 
    / (sum {segid in segment, j in rate} (wgt[segid,j]*X[segid,j]));

   con SelectOne {segid in segment}:
      sum {j in rate} X[segid,j] = 1;

   /* Charnes-Cooper transformation: scale so that denominator of objective function is 1 */
   var T &amp;gt;= 0 &amp;lt;= min {segid in segment, j in rate} (1/wgt[segid,j]);
   /* TX[segid,j] = T * X[segid,j] */
   var TX {segid in segment, j in rate} &amp;gt;= 0 &amp;lt;= 1/wgt[segid,j];
   max roe_linear = 
      sum {segid in segment, j in rate} roewgt[segid,j]*TX[segid,j]; 
   con DenominatorOne:
      sum {segid in segment, j in rate} wgt[segid,j]*TX[segid,j] = 1;
   con Linearize {segid in segment, j in rate}:
      TX[segid,j] &amp;lt;= TX[segid,j].ub * X[segid,j];
   con LinearizeLB {segid in segment, j in rate}:
      TX[segid,j] - T &amp;gt;= (TX[segid,j].lb - T.ub) * (1 - X[segid,j]);
   con LinearizeUB {segid in segment, j in rate}:
      TX[segid,j] - T &amp;lt;= (TX[segid,j].ub - T.lb) * (1 - X[segid,j]);
 
   solve;
   print X;
   print roe roe_linear;

   num rtechg_sol {segment};
   for {segid in segment} do;
      for {j in rate: X[segid,j].sol &amp;gt; 0.5} do;
         rtechg_sol[segid] = rtechg[segid,j];
         leave;
      end;
   end;
   print rtechg_sol;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Dec 2019 21:12:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611117#M2934</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2019-12-11T21:12:31Z</dc:date>
    </item>
    <item>
      <title>Re: Proc Optmodel Error: NLP solver does not allow integer variables</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611124#M2935</link>
      <description>&lt;P&gt;When I add that I don't get the error message anymore, but the results are not expected in that optimal ROE is negative and my constraint isn't holding that X for a segment must equal 1.&amp;nbsp; I'm guessing it's because we have the outdated version here.&lt;/P&gt;</description>
      <pubDate>Wed, 11 Dec 2019 20:10:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611124#M2935</guid>
      <dc:creator>candlerb</dc:creator>
      <dc:date>2019-12-11T20:10:47Z</dc:date>
    </item>
    <item>
      <title>Re: Proc Optmodel Error: NLP solver does not allow integer variables</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611139#M2936</link>
      <description>&lt;P&gt;This was great and delivered the expected result on my small scale example...thanks!&amp;nbsp; I tried to run it on my larger dataset and got an error for out of memory.&amp;nbsp; Is there a limit to the number of decision variables this can be used on?&amp;nbsp; My current problem has 51 segids, with 3 rate options each, so 153 decision variables, although I was hoping to expand the number of segids and rate options in the future as well.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT&gt;ERROR: Out of memory.&lt;BR /&gt;NOTE: Objective of the best integer solution found = 0.170493763.&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Dec 2019 20:38:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611139#M2936</guid>
      <dc:creator>candlerb</dc:creator>
      <dc:date>2019-12-11T20:38:18Z</dc:date>
    </item>
    <item>
      <title>Re: Proc Optmodel Error: NLP solver does not allow integer variables</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611145#M2937</link>
      <description>&lt;P&gt;Yes, the hidden version before 15.1 does not respect the constraints.&lt;/P&gt;</description>
      <pubDate>Wed, 11 Dec 2019 20:40:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611145#M2937</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2019-12-11T20:40:49Z</dc:date>
    </item>
    <item>
      <title>Re: Proc Optmodel Error: NLP solver does not allow integer variables</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611146#M2938</link>
      <description>&lt;P&gt;There is no hard limit.&amp;nbsp; Can you please send the larger data?&lt;/P&gt;</description>
      <pubDate>Wed, 11 Dec 2019 20:41:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611146#M2938</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2019-12-11T20:41:41Z</dc:date>
    </item>
    <item>
      <title>Re: Proc Optmodel Error: NLP solver does not allow integer variables</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611174#M2939</link>
      <description>&lt;P&gt;Larger sample data is attached&lt;/P&gt;</description>
      <pubDate>Wed, 11 Dec 2019 21:32:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611174#M2939</guid>
      <dc:creator>candlerb</dc:creator>
      <dc:date>2019-12-11T21:32:34Z</dc:date>
    </item>
    <item>
      <title>Re: Proc Optmodel Error: NLP solver does not allow integer variables</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611182#M2940</link>
      <description>&lt;P&gt;To get a better linearization that exploits the SelectOne constraints, replace LinearizeLB and LinearizeUB with LinearizeCompact:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/*   con LinearizeLB {segid in segment, j in rate}:*/
/*      TX[segid,j] - T &amp;gt;= (TX[segid,j].lb - T.ub) * (1 - X[segid,j]);*/
/*   con LinearizeUB {segid in segment, j in rate}:*/
/*      TX[segid,j] - T &amp;lt;= (TX[segid,j].ub - T.lb) * (1 - X[segid,j]);*/
   con LinearizeCompact {segid in segment}:
      sum {j in rate} TX[segid,j] = T;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This change yields an optimal solution instantly for your larger data:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;NOTE: Problem generation will use 4 threads.
NOTE: The problem has 307 variables (0 free, 0 fixed).
NOTE: The problem has 153 binary and 0 integer variables.
NOTE: The problem has 256 linear constraints (153 LE, 103 EQ, 0 GE, 0 range).
NOTE: The problem has 816 linear constraint coefficients.
NOTE: The problem has 0 nonlinear constraints (0 LE, 0 EQ, 0 GE, 0 range).
NOTE: The OPTMODEL presolver is disabled for linear problems.
NOTE: The initial MILP heuristics are applied.
NOTE: The MILP presolver value AUTOMATIC is applied.
NOTE: The MILP presolver removed 51 variables and 51 constraints.
NOTE: The MILP presolver removed 154 constraint coefficients.
NOTE: The MILP presolver modified 202 constraint coefficients.
NOTE: The presolved problem has 256 variables, 205 constraints, and 662 constraint
      coefficients.
NOTE: The MILP solver is called.
NOTE: The parallel Branch and Cut algorithm is used.
NOTE: The Branch and Cut algorithm is using up to 4 threads.
          Node   Active   Sols    BestInteger      BestBound      Gap    Time
             0        1      1      0.1704294      0.4859814   64.93%       0
             0        1      1      0.1704294      0.1704294    0.00%       0
             0        0      1      0.1704294      0.1704294    0.00%       0
NOTE: Optimal.
NOTE: Objective = 0.1704294364.
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Dec 2019 23:33:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611182#M2940</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2019-12-11T23:33:51Z</dc:date>
    </item>
    <item>
      <title>Re: Proc Optmodel Error: NLP solver does not allow integer variables</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611183#M2941</link>
      <description>&lt;P&gt;That worked for me with the code you had sent, however when I tried to add another business constraint I still got the out of memory error.&amp;nbsp; I apologize for not thinking of the possibility of adding other constraints upfront, but when I saw the optimal solution, which was moving to the higher rate everywhere, it became obvious to me that I need to add some other constraint.&amp;nbsp; I added the following, which worked on the smaller dataset, but again ran out of memory on the larger dataset.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;   con MinVol:
      sum {segid in segment, j in rate} (vol[segid,j]*X[segid,j]) &amp;gt;= 7350195340;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Right now I have 7350195340 as a constant, although the true purpose is to be the sum of the vol_2 field.&amp;nbsp; There was another similar type constraint I was thinking of adding, but it is based on values I don't have in the original sample I sent you.&amp;nbsp; I can work on making a sample for that too if you think it's best in order to see if we can find a solution that can work within multiple business constraints.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I really appreciate all your help with this!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Full code with the vol field:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc optmodel;
   set &amp;lt;string&amp;gt; segment;
   set rate = 1..3;
   num rtechg {segment, rate};
   num vol {segment, rate};
   num wgt {segment, rate};
   num roewgt {segment, rate};

   read data elast_input into segment=[segid] 
      {j in rate} &amp;lt;rtechg[segid,j]=col('rtechg_'||(j))&amp;gt;
	  {j in rate} &amp;lt;vol[segid,j]=col('vol_'||(j))&amp;gt;
      {j in rate} &amp;lt;wgt[segid,j]=col('wgt_'||(j))&amp;gt;
      {j in rate} &amp;lt;roewgt[segid,j]=col('roewgt_'||(j))&amp;gt;;

   num scale = 1e6;
   for {segid in segment, j in rate} do;
      wgt[segid,j]    = wgt[segid,j]    / scale;
      roewgt[segid,j] = roewgt[segid,j] / scale;
   end;

   print rtechg wgt roewgt;

   var X {segment, rate} binary;
   max roe = 
      (sum {segid in segment, j in rate} (roewgt[segid,j]*X[segid,j])) 
    / (sum {segid in segment, j in rate} (wgt[segid,j]*X[segid,j]));

   con SelectOne {segid in segment}:
      sum {j in rate} X[segid,j] = 1;

   con MinVol:
      sum {segid in segment, j in rate} (vol[segid,j]*X[segid,j]) &amp;gt;= 7350195340;
	

   /* Charnes-Cooper transformation: scale so that denominator of objective function is 1 */
   var T &amp;gt;= 0 &amp;lt;= max {segid in segment, j in rate} (1/wgt[segid,j]);
   var TX {segid in segment, j in rate} &amp;gt;= 0 &amp;lt;= 1/wgt[segid,j];
   max roe_linear = 
      sum {segid in segment, j in rate} roewgt[segid,j]*TX[segid,j]; 
   con DenominatorOne:
      sum {segid in segment, j in rate} wgt[segid,j]*TX[segid,j] = 1;
   con Linearize {segid in segment, j in rate}:
      TX[segid,j] &amp;lt;= TX[segid,j].ub * X[segid,j];
   con LinearizeCompact {segid in segment}:
      sum {j in rate} TX[segid,j] = T;
 
   solve;
   print X;
   print roe roe_linear;

   num rtechg_sol {segid in segment};
   for {segid in segment} do;
      for {j in rate: X[segid,j].sol &amp;gt; 0.5} do;
         rtechg_sol[segid] = rtechg[segid,j];
         leave;
      end;
   end;
   print rtechg_sol;
quit;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 12 Dec 2019 00:39:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611183#M2941</guid>
      <dc:creator>candlerb</dc:creator>
      <dc:date>2019-12-12T00:39:30Z</dc:date>
    </item>
    <item>
      <title>Re: Proc Optmodel Error: NLP solver does not allow integer variables</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611186#M2942</link>
      <description>&lt;P&gt;Your code runs fine for me with SAS/OR 15.1, but it runs faster if you scale the values, like was done for wgt and roewgt:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;   for {segid in segment, j in rate} do;
      vol[segid,j]    = vol[segid,j]    / scale;
      wgt[segid,j]    = wgt[segid,j]    / scale;
      roewgt[segid,j] = roewgt[segid,j] / scale;
   end;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And then scale the right hand side of your new constraint:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;   con MinVol:
      sum {segid in segment, j in rate} (vol[segid,j]*X[segid,j]) &amp;gt;= 7350195340 / scale;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;NOTE: Problem generation will use 4 threads.
NOTE: The problem has 307 variables (0 free, 0 fixed).
NOTE: The problem has 153 binary and 0 integer variables.
NOTE: The problem has 257 linear constraints (153 LE, 103 EQ, 1 GE, 0 range).
NOTE: The problem has 969 linear constraint coefficients.
NOTE: The problem has 0 nonlinear constraints (0 LE, 0 EQ, 0 GE, 0 range).
NOTE: The OPTMODEL presolver is disabled for linear problems.
NOTE: The initial MILP heuristics are applied.
NOTE: The MILP presolver value AUTOMATIC is applied.
NOTE: The MILP presolver removed 51 variables and 51 constraints.
NOTE: The MILP presolver removed 207 constraint coefficients.
NOTE: The MILP presolver modified 270 constraint coefficients.
NOTE: The presolved problem has 256 variables, 206 constraints, and 762 constraint
      coefficients.
NOTE: The MILP solver is called.
NOTE: The parallel Branch and Cut algorithm is used.
NOTE: The Branch and Cut algorithm is using up to 4 threads.
          Node   Active   Sols    BestInteger      BestBound      Gap    Time
             0        1      0              .      0.1589133        .       0
NOTE: The MILP solver's symmetry detection found 254 orbits. The largest orbit contains 2
      variables.
             0        1      0              .      0.1589133        .       0
             0        1      0              .      0.1589127        .       0
             0        1      0              .      0.1589126        .       0
             0        1      0              .      0.1589126        .       0
NOTE: The MILP solver added 3 cuts with 177 cut coefficients at the root.
           103      101      1      0.1572979      0.1587913    0.94%       0
           105      103      2      0.1573459      0.1587913    0.91%       0
           705      143      3      0.1578858      0.1584093    0.33%       0
          1409      509      4      0.1579025      0.1583040    0.25%       0
         11583     3937      5      0.1579183      0.1580484    0.08%       3
         13895     3369      6      0.1579213      0.1580238    0.06%       4
         15643     2712      6      0.1579213      0.1579974    0.05%       5
         17848     1756      7      0.1579220      0.1579775    0.04%       5
         20174      199      7      0.1579220      0.1579378    0.01%       6
NOTE: Optimal within relative gap.
NOTE: Objective = 0.157921987.
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 12 Dec 2019 01:08:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611186#M2942</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2019-12-12T01:08:37Z</dc:date>
    </item>
    <item>
      <title>Re: Proc Optmodel Error: NLP solver does not allow integer variables</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611190#M2943</link>
      <description>&lt;P&gt;Even with the scaling I get out of memory message. W&lt;SPAN style="display: inline !important; float: none; background-color: #ffffff; color: #333333; cursor: text; font-family: 'HelevticaNeue-light','Helvetica Neue',Helvetica,Arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt;hen I use fullstimer it appears to use 5 mb, which doesn't seem like a lot to be getting that message to me...wonder if has something to do with my organizations' configuration.&amp;nbsp; &lt;/SPAN&gt;I appreciate all the time and help. You definitely solved the linearity issue.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 12 Dec 2019 01:28:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611190#M2943</guid>
      <dc:creator>candlerb</dc:creator>
      <dc:date>2019-12-12T01:28:13Z</dc:date>
    </item>
    <item>
      <title>Re: Proc Optmodel Error: NLP solver does not allow integer variables</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611191#M2944</link>
      <description>&lt;P&gt;I recommend investigating the setting of the SAS MEMSIZE option.&amp;nbsp; For reference, I have MEMSIZE 20G, and here is the result of FULLSTIMER for me:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;NOTE: PROCEDURE OPTMODEL used (Total process time):
      real time           6.40 seconds
      user cpu time       16.71 seconds
      system cpu time     3.03 seconds
      memory              167586.76k
      OS Memory           191116.00k
      Timestamp           12/11/2019 08:03:27 PM
      Step Count                        44  Switch Count  37
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 12 Dec 2019 01:39:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Proc-Optmodel-Error-NLP-solver-does-not-allow-integer-variables/m-p/611191#M2944</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2019-12-12T01:39:09Z</dc:date>
    </item>
  </channel>
</rss>

