Is it possible to use linear programming to solve this problem? - MathOverflow most recent 30 from http://mathoverflow.net2013-05-21T00:57:50Zhttp://mathoverflow.net/feeds/question/27015http://www.creativecommons.org/licenses/by-nc/2.5/rdfhttp://mathoverflow.net/questions/27015/is-it-possible-to-use-linear-programming-to-solve-this-problemIs it possible to use linear programming to solve this problem?unknown (google)2010-06-04T05:36:36Z2010-06-04T06:11:41Z
<p>I am trying to write software to minimize pricing for cell phone subscription services, ie: choose the optimum plan for each customer in a large group. </p>
<p>Could someone comment on whether this is possible via linear programming?</p>
<p>Here is a description of the problem (the numbers in the examples may not be realistic so try to ignore that): </p>
<p>Base Plan Options </p>
<pre><code>Plan A: 200 Voice minutes, 10 Text Messages, 10 MB Data = $25
Plan B: 400 Voice minutes, 25 Text Messages, 25 MB Data = $40
Plan C: 1000 Voice minutes, 50 Text Messages, 50 MB Data = $65
...
Plan F: 2500 Voice minutes, 150 Text Messages, 150 MB Data = $95
</code></pre>
<p>Charges for exceeding your plan (for all cases): </p>
<pre><code>$.10 per voice minute
$.20 per text message
$1.50 per MB Data
</code></pre>
<p>Optional Add-On Packages (added to Base Plan): </p>
<pre><code>Free Weekends $15
Free Evenings and Weekends (after 8PM) $20
Free Evenings and Weekends (after 6PM) $35
Text Message Package #1 (50 Text Messages) $5
Text Message Package #2 (150 Text Messages) $10
Data Package #1 (20 MB Data) $20
Data Package #2 (50 MB Data) $30
Chatty User Mixed Pack #1 (100 Minutes Voice, 100 Text Messages) $15
Geeky User Mixed Pack #1 (50 Minutes Voice, 150 MB Data) $35
etc, etc etc
</code></pre>
<p>So if I have a set of detailed usage data for say 500 users, I want to figure out which combination of base plan (A, B, C ... F) each person should be on, as well as which add-on packages(s) they should have.</p>
<p>In the base packages and optional add-ons examples I gave, I was trying to make the point that there are so many overlapping options that brute force calculation of each option for each user is impractical.</p>
<p>So my question is, can this somehow be done efficiently via linear programming?<br>
And if so, I would greatly appreciate any hints or direction on where an experienced software developer with no expertise in linear programming might start?</p>
<h2>Update</h2>
<p>Thanks for the helpful comments so far. Thanks to DoubleJay I now know this is an integer programming problem. And yes, I most definitely will use a 3rd party solver, I need one that is callable from .Net platform, so if anyone has any suggestions on an affordable one let me know.</p>
<p>Once I have the solver, figuring out how one declares this problem within is my next problem, so any tips on where one would begin learning would also be much appreciated.</p>
<p>(Am also trying stackoverflow, but thought there'd likely be more expertise here for this particular problem).</p>