<?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 Multiple Optimization Functions within the same Proc OPTMODEL? in Mathematical Optimization, Discrete-Event Simulation, and OR</title>
    <link>https://communities.sas.com/t5/Mathematical-Optimization/Multiple-Optimization-Functions-within-the-same-Proc-OPTMODEL/m-p/756323#M3442</link>
    <description>&lt;P&gt;I have some working code from a previous problem (thanks Rob). Which is an optimization problem that chooses the zonechoice such that the difference between initialzone and the zonechoice is minimal. Linearized solution:&amp;nbsp;&lt;/P&gt;&lt;P&gt;the dataset is for 3 items&amp;nbsp;&lt;CODE class=" language-sas"&gt;824801,&amp;nbsp;696455,&amp;nbsp;and&amp;nbsp;920946&lt;/CODE&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data WORK.sMatrix;
Infile datalines delimiter='#';
input s initialzone var7 var8 var9 var10 var11 var12;
datalines;
824801#3#6#2#1#6#6#6
696455#2#6#6#6#6#6#3
920946#2#6#1#3#6#6#6
;
Run;

proc optmodel;
ods output PrintTable#3=expt3;

set SSET;
set JSET = 1..6;
num zonechoices {SSET, JSET};
num initialzone {SSET};

read data  sMatrix into SSET=[s] {j in JSET} &amp;lt;zonechoices[s,j]=col('Var'||(j+6))&amp;gt; initialzone;

print zonechoices initialzone;

var X {SSET, JSET} binary;
var Abs {SSET};

min Objective = (sum {s in SSET} Abs[s]) / (sum {s in SSET} initialzone[s]);

constraint OnceChoice {s in SSET}: sum {j in JSET} X[s,j] = 1;
constraint AbsCon1 {s in SSET}:Abs[s] &amp;gt;= sum {j in JSET} zonechoices[s,j]*X[s,j] - initialzone[s];
constraint AbsCon2 {s in SSET}:Abs[s] &amp;gt;= -sum {j in JSET} zonechoices[s,j]*X[s,j] + initialzone[s];

solve /*relaxint*/; 
print X;

quit;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;CODE class=" language-sas"&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;However, I want to now build upon this problem by imposing another rule. each zone in general is allowed to only have a certain amount of points.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;a zone of 1 lower bound is 50 and the upper bound is 80&lt;/P&gt;&lt;P&gt;a zone of 2 lower bound is 40 and the upper bound is 60&lt;/P&gt;&lt;P&gt;a zone of 3 lower bound is 10 and the upper bound is 30&lt;/P&gt;&lt;P&gt;a zone of 6 is a dummy filler value that penalized at lower bound of 9999 and an upper bound of 9999&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;so the solution output by SAS (X is the solution matrix)&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SASAlex101_6-1627075782990.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/61652iD37F7E2FC9893E5E/image-size/medium?v=v2&amp;amp;px=400" role="button" title="SASAlex101_6-1627075782990.png" alt="SASAlex101_6-1627075782990.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SASAlex101_5-1627075775177.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/61651i8FE7F27E99824316/image-size/medium?v=v2&amp;amp;px=400" role="button" title="SASAlex101_5-1627075775177.png" alt="SASAlex101_5-1627075775177.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Proc OptModel indicates that the optimal solution is a zone 3, and a zone 3, and another zone 2&lt;/P&gt;&lt;P&gt;i.e&lt;/P&gt;&lt;P&gt;3 corresponds to 10 to 30 points&lt;/P&gt;&lt;P&gt;2 corresponds to 40 to 60 points&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;fig B) &lt;/STRONG&gt;total 60 lower bound to 120&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;We can see that &lt;U&gt;initially&lt;/U&gt; we have&amp;nbsp; two zone 2's&amp;nbsp; and a single zone 3 equating to a point range between 90 lower bound to 150 points upper bound (&lt;STRONG&gt;fig A&lt;/STRONG&gt;).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;this gives a difference of &lt;STRONG&gt;FigA&lt;/STRONG&gt; and &lt;STRONG&gt;FigB&lt;/STRONG&gt; is 30 and 30. &lt;STRONG&gt;I want to minimize this variance to the lower and upper bound as part of the optimal solution.&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;how can in incorporate this extra subproblem or constraint in this calculation?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So a better solution that I came up with manually is :&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SASAlex101_7-1627076260874.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/61653i5C2179AED031035D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="SASAlex101_7-1627076260874.png" alt="SASAlex101_7-1627076260874.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;which gives a point range difference of 10 lower and 20 upper&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I was thinking use the midpoint of each range to set instead of using ranges altogether i.e for zone 1 would be 65 (midpoint). But then, I'm not sure how to add this extra minimization subproblem still...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;thanks in advance from a struggling SAS user...&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 23 Jul 2021 21:39:35 GMT</pubDate>
    <dc:creator>SASAlex101</dc:creator>
    <dc:date>2021-07-23T21:39:35Z</dc:date>
    <item>
      <title>Multiple Optimization Functions within the same Proc OPTMODEL?</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Multiple-Optimization-Functions-within-the-same-Proc-OPTMODEL/m-p/756323#M3442</link>
      <description>&lt;P&gt;I have some working code from a previous problem (thanks Rob). Which is an optimization problem that chooses the zonechoice such that the difference between initialzone and the zonechoice is minimal. Linearized solution:&amp;nbsp;&lt;/P&gt;&lt;P&gt;the dataset is for 3 items&amp;nbsp;&lt;CODE class=" language-sas"&gt;824801,&amp;nbsp;696455,&amp;nbsp;and&amp;nbsp;920946&lt;/CODE&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data WORK.sMatrix;
Infile datalines delimiter='#';
input s initialzone var7 var8 var9 var10 var11 var12;
datalines;
824801#3#6#2#1#6#6#6
696455#2#6#6#6#6#6#3
920946#2#6#1#3#6#6#6
;
Run;

proc optmodel;
ods output PrintTable#3=expt3;

set SSET;
set JSET = 1..6;
num zonechoices {SSET, JSET};
num initialzone {SSET};

read data  sMatrix into SSET=[s] {j in JSET} &amp;lt;zonechoices[s,j]=col('Var'||(j+6))&amp;gt; initialzone;

print zonechoices initialzone;

var X {SSET, JSET} binary;
var Abs {SSET};

min Objective = (sum {s in SSET} Abs[s]) / (sum {s in SSET} initialzone[s]);

constraint OnceChoice {s in SSET}: sum {j in JSET} X[s,j] = 1;
constraint AbsCon1 {s in SSET}:Abs[s] &amp;gt;= sum {j in JSET} zonechoices[s,j]*X[s,j] - initialzone[s];
constraint AbsCon2 {s in SSET}:Abs[s] &amp;gt;= -sum {j in JSET} zonechoices[s,j]*X[s,j] + initialzone[s];

solve /*relaxint*/; 
print X;

quit;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;CODE class=" language-sas"&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;However, I want to now build upon this problem by imposing another rule. each zone in general is allowed to only have a certain amount of points.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;a zone of 1 lower bound is 50 and the upper bound is 80&lt;/P&gt;&lt;P&gt;a zone of 2 lower bound is 40 and the upper bound is 60&lt;/P&gt;&lt;P&gt;a zone of 3 lower bound is 10 and the upper bound is 30&lt;/P&gt;&lt;P&gt;a zone of 6 is a dummy filler value that penalized at lower bound of 9999 and an upper bound of 9999&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;so the solution output by SAS (X is the solution matrix)&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SASAlex101_6-1627075782990.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/61652iD37F7E2FC9893E5E/image-size/medium?v=v2&amp;amp;px=400" role="button" title="SASAlex101_6-1627075782990.png" alt="SASAlex101_6-1627075782990.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SASAlex101_5-1627075775177.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/61651i8FE7F27E99824316/image-size/medium?v=v2&amp;amp;px=400" role="button" title="SASAlex101_5-1627075775177.png" alt="SASAlex101_5-1627075775177.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Proc OptModel indicates that the optimal solution is a zone 3, and a zone 3, and another zone 2&lt;/P&gt;&lt;P&gt;i.e&lt;/P&gt;&lt;P&gt;3 corresponds to 10 to 30 points&lt;/P&gt;&lt;P&gt;2 corresponds to 40 to 60 points&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;fig B) &lt;/STRONG&gt;total 60 lower bound to 120&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;We can see that &lt;U&gt;initially&lt;/U&gt; we have&amp;nbsp; two zone 2's&amp;nbsp; and a single zone 3 equating to a point range between 90 lower bound to 150 points upper bound (&lt;STRONG&gt;fig A&lt;/STRONG&gt;).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;this gives a difference of &lt;STRONG&gt;FigA&lt;/STRONG&gt; and &lt;STRONG&gt;FigB&lt;/STRONG&gt; is 30 and 30. &lt;STRONG&gt;I want to minimize this variance to the lower and upper bound as part of the optimal solution.&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;how can in incorporate this extra subproblem or constraint in this calculation?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So a better solution that I came up with manually is :&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SASAlex101_7-1627076260874.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/61653i5C2179AED031035D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="SASAlex101_7-1627076260874.png" alt="SASAlex101_7-1627076260874.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;which gives a point range difference of 10 lower and 20 upper&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I was thinking use the midpoint of each range to set instead of using ranges altogether i.e for zone 1 would be 65 (midpoint). But then, I'm not sure how to add this extra minimization subproblem still...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;thanks in advance from a struggling SAS user...&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 23 Jul 2021 21:39:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Multiple-Optimization-Functions-within-the-same-Proc-OPTMODEL/m-p/756323#M3442</guid>
      <dc:creator>SASAlex101</dc:creator>
      <dc:date>2021-07-23T21:39:35Z</dc:date>
    </item>
    <item>
      <title>Re: Multiple Optimization Functions within the same Proc OPTMODEL?</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Multiple-Optimization-Functions-within-the-same-Proc-OPTMODEL/m-p/756436#M3443</link>
      <description>&lt;P&gt;You can treat the original objective as a primary objective and introduce a secondary objective that will break ties among solutions with the same primary objective value, by adding the following statements after the first solve:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;set ZONES = {1,2,3,6};
num lb {ZONES} = [50, 40, 10, 9999];
num ub {ZONES} = [80, 60, 30, 9999];
num initialLb = sum {s in SSET} lb[initialzone[s]];
num initialUb = sum {s in SSET} ub[initialzone[s]];

num optimalObjectiveValue;
optimalObjectiveValue = Objective;
con ObjectiveCut:
	Objective &amp;lt;= optimalObjectiveValue;

var ErrorLb &amp;gt;= 0;
var ErrorUb &amp;gt;= 0;
min Objective2 = ErrorLb + ErrorUb;
impvar PointsLb = sum {s in SSET, j in JSET} lb[zonechoices[s,j]] * X[s,j];
impvar PointsUb = sum {s in SSET, j in JSET} ub[zonechoices[s,j]] * X[s,j];
con ErrorLbCon1:
	ErrorLb &amp;gt;= PointsLb - initialLb;
con ErrorLbCon2:
	ErrorLb &amp;gt;= -PointsLb + initialLb;
con ErrorUbCon1:
	ErrorUb &amp;gt;= PointsUb - initialUb;
con ErrorUbCon2:
	ErrorUb &amp;gt;= -PointsUb + initialUb;

solve;
print X;
print Objective;
print initialLb PointsLb ErrorLb;
print initialUb PointsUb ErrorUb;
print Objective2;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The resulting solution is the same as what you manually obtained:&lt;/P&gt;
&lt;DIV class="branch"&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Optmodel: X" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="c b header" colspan="7" scope="colgroup"&gt;X&lt;/TH&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="c headerempty" scope="col"&gt;&amp;nbsp;&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;1&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;2&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;3&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;4&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;5&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;6&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;696455&lt;/TH&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;824801&lt;/TH&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;920946&lt;/TH&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;&lt;A target="_blank" name="IDX41"&gt;&lt;/A&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Optmodel: PrintTable" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;&lt;COLGROUP&gt; &lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="r b header" scope="col"&gt;Objective&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;0.42857&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;&lt;A target="_blank" name="IDX42"&gt;&lt;/A&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Optmodel: PrintTable" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;&lt;COLGROUP&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="r b header" scope="col"&gt;initialLb&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;PointsLb&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;ErrorLb&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;90&lt;/TD&gt;
&lt;TD class="r data"&gt;100&lt;/TD&gt;
&lt;TD class="r data"&gt;10&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;&lt;A target="_blank" name="IDX43"&gt;&lt;/A&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Optmodel: PrintTable" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;&lt;COLGROUP&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="r b header" scope="col"&gt;initialUb&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;PointsUb&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;ErrorUb&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;150&lt;/TD&gt;
&lt;TD class="r data"&gt;170&lt;/TD&gt;
&lt;TD class="r data"&gt;20&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;&lt;A target="_blank" name="IDX44"&gt;&lt;/A&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Optmodel: PrintTable" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;&lt;COLGROUP&gt; &lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="r b header" scope="col"&gt;Objective2&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;30&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
      <pubDate>Sat, 24 Jul 2021 23:15:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Multiple-Optimization-Functions-within-the-same-Proc-OPTMODEL/m-p/756436#M3443</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2021-07-24T23:15:47Z</dc:date>
    </item>
    <item>
      <title>Re: Multiple Optimization Functions within the same Proc OPTMODEL?</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Multiple-Optimization-Functions-within-the-same-Proc-OPTMODEL/m-p/756714#M3444</link>
      <description>&lt;P&gt;Rob. Thank you so much! a perfect solution.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 26 Jul 2021 17:04:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Multiple-Optimization-Functions-within-the-same-Proc-OPTMODEL/m-p/756714#M3444</guid>
      <dc:creator>SASAlex101</dc:creator>
      <dc:date>2021-07-26T17:04:28Z</dc:date>
    </item>
  </channel>
</rss>

