diff git a/tutorial2/sheet02.pdf b/tutorial2/sheet02.pdf
index e738811ca5e8c7e6b18998b65a7465fbf0e76ddc..7c5262fe9c45f874fda6aefe8c30c9fe9a5e584d 100644
Binary files a/tutorial2/sheet02.pdf and b/tutorial2/sheet02.pdf differ
diff git a/tutorial2/sheet02.tex b/tutorial2/sheet02.tex
index fc9621d57f77c8331d63e3c3d47b1d1e51d51253..057099b041d466ad835e23cc85230896281051bc 100644
 a/tutorial2/sheet02.tex
+++ b/tutorial2/sheet02.tex
@@ 124,7 +124,7 @@ Consider the simple network shown ins Figure \ref{fig:network}. Calculate in Pyt
If you map the nodes to countries like \texttt{0=DK, 1=DE, 2=CH, 3=IT, 4=AT,5=CZ} the network in Figure \ref{fig:network} represents a small part of the European electricity network (albeit very simplified). On the course homepage\footnote{\url{https://nworbmot.org/courses/esm2018/}}, you can find the \textit{power imbalance} time series for the six countries for January 2017 in hourly MW in the file \texttt{imbalance.csv}. They have been derived from physical flows as published by ENTSOE.\footnote{\url{https://transparency.entsoe.eu/transmissiondomain/physicalFlow/show}}\\
+If you map the nodes to countries like \texttt{0=DK, 1=DE, 2=CH, 3=IT, 4=AT,5=CZ} the network in Figure \ref{fig:network} represents a small part of the European electricity network (albeit very simplified). You can find the \textit{power imbalance} time series for the six countries for January 2017 in hourly MW in the file \texttt{imbalance.csv}. They have been derived from physical flows as published by ENTSOE.\footnote{\url{https://transparency.entsoe.eu/transmissiondomain/physicalFlow/show}}\\
The linear power flow is given by
\begin{equation}
diff git a/tutorial3/sheet03.pdf b/tutorial3/sheet03.pdf
index e87a1d1b0b0fb0e5ab757d0d5da2c012a489ff2f..287cd41714ff619cdc615ef87712c1eaa0beb721 100644
Binary files a/tutorial3/sheet03.pdf and b/tutorial3/sheet03.pdf differ
diff git a/tutorial3/sheet03.tex b/tutorial3/sheet03.tex
index 6b647993e0c2ef6b6f9608566db460b4cef7e8c7..1eb011c6fb46a3df58d145ce0f39409d88791a79 100644
 a/tutorial3/sheet03.tex
+++ b/tutorial3/sheet03.tex
@@ 145,7 +145,7 @@ For now, assume the stores are lossless. Losses will be considered in III.2.
\item How much wind capacity $G_{N,w}$ must be installed in the North and solar capacity $G_{S,s}$ in the South?
% (b)
 \item What is the amount of store and dispatch power capacity $G_{s,store}=\max(g_s(t))$ and $G_{s,dispatch}= \max g_s(t)$ the storages must have in the North and in the South?
+ \item What is the amount of store and dispatch power capacity $G_{s,store}=\max(g_s(t))$ and $G_{s,dispatch}= \max g_s(t)$ the storage units must have in the North and in the South?
% (c)
\item What is the amount of energy capacity one needs in the North and in the South?
@@ 155,7 +155,7 @@ For now, assume the stores are lossless. Losses will be considered in III.2.
\end{equation*}
% (d)
 \item Should they choose hydrogen or battery storages? And how much would it cost them with the prices in Table 1? Is the South or the North paying more for their energy?
+ \item Should they choose hydrogen or battery storage? And how much would it cost them with the prices in Table 1? Is the South or the North paying more for their energy?
\item What do you imagine would change if you considered the storage losses given in Table 1 in your results (a)(d)? Support your statement with a graphical illustration.
@@ 190,10 +190,10 @@ Python for Power System Analysis (PyPSA) is a free software toolbox for optimisi
\begin{enumerate}[(a)]
\item Build a network in PyPSA with the two buses North and South and attach the load at each bus and attach the wind and solar generators with availability according to $G_{N,w}(t) = Cf_w(1+A_w\sin \omega_w t)$ and $G_{S,s}(t) = Cf_s(1+A_s\sin \omega_s t)$ for a year (you have to call \texttt{set\_snapshots} for the year) and with \texttt{p\_nom\_extendable} set to True. As help you should have a look at the minimal LOPF example\footnote{\url{https://www.pypsa.org/examples/minimal_example_lopf.html}}, understand what the components documentation\footnote{\url{https://pypsa.org/doc/components.html}} of PyPSA gives you and that you can find the underlying objective function and constraints in the LOPF documentation\footnote{\url{https://pypsa.org/doc/optimal_power_flow.html\#linearoptimalpowerflow}}.
 \item Attach extendable storages at the North and the South! The storages have to be modelled as an \texttt{H2bus} (a bus with \texttt{carrier='H2'}) linked to the \texttt{ACbus} North with a \texttt{Link} where \texttt{p\_nom\_extendable=True} with the \texttt{capital\_cost} of the power capacity and an also extendable \texttt{Store} with the \texttt{capital\_cost} of the energy capacity, for instance. The losses can be set on the links as \texttt{efficiency}.
+ \item Attach extendable storage units at the North and the South! The storage units have to be modelled as a \texttt{H2bus} (a bus with \texttt{carrier='H2'}) linked to the \texttt{ACbus} North with a \texttt{Link} where \texttt{p\_nom\_extendable=True} with the \texttt{capital\_cost} of the power capacity and an also extendable \texttt{Store} with the \texttt{capital\_cost} of the energy capacity, for instance. The losses can be set on the links as \texttt{efficiency}.
\item Run an investment optimization by calling the \texttt{lopf} function.
\item How do your results \texttt{objective} and \texttt{{generators,stores,links}.p\_nom\_opt} compare with the results of III.1(d)?
\item Now lift the restriction against transmission and allow North and South to bridge their 500 km separation with a transmission line. How does the cost optimal technology mix change compared to III.1(f)?
 \item Replace the approximated availability timeseries of the wind and the solar generators with the ones from \texttt{availability.csv} computed from reanalysis weather data available on the course homepage\footnote{\url{https://nworbmot.org/courses/esm2018/}} and rerun the LOPF. Compare the results! Explain the differences by looking at the cumulative variations relative to the mean of the availability timeseries!
+ \item Replace the approximated availability timeseries of the wind and the solar generators with the ones from \texttt{availability.csv} computed from reanalysis weather data and rerun the LOPF. Compare the results! Explain the differences by looking at the cumulative variations relative to the mean of the availability timeseries!
\end{enumerate}
\end{document}
diff git a/tutorial5/sheet05.pdf b/tutorial5/sheet05.pdf
index eb9aca0c868d3e835f79c6346dd101f65ff48047..0f8f5fe88158e44cfb95973d420663431eb119ab 100644
Binary files a/tutorial5/sheet05.pdf and b/tutorial5/sheet05.pdf differ
diff git a/tutorial5/sheet05.tex b/tutorial5/sheet05.tex
index 96b439183068758059683bfa88315f12f084f1b0..135d918305d13beb20484137f3eaa1135433e5ae 100644
 a/tutorial5/sheet05.tex
+++ b/tutorial5/sheet05.tex
@@ 135,7 +135,7 @@ Let us suppose that demand is inelastic. The demandduration curve is given by $
\paragraph{Problem V.3 \normalsize (generator dispatch with SciGRID).}~\\
%=====================================================================
SciGRID\footnote{\url{https://www.scigrid.de/pages/generalinformation.html}} is a project that provides an open source reference model of the European transmission networks. In this tutorial, other than previous simple examples, you will examine the economic dispatch of many generators all over Germany and its effect on the power system. The data files for this example and a populated Jupyter notebook are provided on the course homepage\footnote{\url{https://nworbmot.org/courses/esm2018/}}. The dataset comprises time series for loads and the availability of renewable generation at an hourly resolution for the year 2011. Feel free to choose a day to your liking; we will later discuss your different outcomes in groups. A few days might be of particular interest: \texttt{20110131} was the least windy day of 2011, \texttt{20110205} was a stormy day with lots of wind energy production, \texttt{20110712} the weather 7 years ago was very sunny day, and \texttt{20110906} was a windy and sunny autumn day.
+SciGRID\footnote{\url{https://www.scigrid.de/pages/generalinformation.html}} is a project that provides an open source reference model of the European transmission networks. In this tutorial, other than previous simple examples, you will examine the economic dispatch of many generators all over Germany and its effect on the power system. The data files for this example and a populated Jupyter notebook are provided on the course homepage\footnote{\url{https://nworbmot.org/courses/esm2018/}} or in your tutorial package. The dataset comprises time series for loads and the availability of renewable generation at an hourly resolution for the year 2011. Feel free to choose a day to your liking; we will later discuss your different outcomes in groups. A few days might be of particular interest: \texttt{20110131} was the least windy day of 2011, \texttt{20110205} was a stormy day with lots of wind energy production, \texttt{20110712} the weather 7 years ago was a very sunny day, and \texttt{20110906} was a windy and sunny autumn day.
\begin{enumerate}[(a)]
\item Describe the network as well as its regional and temporal characteristics.
diff git a/tutorial6/sheet06.pdf b/tutorial6/sheet06.pdf
index 982347487c512d59dd7549248defe7738a47e085..b6e2703f266ebb7d5519eaacd57354ffee87bf47 100644
Binary files a/tutorial6/sheet06.pdf and b/tutorial6/sheet06.pdf differ
diff git a/tutorial6/sheet06.tex b/tutorial6/sheet06.tex
index 0483f7f1c23234c0126bb870d0b48d4c6db7e1d7..cb63019133228230e374b90c4a961aeb02a25349 100644
 a/tutorial6/sheet06.tex
+++ b/tutorial6/sheet06.tex
@@ 1,4 +1,4 @@
\documentclass[11pt,a4paper,fleqn]{scrartcl}
+\documentclass[11pt,a4paper,fleqn,halfparskip]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
@@ 97,34 +97,26 @@
\vspace{1em}
%=============== ======================================================
\paragraph{Clustering the European Grid}~\\
+\paragraph{Clustering the European Grid} ~\\
%=====================================================================
As seen previously, the integration of renewable energy is cheaper at a large geographical scale and its variability requires a good temporal resolution. Therefore the computational power needed for the optimization of the whole energy system could be too high for servers or super computer.
\\
\\
In this tutorial, we will first compare 2 basic clustering solutions to reduce the grid model size. Then we will observe the impact of clustering on the lowest installed capacity required to feed the demand.

%=============== ======================================================
\paragraph{Installation.}~\\
%=====================================================================
The jupyter notebook of this tutorial requires to install the library sklearn to perform the clustering
+In this tutorial, we will first compare 2 basic clustering solutions to reduce the grid model size. Then we will observe the impact of clustering on the lowest installed capacity required to feed the demand.
%=============== ======================================================
\paragraph{Introduction – the European grid.}~\\
%=====================================================================
the file \textit{base.nc} contains a good representation of the European grid, with the various high voltage AC lines and the DC links.
\\
\\
You could load this file in PyPSA and plot it, the colors of the lines represent the voltage type and level, the width of the lines are proportional to their transmission capacity.
\\
\\
+
+You can load this file in PyPSA and plot so that the colors of the lines represent the voltage type and level, the width of the lines are proportional to their transmission capacity.
+
\textbf{Task:} Calculate the order and the size of this graph (you will need to include AC lines and DC links).
\\
\\
To cluster this network, we will use a simplify version of this grid, by considering all AC lines to have the same voltage. It will also group very close buses. Import the simplified version (\textit{elec\char`_s.nc}).\textbf{Task:} Calculate the resulting size and order.
+
+To cluster this network, we will use a simplified version of this grid, by considering all AC lines to have the same voltage. It will also group very close buses. Import the simplified version (\textit{elec\char`_s.nc}).
+
+\textbf{Task:} Calculate the resulting size and order.
%=============== ======================================================
@@ 132,41 +124,35 @@ To cluster this network, we will use a simplify version of this grid, by conside
%=====================================================================
Sklearn is a library which allows to cluster data. Due to its simplicity and to the limited goal of this tutorial, we will cluster the simplified network by grouping the buses according to their geographical locations.
\\
\\
\textbf{Task:}Perform various clustering of the simplified network by changing clustering algorithms (Kmeans, SpectralClustering, …) and the number of clusters k.\\
{\url{http://scikitlearn.org/stable/modules/clustering.html}}
\\
\\
\textbf{Task:}Use the \textit{plot\char`_clusters} function of tutorial.py to observe the outcome of the clustering.
\\
\\
+
+\textbf{Task:} Perform various clustering of the simplified network by changing clustering algorithms (Kmeans, SpectralClustering, …) and the number of clusters $k$. \\
+\mbox{\url{http://scikitlearn.org/stable/modules/clustering.html}}
+
+\textbf{Task:} Use the \textit{plot\char`_clusters} function of tutorial.py to observe the outcome of the clustering.
+
\textbf{Questions:}
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?
+\begin{itemize}
+ \item Are the buses adequately clustered?
+ \item Which algorithm is giving the best outcome?
+ \item What are the limits of using geographically based data clustering on the electrical grid?
+\end{itemize}
%=============== ======================================================
\paragraph{Clustering and minimum installed capacity.}~\\
%=====================================================================
The file \textit{elec\char`_s.nc} provides solar and wind energy hourly profile per bus for year 2013 and an hourly load profile per bus. The Run of River Hydropower is also fixed.
\\
\\
We will now use the functions :\\
+
+We will now use the functions :\\
\textit{tutorial.find\char`_kmeans\char`_busmap} and \textit{pypsa.networkclustering.get\char`_clustering\char`_from\char`_busmap} \\
to cluster the European Grid according to the Kmeans algorithm with weighted values (corresponding here to the maximum load at the bus). These functions aggregate the bus data (load, renewable potential...) to the cluster node and group lines from the initial network to form the edges of the clustered graph.\\
+to cluster the European Grid according to the Kmeans algorithm with weighted values (corresponding here to the maximum load at the bus). These functions aggregate the bus data (load, renewable potential...) to the cluster node and group lines from the initial network to form the edges of the clustered graph.
+
Our clustered network is still missing some installed capacities for renewable at each bus to be able to run a simulation such as a Linear Optimal Power Flow (LOPF): LOPF could say if our installed capacity of renewable could supply the loads according to the available line transfer capacity.
\\
\\
+
In order to give a capacity of solar, onshore wind and\char`/or offshore wind to each bus in a simple way, I created a small function \textit{P\char`_nom\char`_re} attributing an installed capacity proportional to load at each bus (the proportionality coefficients for solar w\char`_s, onshore wind w\char`_on and offshore wind w\char`_of could be changed independently). The goal here is not to simulate a real or ideal energy system, but to be more familiar with the tools and to observe if different clustering sizes or clustering groups are having an impact on results.
\\
\\
\textbf{Task:}For a graph with a small number of cluster (1025), determine minimum proportionality coefficients w\char`_s, w\char`_on and w\char`_of to have a successful LOPF at a specific day and hour (observe the message \textit{INFO:pypsa.opf:Optimization successful} or \textit{ERROR:pypsa.opf:Optimisation failed}).
\\
\\
\textbf{Questions:}If you try the same coefficients with a higher number of cluster (100200), is the LOPF still successful. If not, could you find an explanation?
+\textbf{Task:} For a graph with a small number of cluster (1025), determine minimum proportionality coefficients w\char`_s, w\char`_on and w\char`_of to have a successful LOPF at a specific day and hour (observe the message \textit{INFO:pypsa.opf:Optimization successful} or \textit{ERROR:pypsa.opf:Optimisation failed}).
+\textbf{Questions:} If you try the same coefficients with a higher number of cluster (100200), is the LOPF still successful. If not, can you find an explanation?
\end{document}