First, thank you so much for your time, Sir. So I tried the first approach first. I want to added box constraints for Voltage angle, -0.26 < theta < 0.26. I created the A matrix and l and u vectors and passed it to the opf function. The solution converged and I did get results. But the problem is that the added constraints look like they had no effect on the result.
I also tried the toggle_reserves() method you suggested in the previous email of this thread where you asked me rename toggle_reserves and all the callback functions within it and modify its contents to toggle the addition of constraints. I did that too. results = runopf(mpc) and results.om had 5 linear constraints added to it. But again this had no effect on the results. I even tried changing the bounds to see if there was any difference but there wasn't. What is it that I'm missing out here? Regards Viswanath On Tue, Oct 10, 2017 at 9:09 AM, Ray Zimmerman <r...@cornell.edu> wrote: > It appears you have fundamentally misunderstood callback functions and how > they work. I suggest that you read carefully the entirety of sections > 7.2–7.5 in the User’s Manual and make sure you understand the > toggle_reserves() example used to illustrate the approach. > > To implement your own constraints, I would recommend copying and renaming > toggle_reserves() to something like toggle_myconstraints(). Then rename > all of the callback functions defined in that file to e.g. > userfcn_myconstraints_ext2int(), userfcn_myconstraints_formulation(), > etc., and modify their contents to reflect the constraints you want to add > (as opposed to those implemented for the zonal reserves case). The > “formulation” callback is where you’ll be calling add_constraints(). Then > you can simply toggle your constraints on and use runopf() normally. > > mpc = loadcase('<mycase>'); > mpc = toggle_myconstraints(mpc, 'on'); > results = runopf(mpc); > > Hope this helps, > > Ray > > > > On Oct 5, 2017, at 12:18 PM, Viswanath Hariharan <vhari...@buffalo.edu> > wrote: > > Sir > > I tried adding constraints using the callback functions method described > in Section 7.2 but I am not sure I followed it correctly. > mpopt = mpoption; > om = opf_setup(mpc, mpopt); > om = add_constraints(om, 'Vm', A1, l1, u1); > om = add_constraints(om, 'Va', A2, l2, u2); > mpc = get_mpc(om) > results2 = runopf(mpc); > > om gets updated with 10 linear constraints (case5 is being used here). But > mpc doesn't get updated and hence when I run this code and check and > results.var.mu.l.Va <http://results.var.mu.l.va/>, the constraints aren't > updated. Not only that, the mpc file isn't getting updated as well. I think > I am making some mistake with this line : mpc = get_mpc(om) because om is > fine. What am I missing here? Or should I take another approach? > Thank you so much for your time Sir. > > Regards > Viswanath Hariharan > > On Thu, Oct 5, 2017 at 10:27 AM, Ray Zimmerman <r...@cornell.edu> wrote: > >> You only need to use the add_constraints() function if you are using >> Callback Functions as described in Section 7.2 as opposed to Direct >> Specification as described in Section 7.1 of the User’s Manual >> <http://www.pserc.cornell.edu/matpower/docs/MATPOWER-manual-6.0.pdf>. >> >> You convergence failure my just imply that your variable bounds are tight >> enough that there is no feasible solution. Try relaxing the limits and see >> if it converges. >> >> Vm, Pg and Qg all have limits specified directly in the bus and gen >> matrices. Vm is bounded by the VMIN and VMAX columns in the bus matrix. >> Pg and Qg are bounded by the PMIN, PMAX and QMIN, QMAX columns of the gen >> matrix, respectively. Va is not normally constrained (except at the >> reference bus), so the bus matrix doesn’t contain bounds for it. In that >> case, you have to use the standard linear constraints of equation (6.25) to >> impose bounds. >> >> At a lower lever, variable bounds are defined when variables are added >> via the add_vars() method. The Va, Vm, Pg and Qg variables are added >> automatically (with their bounds) in opf_setup(), so you can’t really >> modify them there. But for any variables you add later, you supply the >> bounds when you call add_vars(). >> >> Ray >> >> >> >> On Oct 4, 2017, at 3:52 PM, Viswanath Hariharan <vhari...@buffalo.edu> >> wrote: >> >> So I do not need to use the add_constraints function? Because when I used >> the code you mentioned and then runopf(mpc), convergence fails. In general, >> how to add box constraints for Va,Vm, Pg and Qg of xr (r = runopf(mpc); >> r.raw.xr). >> If I have to use the add_constraints function, how do I do that? >> >> Regards >> Viswanath Hariharan >> >> On Wed, Sep 27, 2017 at 1:39 PM, Ray Zimmerman <r...@cornell.edu> wrote: >> >>> Voltage magnitude constraints are already included. Simply set the VMIN >>> and VMAX columns in the bus matrix to the desired values. >>> >>> For voltage angles, simply define the A, l and u corresponding to >>> equation (6.25) in the User’s Manual >>> <http://www.pserc.cornell.edu/matpower/docs/MATPOWER-manual-6.0.pdf>. >>> Something like the following … >>> >>> mpc = loadcase(<your-case-name>); >>> nb = size(mpc.bus, 1); >>> ng = size(mpc.gen, 1); >>> mpc.A = sparse(1:nb, 1:nb, 1, nb >>> <https://maps.google.com/?q=1:nb,+1,+nb&entry=gmail&source=g>, >>> 2*nb+2*ng); >>> mpc.u = 0.26 * ones(nb, 1); >>> mpc.u = -mpc.l; >>> >>> — Ray >>> >>> >>> >>> On Sep 23, 2017, at 5:25 PM, Viswanath Hariharan <vhari...@buffalo.edu> >>> wrote: >>> >>> Hello Sir >>> >>> I want to add voltage magnitude and voltage angle constraints to the >>> opf solver but I am not able to figure out how to. >>> >>> Voltage magnitude constraints ---> 0.9 <= Vm <= 1.1 >>> Voltage angle constraints ---> - 0.26 <= Va <= 0.26 (Unrelaxed form) >>> >>> I read a post where you mentioned to add these constraints to the case >>> struct which looked pretty simple in the post but I didn't know how to >>> add >>> that to the case struct. >>> I was wondering if you can guide me on how to do it. Hoping to hear from >>> you soon. >>> >>> Regards >>> Viswanath Hariharan >>> Graduate Research Assistant >>> Electrical Engineering >>> University at Buffalo >>> >>> >>> >> >> > >