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

如何在Julia JuMP中获取所有约束(含循环约束)的影子价格?

获取JuMP模型中约束的影子价格

要获取并打印所有约束的影子价格(对偶变量),可以按以下方式修改你的代码:

1. 调整约束定义方式

你之前在循环里定义的变量上下限约束是匿名的,不利于后续引用。建议将这些约束存入数组,方便后续调用:

using JuMP
using GLPK

CI = [30, 70];
d = 170;
Pmin = [0, 0];
Pmax = [100, 150];
N = length(CI)

m = Model(GLPK.Optimizer)

@variable(m, 0 <= P[1:N])
@objective(m, Min, sum(CI[i] * P[i] for i in 1:N))
@constraint(m, c1, sum(P[1:N]) == d)

# 将上下限约束存入数组
lower_bounds = @constraint(m, [i in 1:N], P[i] >= Pmin[i])
upper_bounds = @constraint(m, [i in 1:N], P[i] <= Pmax[i])

optimize!(m)

2. 获取并打印影子价格

优化完成后,使用dual()函数即可获取约束的影子价格:

打印功率平衡约束c1的影子价格

println("功率平衡约束c1的影子价格: ", dual(c1))

打印所有变量下限约束的影子价格

println("变量下限约束的影子价格:")
for i in 1:N
    println("P[$i] >= Pmin[$i]: ", dual(lower_bounds[i]))
end

打印所有变量上限约束的影子价格

println("变量上限约束的影子价格:")
for i in 1:N
    println("P[$i] <= Pmax[$i]: ", dual(upper_bounds[i]))
end

注意事项

  • 影子价格的符号与约束定义方向、优化目标类型(最小化/最大化)相关,需结合经济调度问题的实际含义解读。
  • GLPK作为线性规划求解器支持对偶变量获取,确保JuMP与GLPK版本兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:52:35