\documentclass[a4paper,12pt]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{graphicx} %BIlder einbinden
\usepackage{amsmath} %erweiterte Mathe-Zeichen
\usepackage{amsfonts} %weitere fonts
\usepackage[utf8]{inputenc} %Umlaute & Co
\usepackage{hyperref} %Links
\usepackage{ifthen} %ifthenelse
\usepackage{enumerate}
\usepackage{listings}
\lstset{language=Python}

\usepackage{algpseudocode} %Pseudocode
\usepackage{dsfont} % schöne Zahlenräumezeichen
\usepackage{amssymb, amsthm} %noch stärker erweiterte Mathe-Zeichen
\usepackage{tikz} %TikZ ist kein Zeichenprogramm
\usetikzlibrary{trees,automata,arrows,shapes}

\pagestyle{empty}


\topmargin-50pt

\newcounter{aufgabe}
\def\tand{&}


\newcommand{\makeTableLine}[2][0]{%
  \setcounter{aufgabe}{10}%TODO update
  \whiledo{\value{aufgabe} < 13}%TODO update
  {%
    #2\tand\stepcounter{aufgabe}%
  }
}

\newcommand{\aufgTable}[1]{
  \def\spalten{\numexpr #1 + 1 \relax}
  \begin{tabular}{|*{\spalten}{p{1cm}|}}
    \makeTableLine[\spalten]{A\theaufgabe}$\Sigma$~~\\ \hline
    \rule{0pt}{15pt}\makeTableLine[\spalten]{}\\
  \end{tabular}
}

\def\header#1#2#3#4#5#6#7{\pagestyle{empty}
\begin{minipage}[t]{0.47\textwidth}
\begin{flushleft}
{\bf #4}\\
#5
\end{flushleft}
\end{minipage}
\begin{minipage}[t]{0.5\textwidth}
\begin{flushright}
#6 \vspace{0.5cm}\\
%                 Number of Columns    Definition of Columns      second empty line
% \begin{tabular}{|*{5}{C{1cm}|}}\hline A1&A2&A3&A4&$\Sigma$\\\hline&&&&\\\hline\end{tabular}\\\vspace*{0.1cm}
\aufgTable{#7}
\end{flushright}
\end{minipage}
\vspace{1cm}
\begin{center}
{\Large\bf Übungsblatt #1}

{(Abgabe #3)}
\end{center}
}



%counts the exercisenumber
\newcounter{n}
\setcounter{n}{9} %TODO update

%Kommando für Aufgaben
%\Aufgabe{AufgTitel}{Punktezahl}
\newcommand{\Aufgabe}[2]{\stepcounter{n}
\textbf{Aufgabe \arabic{n}: #1} (#2 Punkte)}


\begin{document}
    %\header{BlattNr}{Tutor}{Abgabedatum}{Vorlesungsname}{Namen}{Semester}{Anzahl Aufgaben}
    \header{4}{}{2015-19-05}{Evolutionäre Algorithmen}{
    	\textit{Jan-Peter Hohloch}\\ \textit{Maximus Mutschler}
    }{SS 15}{3}%TODO update
    \vspace{0.5cm} \Aufgabe{Roulette-Rad-Selektion}{6}\\
    \begin{enumerate}[(a)]
    	\item Binomialverteilung da Ziehen mit Zurücklegen\\
    	X= Anzahl des Auftretens des Individuums unter k Ziehungen.\\
    	$
    	 P(X=K)= b(k|p_i;|P|) = \binom{|P|}{k}\cdot p_i^k\cdot(1-p_i)^{n-k}
    	$
    	\item $p_{i,neu}= m\cdot p_i$
    	\item $\mu = |P|\cdot p_i\\$
    	Da jedes Individuum mit Wahrscheinlichkeit p Nachkomme von dem Individuum der Elterngeneration ist.\\
    	$
    	 \sigma^2 = n\cdot(E(X^2)-E^2(X)) = |P| \cdot p_i \cdot (1-p_i)
    	$
    	\\
    	\item
	    \begin{itemize}
		    \item 	$p_1= 0.01\\
		    |P|=60\\
		    \sigma^2= 60\cdot0.01\cdot 0.99 = 0.594\\
		    \mu = 0.6\\
		     b(0|0.01,60)= 0.547\\
		     b(1|0.01,60)= 0.332\\
		     b(2|0.01,60)= 0.099\\
		     b(3|0.01,60)= 0.019\\
		     b(4|0.01,60)= 0.003\\
		    $
		    \item 	$p_2= 0.07\\
		    |P|=60\\
		    \sigma^2= 60\cdot0.07\cdot 0.93 = 3.906\\
		    \mu = 4.3\\
		    b(0|0.01,60)= 0.013\\
		    b(1|0.01,60)= 0.059\\
		    b(2|0.07,60)= 0.129\\
		    b(3|0.07,60)= 0.187\\
		    b(4|0.07,60)= 0.201\\
		    $
	    \end{itemize}
    \end{enumerate}
    \Aufgabe{Schemata}{7}
    $
    f_1(x) = (x-8)^2\\
    O(H)=2\\
    \delta(H)=1\\
    Mittlere Fitness = \frac{\sum_{H} f(a)}{n}\\$
    \begin{itemize}
    	\item Binärcode:\\
    	\begin{tabular}{|c |c| c|}
    	Schemata & Resultierende Werte& Fitness  \\\hline
    	00xx&0,1,2,3& 43.5\\
    	01xx&4,5,6,7&7.5\\
    	10xx&8,9,10,11&3.5\\
    	11xx&12,13,14,15&31.5\\
    	xx00&0,4,8,12&24.0\\
    	xx01&1,5,9,13&21\\
    	xx10&2,6,10,4&20\\
    	xx11&3,7,11,15&21\\
    	x00x&0,1,8,9&28.5\\
    	x01x&2,3,10,11&18.5\\
    	x10x&4,5,12,13&10.5\\
    	x11x&5,7,14,15&22.5\\
    	\end{tabular}

	     Beste Fitness: $10xx$ mit 3.5\\
    	\item Graycode:\\
    	\begin{tabular}{|c |c| c|}
    		Schemata & Resultierende Werte& Fitness  \\\hline
    		00xx&0,1,2,3& 43.5\\
    		01xx&4,5,6,7&7.5\\
    		10xx&12,13,14,15&31.5\\
    		11xx&8,9,10,11&3.5\\
    		xx00&0,7,8,15&28.5\\
    		xx01&1,6,9,4&17.5\\
    		xx10&3,4,11,12&16.5\\
    		xx11&2,5,10,13&18.5\\
    		x00x&0,1,14,15&49.5\\
    		x01x&2,3,12,13&25.5\\
    		x10x&6,7,8,9&1.5\\
    		x11x&4,5,10,11&9.5\\
    	\end{tabular}
    		\\ Beste Fitness: $x10x$ mit 1.5\\
    \end{itemize}\pagebreak
    \Aufgabe{Schematheorem}{7}
    \begin{enumerate}[(a)]
    	\item Fitnessfunktion definiert als Anzahl der Nullen.\\
    	$
    	p_c=0.7\\
    	p_m = 0.03\\
    	f(P(t))= \frac{(5+2+2+3*3+4*4+2*4+2*6)}{20}=2.7\\
    	l=6\\$
    	\begin{itemize}
    	\item $H_1\\
    	m(H_1,t)= 5\\
    	f(H_1)= \dfrac{21}{5} = 4.2\\
    	o_1=2\\
    	\delta_1=1\\
    	\rightarrow
    	m(H_1,t+1) \geq 6.2222$\\
    	 Die Anzahl der Exemplare des Schemas H1 vergrößert sich um mindestens 24.44\%
    	\item $H_2\\
	    m(H_2,t)= 1\\
    	f(H_2)= 2\\
    	o_2=3\\
    	\delta_2=4\\
    	\rightarrow
    	m(H_2,t+1) \geq  0.2593$\\
    	Die Anzahl der Exemplare des Schemas H2 verringert sich um höchstens 74.07\%
    	\end{itemize}

    	\item Code:\\
        \begin{lstlisting}
#!/usr/bin/python
import numpy as np
import matplotlib.pyplot as plt
import copy as cp

def binary (b, u=31, l=-32, length=6):
    s=0
    for i in np.arange(1,length+1) :
        s+=b[length-i]*2**(i-1)
    return l+(u-l)/(2**length-1)*s

def f1 (x):
    return x**2

def matchScheme (scheme):
    ind=[]
    ind.append([])
    if(scheme[0]==0) or (scheme[0]==1):
        ind[0]=[scheme[i]]
        c=1
    else:
        ind[0]=[0]
        ind.append([1])
        c=2
    for i in np.arange(1,len(scheme)):
        if (scheme[i] == 0) or (scheme[i] == 1):
            for j in np.arange(0,c):
                ind[j].append(scheme[i])
        else :
            ind2=cp.deepcopy(ind)
            for j in np.arange(0,c):
                ind.append(ind2[j])
            for j in np.arange(0,c):
                ind[j].append(0)
            for j in np.arange(c,2*c):
                ind[j].append(1)
            c=2*c
    return ind

x=np.arange(-32,32)
plt.scatter(x,f1(x), label='x^2')
#plt.grid(True)

H3=['*',1,1,'*','*','*']
H3scheme=list(map(binary,matchScheme(H3)))
H4=['*','*','*',0,0,'*']
H4scheme=list(map(binary,matchScheme(H4)))

plt.vlines(H3scheme,list([0]*len(H3scheme)), list(map(f1,H3scheme)),
    linestyles='dashed', label='H3')
plt.vlines(H4scheme,list([0]*len(H4scheme)), list(map(f1,H4scheme)),
    linestyles='dotted', label='H4')
plt.legend(bbox_to_anchor=(0.6,0.8))

plt.show()
        \end{lstlisting}
    	\begin{figure}[!htb]
    		\centering
    		\includegraphics[width= 0.9\textwidth]{figure_1.png}
    		\caption{\label{fig:1}Zielfunktion sowie die Lösungsräume von H3 und H4}
    	\end{figure}

    \end{enumerate}

\end{document}

