Actually, I got the constraints added and was able to modify it without problem through Direct Specification which I was unable to do in the beginning. Guess I was doing something wrong which I didn't realize for quite a while. Thank you, sir and I guess I haven't understood how the callback functions work. I will work on understanding the existing examples before implementing my own.
Regards Viswanath On Mon, Oct 16, 2017 at 1:20 PM, Ray Zimmerman <r...@cornell.edu> wrote: > I don’t understand why you are calling toggle_myconstraints() more than > once. When used as intended, calling toggle_myconstraints() would > register your callback functions. Then when you run the OPF, the callback > functions will be called at the appropriate point in the execution to > modify the formulation (e.g. add your new constraints). You only need to > re-run toggle_myconstraints() if you load a new MATPOWER case that you > want to run with your constraints enabled. > > It seems you are still misunderstanding how the callback functions work. > Have you understood the existing examples (e.g. toggle_reserves(), > toggle_iflims(), etc.) before attempting to implement your own? > > Ray > > > On Oct 13, 2017, at 11:35 AM, Viswanath Hariharan <vhari...@buffalo.edu> > wrote: > > I tried getting out of the problem by assigning allow_multiple = 1 for > add_userfcn. But I couldn't get past this error: > Error using opt_model/add_constraints (line 87) > Error detected on worker 4. > @opt_model/add_constraints: linear constraint set named 'Va' already exists > > Could you guide me as to how I can overwrite this too? > Thank you sir > > Regards > Viswanath > > On Fri, Oct 13, 2017 at 11:22 AM, Viswanath Hariharan < > vhari...@buffalo.edu> wrote: > >> Sir >> So I used the toggle_myconstraints method you had suggested to add >> Voltage angle constraints to the problem. After getting the solution, I >> update the constraints set and call toggle_myconstraints again. But this >> time, I get an error : >> Caused by: >> Error using add_userfcn (line 119) >> add_userfcn: the function 'userfcn_myconstraints_formulation' has >> already been added >> >> How do I avoid this problem? Is there a way to overwrite what's already >> written in both add_userfcn and the linear constraints section in om (in >> this case 'Va')? >> >> Regards >> Viswanath >> >> On Fri, Oct 13, 2017 at 10:04 AM, Viswanath Hariharan < >> vhari...@buffalo.edu> wrote: >> >>> Thank you for your help sir. I think I was doing something wrong. It >>> works alright now. >>> >>> Regards >>> Viswanath >>> >>> On Oct 12, 2017 10:03 AM, "Ray Zimmerman" <r...@cornell.edu> wrote: >>> >>>> Are you saying that your solution includes voltage angles whose >>>> absolute value is greater than 0.26 radians or 14.9 degrees? >>>> >>>> Ray >>>> >>>> >>>> On Oct 11, 2017, at 8:52 PM, Viswanath Hariharan <vhari...@buffalo.edu> >>>> wrote: >>>> >>>> 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 >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>> >>>> >> > >