【问题标题】:Converting Conditional Statements Into Linear Constraints将条件语句转换为线性约束
【发布时间】:2018-04-24 22:35:18
【问题描述】:

我正在尝试将下面的第三个条件转换为线性约束。出于说明目的,我已包含完整的问题和我的进度。

一家制造商正在考虑生产 a、b、c 三种产品。每种产品的材料、人工和利润如下。

产品:(输入材料的数量、工时、利润)

a: (3,6,200)

b: (6,5,300)

c: (10,8,400)

目前,有 12,000 单位的输入材料和 12,000 小时的劳动力可用。指定了以下附加限制。

  1. 如果公司决定生产“a”,那么它必须至少生产 100 个单位。

  2. 如果公司决定生产“b”汽车,那么它必须至少生产 80 辆。

  3. 如果公司决定生产“c”,那么它最多可以生产总共 120 个单位的“a”和“b”(如果“c”是,我将其解释为 a + b

我需要制定一个整数线性规划来最大化公司的利润,同时满足劳动力和材料的限制,以及上面列出的 3 个附加限制。

到目前为止,我已经完成了以下工作。

我指定 Xa、Xb 和 Xc 为生产的 a、b 和 c 的数量。 我介绍二进制变量如下:

如果 Xa > 0,则 Ya = 1,否则为 0。

如果 Xb > 0,则 Yb = 1,否则为 0。

如果 Xc > 0,则 Yc = 1,否则为 0。

那么问题来了:

最大化 200Xa + 300Xb + 400Xc

s.t.

Xa >= 0, Xb >= 0, Xc >= 0

Ya 在 {0,1},Yb 在 {0,1},Yc 在 {0,1}

3Xa + 6Xb + 10Xc

6Xa + 5Xb + 8Xc

Xa >= 100Ya

Xb >= 80Yb

如何制定最后一个附加约束?

更新:

经过更多研究。 Xa + Xb

【问题讨论】:

  • 经过更多研究。 Xa + Xb
  • 请将您的更新作为答案发布并接受它(它是正确的)。请注意,传统上选择M 值作为不会切断任何可行解决方案的最小值。实际值取决于您的问题结构。在这里,M = min{12000/3, 12000/5} - 120 是一个很好的候选者(为什么?)现代求解器现在在提炼大 M 值方面做得很好,但仍然使用小的大 M 来制定问题并没有什么坏处。
  • 另请注意,在您当前的公式中,您可能有Ya = Yb = 0Xa, Xb > 0 处于最佳解决方案。您已强制执行 Ya = 1 --> Xa >= 100,但尚未强制执行 Ya = 0 --> Xa = 0。我相信您会解决这个问题的 :) 最后,您似乎 无法 以正值生成所有 A 、 B 和 C ,因此我们还可以添加 Ya + Yb + Yc <= 2 (除非您希望您的数据发生变化) .

标签: optimization linear-programming convex-optimization mixed-integer-programming


【解决方案1】:

经过更多研究。 Xa + Xb = 12000/5 - 120 = 2280。

另外补充:

Ya + Yb + Yc

由于问题设置同时限制了 Xa、Xb 和 Xc 的产生。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 2019-05-17
    • 1970-01-01
    相关资源
    最近更新 更多