假设我们有N(在此示例中为N = 3)可能发生的事件取决于某些变量。它们中的每一个都可以产生一定的利润或损失(event1 = 300,event2 = -100,event3 = 200),它们在发生时受到规则的约束。
事件1仅在x>时发生5,
事件2仅在x = 2且y = 3
时发生事件3仅在x为奇数时发生。
问题是要知道最大利润。
假设x,y是整数> = 0
在真正的问题中,有许多事件和许多维度。 (解决方案不应具体)
我的问题是:
这是线性编程问题吗?如果是,请使用此方法提供示例问题的解决方案。如果没有请建议一些算法来优化这样的问题。
答案 0 :(得分:1)
这可以表示为mixed integer linear program。这是一个线性程序,其中一些变量被约束为整数。与线性程序相反,求解一般整数程序是NP难的。但是,有许多商业或open source求解器可以有效地解决大规模问题。对于最多300个变量和约束,您可以使用excel的求解器。
以下是制定上述约束的方法:
如果沿着这条路走下去,你可能会发现this document很有用。
有趣的约束中的最后一个约束。我假设x
必须是整数,但如果x
可以是整数或连续,我会相应地编辑答案。
我希望这有帮助!
上面的 修改:L
和U
应解释为L1
和U1
。
编辑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的情况下回答问题?天气它是一个线性或功能(数学)答案似乎相当于找到所需的解决方案。