推荐的.Net中的线性编程库?

任何人都可以推荐图书馆 – 免费,或商业,但负担得起(

这里列出了一些: http : //en.wikipedia.org/wiki/Linear_programming#Solvers_and_scripting_.28programming.29_languages

….但我刚刚开始使用LP,并希望有人可以推荐一些东西。

我试图基本上最小化手机订阅服务的定价。
我想第一个问题是 :线性编程是否适用于解决这个问题?

一个简化的例子:

基本计划选项
计划A:200分钟语音,10条短信,10 MB数据= 25美元
B计划:400分钟语音,25条短信,25 MB数据= 40美元
计划C:1000个语音分钟,50个短信息,50 MB数据= 65美元

计划F:2500个语音分钟,150个文本消息,150 MB数据= 95美元

超出计划的费用(适用于所有情况):
每个语音分钟$ .10
每条短信$ .20
每MB数据1.50美元

可选的附加软件包(添加到基本计划):
免费周末15美元
免费晚上和周末(晚上8点后)20美元
免费晚上和周末(下午6点后)35美元短信包#1(50短信)5美元
短信包#2(150短信)10美元
数据包#1(20 MB数据)20美元
数据包#2(50 MB数据)30美元
Chatty User Mixed Pack#1(100分钟语音,100条短信)15美元
令人讨厌的用户混合包#1(50分钟语音,150 MB数据)35美元
等等

我有50个用户的一组详细的使用数据,并想知道每个人应该在哪个基本计划组合(A,B,C … F),以及哪些附加软件包他们应该有。

您可以尝试Microsoft Solver Foundation 。 它是一个数学编程库,支持求解线性规划,混合整数规划,随机规划以及其他优化和建模问题。

它提供快速(免费),标准和企业(MSDN订阅)版本。

首先,我猜你可能需要比简单的LP解算器更复杂的东西。 大多数手机服务都有断点,您可能希望根据呼叫长度,频率,一天中的时间等从一种服务切换到另一种服务。这种切换意味着需要整数变量,这意味着您可能需要一个MILP(混合整数线性编程)解算器。 (如果你的所有成本函数和约束都是凸的,那么你可以使用LP解算器,但这比我们自己领先一点)。 好消息是,那里也有开源和负担得起的MILP解决方案。

我从LP SOLVE或SYMPHONY开始。 查看COIN-OR网站,获取一些有用的背景信息。

为了回应您增强的问题描述,我认为您可以简单地将50个用户中的每一个用于每个计划,然后单独应用每个选项。 有n个用户和m个可能的计划和p个可能的选项,你需要查看每个用户的m * p选项 – 但这有点无聊。

从用户的角度来看,一个更有趣的问题是:计划之间的断点在哪里? 你能定义无差异曲线 – 用户在两个计划之间无关紧要的用法组合吗? 这个问题可以用数学方法解决,可能使用了一些线性代数技术,但实际上并没有客观函数,所以它看起来不像是MILP。

从供应商的角度来看另一个有趣的问题 – 如何制定计划以实现利润最大化 如果您让50位用户代表人口,您可以在这里应用一些优化。 您需要为用户的总成本设置上限并增加成本以获取利润,但我认为可以采用一种方式。

查看GNU线性编程套件。

http://www.gnu.org/software/glpk/