ECE 558 - Spring 2021

Power System Reliability


Final Project - Due 10:30 AM, Wednesday, 12 May 2021

The final project must extend the frequency and duration techniques that we have covered in the course. One possibility is to apply the techniques to a small, but realistic power system model. As an example, Section 6.7 contains a 5-bus system with the potential of adding two new lines for reliability.

Taking the 5-bus example, you would need to create the reliability indices in Section 6.7 of the textbook. The input data is given in Tables 6.17 (Transmission line data) and 6.18 (Generation and load data). The results of the frequency and duration techniques are presented in Table 6.19 (Load point failure probability and frequency). Then, the reliability indices are shown in Tables 6.20 (Annualized load point indices -- base case), 6.21 (Annualized system indices) and 6.22 (Comparison of basic annualized system indices). However, our assumptions will be slightly different than the assumptions used in the text book to make the project simpler. In addition, you will be asked to present slightly simpler tables than 6.19-6.22.

For the Final Project, you need to submit code (MATLAB, C, or other), spreadsheets (e.g., Excel) or other documentation supporting your results. You also need to provide a report that describes the entire process used to determine the reliability indices. You should consider the Final Project as a report to management which contains a recommendation on the best alternative for improving reliability. Of course, your results should be used to support your recommendation.

Section 6.7 and the 5-bus system are an example of the detail that is required in the Final Project. However, you may propose another study of similar scope.

Final Project Detailed Instructions

The Final Project focuses on the 5 bus system in Section 6.7. However, sections 6.4 - 6.6 contain useful examples based on a simpler 3 bus system.

Note: The input data for the 5 bus system is provided in a text file linked to the ECE 558 home page. The data provided in the text book is partially incorrect, so you must use the t5_data.txt file on the ECE 558 home page. Do NOT use the generation nor transmission unavailability numbers given in the text book.

To simplify the distribution factor DC power flow analysis, both branch 7 and branch 8 are included in the base case. You will derive the reliability indices for the 5 bus system with all 8 branches in service. The PTDF and LODF matrices with all 8 branches are named "PTDF_all" and "LODF_all".

Assumptions

  1. Transmission outages are limited to single branches
  2. Generation outages are limited to combinations at a single generator bus that have at least a 10^(-6) probability of occurring
  3. Branches 7 and 8 are included in the base case
  4. Annualized indices are required at a peak load of 155 MW
  5. DC power flow based distribution factors are sufficient to model network behavior
  6. Bus loads have been inflated to include network losses
  7. Branch MW limits have been reduced to include "less than unity" power factor of branch flows

Frequency and Duration Based Generator Capacity Availability Tables

The first step in the project is the creation of the frequency and duration based capacity availability tables for each generator bus. Each table should include one row for each generator bus capacity availability state in the reduced generator model that has a probability of at least 10^(-6). In other words, create the reduced generator model, then apply the cutoff threshold to the reduced model states. The rows should be ordered based on the Capacity Available column (descending order). For the Bus 2 table, list the number of units out of service as an ordered triple (# 5 MW, # 15 MW, # 20 MW). The columns should be in the following order:
  1. Generator bus state number (sequential numbering)
  2. List of units out-of-service (e.g., "3,0,0 || 0,1,0" for the 15 MW outage)
  3. Capacity Available
  4. Probability of the state
  5. Positive departure rate from the state
  6. Negative departure rate from the state
  7. Frequency of the state (occ/yr)
The next step in the project is the creation of the frequency and duration based capacity availability table for the generation subsystem. The table should include one row for each generation capacity availability state that has a probability of at least 5*10^(-7). This table is NOT a reduced table, since the capacity available at each bus is physically located at different buses. The columns should be in the following order:
  1. Generation state number (sequential numbering)
  2. Capacity Available at Gen Bus 1
  3. Capacity Available at Gen Bus 2
  4. Probability of the state
  5. Positive departure rate from the state
  6. Negative departure rate from the state
  7. Frequency of the state (occ/yr)

Frequency and Duration Based Transmission Capacity Availability Table

The next step in the project is the creation of the frequency and duration based availability table for the transmission subsystem. The table should include one row for each transmission availability state up to single outages. The columns should be in the following order:
  1. Transmission state number (sequential numbering)
  2. Name of branch out-of-service (single outage only)
  3. Probability of the state
  4. Positive departure rate from the state
  5. Negative departure rate from the state
  6. Frequency of the state (occ/yr)
For the frequency and duration tables, be sure to include the assumptions in the table. For example, the negative departure rate from a single branch outage state is zero, since we are assuming that double branch outages cannot occur.

Frequency and Duration Based Composite Generation and Transmission Availability Table

The next step in the project is the creation of the frequency and duration based availability table for the composite generation and transmission system. The table should include one row for each composite system availability state. This table is NOT a reduced table. The columns should be in the following order:
  1. Composite state number (sequential numbering)
  2. Transmission equipment out-of-service (e.g., 0, L1, L2, etc.)
  3. Generator Bus 1 Capacity Available
  4. Generator Bus 2 Capacity Available
  5. Probability of the state
  6. Positive departure rate from the state
  7. Negative departure rate from the state
  8. Frequency of the state (occ/yr)
  9. Dkj (duration of state in hours)
Note: the composite states must appear in a specific order with the transmission outages in the outermost loop, the Gen Bus 1 outages in the middle loop, and the Gen Bus 2 outages in the innermost loop. For example, the first rows of the composite table will have the following values (Note: table is incomplete -- you need to fill-in all values):
StateTrOutG1CAG2CA
1080130
2080125
.080.
.080.
.060130
.060125
.060.
.060.
.0..
.0..
.L180130
.L180125
.L180.
.L180.
Be sure to include the sequential numbers in column 1 so that later tables can refer to a composite state number (column 1 of the above table) and not need to include columns 2-4.

Frequency and Duration Based Load Point Indices

For the Final Project, you will build a composite generation and transmission model to examine the reliability at each load bus. Table 6.15 illustrates the type of analysis that will be done at each load bus in the 5 bus system. Each load point reliability indices table should include:
  1. Composite state number "j" (same sequential numbering as previous table)
  2. Capacity available at the load bus (from PTDF, LODF and generator dispatch)
  3. Pkj (probability of inadequacy - annualized at peak load: 0 or 1)
  4. Lkj (MW, amount of load curtailed at bus k in state j)
  5. ELC (MW, column sum is the expected load curtailed at bus k)
  6. NLC (occ, column sum is the number of load curtailments at bus k)
  7. EENS (MWh, column sum is the expected energy not served at bus k)
  8. EDLC (hr, column sum is the expected duration of load curtailments at bus k)
Note: to save paper, please eliminate all rows in the above table that have Pkj = 0.

Note: Capacity Available at Load Bus should be in the range [0, bus peak load].

DC Power Flow Based Distribution Factors

Recall, the PTDF and LODF matrices can be used to determine the branch MW flows:

normal case, all transmission i/s
pre_flow = PTDF(:,:)*Pinj

post-contingency, branch "m" o/s
post_flow = pre_flow + LODF(:,m)*pre_flow(m)

Be sure to create a Pinj vector that has a column sum of zero. In other words, the total generation must equal the total load.

Power Flow Constraints and Pkj

The PTDF and LODF matrices will provide branch flows, given a bus injection vector and possible branch outage. The next step is to consider the power flow constraints when determining Pkj={0,1}.

Total generation and total load must balance
sum_k {PGk} = sum_k {PDk}

Branch flow must be within branch limits
| flow | <= MWmax, or
-MWmax <= flow <= MWmax

Generator output must be within capacity availability limits
0 <= PGk <= CapAvail_k

Load participation/curtailment policy for final project

In the case of a power system with multiple loads, we need to define service priorities for each load. For the 5 bus system in the final project, we will use the following policy for load curtailments:

If there is insufficient generation or transmission capacity such that not all loads can be served at their peak power demand, then all loads will be curtailed by a single factor for the entire system. This curtailment factor should be applied as follows:

PDk = (1-CF)*PDk_peak

PDk is the available MW power demand at bus "k"
CF is the curtailment factor: 0<=CF<=1
PDk_peak is the peak MW power demand at bus "k"

Therefore, if any load bus cannot be supplied at its peak power demand, then no load bus will be supplied at its peak power demand. Each load bus will be curtailed by an amount equal to CF times its peak power demand.

In the text (p. 205), there is a series of numbers that are called the load probability steps, but they are not explained. You can think of the steps (each is 10%) as the (1-CF) term above. In other words, start with the loads at 1.0*PDi_peak and work your way down to 0.0*PDi_peak.

If the peak load can be supplied, while satisfying the Pgen and branch MW limits, then there is no curtailment and the next composite state can be evaluated. However, if you cannot supply the peak load, then stop and drop down one load step. Since we have assumed annualized indices (i.e., 100% load factor at the peak load value), the curtailment time percentage will be 100%. To find the amount of load curtailment, continue dropping down through the load steps until you find one that can be supplied while satisfying the Pgen and branch MW limits. Add the outage duration and MW curtailment values to the associated reliability indices.

In practice, we would not want to follow this policy, since this policy spreads the curtailment to all load buses, even when most load bus demands could be met. However, this policy will make the analysis simpler for the final project.

Generator Dispatch to Minimize Load Curtailment

There are two basic methods for determining a generator dispatch that meets the branch loading constraints. The simple approach uses a single parameter alpha to weight the maximum MW output of generator 1 and (1-alpha) to weight the maximum output of generator 2. The more sophisticated approach is to use "linprog" in MATLAB. It's your choice, but you must make it clear in your final project report which method you chose.

A simple method to dispatch the generators based on a single parameter alpha would work as follows for each load step:

  1. Assume all load (Ltotal=sum_k {PDk}) is served by generator bus 1. Compute the branch flows and store them in vector "flow1".
  2. Assume all load (Ltotal=sum_k {PDk}) is served by generator bus 2. Compute the branch flows and store them in vector "flow2".
  3. Since the distribution factors are based on linear systems, you can use the principle of superposition to find some value of "alpha" (if one exists) such that:

    -MWmax <= alpha*flow1 + (1-alpha)*flow2 <= MWmax
    alpha*Ltotal <= CapAvail1 {Note: CapAvail1 <= 80 MW installed}
    (1-alpha)*Ltotal <= CapAvail2 {Note: CapAvail2 <= 130 MW installed}
The question is whether or not you can find a value of alpha such that the above inequalities hold. There are three ways to find alpha:
  1. trial and error (Note: 0<=alpha<=1, but tighter bounds can be derived)
  2. compute bounds for each constraint independently and find the intersection using gen_dispatch.m
  3. MATLAB "linprog" (Note: any value of alpha that satisfies the inequalities would work, so you can either minimize or maximize alpha)

Note that the branches all have the same limit of 71 MWs. Also, remember that if any branch flow exceeds its limit, then we are considering that as a "failed load step", which requires you to drop the loads to a lower load step. Ultimately, either you will find a dispatch that meets the branch limits and serves some load, or you need to show that it is impossible to serve any load.

Deliverables

All final project reports and code are due by the deadline given above. Main campus students must submit a hard copy report to SH 224. Everyone must submit an electronic SafeAssignment report via Blackboard. Finally, you need to submit a zip archive (all code, spreadsheets, etc. in a single ZIP file with your name in the zip archive file name) via the Blackboard "Final Project (ZIP archive)" Assignment link.

Your report must include an overview/introduction that describes the problem that needs to be solved, along with any assumptions, constraints and your choice of criteria for evaluating the relative merits of your final recommendation for improving the reliability of the 5-bus system.

You also need to provide a process flowchart or a list of procedural steps that describe your analytical approach to the problem. In addition, you need to present the relevant equations/algorithms that you have implemented. Next, your report must contain a description of your code, so that we can find any errors that might affect your results.

The tables mentioned earlier in this document are required. Please try to limit the amount of paper that is necessary to display your tables. If there are columns of data that appear in multiple tables, then combine the tables to save paper. Note that Tables 6.19 - 6.22, from the text book, are not required. Following the tables, you need to discuss the results and point out any important or surprising findings. Finally, provide your recommendations for improving system reliability.

Extra Credit (10 pts) - Contingency Case

The contingency case has only 7 branches, since branch 7 is assumed to be out-of-service for maintenance. In other words, the analysis would be repeated as though branch 7 never existed. The post-contingency PTDF and LODF matrices are named "PTDF_7os" and "LODF_7os".

Repeat the reliability analysis for the contingency case, including a brief overview/introduction, a summary table of the inputs that have changed relative to the normal case, an updated transmission capacity availability table, a summary table of the reliability indices, analysis of the results, a comparison to the "normal case" results, and a description of how to run the contingency case using your code. Neither the detailed composite table nor the load point tables are required, but you only get credit if we can successfully run the contingency case. If your code is too complicated to run, or does not run properly, then you will not get any extra credit.


Updated 20 Apr 2021