线性编程和事件发生

时间:2014-12-20 11:34:13

标签: optimization linear-programming

假设我们有N(在此示例中为N = 3)可能发生的事件取决于某些变量。它们中的每一个都可以产生一定的利润或损失(event1 = 300,event2 = -100,event3 = 200),它们在发生时受到规则的约束。

事件1仅在x>时发生5,

事件2仅在x = 2且y = 3

时发生

事件3仅在x为奇数时发生。

问题是要知道最大利润。

假设x,y是整数> = 0

在真正的问题中,有许多事件和许多维度。 (解决方案不应具体)

我的问题是:

这是线性编程问题吗?如果是,请使用此方法提供示例问题的解决方案。如果没有请建议一些算法来优化这样的问题。

2 个答案:

答案 0 :(得分:1)

这可以表示为mixed integer linear program。这是一个线性程序,其中一些变量被约束为整数。与线性程序相反,求解一般整数程序是NP难的。但是,有许多商业或open source求解器可以有效地解决大规模问题。对于最多300个变量和约束,您可以使用excel的求解器。

以下是制定上述约束的方法:

enter image description here

如果沿着这条路走下去,你可能会发现this document很有用。

有趣的约束中的最后一个约束。我假设x必须是整数,但如果x可以是整数或连续,我会相应地编辑答案。

我希望这有帮助!

上面的

修改LU应解释为L1U1

编辑2 :z2需要在第3和第4个约束上更改为(1-z2)。

答案 1 :(得分:0)

具体答案:

看起来更像是一个数学计算而不是一个编程问题,你不能只为x = 1-> 1000运行一个循环,看看会出现什么结果?

示例:

当x = 2或3 = -200时,则x> 2或3,如果x <3。 5没有得到300,所以真正发生的是x> 5和x =奇数=最大结果。

x = 7 = 300 + 200。 = x的最大利润

一般答案:

我没有看到如何在没有看到事件是什么以及事件如何影响X的情况下回答问题?天气它是一个线性或功能(数学)答案似乎相当于找到所需的解决方案。