{ "cells": [ { "attachments": { "grafik.png": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZQAAAEpCAYAAAC0kdQLAAAABHNCSVQICAgIfAhkiAAAIABJREFUeF7t3Qm8jlUewPH/tV77dm3RRBFRiDAiVD7NZBkZwlhHxdhqMMo2NTTUKDH2GRo1hhZ87GTL0rWv46bI0KKFQWTNbvqfYnDd5X3f87zvs/zO53M/5b7Pc55zvufwf5/nOUvc5R+SkBBAAAEEEIhQIEOE53M6AggggAACRoCAQkdAAAEEELAiQECxwkgmCCCAAAIEFPoAAggggIAVAQKKFUYyQQABBBAgoNAHEEAAAQSsCBBQrDCSCQIIIIAAAYU+gAACCCBgRYCAYoWRTBBAAAEECCj0AQQQQAABKwIEFCuMZIIAAgggQEChDyCAAAIIWBEgoFhhJBMEEEAAAQIKfQABBBBAwIoAAcUKI5kggAACCBBQ6AMIIIAAAlYECChWGMkEAQQQQICAQh9AAAEEELAiELWAsnXrVilQoIDkz59fChUqJF9++aWVCjidyXfffSd16tRx+jLkjwACCHheIFOkNTh79qxs3LgxzWw2bdokZcuWlfnz50vVqlXl2LFjcuutt6Z5XqwP+O9//yuff/65JCYmxrooUbn+F198YdomtVSkSBHzpYAUPIESJUp44u9t8FrGHTWOOKAcOHBAateuna7aVKlSRfLlyycXLlxI1/FuOOj48ePmH9j01tENZaYMCDglMGTIEOnfv79T2ZOvxwWi9sjLq04aTOLi4rxafMqNAAIIRE2AgJIGtQaUS5cupXEUHyOAAAIIEFDS6AO7d++WM2fOpHEUHyOAAAIIEFDS6AObN2+Wc+fOpXEUHyOAAAIIEFDS6ANJSUlpHMHHCCCAAAIqQEBJpR/oaLR9+/alcgQfIYAAAghcESCgpNIXNmzYIFmzZk3lCD5CAAEEELgiEPE8lPRS5sqV6+rwW68Mw124cKGpns7uD0o6efJkmu+MMmfOLNqeJH8JnDhxQs6fP++vSlGbqApELaBMmTJFRo4caSoXHx8f1UqGe7GlS5fKzJkzpV69euFm4bnzmjZtauqcWnrggQfk/fffT+0QPvOgwGOPPSZz5szxYMkpslsEeOSVQkvs379fdu3aJbVq1UrhCH6NAAIIIHCtAAElhf7w5ptvSrNmzTxzN5VCNfg1AgggEDWBqD3yilqNLFzo8uXLMmnSJJk8ebKF3MgCAQQQCIYAdyg3aefly5eLvniuUaPGTT7lVwgggAACNxMgoNxEZfjw4dK9e/ebfMKvEEAAAQRSEuCR1w0ya9askR07dqQ50iklUH6PAAIIBFWAO5QbWv6Pf/yjvPDCC0xoDOrfCOqNAAJhCxBQrqFbsGCB6HDh9u3bhw3KiQgggEBQBXjk9VPL6yzhbt26yfjx4yVTJliC+heCeiOAQPgC3KH8ZPfcc8/Jgw8+KI8++mj4mpyJAAK+FdDVIYYNG+bb+tmoGF/Ff1BcsWKFzJ0717yMJyGAAAI3Cuij8BYtWkiRIkWkd+/eN37Mn38SCPwdyjfffCNt27aVCRMmSL58+egYCCCAwHUCOtH5iSeekLx58yKThkCgA8rZs2fl17/+tXTq1EkaNGiQBhUfI4BAEAXGjRtntgHXoEJKXSDQAaVLly5yyy23yPPPP5+6Ep8igEAgBXbu3CkvvviivPHGG5IhQ6D/uUxX+wf2HUq/fv1k69atkpiYeHWflnSJcRACCARC4Ny5c9KmTRsZMmSIlChRIhB1jrSSgQwoOnFx1qxZsnLlSjaKirQHcT4CPhUYNGiQFC5cWJ588kmf1tB+tQIXUPT2dfr06bJq1SrTWUgIIIDAjQKrV6+Wv//975KUlMQTjBtxUvlzYAKK3r7qxMX169eb3QYJJqn0Cj5CIOACs2fPluPHj0uFChWuSpw+fVp0IE9CQoKMGDHCjA4lXS8QiIBy5MgRs1lWlixZRL955MmTh36AAAIIpCigI7rq1q173ef6ZEPnrOmor2sDTYqZBPAD3weUDRs2SOvWraVx48byyiuvSMaMGQPYzFQZAQRCEShXrpzoz7VJJz5v2bJFGjZsGEpWgTrWtwHl/PnzMnjwYLM216hRo6Rly5aBalgqiwACCERbwJcDq/VF2v333y/r1q0zQ4MJJtHuVlwPAf8J9O3bl+WZ0mhWXwWUAwcOmFnv9erVkw4dOsjixYulePHiaRDwMQIIIICADQFfBJRjx46Zx1vly5eXHDlyyK5du6Rr164M97PRQ8gDAQQQSKeAp9+hfPrpp+b9yOTJk82y8/oCvlSpUumsOochgAACCNgU8NwdyqlTp2TatGnSpEkTqVq1qhkKvH37dpk6dSrBxGbPIC8EEEAgRAFP3KHouxGd2T5z5kx57733pHr16mZvAr0zyZUrV4hV5nAEEEAAAScEXBdQDh06JHv27BFd5XPNmjVmIqIGlFq1akmjRo1kzJgxUrBgQScsyBMBBBBAIAKBqAaUvXv3ig690wDx8ssvS3x8vOhe7vpS/fDhwyaQxMXFyR133CF33nmn1KhRQ7p3725mpTIhMYJW5lQEEEAgCgJRCyiVK1c2I6909zOdaaojsvLnz2+WQcmePbtZH0dfqHP3EYVW5xIIIICAAwJRCyi6ve5zzz3nQBXIEgEEEEDADQKeG+XlBjTKgAACCCCQXICAktyE3yCAAAIIhCFAQAkDjVMQQAABBJILEFCSm/AbBBBAAIEwBAgoYaBxCgIIIIBAcgECSnITfoMAAgggEIYAASUMNE5BAAEEEEguQEBJbsJvEEAAAQTCECCghIHGKQgggAACyQUIKMlN+A0CCCCAQBgCBJQw0DgFAQQQQCC5AAEluQm/QQABBBAIQ4CAEgYapyCAAAIIJBcgoCQ34TcIIIAAAmEIEFDCQOMUBBBAAIHkAgSU5Cb8BgEEEEAgDAECShhonIIAAgggkFyAgJLchN8ggAACCIQhQEAJA41TEEAAAQSSC0RtT/nkl/bub44ePSpvvfWWfPXVV1K0aFH5zW9+IwULFvRuhSh5igJbtmyRxMRE6dGjR4rH8AECCPwowB1KiD1h586dUr58eXnhhRdk06ZNMnjwYClXrpxs3bo1xJw43O0C586dkz59+siUKVPcXlTKh4ArBAgoITbDM888I9myZZNdu3bJsmXLZPfu3VKkSBHp1q1biDlxuFsF1qxZIy+++KJUq1ZN3n//fbcWk3Ih4DoBHnmF0CTffvut+Qfmtddeu/qIK2/evNKzZ0958sknzSOw4sWLh5Ajh7pRQO82P/jgA0lISJBixYq5sYgxK9Prr78uS5Ysidn1ubA9gTx58sicOXPsZfhDTgSUEDj1buTy5ctStWrV686qXLmy+fNHH31EQAnB062HPv3006I/mrp37y7r1693a1GjXq7PPvtM9IfkfYECBQpYrwSPvEIgPXLkiDk6f/781511pWEOHz4cQm4cigACCPhLgIASQnteuHDhpkdnyPAj48WLF2/6Ob9EAAEEgiBAQAmhlbNmzWqO1tE/16YzZ86YP175/LoP+QMCCCAQEAECSggNrXNONH3++efXnXXlz7zADQGTQxFAwHcCBJQQmrRs2bKSM2dOMwLo2rR69WrJkiWLVKxYMYTcOBQBBBDwlwABJYT21EdaTz31lIwbN05mzJgh+pJ+3rx58uqrr0rbtm0lV65cIeTGoQgggIC/BBg2HGJ7DhkyRE6cOCHNmzc3Q4g1tWzZ0sxNISGAAAJBFiCghNj62bNnF53cNWzYMDlw4IAUKlQo2TDiELPkcBcLjBkzxsWli37R7rrrLjM3h+RugT179siIESOiXkgCSpjkOkNef0gIBElAV4Lo2rVrkKrsybrqe95YBBTeoXiyu1BoBBBAwH0CBBT3tQklQgABBDwpQEDxZLNFt9A5cuQQXUhOR7HpO6S1a9dKfHy8HDx4MLoF4WpRF7ix7XVvGG37Q4cORb0sXND9ArxDcX8bRaWEOnJt+fLlZoFLnWsTFxcnOu+mSpUqUqlSJdGXsfny5ZPcuXObH31/pMeQvC+gba+raOteP1faXtv7SttrP9D16/QLBW3v/fZ2sgYEFCd1PZC3fuOcOHGiWcZa/wH57W9/K7/4xS9MECFgeKABwyyiDnm/0vZz586V++67T5544gnT9jpBl7YPEzbgpxFQAtgBdC2yf/zjHzJ69GjRBS11sua1e7wEkCQwVda21y8QOhxag0rHjh1l+PDhbGEdmB7gbEUJKM76uip3DR7/+te/ZNCgQVK6dGkZO3as1K1bl2+jrmolZwqjK2VPnjzZ7ERZpkwZGT9+vNSpU4e2d4Y7sLkSUALS9CtXrpQuXbqI7t3y5ptvmn9MSMEQ0HdjOndEJ+FqUKldu3YwKk4toy5AQIk6eXQvqC9c+/btK7NnzzaPOZo0aRLdAnC1mAkcP35c+vTpY9ab07vRxo0bx6wsXDgYAgwb9nE762zZChUqyMmTJ2XHjh0EEx+39Y1VW7VqlWl73atH255gcqMQf3ZCgDsUJ1RdkKeuiDxw4EDz8r1Ro0YuKBFFiJaADrYYPHiwTJo0SRo0aBCty3IdBISA4rNOoKN4unXrZvZs0W+pOp+AFAyBs2fPmrbX/Xm07XX+CAmBaAoQUKKp7fC1Tp8+Lb/61a9EZzdv2rTJTEIjBUPg1KlT5k5UVzTQtmdvnmC0u9tqSUBxW4uEWR4NJvoPSsGCBWXKlCmSKRNNGyal5067EkwKFy5shoXT9p5rQt8UmJfyPmhKfen+6KOPii4tPnXqVP5B8UGbprcKOorvl7/8pZQoUYK2Ty8axzkmQEBxjDY6GetkRd09smTJkvLGG29IxowZo3NhrhJzAZ2s+Pjjj5tJqrrpW4YM/HWOeaMEvAD0QI93gF69eok+8pgwYQL/oHi8LUMtfo8ePcyw4L/97W+0fah4HO+IAA/aHWGNTqY6JHj+/PmyYcMGyZIlS3QuylVcIaCTVJctWybr1q2j7V3RIhRCBQgoHu0HOpKnX79+ZohoQkKCR2tBscMRWL9+vVmTS/el0S0FSAi4RYBHXm5piRDKoY85OnToIH/961/lzjvvDOFMDvW6gI7ma9++vYwaNUpKlSrl9epQfp8JEFA82KDPPvusCSStWrXyYOkpciQCvXv3NvvWtGzZMpJsOBcBRwR45OUIq3OZrlixQmbNmiXbt2937iLk7EoB3VVRF3pMSkpyZfkoFALcoXioD+gQ4Z49e5rNsHQZelJwBLTtdVTXiBEjeG8SnGb3XE0JKB5qMl3sL1u2bGbeCSlYArrLoi6n0rRp02BVnNp6SoBHXh5pLp0N/6c//UmmT5/OLnseaTNbxdTZ8DqqS/e0Ya93W6rk44QAdyhOqDqQp847eOCBB6RmzZoO5E6WbhbQEV26VXO1atXcXEzKhgDzULzQB86fP2923Js5c6YXiksZLQrodgTa9gsXLrSYK1kh4IwAdyjOuFrN9d1335U77rhDqlatajVfMnO/wNtvv232tKlUqZL7C0sJAy9AQPFAF9BHHjq6ixQ8AZ28StsHr929WmMCistbbtu2bXLw4EG28XV5OzlRvM2bN8uxY8ekfv36TmRPnghYFyCgWCe1m6E+7mrRogWrydpl9URu2vY6I55l6T3RXBTyBwGGDbu8G8yYMUOmTZvm8lJSPNsCly9fFm17HSpMQsArAtyhuLilNm7caEpXuXJlF5eSojkhoCsKZ82aVSpWrOhE9uSJgCMCBBRHWO1kumDBAmnSpImdzMjFUwLa9o899pinykxhESCguLgPJCYmSp06dVxcQormlABt75Qs+TopQEBxUjeCvHUyo26idf/990eQC6d6UUAnM27dulVq1KjhxeJT5gALEFBc2vhbtmyREiVKSP78+V1aQorllIB+kdCJrHnz5nXqEuSLgCMCBBRHWCPPVF/I8w01ckcv5kDbe7HVKLMKEFBc2g/+85//SJkyZVxaOorlpABt76QueTspQEBxUjeCvPfs2cOe4RH4eflU2t7LrRfsshNQXNr+/KPi0oaJQrFo+yggcwlHBAgojrBGlqlu97pv3z65/fbbI8uIsz0noKP7vvrqKylZsqTnyk6BESCguLAPHD9+XLJkyWK2+yUFS0AXg8yePbuZJU9CwGsCBBQXttipU6ckZ86cLiwZRXJagLZ3Wpj8nRQgoDipG2beun88ASVMPI+fRtt7vAEDXnxWG3ZhB9DHHpqWLVvmwtL9WKSMGTOaZWFYWt1uE3333XeiKw27ue0zZcoktWvXpu3tNr0vciOguLAZ9+/fLwcOHJChQ4dGvXRnzpwRHRSQWtIg8u9//1vWrVsn99xzT2qH8lmIAtr2+uPWttcvErrp24YNG6R8+fIh1o7D/S5AQHFhCyckJMjdd98tS5cudWHpfiySlu/SpUuuLZ9XC1awYEGpUKGCq9u+XLlytL1XO5jD5SagOAwcTvaZM2c23wJ1Padop/Tcoei31MOHD4uWM6Wk37IffvhhOXv2rOjxs2bN8sw32gYNGsj8+fMlLi4upeo59ns11XXc3Nz2hw4dSrXtHcMhY9cLRC2g6GQthsGmrz/oooDTp0+XCxcupO8Ei0e98sorops7pZb0G/SECRNEn6Xv3r37pofq8iE6YmnmzJnSuXNn+frrrz0RUE6fPm3eX2j5Y5EKFChgduiMRdv/5S9/kSubuqVU9+rVq8uSJUukbNmyKR3C7wMsELWAUqlSpQAz+6vqSUlJ0rBhwzQrVaxYMalSpYqnXt7qgAh9R8Q6ajdv3ty5c3vii8HNS3/9b/U9pQbvgwcPmjvCZs2aSa5cudJzKsekIMCw4RRg+HUwBXRSqd55kfwtsGLFCvOecuTIkbJ582bp2bOnWTvvo48+8nfFHa5dxAFFn5GTEPCLgA7bZSi0X1rz5vXQDcxatWol+tREA8iiRYtEH8nr3K8OHTrc/CR+my6BiAOKvpwlIeAXgb1795p5ICT/CuhumPq4a8CAARIfH28qqiMr27VrZ3ZJ1fXUSOEJRBxQwrssZyHgTgH9xqov5kn+FciXL5/84Q9/MMOzr01Hjx4VHRTBI8/w256HxeHbcaYPBXSUU1oTO31Y7UBVSQdcDBs27Lo666i+SZMmmUdhsRgu7pcG4A7FLy1JPawIfPzxx1byIRPvCCxevFhq1qxpRq/p0GlS+AIElPDtONNnAjoZk3eCPmvUVKpz5MgRad++vdSvX19at24ty5cvF50DRgpfgEde4dtxps8E3nvvPbMPjY4CIvlb4LPPPpOHHnpI8uTJY17EV65c2d8VjlLtIg4oOnmNhIAfBHRWvy4fT0pZQFeY9nrSd2Q6ibF06dIyd+7cqyO9vF4vN5Q/4oDihkpQBgQiFdC7kpUrV0aaje/P98MLaw0iOnR4ypQpZtXsa5OuO1e1alXft6NTFYxaQClcuDCjJ5xqRRfmq2tRXfnHxwv/CM2ZM8c87gry0hu6BEkQVpBeu3at+RvTpk2bZH9z9BGYTm4lhScQtYCiE8Zy5MgRXik5y3MCO3bskMcff9yU2wvtPnHiRLMMR9u2bT1nbavARYsWNRP+/J5effVV0R+SfYGoBRT7RSdHBOwI6AtaXTJ+9uzZdjIkFwQCKsCw4YA2PNX+v8Do0aPNnUn27NlhQQCBCAS4Q4kAj1O9L/DNN9/IP//5T9m+fbv3K0MNEIixAHcoMW4ALh9bgYEDB8pTTz0lxYsXj21BuDoCPhDgDsUHjUgVwhP45JNPzI6S+l8SAghELsAdSuSG5OBBAR0e27FjR+nfv79ZYZaEAAKRCxBQIjckBw8KjB071iyx8vvf/96DpafICLhTgEde7mwXSuWggA4THjRokCQmJorOjCYhgIAdAe5Q7DiSi0cEzpw5Iy1atJA+ffrIXXfd5ZFSU0wEvCFAQPFGO1FKSwLdunUzI7p69+5tKUeyQQCBKwI88qIvBEZg+PDhsnnzZtG1nLywvlhgGoaK+kaAgOKbpqQiqQm88847Zv0mDSZeWFsstbrwGQJuFSCguLVlKJc1AZ1r8swzz4huoFWyZElr+ZIRAghcL0BAoUf4WmDWrFnSpUsXWbRoEbvy+bqlqZwbBAgobmgFyuCIwKhRo+Sll16S+fPnE0wcESbTaAns27fPrOiwc+dO87Nnzx45evSoHDt2TE6dOmX2cPn+++9NcfSRrt6VxyIRUGKhzjUdFdDNvXr16mXuSlatWiVlypRx9HpkjoBtgf3798uyZcuu/pw/f17KlSsnZcuWNT8NGzaUhIQEyZkzp9kUbvr06SbgTJgwQfLmzWsm7cYiEVBioc41HRP4+uuvzVL0WbNmlU2bNonuwEdCwAsCR44ckalTp5rVr/UO5MEHH5R69eqZ5YHS+lLklq0XmIfihZ5GGdMloCO57r33XqlVq5Z5zEUwSRcbB8VYYPny5WayrQ4YWb16tQwePFi+/fZb0fd/Om8qrWAS4+Jfd3nuUNzUGpQlLIFDhw6ZUVxbt26VefPmSfXq1cPKh5MQiKbAkiVLzBJA2n+ffvppGT9+vOTPnz+aRbB+Le5QrJOSYbQEzp49a+aW6BIqhQoVkm3bthFMooXPdcIW0Pd6NWvWNEGkc+fO5iW7/r/Xg4mCcIcSdrfgxFgJXLx40byE1GfL+qJSF3lkXa5YtQbXTa+AviPRJX/0zkRHH7Zu3dp3i5MSUNLbGzgu5gInT56USZMmyciRI6VgwYJmRIu+tCQh4HYB/QKkdyGPPPKIJCUl+eJu5GbmBJSbqfA71whcvnxZNm7cKO+++65MnjxZ6tSpY/6rjwxICLhdQL8E6UZuH374oXnJXqNGDbcXOaLyEVAi4uNkJwR0zL0u4qh/AfWbXebMmaV58+YmsNx+++1OXJI8EbAusHv3bmnWrJlUrFjR9F23DO21XtFrMiSgOKlL3mkK6Fa8X375pZmUpQs36vsQ/ctXokQJM3lLZ/zqUGASAl4S0C9DnTp1kj//+c/mxXtQEgElKC0dg3rqWPqhQ4eK7pA4bdo00fH2ukyE/uhQyb1798qnn35qZvbqWPtq1aqZLXl1HokfRrzEgJxLukBA3/MNGDBAFixYYPp0kBIBJUitHcW63nbbbdKyZUsTMEqVKiXx8fFmjSEd3qvLReiyEfr4Sj/TP5MQ8IPAuHHjZMiQIbJ06VK5++67/VClkOpAQAmJi4PTK6DrC+nijCQEgiLw8ssvy+uvv25muwd1mwQCSlB6O/VEAAHHBCZOnGiCyQcffCDFihVz7Dpuz5iA4vYWonwIIOBqAd247fnnnzcrWwc5mGgjEVBc3VUpHAIIuFlA149r166dGeLupUUcnTJlLS+nZMkXAQR8LaAbXDVp0kTGjh1rRiaSRAgo9AIEEEAgDIGuXbtKo0aNzKRb0o8CPPKiJyCAAAIhCugLeF2TS1d0IP1fgIBCb0AAAQRCENAJuf369TMTdbNlyxbCmf4/lEde/m9jaogAAhYFevToIb169ZJ77rnHYq7+yIo7FH+0I7VAAIEoCOheJroh1owZM6JwNe9dgjsU77UZJUYAgRgInDt3zmw1PWLECMmaNWsMSuD+SxJQ3N9GlBABBFwgoOt06SrYOrKLdHMBHnnd3IXfIoAAAlcFdI+e4cOHm1WzSSkLcIeSsg2fIIAAAkZgypQpUrp0afn5z3+OSCoC3KGkgsNHCCCAgG5D/dprr5kfUuoC3KGk7sOnCCAQcAFd/DFTpkzyyCOPBFwi7eoTUNI24ggEEAiwwOTJk6Vjx44SFxcXYIX0VZ2Akj4njkIAgQAKnDhxQhYuXCjNmjULYO1DrzIBJXQzzkAAgYAI6LL0upJw4cKFA1LjyKpJQInMj7MRQMDHAm+//ba0atXKxzW0WzUCil1PckMAAZ8InDlzRhITE6Vhw4Y+qZHz1SCgOG/MFRBAwIMCGzZsMLsw5s2b14Olj02RCSixceeqCCDgcgHdI75u3bouL6W7isfERne1h+tLs2/fPrP8xLFjx8zM4aZNm0qOHDlcX24KaEfgnXfeke3bt9vJzOW5bNy4UUaOHOnyUv6/eLp4paYLFy7I0KFDY1JuAkpM2L150cWLF5vhkzripVSpUjJ69Gjp27ev6KOBW2+91ZuVotQhCXz44YeiP0FImTNnlpo1a3qmqhcvXjRlvXTpkqxevTom5eaRV0zYvXdR7ay/+93vpH79+vLJJ5/IokWLzH+18/bp08d7FaLECKQhEB8fLwUKFEjjKD6+VoA7FPpDugR029MvvvhC3nrrLcmYMaM5R+9UqlWrJrt3705XHhyEgJcEbrvtNi8V1xVl5Q7FFc3g/kLccsstsm3bNqlSpcrVwh48eNA87qpevbr7K0AJEQhRoHz58iGeweEEFPpAugRy5swplSpVMjvVLVu2TNq1ayflypWT++67L2YvANNVcA5CIAwBfX9SoUKFMM4M9ikElGC3f1i1z5Ahg+TLl8+8mF+5cqXZK4KEgJ8E9IuT3pWTQhPgHUpoXhz9g8BDDz1kfnSfiC5duph9ths3bixFixbFBwFfCOh7wly5cvmiLtGsBHco0dT28LV0VNeAAQOuq4Eu562PvnR71KSkJA/XjqIjkFxAH/OSQhPgDiU0r8AerRMaX3rpJenUqZNcO/pFR35pSkhICKyNXypevHhxOXDgQKrV0TtTXX3X72nq1KnitYCi73006d3Vs88+K9myZUu1mZyYkExASZWcD68ING/eXAYOHGhWXh0zZoz87Gc/k7Vr10qvXr3M4697770XLI8LFCtWTDZv3pxqLR5++GHp379/qsf44cO5c+dKnjx5PFMV3VFy3rx5ZpDM999/b54mxKL8BBTPdJnYFlQXyJs/f7507txZKleubAqj34Rat25t9trWF/UkBPwioH1dA6xXUps2ba7+vdQJmbEIJmpFQPFKj3FBOTWQ6PpGx48fl8OHD4s+IsmSJYsLSkYRELAr4KVgojXXx1vXzhGzq5H+3Ago6bfiyJ8EcufOLfpDQgAWg6n9AAADa0lEQVQBBK4V4DkF/QEBBBBAwIoAAcUKI5kggAACCBBQ6AMIIIAAAlYECChWGMkEAQQQQICAQh9AAAEEELAiQECxwkgmCCCAAAIEFPoAAggggIAVAQKKFUYyQQABBBAgoNAHEEAAAQSsCBBQrDCSCQIIIIAAAYU+gAACCCBgRYCAYoWRTBBAAAEECCj0AQQQQAABKwIEFCuMZIIAAgggQEChDyCAAAIIWBEgoFhhJBMEEEAAAQIKfQABBBBAwIoAAcUKI5kggAACCBBQ6AMIIIAAAlYECChWGMkEAQQQQICAQh9AAAEEELAiQECxwkgmCCCAAAIEFPoAAggggIAVAQKKFUYyQQABBBAgoNAHEEAAAQSsCBBQrDCSCQIIIIAAAYU+gAACCCBgRYCAYoWRTBBAAAEECCj0AQQQQAABKwIEFCuMZIIAAgggQEChDyCAAAIIWBEgoFhhJBMEEEAAAQIKfQABBBBAwIoAAcUKI5kggAACCBBQ6AMIIIAAAlYECChWGMkEAQQQQICAQh9AAAEEELAiQECxwkgmCCCAAAIEFPoAAggggIAVAQKKFUYyQQABBBAgoNAHEEAAAQSsCBBQrDCSCQIIIIAAAYU+gAACCCBgRYCAYoWRTBBAAAEECCj0AQQQQAABKwIEFCuMZIIAAgggQEChDyCAAAIIWBEgoFhhJBMEEEAAAQIKfQABBBBAwIpAJiu5pCOTjz/+WLJly5aOIzkEAQRiIXDixIlYXJZr+kggagGlWrVqPmKjKggggAACNwrwyOtGEf6MAAIIIBCWAAElLDZOQgABBBC4UYCAcqMIf0YAAQQQCEuAgBIWGychgAACCNwoQEC5UYQ/I4AAAgiEJUBACYuNkxBAAAEEbhQgoNwowp8RQAABBMISiHgeSlxcnOgPCQEE/C/A33X/t3EkNYy7/EOKJAPORQABBBBAQAV45EU/QAABBBCwIkBAscJIJggggAACBBT6AAIIIICAFQECihVGMkEAAQQQIKDQBxBAAAEErAgQUKwwkgkCCCCAAAGFPoAAAgggYEWAgGKFkUwQQAABBAgo9AEEEEAAASsCBBQrjGSCAAIIIEBAoQ8ggAACCFgRIKBYYSQTBBBAAAECCn0AAQQQQMCKAAHFCiOZIIAAAggQUOgDCCCAAAJWBP4HiOEl9rqnbE4AAAAASUVORK5CYII=" } }, "cell_type": "markdown", "metadata": {}, "source": [ "# MDPs und Reinforcement Learning\n", "Gegeben sei die folgende Umgebung mit 4 Räumen, die durch Türen verbunden sind. Die\n", "Räume sind von 0 bis 3 nummeriert und 4 bedeutet draußen. Ein Roboter soll, nachdem er\n", "in einigem beliebigen Raum positioniert wurde, durch Q-learning den Weg nach draußen\n", "finden, d.h., 4 (draußen) ist der Zielzustand. Alle Türen die nach draußen führen haben\n", "ein Reward von 100 und alle anderen 0.\n", "![grafik.png](attachment:grafik.png)\n", "1. Modellieren Sie die Räume als einen Graph, in dem die Räume als Zustände (Knoten) und die Türverbindungen als Transitionen gegeben sind. Notieren Sie die Rewards für jede Transition.\n", "2. Geben Sie die Reward-Matrix R, die die Rewards zwischen den Zustände beschreibt. Unmögliche Transitionen bekommen ein Reward von -1.\n", "3. Geben Sie die initiale Q-Matrix an! Nehmen Sie dabei an, dass der Roboter die Anzahl der Räume kennt.\n", "4. Berechnen Sie die Rewards für eine “Episode”, die im Raum 1 anfängt. Benutzen Sie den discount factor $\\gamma = 0.5$. Benutzen Sie dafür die folgende Formel (diese resultiert aus der Standardregel für die Lernrate $\\alpha = 1$): $Q(state, action) = R(state, action) + \\gamma ∗ max[Q(next state, all actions)]$. Dabei sollen die Aktionen so gewählt werden, das der Roboter die Räume in der folgenden Reihenfolge besucht: 1 → 3 → 1 → 2 → 4. Geben Sie die resultierende Q-Matrix an!" ] }, { "attachments": { "grafik.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "# Q-Learning\n", "\n", "Betrachten Sie das folgende Reinforcement-Learning-Problem:\n", "\n", "![grafik.png](attachment:grafik.png)\n", "\n", "Es gibt 6 Zustände $s_0,\\dots,s_5$ und 4 Aktionen UpC, Up, Left, Right. Die Aktionen\n", "funktionieren wie folgt:\n", "* UpC: Der Agent geht hoch, außer in $s_4$ und $s_5$ , wo nichts passiert. Reward: -1\n", "* Right: Der Agent bewegt sich nach rechts, in $s_0$,$s_2$, $s_4$, mit Reward 0. In den anderen Zuständen passiert nichts, und der Reward ist -1.\n", "* Left: Der Agent bewegt sich nach links, in $s_1$, $s_3$ , $s_5$ , mit Reward 0. In $s_0$ passiert nichts, und der Reward ist -1. In $s_2$ ist der Reward -100, und er bleibt in $s_2$ . In $s_4$ ist der Reward 10, der Agent landet in $s_0$.\n", "* Up: Mit Wahrscheinlichkeit 0.8, wie upC, mit Reward 0. Mit Wahrscheinlichkeit 0.1, gehe nach links, und mit Wahrscheinlichkeit 0.1 nach rechts (mit dem Reward, den die jeweilige Left oder Right Aktion hätte)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Aufgaben\n", "\n", "* Implementieren Sie eine Funktion `reward`, die den Reward für einen Zustand `s`, eine Aktion `a` und einen Nachfolge-Zustand `s'` ausrechnet. Die Reward-Funktion soll wie oben angegeben gestaltet sein. Die Zustände sollen als natürliche Zahlen 0 bis 5 modelliert werden, die Aktionen als Paare von Strings: Der erste String soll angeben, welche Aktion ausgewählt wurde, der zweite String, welche Aktion tatsächlich ausgeführt wurde (gewählte Aktionen: `right`, `left` und `upC` und `up`, ausgeführte Aktionen: `right`, `left` und `upC`). `5 Punkte`." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "def reward(s,a,snew):\n", " #TODO\n", " return None " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Implementieren Sie die Funktion `performAction`, die für einen Zustand `s` und eine *gewählte* Aktion `a`, die tatsächlich ausgeführte Aktion, und den Nachfolge-Zustand berechnet und als Paar zurückgibt. Das bedeutet, wenn als gewählte Aktion `up` übergeben wird, soll `upC`, `left` oder `right` entsprechend der oben beschriebenen Wahrscheinlichkeiten ausgeführt werden. `5 Punkte`." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#returns pair of actual performed action, and state\n", "def performAction(s,a1):\n", " #TODO\n", " return None \n", "\n", "#Test: \n", "performAction(0,\"up\") #sollte entweder (\"upC\",2) oder (\"left\",0) oder (\"right\",1) zurückliefern" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Der folgende Code erzeugt eine zufällige Sequenz von Aktionen und daraus resultierenden Zuständen. Diese Sequenz soll später verwendet werden, um ihren Q-Learning-Algorithmus zu testen." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "#gleichverteilt 100 Aktionen auswählen\n", "a1s = np.random.choice(np.array([\"up\",\"upC\",\"left\",\"right\"]),size=100,replace=True)\n", "\n", "a1s\n", "states = [0]\n", "actions = []\n", "\n", "#Berechne und speichere tatsächlich ausgeführte Aktionen, und Zustands-Folge\n", "for i in range(len(a1s)):\n", " sanew = performAction(states[i],a1s[i])\n", " actions = actions + [(a1s[i],sanew[0])]\n", " states = states + [sanew[1]]\n", "\n", "print(states)\n", "print(actions)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Implementieren Sie die Funktion `qLearn`, die für eine Sequenz von Aktionen und Zuständen (so wie oben erzeugt), eine Q-Matrix durch Q-Learning berechnet. Die initiale Q-Matrix soll nur aus Nullen bestehen. Benutzen Sie folgende Formel (diese resultiert aus der Standardregel für die Lernrate $\\alpha = 1$): \n", "$Q(s,a) = r_{s,a} + \\gamma \\ max_{a'}(Q(a(s),a')$ (wobei $a(s)$ den Nachfolge-Zustand von $s$, für die Aktion $a$, bezeichnet). `10 Punkte`." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def qLearn(actions,states,gamma=0.5):\n", " return Q\n", "Q = qLearn(actions,states)\n", "print(Q)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Betrachten Sie die resultierende Q-Matrix. Hat ihr Algorithmus eine intuitiv sinnvolle Policy gelernt? `2 Punkte`" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.5" } }, "nbformat": 4, "nbformat_minor": 2 }