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
- Download the 30 bus final case for MATPOWER
(right click: Save As...).
- 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.
- 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
- 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.
- 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.
- Discussion and comparison of the two base case optimal power flow
simulations.
II. A. Contingency Case Screening
- 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).
- 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.
- 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).
- 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.
- 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
- Description (step-by-step procedure, flowchart, etc.) of your
screening routines.
- MATLAB code (with comments) for your screening routines.
- Ranking list of branch outage contingencies with respect to MVA
violations.
- Ranking list of branch outage contingencies with respect to V
violations.
- Ranking list of generator unit outage contingencies with respect to
MVA violations.
- Ranking list of generator unit outage contingencies with respect to V
violations.
- Justification for your choice of the "top four" contingencies to be
included in the security-constrained OPF simulations.
- How does the pre-contingency state affect your contingency screening
results?
- 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)
- 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...).
- The following MATPOWER files should be examined as potential files to
copy and rename (and possibly modify) for your SCOPF application:
- runopf.m
- opf.m
- opf_setup.m
- opf_execute.m
- fmincopf_solver.m (Note: ver 7.1 uses nlpopf_solver.m and mpoption_info_fmincon.m)
- opf_costfcn.m
- totcost.m
- polycost.m
- opf_consfcn.m
- 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);
- 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)
- MATLAB code (with comments) that implements your scopf. Include all
modified MATPOWER routines, as well as any other routines that you
created.
- 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.
- 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.
- 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.
- 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)
- 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)
- MATLAB code (with comments) that implements your scopf. Include all
modified MATPOWER routines, as well as any other routines that you
created.
- 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.
- 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.
- 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.
- Do you think you could improve the security of the system if you
included additional post-contingency constraints? Explain.
- 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