将惩罚约束添加到优化模型中

时间:2021-06-12 11:19:42

标签: optimization binary pyomo glpk

总的来说,我对 Pyomo 和优化还是很陌生,但最近遇到了一个问题,所以我希望有人能把我推向正确的方向。 我开发了一个供应链优化模型,该模型具有各种容量的生产站点,这些站点向不同的客户提供各种产品。 我最近升级了该模型,以考虑生产少于其最低“合同”金额的网站的罚款成本。例如,如果站点的最低生产阈值为 50,则它可以生产 40,但随后需要支付罚款 ((50-40)*$1)。为此,我添加了一个二元变量,乘以每单位短缺的成本,再乘以目标函数中的短缺变量。问题是我收到一个错误,说这是一个二次函数

这是错误>>运行时错误:选定的求解器无法处理具有二次项的目标函数。有争议的目标:目标。

我已经做了很多或研究,但还没有找到一种方法来避免通过将惩罚添加到混合中(通过将一个变量与另一个变量相乘)来防止将其转换为二次函数。所以我的问题是,有人可以指出一些技巧或方法。 我可以使用不同的求解器,我只是假设通过将其转换为二次函数,这将需要更多的计算能力(减慢运行时间)。 非常感谢!

1 个答案:

答案 0 :(得分:1)

这是非常可行的,并不少见。你应该能够制定这个并保持一切线性。

最清晰的通用方法是为加班/生产不足/等添加一个额外的变量。然后将其包含在目标函数中,乘以惩罚,使其不如“常规”生产有利。

这是一个类似的例子: https://stackoverflow.com/a/67483886/10789207