JuMP dual inside loop


I am trying to run a code using the dual function from JuMP inside a loop, but I’m not getting the results I expected.

The code is a bit extensive, so I’ll try to put here the most relevant parts of the model for my question:

xx = [@variable(sub, [1:T, 1:nGen, 1:K+1]) for i = 1:3]

@constraints(sub, begin 
    DualFisherg,  xx[1] .== xk[1] 
    DualFisherup, xx[2] .== xk[2] 
    DualFisherdn, xx[3] .== xk[3] 

for ω =2:S
    for t=1:T
        JuMP.set_normalized_rhs(eq35_bal3[t,3], d_hat[t, ω]) 
        JuMP.set_normalized_rhs(eq36_bal3[t,3], d[t, ω])     
        for i=1:nGen 
            for k=1:K
                if t > 1
                    JuMP.set_normalized_coefficient(eqld1[t,i,k], xx[1][t, i, k], -d[t-k, ω]) 
                    JuMP.set_normalized_coefficient(eqld2[t,i,k], xx[2][t, i, k], -d[t-k, ω]) 
                    JuMP.set_normalized_coefficient(eqld3[t,i,k], xx[3][t, i, k], -d[t-k, ω]) 
  status = optimize!(sub)
  Q += JuMP.objective_value(sub)/S
  λg += JuMP.dual.(DualFisherg)./S 
  λup += JuMP.dual.(DualFisherup)./S 
  λdn += JuMP.dual.(DualFisherdn)./S 

In this code, S is the number of scenarios I’m using. So, when I have more than one scenario, I change the right-hand side and the coefficients of some constraints, optimize the model, and update the objective value and the duals of three constraints.

The values of Q and λg in this code are being updated correctly when I have more than one scenario, but the other values (λup and λdn) are not. Any ideas why this happens?

1 Like

Please provide a reproducible example. I can’t run your code so I can’t see the problem.

What is the error? Just a wrong result?

1 Like

It was just a wrong result, but I’ve already fixed it. Thanks!

1 Like