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
>>
>>
>
>