【问题标题】:Defining bounds and if-then statement in Pyomo在 Pyomo 中定义边界和 if-then 语句
【发布时间】:2021-02-04 07:09:17
【问题描述】:

我是 pyomo 和线性优化的新手。我的问题陈述如下所示:

一家化工公司生产三种化学品:化学品 A、化学品 B 和化学品 C。在规划期间,该公司共有:100 小时工程服务、700 小时直接人工和 4000 磅可用的昂贵原材料为生产。这三种化学品需要不同的工程服务时间、劳动力和每批销售的最终产品的昂贵原材料数量: 燃料 A:1 小时工程服务,10 小时直接人工,30 磅原材料。 燃料 B:2 小时工程服务,4 小时直接人工,20 磅原材料。 燃料 C:1 小时工程服务,5 小时直接人工,10 磅原材料。 批量购买时,该公司还提供不同的折扣。利润数据如下表所示: 例如,如果销售 120 批 A,前 40 批将获得 10 美元/批,后 60 批将获得 9 美元/批,剩下的将获得 8 美元/批。 我必须找出最有利可图的数字组合。

我在这里遇到了两个问题。首先,如何设置变量的界限?我看到了一段代码,但不明白这里的边界限制。

model.A40 = Var(within= NonNegativeIntegers,bounds=(0,40))

model.A100 = Var(within= NonNegativeIntegers,bounds=(0,60))

model.A150 = Var(within= NonNegativeIntegers,bounds=(0,50))

model.AMax = Var(within= NonNegativeIntegers,bounds = (0,None))

我认为边界应该是 (0, 40)、(40, 100)、(100, 150) 和 (150, None)

另外,既然是 if-then 语句,我该如何写下约束?

如果这是一个非常幼稚的问题,请忽略。我尝试了很多,但没有找到任何好的资源。

【问题讨论】:

    标签: python-3.x pyomo


    【解决方案1】:

    您可以在这里使用几种不同的方法....这显然是一个硬件问题...您看到的“其他代码”是一种似乎引用 A 部分的方法这在表中的限制之间,这是有道理的,因为您想明确地捕获该成本范围内的金额。所以,如果你将A40A100A150AMax 相加,你就会得到 A 的总产量,对吧?并且界限是有意义的......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-06
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 2021-03-20
      • 2017-07-07
      • 2018-08-02
      • 1970-01-01
      相关资源
      最近更新 更多