<?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 Optimization Model Expression in Mathematical Optimization, Discrete-Event Simulation, and OR</title>
    <link>https://communities.sas.com/t5/Mathematical-Optimization/Optimization-Model-Expression/m-p/179618#M930</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Everyone,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have some questions about data set definition in an optimization model. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;One of the constraints is: sum {i in DivBlocks&lt;K&gt;, j in Pages} BlockSize&lt;I&gt; * BlockAssign[i,j] &amp;lt;= MaxDivPrntArea&lt;K&gt;.&lt;/K&gt;&lt;/I&gt;&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But I do not know how to create the data set of MaxDivPrntArea, can you tell me how to create it? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PS: the length of&amp;nbsp; MaxDivPrntArea&lt;K&gt; may be different from&amp;nbsp; MaxDivPrntArea[k'] when k is not equal k'.&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you very much for your help!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 12 Jan 2015 23:12:47 GMT</pubDate>
    <dc:creator>YH</dc:creator>
    <dc:date>2015-01-12T23:12:47Z</dc:date>
    <item>
      <title>Optimization Model Expression</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Optimization-Model-Expression/m-p/179618#M930</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Everyone,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have some questions about data set definition in an optimization model. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;One of the constraints is: sum {i in DivBlocks&lt;K&gt;, j in Pages} BlockSize&lt;I&gt; * BlockAssign[i,j] &amp;lt;= MaxDivPrntArea&lt;K&gt;.&lt;/K&gt;&lt;/I&gt;&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But I do not know how to create the data set of MaxDivPrntArea, can you tell me how to create it? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PS: the length of&amp;nbsp; MaxDivPrntArea&lt;K&gt; may be different from&amp;nbsp; MaxDivPrntArea[k'] when k is not equal k'.&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you very much for your help!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 12 Jan 2015 23:12:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Optimization-Model-Expression/m-p/179618#M930</guid>
      <dc:creator>YH</dc:creator>
      <dc:date>2015-01-12T23:12:47Z</dc:date>
    </item>
    <item>
      <title>Re: Optimization Model Expression</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Optimization-Model-Expression/m-p/179619#M931</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The index set for MaxDivPrntArea should match (or be a subset of) the index set for your constraint.&amp;nbsp; More explicitly, suppose you have a SAS data set called mydata that contains k and MaxDivPrntArea.&amp;nbsp; Then you need something like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;set KSET;&lt;/P&gt;&lt;P&gt;num MaxDivPrntArea {KSET};&lt;/P&gt;&lt;P&gt;read data mydata into KSET=&lt;K&gt; MaxDivPrntArea;&lt;/K&gt;&lt;/P&gt;&lt;P&gt;con Mycon {k in KSET}:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum {i in DivBlocks&lt;K&gt;, j in Pages} BlockSize&lt;I&gt; * BlockAssign[i,j] &amp;lt;= MaxDivPrntArea&lt;K&gt;;&lt;/K&gt;&lt;/I&gt;&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Or are you having trouble creating the mydata SAS data set itself?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In any case, you might find it useful to read some of the examples here:&lt;/P&gt;&lt;P&gt;&lt;A href="http://support.sas.com/documentation/cdl/en/ormpex/67518/HTML/default/viewer.htm#titlepage.htm" title="http://support.sas.com/documentation/cdl/en/ormpex/67518/HTML/default/viewer.htm#titlepage.htm"&gt;SAS/OR(R) 13.2 User's Guide: Mathematical Programming Examples&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 12 Jan 2015 23:22:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Optimization-Model-Expression/m-p/179619#M931</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2015-01-12T23:22:49Z</dc:date>
    </item>
    <item>
      <title>Re: Optimization Model Expression</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Optimization-Model-Expression/m-p/179620#M932</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi RobPratt,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for your answers! I am not sure how to create DivBlocks either. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want to create a set DivBlocks which has 2 levels indices: 1. index k for the first level; 2. given a particular level, DivBlocks&lt;K&gt;, there is a set DivBlocks&lt;K&gt; = {x, y, z, ...}. For different DivBlocks&lt;K&gt;, they have different elements. For example, DivBlocks[1] = {1,2,5}, DivBlocks[2] = {3,7}, DivBlocks[3] = {4,6,8,9}.&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Because the length of the first level of DivBlocks may change for different applications, I think it would be better not to list them one by one. Could you help me to get the answers? Thank you for your kind help!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 13 Jan 2015 17:37:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Optimization-Model-Expression/m-p/179620#M932</guid>
      <dc:creator>YH</dc:creator>
      <dc:date>2015-01-13T17:37:46Z</dc:date>
    </item>
    <item>
      <title>Re: Optimization Model Expression</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Optimization-Model-Expression/m-p/179621#M933</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;First create a SAS data set as follows:&lt;/P&gt;&lt;P&gt;data indata;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; input k i;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; datalines;&lt;/P&gt;&lt;P&gt;1 1&lt;/P&gt;&lt;P&gt;1 2&lt;/P&gt;&lt;P&gt;1 5&lt;/P&gt;&lt;P&gt;2 3&lt;/P&gt;&lt;P&gt;2 7&lt;/P&gt;&lt;P&gt;3 4&lt;/P&gt;&lt;P&gt;3 6&lt;/P&gt;&lt;P&gt;3 8&lt;/P&gt;&lt;P&gt;3 9&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In PROC OPTMODEL, you can read these pairs like this:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set &amp;lt;num,num&amp;gt; KI;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; read data indata into KI=[k i];&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;One approach to express the desired constraint is to use an implicit slice:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set KSET = setof {&amp;lt;k,i&amp;gt; in KI} k;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; con Mycon {k in KSET}:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum {&amp;lt;(k),i&amp;gt; in KI, j in Pages} BlockSize&lt;I&gt; * BlockAssign[i,j] &amp;lt;= MaxDivPrntArea&lt;K&gt;;&lt;/K&gt;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you insist on using DivBlocks, here is an alternative approach that uses the SETOF operator again:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set DivBlocks {k in KSET} = setof {&amp;lt;(k),i&amp;gt; in KI} i;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; con Mycon {k in KSET}:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum {i in DivBlocks&lt;K&gt;, j in Pages} BlockSize&lt;I&gt; * BlockAssign[i,j] &amp;lt;= MaxDivPrntArea&lt;K&gt;;&lt;/K&gt;&lt;/I&gt;&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;A third approach passes through the KI set only once to construct both KSET and DivBlocks:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set KSET init {};&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set DivBlocks {KSET} init {};&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; for {&amp;lt;k,i&amp;gt; in KI} do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KSET = KSET union {k};&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DivBlocks&lt;K&gt; = DivBlocks&lt;K&gt; union {i};&lt;/K&gt;&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; con Mycon {k in KSET}:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum {i in DivBlocks&lt;K&gt;, j in Pages} BlockSize&lt;I&gt; * BlockAssign[i,j] &amp;lt;= MaxDivPrntArea&lt;K&gt;;&lt;/K&gt;&lt;/I&gt;&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The doc link referenced in my previous reply contains numerous relevant examples.&amp;nbsp; Search for "sets indexed by other sets" in the pdf.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 13 Jan 2015 18:36:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Optimization-Model-Expression/m-p/179621#M933</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2015-01-13T18:36:53Z</dc:date>
    </item>
    <item>
      <title>Re: Optimization Model Expression</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Optimization-Model-Expression/m-p/179622#M934</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi RobPatt,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you a lot for your help!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 13 Jan 2015 19:33:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Optimization-Model-Expression/m-p/179622#M934</guid>
      <dc:creator>YH</dc:creator>
      <dc:date>2015-01-13T19:33:41Z</dc:date>
    </item>
  </channel>
</rss>

