将条件语句转换为线性约束
Converting Conditional Statements Into Linear Constraints
我正在尝试将下面的第三个条件转换为线性约束。为了便于说明,我已经包含了完整的问题和我的进度。
某制造商正在考虑制造三种产品 a、b、c。 material每种产品的工时、人工和利润如下。
产品:(投入数量material、工时、利润)
一个:(3,6,200)
b: (6,5,300)
c: (10,8,400)
目前,可提供 12,000 单位的投入 material 和 12,000 小时的劳动力。指定了以下附加限制。
如果公司决定生产 "a" 那么它必须至少生产 100 件。
如果公司决定生产 "b" 辆汽车,那么它必须至少生产 80 辆。
如果公司决定生产 "c" 那么它最多可以生产 120 单位的 "a" 和 "b"(我将其解释为+ b <= 120 如果生产 "c",a + b 受 materials 和劳动力限制,否则)。
我需要制定一个整数线性规划来最大化公司利润,同时满足劳动力和material限制,以及上面列出的 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 < = 12,000
6Xa + 5Xb + 8Xc < = 12,000
Xa >= 100Ya
Xb >= 80Yb
如何制定最后一个附加约束条件?
更新:
经过更多研究。 Xa + Xb <= 120 + M(1-Yc)。其中 M 足够大,Xa + Xb 不会被人为地限制在 materials 和劳动力限制之外。留下这个以防其他人可能会受到帮助。
经过更多研究。 Xa + Xb <= 120 + M(1-Yc)。其中 M >= 12000/5 - 120 = 2280。
另外添加:
Ya + Yb + Yc <= 2
由于问题设置限制同时生成 Xa、Xb 和 Xc。
我正在尝试将下面的第三个条件转换为线性约束。为了便于说明,我已经包含了完整的问题和我的进度。
某制造商正在考虑制造三种产品 a、b、c。 material每种产品的工时、人工和利润如下。
产品:(投入数量material、工时、利润)
一个:(3,6,200)
b: (6,5,300)
c: (10,8,400)
目前,可提供 12,000 单位的投入 material 和 12,000 小时的劳动力。指定了以下附加限制。
如果公司决定生产 "a" 那么它必须至少生产 100 件。
如果公司决定生产 "b" 辆汽车,那么它必须至少生产 80 辆。
如果公司决定生产 "c" 那么它最多可以生产 120 单位的 "a" 和 "b"(我将其解释为+ b <= 120 如果生产 "c",a + b 受 materials 和劳动力限制,否则)。
我需要制定一个整数线性规划来最大化公司利润,同时满足劳动力和material限制,以及上面列出的 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 < = 12,000
6Xa + 5Xb + 8Xc < = 12,000
Xa >= 100Ya
Xb >= 80Yb
如何制定最后一个附加约束条件?
更新:
经过更多研究。 Xa + Xb <= 120 + M(1-Yc)。其中 M 足够大,Xa + Xb 不会被人为地限制在 materials 和劳动力限制之外。留下这个以防其他人可能会受到帮助。
经过更多研究。 Xa + Xb <= 120 + M(1-Yc)。其中 M >= 12000/5 - 120 = 2280。
另外添加:
Ya + Yb + Yc <= 2
由于问题设置限制同时生成 Xa、Xb 和 Xc。