将条件语句转换为线性约束

时间:2018-04-24 22:35:18

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

我正在尝试将下面的第三个条件转换为线性约束。为了说明的目的,我把完整的问题和进展包括在内。

制造商正在考虑制造三种产品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”(我将其解释为+ b <= 120,如果“c”生成,而a + b受材料和劳动力限制,否则)。

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

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

    我将Xa,Xb和Xc指定为生成的a,b和c的数量。 我引入二进制变量如下:

    如果Xa&gt; Ya = 1 0,0否则。

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

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

    问题是:

    最大化200Xa + 300Xb + 400Xc

    s.t。

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

    {0,1}中的Ya,{0,1}中的Yb,{0,1}

    中的Yc

    3Xa + 6Xb + 10Xc <3。 = 12,000

    6Xa + 5Xb + 8Xc < = 12,000

    Xa&gt; = 100Ya

    Xb> = 80Yb

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

    更新

    经过一些研究。 Xa + Xb <= 120 + M(1-Yc)。在M足够大的情况下,Xa + Xb不会被人为地限制在材料和劳动力限制之外。如果其他任何人可能会得到它的帮助,请留下这个。

1 个答案:

答案 0 :(得分:1)

经过一些研究。 Xa + Xb <= 120 + M(1-Yc)。其中M> = 12000 / 5-120 = 2280。

另外添加:

Ya + Yb + Yc&lt; = 2

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