Hi Ray, This was very, very useful and I am working on implementing load2disp on my load-shedding model. I understand you now. Thanks so much.
However, I have one question about a part of your explanation. I quite did not understand what you mean by this: "then assign a piecewise linear cost to each generator with a negative slope when dispatched below the nominal (original) dispatch value and a positive slope above the nominal value (where these slopes are significantly smaller than the value of the loads)" How do you assign a piecewise linear cost to each generator with a negative slope? What is a negative slope? I really appreciate you helping me. Best, Bijay On Wed, Jan 13, 2016 at 9:10 PM, Ray Zimmerman <[email protected]> wrote: > Hi Bijay, > > I still think you are describing a particular version of an optimal power > flow problem. If I understand you correctly, you have an initial power flow > solution which violates some branch flow limits. Now you want to curtail > some loads optimally to relieve the overloads on the lines. Curtailing > loads also means curtailing generation in order to maintain generation/load > balance. What you haven’t specified is what kinds of load curtailment > patterns and generator redispatch options are permissible and how will you > rank them. > > The most straightforward way I know to specify these things is in the form > of an objective function and constraints for an OPF. For example, let’s say > you want to minimize the total load curtailment (in MW) then also minimize > the total deviation (in MW) from the initial generator dispatch schedule. > You can accomplish this by assigning a very high value to the dispatchable > loads (as load2disp > <http://www.pserc.cornell.edu//matpower/docs/ref/matpower5.1/load2disp.html> > does > by default), then assign a piecewise linear cost to each generator with a > negative slope when dispatched below the nominal (original) dispatch value > and a positive slope above the nominal value (where these slopes are > significantly smaller than the value of the loads). The OPF already > contains the branch flow constraints, so all you need to do is run an OPF > with these costs and the solution will be a DC power flow solution that > satisfies the criteria you specified. If desired, you could also reduce > PMAX for each of the generators to the nominal dispatch to enforce only > downward redispatches, for example. > > In any case, it seems you want to re-dispatch a DC power flow according to > some criteria in order to satisfy flow (and possibly other) constraints. > This is precisely what an OPF is. > > Best, > > Ray > > > > On Jan 12, 2016, at 12:44 PM, Bijay Hughes <[email protected]> > wrote: > > Hi Ray, > > Thank you for your kind response. I really admire you helping all us with > our problems. > > Actually no, I don't want to run OPF. I just want to run normal power flow > rundcpf. I am aware of load2disp function. But I want to create my own > load-shedding protocol. > > I want to curtail load in such a way that the power flowing through > branches doesn't exceed its capacity, while at the same time curtail not > too much such that the buses can partially fulfill their demand. Like I > said, it is an optimization problem. > > I have the branch capacities for each of the branches. The power flowing > through these branches must be less than these capacities - this is the > constraint. So for a given branch capacity, I need to solve for the voltage > angles, while at the same time maximize the objective function, which is > the sum of loads. This will give me how much load was required to curtail > to limit the power flow in the branches. My question is, how to solve for > these voltage angles for a given power flowing in it? Is there a way to do > it in the MATPOWER code? > > Best and thanking you, > > Bijay > > On Tue, Jan 12, 2016 at 7:03 PM, Ray Zimmerman <[email protected]> wrote: > >> It seems to me that you simply want to run an OPF (seems like you are >> using a DC power flow model, so that would be rundcopf >> <http://www.pserc.cornell.edu//matpower/docs/ref/matpower5.1/rundcopf.html>) >> with your loads defined as dispatchable (curtailable) loads. See section >> 6.4.2 in the MATPOWER User’s Manual >> <http://www.pserc.cornell.edu/matpower/docs/MATPOWER-manual-5.1.pdf>. >> You can use the load2disp >> <http://www.pserc.cornell.edu//matpower/docs/ref/matpower5.1/load2disp.html> >> function >> to convert the loads. If the value of the loads is higher than the cost of >> generation, then all load will be served unless load-shedding is required >> to maintain feasibility. The OPF automatically enforces the line flow >> limits. >> >> Ray >> >> >> On Jan 11, 2016, at 5:56 PM, Bijay Hughes <[email protected]> >> wrote: >> >> Hi Ray, >> >> I have a scenario where a line fails, and this initially failed line >> triggers more failures. This continues until the system experiences a >> blackout. My plan is to prevent blackout by performing a load-shedding. I >> have load-shedding protocol as an optimization problem. >> >> Objective Function: >> >> Maximize loads in the bus >> >> Constraint: >> >> Power flowing in the branches should be always less than the capacity of >> lines. >> >> My question is how to control the power flow in the lines. I have the >> capacity of lines. I guess I need to modify the powerflow code runpf.m or >> makeBdc.m? But the question is which part? Given the capacity of lines, I >> have to solve for the optimum voltage angles such that the load at the >> buses is maximized. This will tell me how much load was needed to curtail >> to minimize the cascading failure. The relation for voltage angles and >> power flow is given by: Pf = BF * Va + PFINJ in makeBdc.m file. >> >> Any help would be greatly appreciated, Ray. I look forward to your >> replies. >> >> Best, >> >> Bijay >> >> >> > >
