Dear all, I am implementing a search for the maximum loadability limit using an OPF with dispatchable loads in Matpower. To model PV buses, I set generator voltage set points as upper limits for the voltage magnitude at generator buses and set the lower voltage limits at a low number (0.1 for example). Also, I keep the reactive power upper limit. When the OPF has run, I check the shadow prices of the upper bound constraints on voltage magnitudes to identify the generators which are still PV buses and the generators which have become PQ buses. During my testing, I ran into cases where the upper bounds voltage constraints are non-binding, but the corresponding shadow prices are nonzero. I believe it is due to the different thresholds used to check binding constraints. In particular, as far as I understood, the shadow prices of all non-binding constraints are set to zero by the following lines (mips solver):
%% zero out multipliers on non-binding constraints mu(h < -opt.feastol & mu < mu_threshold) = 0; My understanding is that the first condition h < -opt.feastol checks for non-bining constraints (deviations from the limit h is larger than the tolerance opt.feastol). I do not understand the second condition, however (mu < mu_threshold), which checks for the magnitude of the Lagrange multipliers. In my results, I have the case where h for a constraint is indeed larger than the opt.feastol threshold (h=7 e-4) but the corresponding Lagrange multiplier is larger than the mu_threshold (mu=2 e-4) so that the shadow price is not set to zero. Note also that the product of h and mu for the corresponding constraint is small enough for the last MIPS iteration to conclude on convergence (i.e. the relative complementarity constraint is satisfied). My question would then be: - What is the meaning of having the second check (mu < mu_threshold) in identifying the non-binding constraints? Kind regards, Camille Hamon Post doc Department of Electrical Power Engeneering Norwegian University of Science and Technology (NTNU)
