10

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

这里列出了一些: 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 美元

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

可选附加套餐(添加到基本计划中):
免费周末 $15
免费晚上和周末(晚上 8 点之后) $20
免费晚上和周末(下午 6 点之后) $35 短信套餐 #1(50 条短信) $5
短信套餐 #2( 150 条短信)10 美元
数据包#1(20 MB 数据)20 美元
数据包#2(50 MB 数据)30美元健谈用户混合
包#1(100 分钟语音,100 条短信)15 美元
极客用户混合包#1(50 分钟)语音、150 MB 数据)35 美元

我有一组 50 个用户的详细使用数据,并且想弄清楚每个人应该使用的基本计划(A、B、C ... F)的组合,以及哪些附加包他们应该有。

4

3 回答 3

8

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

它提供 Express(免费)、Standard 和 Enterprise(MSDN 订阅)版本。

于 2010-06-04T05:48:21.017 回答
3

首先,我猜您可能需要比简单的 LP 求解器更复杂的东西。大多数手机服务都有断点,您可能希望根据通话长度、频率、一天中的时间等从一种服务切换到另一种服务。这种切换意味着需要整数变量,这意味着您可能需要 MILP(混合整数线性规划) 求解器。(如果你所有的成本函数和约束都是凸的,你可以使用 LP 求解器,但这有点超前了)。好消息是,那里也有开源且价格合理的 MILP 求解器。

我会从 LP SOLVE 或 SYMPHONY 开始。在这里查看 COIN-OR 网站,了解一些有用的背景信息。

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

从用户的角度来看,一个更有趣的问题是:计划之间的断点在哪里?您能否定义无差异曲线 - 用户在两个计划之间无差异的使用组合?这个问题可以使用一些线性代数技术在数学上解决,但实际上没有目标函数,所以它看起来不像 MILP。

从供应商的角度来看另一个有趣的问题——如何制定计划以实现利润最大化?如果您将 50 个用户作为总体的代表,您可以在此处应用一些优化。您需要对用户的总成本设定上限并增加成本以获得利润,但我认为可以制定一个公式。

于 2010-06-03T19:37:02.210 回答
1

查看 GNU 线性编程工具包。

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

于 2012-04-29T20:43:22.563 回答