ECE 557 - Fall 2024

Fault Tolerant Power Systems


Final Project - Due Dec 3 at 10:30 am


This project requires the use of an optimal power flow program for which you have the source code. You will need to solve a standard power flow (e.g., runpf in MATPOWER), an optimal power flow (e.g., runopf in MATPOWER), and a security-constrained optimal power flow.

MATLAB and MATPOWER are recommended as a platform for building the routines to solve the security-constrained optimal power flow. The project goal is to develop an scopf tool that will incorporate branch outage and generator unit outage contingencies.

To provide a larger feasible region, the generator terminal voltages will be allowed to vary between 0.9 and 1.05 per unit, as given in the two case30final input data files. Since the operating point (voltage magnitudes and angles) and swing generator output are different for each set of constraints (normal case and contingency cases), the only control variables that are common to each set of constraints will be the non-swing real power generator outputs.

I. A. Base Case Simulations

  1. Download the 30 bus final case for MATPOWER (right click: Save As...).
  2. Determine the "minimal MW loss dispatch" for the 30 bus system. The dispatch can be found by modifying the cost coefficients for the generators, i.e., the gencost array in the case30 M-file. You must modify the cost coefficients for all generators, including the swing. The MATPOWER code does not require any modification.
  3. Determine the "minimal cost dispatch" for the 30 bus system. Be sure to restore the cost functions for the generators, including the swing. The dispatch that minimizes the total cost of generation may be different than the "minimal MW loss dispatch".

I. B. Deliverables

  1. MATPOWER output showing the optimal power flow (runopf) output corresponding to the "minimal MW loss dispatch". Be sure to include the fmincon output (Iter, F-count, f(x), max constraint, Step-size, etc.), System Summary, Bus Data, Branch Data, and Voltage Constraints. Also, you must submit a table with your gencost polynomial coefficients.
  2. MATPOWER output showing the optimal power flow (runopf) output corresponding to the "minimal cost dispatch". Be sure to include the System Summary, Bus Data, Branch Data, and Voltage Constraints.
  3. Discussion and comparison of the two base case optimal power flow simulations.

II. A. Contingency Case Screening

  1. Develop a MATLAB screening routine to examine each non-islanding branch outage in the 30 bus system (total of 38 branches). You should estimate all post-contingency voltage magnitudes (total of 30 buses) and all post-contingency MVA branch flows (total of 41 branches).
  2. Rank the branch outage contingencies by MVA and V violation severity. Make a ranking list with respect to MVA overloads and another ranking list with respect to V violations.
  3. Develop a MATLAB screening routine to examine each generator unit outage (except the swing) in the 30 bus system (total of 5 generators). You should estimate all post-contingency voltage magnitudes (total of 30 buses) and all post-contingency MVA branch flows (total of 41 branches).
  4. Rank the generator unit outage contingencies by MVA and V violation severity. Make a ranking list with respect to MVA overloads and another ranking list with respect to V violations.
  5. Choose the four most severe contingencies with respect to violation severity that you would include in a security-constrained OPF simulation. Regardless of the overall ranking, you must include at least the most serious generator outage and the most serious branch outage. The remaining two contingencies should be based on the overall ranking that you have determined.

II. B. Deliverables

  1. Description (step-by-step procedure, flowchart, etc.) of your screening routines.
  2. MATLAB code (with comments) for your screening routines.
  3. Ranking list of branch outage contingencies with respect to MVA violations.
  4. Ranking list of branch outage contingencies with respect to V violations.
  5. Ranking list of generator unit outage contingencies with respect to MVA violations.
  6. Ranking list of generator unit outage contingencies with respect to V violations.
  7. Justification for your choice of the "top four" contingencies to be included in the security-constrained OPF simulations.
  8. How does the pre-contingency state affect your contingency screening results?
  9. Do you think your screening routines have identified the most serious contingencies? Why or why not?

III. A. Security-Constrained Optimal Power Flow (generator outages)

  1. Develop a security-constrained OPF routine (e.g., runscopf) in MATLAB using modified MATPOWER routines. Run your scopf with your top two generator contingencies to determine the "minimal cost dispatch" that satisfies the security constraints (post-contingency branch MVA limits, post-contingency voltage magnitude limits, and post-contingency Pg/Qg limits) as well as the operational constraints (Pg limits, Qg limits, branch MVA limits, voltage magnitude limits). Use the 30 bus contingency data file for MATPOWER (right click: Save As...).
  2. The following MATPOWER files should be examined as potential files to copy and rename (and possibly modify) for your SCOPF application:
  3. Note: In fmincopf_solver.m (MATPOWER 6.0), there is a "bug" related to the Lagrange multiplier for the nonlinear upper limits. This line is about 35 lines from the bottom of the file:
    nl_mu_l = zeros(nlnN, 1);
    %nl_mu_u = [zeros(2*nb, 1); muSf; muSt]; % comment out "bug" and add line below to match one above
    nl_mu_u = zeros(nlnN, 1);
    
  4. The Optimization Toolbox contains the MATLAB "fmincon" function. If you don't have "fmincon", then you can use the PC labs on campus administered by OTS. The Optimization Toolbox is installed on those machines.

III. B. Deliverables (generator outages)

  1. MATLAB code (with comments) that implements your scopf. Include all modified MATPOWER routines, as well as any other routines that you created.
  2. MATPOWER output showing the SCOPF (runscopf) output corresponding to the "minimal cost dispatch". Be sure to include the fmincon output (Iter, F-count, f(x), max constraint, Step-size, etc.), System Summary, Bus Data, Branch Data, and any Constraints.
  3. Does your "minimal cost dispatch" satisfy all security constraints for all 5 generator outages even though you didn't include all the gen contingencies in your scopf? Explain.
  4. Describe how you would test the security of the system with respect to generator outages. Do not waste your time fully testing all 5 contingencies, just describe a procedure that would accurately evaluate the security of the system with respect to all 5 contingencies.
  5. Do you think you could improve the security of the system by modifying your SCOPF? Explain.

IV. A. Security-Constrained Optimal Power Flow (extra credit: all outages)

  1. Develop a security-constrained OPF routine (e.g., runscopf) in MATLAB using modified MATPOWER routines. Run your scopf with your top four contingencies (make sure you have at least one generator contingency and at least one branch contingency in your list of four contingencies) to determine the "minimal cost dispatch" that satisfies the security constraints (post-contingency branch MVA limits, post-contingency voltage magnitude limits, and post-contingency Pg/Qg limits) as well as the operational constraints (Pg limits, Qg limits, branch MVA limits, voltage magnitude limits). Use the 30 bus contingency data file for MATPOWER (right click: Save As...).

IV. B. Deliverables (extra credit: all outages)

  1. MATLAB code (with comments) that implements your scopf. Include all modified MATPOWER routines, as well as any other routines that you created.
  2. MATPOWER output showing the SCOPF (runscopf) output corresponding to the "minimal cost dispatch". Be sure to include the fmincon output (Iter, F-count, f(x), max constraint, Step-size, etc.), System Summary, Bus Data, Branch Data, and any Constraints.
  3. Does your "minimal cost dispatch" satisfy all security constraints for all 5 generator outages and all 38 non-islanding branch outages even though you didn't include all the contingencies in your scopf? How do you know? Explain.
  4. Describe how you would test the security of the system. Do not waste your time fully testing all 43 contingencies, just describe a procedure that would accurately evaluate the security of the system with respect to all 43 contingencies.
  5. Do you think you could improve the security of the system if you included additional post-contingency constraints? Explain.
  6. Do you think you could improve the security of the system if you did not include additional post-contingency constraints? Explain.


Updated 22 Oct 2024