Suppose the nominal dispatch for a generator, from the initial power flow 
solution, is P0. I’m thinking of a cost function like …

cost(P) =  /   –P + P0, for P <= P0
           \    P - P0, for P > P0

… which you can implement with the following row in gencost …

1  0  0  3  0  P0  P0  0  2*P0 P0

The slope of the portion for P <= P0 is –1, and the slope for the portion for P 
> P0 is +1.

This is equivalent to incurring a cost of $1/MW for every MW deviation from the 
nominal P0 MW. In other words, the cost is minimized by sticking with the 
original dispatch.

   Ray


> On Jan 13, 2016, at 6:37 PM, Bijay Hughes <[email protected]> wrote:
> 
> 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] 
> <mailto:[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] 
>> <mailto:[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] 
>> <mailto:[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] 
>>> <mailto:[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
>> 
>> 
> 
> 

Reply via email to