【问题标题】:Linear programming and event occurrence线性规划和事件发生
【发布时间】:2014-12-20 11:34:13
【问题描述】:

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

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

事件 2 仅在 x = 2 和 y = 3 时发生

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

问题是要知道最大利润。

假设 x, y 是整数 >= 0

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

我的问题是:

这是线性规划问题吗?如果是,请使用此方法提供示例问题的解决方案。如果没有,请提出一些算法来优化此类问题。

【问题讨论】:

    标签: optimization linear-programming


    【解决方案1】:

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

    这是一种表述上述约束的方法:

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

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

    我希望这会有所帮助!

    编辑:上面的LU应该被解释为L1U1

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

    【讨论】:

    • 方向似乎是正确的,但我需要一些时间来了解它:)
    • 酷 :) 如果您希望我详细说明约束如何对事件建模,请告诉我。简而言之,从xy 上的每个事件开始,约束应导致zi 的唯一值。此外,事件的“未发生”应导致 zs 为零。
    • 第3和第4个约束我没看懂,当z2 = 0时,应该是0
    • 我对其进行了编辑(在 edit 2 中)以使其正常工作:z2 == 1 => x - 2 == 0epsilon 数量是为了数值精度而添加的:线性程序的解决方案使用浮点算法,这意味着约束在一定的容差阈值内是正确的。我会选择epsilon = 10e-8。从公式can lead to infeasibilities 中删除epsilon。因此,虽然在概念上不需要,但在实践中会有所帮助。
    【解决方案2】:

    具体答案:

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

    例如:

    因为 x = 2 或 3 = -200 那么 x > 2 或 3,如果 x 5 和 x = 奇数 = 最大结果。

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

    一般答案:

    如果没有看到事件是什么以及事件如何影响 X ,我不知道如何回答这个问题?天气它是线性或函数(数学)答案似乎与找到所需解决方案无关。

    【讨论】:

    • 您不需要知道事件是什么,您只需要知道它们何时发生(例如 x > 5 和 y
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多