Commit db0a3c10 authored by sp2668's avatar sp2668

minor

parent 024a4e96
No preview for this file type
......@@ -124,15 +124,15 @@ In the preceding tutorials we have seen that the integration of renewable energy
\item We will now turn to clustering the European power network using \textit{Sklearn}. Sklearn is a library which allows the clustering of data. For the sake of exposition, we will cluster the network simply by grouping buses according to their geographical locations. There are, of course, more elaborate approaches which, however, exceed the scope of the tutorial.
\begin{enumerate}[(i)]
\item Perform various clustering configurations of the network by altering the clustering algorithms and the number of clusters k. Find the available clustering algorithms at \url{http://scikit-learn.org/stable/modules/clustering.html}.
\item Use the \texttt{plot\_clusters} function of the package \texttt{tutorial6utilities.py} to observe the outcome of the clustering.
\item Use the \texttt{plot\_clusters} function of the package \texttt{tutorial.py} to observe the outcome of the clustering.
\item Are the buses adequately clustered? Which algorithm is giving the best outcome? What are the limits of using geographically based data clustering on the electrical grid? Comment on your findings!
\end{enumerate}
\item We will now look at the interaction between the clustering configuration and minimum installed capacity in the network. The network file \texttt{network\_data/elec\_s.nc} also provides solar and wind energy hourly profile per bus for the year 2013 as well as an hourly load profile per bus. The run-of-river hydropower is also fixed.
We will make use of the functions \texttt{tutorial6utilities.find\_kmeans\_busmap(.)} and \texttt{pypsa.networkclustering.get\_clustering\_from\_busmap(.)} to cluster the European power grid according to the K-Means algorithm, with weights corresponding to the maximum load at the respective bus. These functions aggregate the bus data (i.e.\ load, renewable energy potential, etc.) to the cluster nodes and group lines from the initial network to form the edges of the clustered graph.
We will make use of the functions \texttt{tutorial.find\_kmeans\_busmap} and \texttt{pypsa.} \texttt{networkclustering.get\_clustering\_from\_busmap} to cluster the European power grid according to the K-Means algorithm, with weights corresponding to the maximum load at the respective bus. These functions aggregate the bus data (i.e.\ load, renewable energy potential, etc.) to the cluster nodes and group lines from the initial network to form the edges of the clustered graph.
The clustered network is missing some installed capacities for renewables at each bus to be able to run a linear optimal power flow (LOPF). In order to set a capacity of solar, onshore wind and\/or offshore wind to each bus in a simple way, we use the function \texttt{tutorial6utilities.P\_nom\_re(network)} to attribute an installed capacity proportional to the load at each bus. The proportionality coefficients for solar \texttt{w\_s}, onshore wind \texttt{w\_on} and offshore wind \texttt{w\_of} could be changed independently. Keep in might, this is just for illustrative purposes probably not very accurate in reality.
The clustered network is missing some installed capacities for renewables at each bus to be able to run a linear optimal power flow (LOPF). In order to set a capacity of solar, onshore wind and\/or offshore wind to each bus in a simple way, we use the function \texttt{tutorial.P\_nom\_re(network)} to attribute an installed capacity proportional to the load at each bus. The proportionality coefficients for solar \texttt{w\_s}, onshore wind \texttt{w\_on} and offshore wind \texttt{w\_of} could be changed independently. Keep in might, this is just for illustrative purposes probably not very accurate in reality.
\begin{enumerate}[(i)]
\item For a graph with a small number of clusters (e.g.\ between 10 and 25), determine minimum proportionality coefficients \texttt{w\_s}, \texttt{w\_on} and \texttt{w\_of} to have a feasible solution for the LOPF at a specific day and hour.
......
This diff is collapsed.
......@@ -214,7 +214,7 @@ def plot_line_loading_bus_status(network):
line_widths=pd.concat(dict(Line=network.lines['s_nom']/500,Link=network.links['p_nom']/500)))
Z = [[0,0],[max(abs(loading)),0]]
CS3 = plt.contourf(Z, cmap=plt.cm.jet)
plt.colorbar(fraction=0.01, pad=0.06)
plt.colorbar(fraction=0.01, pad=0.06, label='Residual Generation divided by Load at Bus')
Z2 = [[min(bus_color),0],[max(bus_color),0]]
CS4 = plt.contourf(Z2, cmap=plt.cm.jet)
plt.colorbar(fraction=0.01, pad=0.01)
plt.colorbar(fraction=0.01, pad=0.01, label='Line loading [pu]')
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment