<?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: Optimizing list selection in Mathematical Optimization, Discrete-Event Simulation, and OR</title>
    <link>https://communities.sas.com/t5/Mathematical-Optimization/Optimizing-list-selection/m-p/892348#M4031</link>
    <description>&lt;P&gt;If you want to find a minimum number of lists to cover all the names, that is the &lt;A href="https://en.wikipedia.org/wiki/Set_cover_problem" target="_self"&gt;set cover problem&lt;/A&gt;.&amp;nbsp; If the lists have different prices and you want to minimize the total cost, that is the &lt;EM&gt;weighted set cover problem&lt;/EM&gt;, mentioned on the same page.&amp;nbsp; If you want to maximize the number of names covered subject to a budget on the number or total cost of the lists, that is the &lt;A href="https://en.wikipedia.org/wiki/Maximum_coverage_problem" target="_self"&gt;maximum coverage problem&lt;/A&gt;, also known as the &lt;EM&gt;partial set cover problem&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can solve all of these variants by calling the MILP solver in PROC OPTMODEL.&amp;nbsp; You would declare a binary decision variable for each list and a constraint for each name.&amp;nbsp; For the partial set cover problem, you would declare an additional binary decision variable for each name to indicate whether it is covered.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 01 Sep 2023 17:36:12 GMT</pubDate>
    <dc:creator>RobPratt</dc:creator>
    <dc:date>2023-09-01T17:36:12Z</dc:date>
    <item>
      <title>Optimizing list selection</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Optimizing-list-selection/m-p/892340#M4030</link>
      <description>&lt;P&gt;Issue:&lt;/P&gt;&lt;P&gt;For our direct mail acquisition program we pay to rent lists from a bunch of organizations for one-time use. The cost per list varies but for the purpose of this problem let’s say that each list costs $70 per thousand names (we will refer to that as the “actual list cost”). Because we are getting names from a bunch of different places there is a fair amount of overlap. For example, we may find that 25% of the names on the X list overlap with the names on the Y list, and so on. So our effective cost per name then becomes much higher, like $120 per thousand names since we are paying for a lot of names multiple times (let’s call this the “effective list cost”).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Available data:&lt;/P&gt;&lt;P&gt;We now have files from past mailings that contains a master list of every name that we rented and shows all the lists that a name appeared on.&amp;nbsp; So if John X was on 10 lists we can see each of those 10 lists. If Mary Y appeared on 30 lists we can see all 30.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Goal:&lt;/P&gt;&lt;P&gt;Optimize acquisition list selects so that we can lower the effective list cost by reducing the number of list sources.&amp;nbsp; For example could we reduce the number of lists by say 20%, but only reducing the audience size by 5% through not renting lists x1, x2, x3, and x4 because they have the highest degree of overlap?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Question:&lt;/P&gt;&lt;P&gt;I was hoping to get some ideas on which sas procedures/approaches could best answer the question&lt;/P&gt;</description>
      <pubDate>Fri, 01 Sep 2023 16:10:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Optimizing-list-selection/m-p/892340#M4030</guid>
      <dc:creator>jdb7s</dc:creator>
      <dc:date>2023-09-01T16:10:44Z</dc:date>
    </item>
    <item>
      <title>Re: Optimizing list selection</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Optimizing-list-selection/m-p/892348#M4031</link>
      <description>&lt;P&gt;If you want to find a minimum number of lists to cover all the names, that is the &lt;A href="https://en.wikipedia.org/wiki/Set_cover_problem" target="_self"&gt;set cover problem&lt;/A&gt;.&amp;nbsp; If the lists have different prices and you want to minimize the total cost, that is the &lt;EM&gt;weighted set cover problem&lt;/EM&gt;, mentioned on the same page.&amp;nbsp; If you want to maximize the number of names covered subject to a budget on the number or total cost of the lists, that is the &lt;A href="https://en.wikipedia.org/wiki/Maximum_coverage_problem" target="_self"&gt;maximum coverage problem&lt;/A&gt;, also known as the &lt;EM&gt;partial set cover problem&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can solve all of these variants by calling the MILP solver in PROC OPTMODEL.&amp;nbsp; You would declare a binary decision variable for each list and a constraint for each name.&amp;nbsp; For the partial set cover problem, you would declare an additional binary decision variable for each name to indicate whether it is covered.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 01 Sep 2023 17:36:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Optimizing-list-selection/m-p/892348#M4031</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2023-09-01T17:36:12Z</dc:date>
    </item>
  </channel>
</rss>

