optimization - 在优化模型中添加惩罚约束
问题描述
总的来说,我对 Pyomo 和优化还是很陌生,但最近遇到了一个问题,所以我希望有人能把我推向正确的方向。我开发了一个供应链优化模型,该模型具有各种能力的生产站点,这些站点向不同的客户提供各种产品。我最近升级了模型,以考虑生产少于其最低“合同”数量的项目的站点的罚款成本。例如,如果一个站点的最低生产阈值为 50,它可以生产 40,但需要支付罚金 ((50-40)*$1)。我通过添加一个二进制变量来做到这一点,乘以每单位短缺的成本,再乘以目标函数中的短缺变量。问题是我得到一个错误,说这现在是一个二次函数
这是错误>>RuntimeError:选定的求解器无法处理具有二次项的目标函数。有争议的目标:客观。
我已经做了很多或研究,但还没有找到一种方法来避免通过将惩罚添加到混合中(通过将变量与另一个变量相乘)来避免将其转换为二次函数。所以我的问题是,是否有人可以指出一些技巧或方法。我可以使用不同的求解器,我只是假设通过将其转换为二次方这将需要更多的计算能力(减慢运行时间)。非常感谢!
解决方案
这是非常可行的并且并不少见。你应该能够制定这个并保持一切线性。
最清晰的通用方法是为加班/生产不足/等添加一个额外的变量。然后将其包含在目标函数中,乘以使其不如“常规”生产有利的惩罚。
推荐阅读
- flutter - 添加 firebase_database 后无法解决依赖关系
- c# - 如何在 OpenTK 中的四边形内放置图像(纹理)?
- pdf - 如何将 acroform 选项传递给 ghostscript
- typescript - 我需要一个需要显式调用触发的类型化(TS)通用咖喱函数(在提供最后一个参数时不调用)
- css - :active 在 div 上立即消失
- laravel - Laravel : 有 Laravel 分析的国家
- spring - spring cloud stream是否支持动态路由,是rabbitmq的特点?
- asynchronous - 我在这里提供的示例是在 C# 中并行运行方法的最佳方式
- amazon-web-services - 需要帮助了解为什么我的 s3 存储桶总是出现 4xx 错误?
- xml - 引起:java.lang.NoSuchMethodException Spring Batch xml配置