You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Gurobi模型中添加分段折扣函数至目标函数的实现疑问

问题

首次使用Gurobi,尝试将分段函数加入目标函数,不确定是否需要手动配置。已通过Gurobi官方社区获取的代码实现了分段约束:

m = gp.Model("test")
quantity = m.addVar(lb=5, ub=100, vtype=GRB.INTEGER, name="quantity")
cost = m.addVar(lb=0.5, ub=2, vtype=GRB.CONTINUOUS, name="cost")
m.addGenConstrPWL(quantity, cost, [1000, 4800, 4800.01, 15000, 1500.01, 30000], [5.2, 5.2, 5, 5, 4.6, 4.6])

现询问如何将该分段成本变量纳入目标函数,是否可直接作为变量添加,或添加目标函数时自动生效?

解答
  • 可以直接把cost变量纳入目标函数,因为m.addGenConstrPWL()已经在quantity和cost之间建立了分段线性关联,约束生效后,求解器优化目标时会自动遵循这个分段关系。
  • 举个实际例子:如果你的目标是最小化总成本(即quantity * cost),直接这样设置目标函数即可:
m.setObjective(quantity * cost, GRB.MINIMIZE)

如果目标是最小化单位成本cost本身,写法更简单:

m.setObjective(cost, GRB.MINIMIZE)
  • 不需要额外手动配置,只要addGenConstrPWL的参数设置正确,求解器会自动处理分段逻辑,在优化目标时同步应用约束里的分段规则。

内容的提问来源于stack exchange,提问作者Zhi Z

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 12:02:42