You can use the brace decoration from the decorations.pathreplacing library for that. I used a lot of shifts to make it a bit better looking, but you can choose to omit those. By using the method as explained by @marmot, all the shifts can be omitted.
This is the code for the braces:
\node[fit={(f1)(f3)(f3-|set1.west)},subset] (c1-fit) {};
\node[fit={(f4)(f5)(f5-|set1.west)},subset] (c2-fit) {};
\node[fit={(f7)(f8)(f8-|set1.west)},subset] (c3-fit) {};
\node[fit={(s1)(s2)(s2-|set2.east)},subset] (lc1-fit) {};
\node[fit={(s3)(s5)(s5-|set2.east)},subset] (lc2-fit) {};
\node[fit={(s8)(s8)(s8-|set2.east)},subset,inner ysep=10pt] (lc3-fit) {};
\begin{scope}[decoration={brace,amplitude=3mm}]
\begin{scope}[decoration={mirror},every node/.style={midway,left,xshift=-3mm}]
\draw[decorate] (c1-fit.north west) -- (c1-fit.south west) node(C1){$ C_1 $};
\draw[decorate] (c2-fit.north west) -- (c2-fit.south west) node(C2){$ C_2 $};
\draw[decorate] (c3-fit.north west) -- (c3-fit.south west) node(Cg){$ C_\gamma $};
\end{scope}
\begin{scope}[every node/.style={midway,right,xshift=3mm}]
\draw[decorate] (lc1-fit.north east) -- (lc1-fit.south east) node(LC1){$ L^{C_1} $};
\draw[decorate] (lc2-fit.north east) -- (lc2-fit.south east) node(LC2){$ L^{C_2} $};
\draw[decorate] (lc3-fit.north east) -- (lc3-fit.south east) node(LCg){$ L^{C_\gamma} $};
\end{scope}
\end{scope}

I also used some \foreach loops to ease the drawing of all those similar lines, and to place the circular nodes that don't have a label.
Also I noticed that you set -> for the entire tikzpicture, and then continue to set the - key for all \draw commands, which feels a bit counterproductive so I removed that. Additionally I changed the every node/.style to a base node/.style and used the inheritance of styles to make sure that both the fsnode style and the ssnode style inherit its properties. Finally I changed the font of the two top labels (Products and Locations) to \itshape, instead of typesetting those words in mathmode, because it simply looks better.
MWE:
\documentclass[tikz,margin=2mm]{standalone}
\usetikzlibrary{chains,fit,shapes,decorations.pathreplacing}
\begin{document}
% \begin{figure}[H]
\centering
\definecolor{myblue}{RGB}{80,80,160}
\definecolor{mygreen}{RGB}{80,160,80}
\begin{tikzpicture}[thick,
base node/.style={draw,circle},
fsnode/.style={base node,fill=myblue},
ssnode/.style={base node,fill=mygreen},
set/.style={ellipse,draw,inner xsep = 20pt,inner ysep=-20pt},
subset/.style={inner sep=3pt},
shorten >= 3pt,shorten <= 3pt
]
% the vertices of P
\begin{scope}[start chain=going below,node distance=10mm]
\node[fsnode,on chain] (f1) [label=left: $p_{1}$] {};
\node[fsnode,on chain] (f2) [label=left: $p_{2}$] {};
\foreach \i in {3,...,7}{
\node[fsnode,on chain] (f\i) {};
}
\node[fsnode,on chain] (f8) [label=left: $p_{n}$] {};
\end{scope}
% the vertices of L
\begin{scope}[xshift=6cm,yshift=0cm,start chain=going below,node distance=10mm]
\node[ssnode,on chain] (s1) [label=right: $l_{1}$] {};
\node[ssnode,on chain] (s2) [label=right: $l_{2}$] {};
\foreach \i in {3,...,7}{
\node[ssnode,on chain] (s\i) {};
}
\node[ssnode,on chain] (s8) [label=right: $l_{m}$] {};
\end{scope}
% the set P
\node [set,myblue,fit=(f1) (f8),label={[font=\itshape]above:Products}] (set1) {};
% the set L
\node [set,mygreen,fit=(s1) (s8),label={[font=\itshape]above:Locations}] (set2) {};
% the edges
\foreach \i [count=\j from 1] in {2,...,8}{
\draw[thin,dashed] (f\j) -- (f\i);
\draw[thin,dashed] (s\j) -- (s\i);
}
\foreach \i in {1,...,8}{
\foreach \j in {1,...,8}{
\draw[dotted] (f\i) -- (s\j);
}
}
\node[fit={(f1)(f3)(f3-|set1.west)},subset] (c1-fit) {};
\node[fit={(f4)(f5)(f5-|set1.west)},subset] (c2-fit) {};
\node[fit={(f7)(f8)(f8-|set1.west)},subset] (c3-fit) {};
\node[fit={(s1)(s2)(s2-|set2.east)},subset] (lc1-fit) {};
\node[fit={(s3)(s5)(s5-|set2.east)},subset] (lc2-fit) {};
\node[fit={(s8)(s8)(s8-|set2.east)},subset,inner ysep=10pt] (lc3-fit) {};
\begin{scope}[decoration={brace,amplitude=3mm}]
\begin{scope}[decoration={mirror},every node/.style={midway,left,xshift=-3mm}]
\draw[decorate] (c1-fit.north west) -- (c1-fit.south west) node (C1) {$ C_1 $};
\draw[decorate] (c2-fit.north west) -- (c2-fit.south west) node (C2) {$ C_2 $};
\draw[decorate] (c3-fit.north west) -- (c3-fit.south west) node (Cg) {$ C_\gamma $};
\end{scope}
\begin{scope}[every node/.style={midway,right,xshift=3mm}]
\draw[decorate] (lc1-fit.north east) -- (lc1-fit.south east) node (LC1) {$ L^{C_1} $};
\draw[decorate] (lc2-fit.north east) -- (lc2-fit.south east) node (LC2) {$ L^{C_2} $};
\draw[decorate] (lc3-fit.north east) -- (lc3-fit.south east) node (LCg) {$ L^{C_\gamma} $};
\end{scope}
\end{scope}
\draw[thin,dashed] (C2) -- (Cg);
\draw[thin,dashed] (LC2) -- (LCg);
\end{tikzpicture}
% \end{figure}
\end{document}
PS: I really like the chains! Perfect for this application.
Edit (@Sebastiano)
One might argue that having the labels of the sets in upright shape is aesthetically more acceptable. I will leave the choice for you.

\documentclass[tikz,margin=2mm]{standalone}
\usetikzlibrary{chains,fit,shapes,decorations.pathreplacing}
\begin{document}
% \begin{figure}[H]
\centering
\definecolor{myblue}{RGB}{80,80,160}
\definecolor{mygreen}{RGB}{80,160,80}
\begin{tikzpicture}[thick,
base node/.style={draw,circle},
fsnode/.style={base node,fill=myblue},
ssnode/.style={base node,fill=mygreen},
set/.style={ellipse,draw,inner xsep = 20pt,inner ysep=-20pt},
subset/.style={inner sep=3pt},
shorten >= 3pt,shorten <= 3pt
]
% the vertices of P
\begin{scope}[start chain=going below,node distance=10mm]
\node[fsnode,on chain] (f1) [label=left: $p_{1}$] {};
\node[fsnode,on chain] (f2) [label=left: $p_{2}$] {};
\foreach \i in {3,...,7}{
\node[fsnode,on chain] (f\i) {};
}
\node[fsnode,on chain] (f8) [label=left: $p_{n}$] {};
\end{scope}
% the vertices of L
\begin{scope}[xshift=6cm,yshift=0cm,start chain=going below,node distance=10mm]
\node[ssnode,on chain] (s1) [label=right: $l_{1}$] {};
\node[ssnode,on chain] (s2) [label=right: $l_{2}$] {};
\foreach \i in {3,...,7}{
\node[ssnode,on chain] (s\i) {};
}
\node[ssnode,on chain] (s8) [label=right: $l_{m}$] {};
\end{scope}
% the set P
\node [set,myblue,fit=(f1) (f8),label=above:Products] (set1) {};
% the set L
\node [set,mygreen,fit=(s1) (s8),label=above:Locations] (set2) {};
% the edges
\foreach \i [count=\j from 1] in {2,...,8}{
\draw[thin,dashed] (f\j) -- (f\i);
\draw[thin,dashed] (s\j) -- (s\i);
}
\foreach \i in {1,...,8}{
\foreach \j in {1,...,8}{
\draw[dotted] (f\i) -- (s\j);
}
}
\node[fit={(f1)(f3)(f3-|set1.west)},subset] (c1-fit) {};
\node[fit={(f4)(f5)(f5-|set1.west)},subset] (c2-fit) {};
\node[fit={(f7)(f8)(f8-|set1.west)},subset] (c3-fit) {};
\node[fit={(s1)(s2)(s2-|set2.east)},subset] (lc1-fit) {};
\node[fit={(s3)(s5)(s5-|set2.east)},subset] (lc2-fit) {};
\node[fit={(s8)(s8)(s8-|set2.east)},subset,inner ysep=10pt] (lc3-fit) {};
\begin{scope}[decoration={brace,amplitude=3mm}]
\begin{scope}[decoration={mirror},every node/.style={midway,left,xshift=-3mm}]
\draw[decorate] (c1-fit.north west) -- (c1-fit.south west) node (C1) {$ C_1 $};
\draw[decorate] (c2-fit.north west) -- (c2-fit.south west) node (C2) {$ C_2 $};
\draw[decorate] (c3-fit.north west) -- (c3-fit.south west) node (Cg) {$ C_\gamma $};
\end{scope}
\begin{scope}[every node/.style={midway,right,xshift=3mm}]
\draw[decorate] (lc1-fit.north east) -- (lc1-fit.south east) node (LC1) {$ L^{C_1} $};
\draw[decorate] (lc2-fit.north east) -- (lc2-fit.south east) node (LC2) {$ L^{C_2} $};
\draw[decorate] (lc3-fit.north east) -- (lc3-fit.south east) node (LCg) {$ L^{C_\gamma} $};
\end{scope}
\end{scope}
\draw[thin,dashed] (C2) -- (Cg);
\draw[thin,dashed] (LC2) -- (LCg);
\end{tikzpicture}
% \end{figure}
\end{document}
\itshapeis better looking than$ ... $endif. By making the labels upright I will not make that point clear. – Max Aug 15 '18 at 10:08fit=(f1) (f3) (f1 -| Fit1), whereFit1is the blue fit node, and then draw the brace from the fit box south west to north west, say. – Aug 15 '18 at 13:44