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 
> <http://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 
> <mailto: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 
>> <mailto: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 
>> <mailto: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 
>>> <mailto: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 
>>> <mailto: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 
>>>> <mailto: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
>>> 
>>> 
>> 
>> 
> 
> 

Reply via email to