diff --git a/Kalkulation Spinnerei.ipynb b/Kalkulation Spinnerei.ipynb new file mode 100644 index 0000000..2645681 --- /dev/null +++ b/Kalkulation Spinnerei.ipynb @@ -0,0 +1,2488 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Kalkulation Spinnerei\n", + "\n", + "Das folgende Szenario ist eine Variante um die Anzahl der Puffer zu testen\n", + "\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Flyer Puffer" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'Mit 1 Flyer-Puffern': 103104.44666666667, 'Mit 2 Flyer-Puffern': 104833.16666666667, 'Mit 3 Flyer-Puffern': 105546.96666666667, 'Mit 4 Flyer-Puffern': 107232.12666666668, 'Mit 5 Flyer-Puffern': 107945.92666666667}\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import rieter_ekalk as rek\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def eine_anlage(Anzahl_MG):\n", + "\n", + " rsm_direct_eingabe = {\n", + " }\n", + " rsm_fa_eingabe = {\n", + " \"Flex_A_Premium\":False, # braucht man das noch?\n", + " \"Getriebe_in_der_Mitte\":False, # braucht man das noch?\n", + " \"RSM_Einfahrt_Ein_Beidseitig\":False, # braucht man das noch?\n", + " \"Sensor_optisch_Traverse_zusätzlich\":6,\n", + " \"Bedientableau_1fach_Korrektur\":0,\n", + " \"Bedientableau_2fach_Korrektur\":4,\n", + " \"Weiche_Korrektur\":4,\n", + " \"RRA_bi_Korrektur\":0,\n", + " \"RRA_bi_auf_Haupstrecke\":10,\n", + " \"RRA_uni_Begegnung\":4,\n", + " \"gemeinsame_Wendung\":0,\n", + " \"Mit_Drucktaster_Korrektur\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " \"klemmkasten_rsm\":2,\n", + " }\n", + " flyer_f40_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine\":0, #wird in deckblatt-Klasse berechnet\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur\":0,\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer\":2, #wird in deckblatt-Klasse berechnet\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer\":2, #wird in deckblatt-Klasse berechnet\n", + " #\"Anzahl_Schienen\":0,\n", + " \"Single_Line_Durchfahrt\":False,\n", + " \"Nachpuffer\":False,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensor_induktiv_Spulenhalter\":0,\n", + " \"Sensor_induktiv_Spulenhalter_Korrektur\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " \"Bedientableau_2fach_Korrektur\":0,\n", + " #\"Interface_Doffer\":0,\n", + " \"Interface_Doffer_Korrektur\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_Flyer_bipolar\":0,\n", + " \"Weiche_nach_Flyer_bipolar_Korrektur\":0,\n", + " \"Dreifachweiche\":0,\n", + " \"Wechsel\":0,\n", + " \"Stopper\":0,\n", + " \"RA_uni\":0,\n", + " #\"RA_uni_abhebbar\":0,\n", + " \"RA_uni_abhebbar_Korrektur\":0,\n", + " #\"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " \"RA_uni_ohne_SPS_Ansteuerung_Korrektur\":0,\n", + " #\"RRA_BI_abhebbar\":0,\n", + " \"RRA_BI_abhebbar_Korrektur\":0,\n", + " \"RRA_bi\":0,\n", + " #\"RRA_bi_Korrektur\":0,\n", + " #\"RRA_bi_ohne_SPS_Ansteuerung\":0,\n", + " \"RRA_bi_ohne_SPS_Ansteuerung_Korrektur\":0,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " \"Doppelstreckenantrieb_Korrektur\":0,\n", + " \"RA_bi_abhebbar_unger_Schiene\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " neuenhauser_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Neuenhauser-Putzmaschine\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Neuenhauser-Putzmaschine_Vorpuffer\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Neuenhauser-Putzmaschine_Nachpuffer\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Anzahl_Vorstaustrecken\":0,\n", + " #\"Anzahl_Nachstaustrecken\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensorik_Zugpositionierung\":0,\n", + " #\"Sensor_WT18_Spulenprüfung_voll_leer\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " \"Bedientableau_2fach_Korrektur\":0,\n", + " #\"Interface_Putzmaschine\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_PM_bipolar\":0,\n", + " #\"RA_uni_abhebbar\":0,\n", + " \"RA_uni_abhebbar_Korrektur\":0,\n", + " #\"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " #\"RA_uni_abhebbar_unger_Sch\":0,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " flyer_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Flyer\":0, # äquivalent zu 'Anzahl'\n", + " #\"Anzahl_Schienen:\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensor_induktiv_Spulenalter_Zug_positionierung\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " #\"Interface_Doffer\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_Flyer_bipolar\":0,\n", + " \"Dreifachweiche\":0,\n", + " #\"Wechsel\":0,\n", + " \"Wechsel_Korrektur\":0,\n", + " #\"RA_bi_ohne_SPS-Ansteuerung\":0,\n", + " #\"RA_bi_abhebbar\":0,\n", + " \"RA_bi_abhebbar_Korrektur\":0,\n", + " \"RA_bi\":4,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " \"RA_bi_abhebbar_unger_Schiene\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " verbindungsstrecken_w_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Bedientableau_1fach\":0,\n", + " \"Bedientableau_2fach\":0,\n", + " \"Bedientableau_14fach\":0,\n", + " \"Weiche\":0,\n", + " \"Dreifachweiche\":0,\n", + " \"Kreuzungsweiche\":1,\n", + " \"Werma_Rundumleuchte_Störung\":0,\n", + " \"RA_uni\":0,\n", + " \"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " \"RA_bi\":0,\n", + " \"RA_bi_ohne_SPS-Ansteuerung\":0,\n", + " \"Doppelstreckenantrieb\":0\n", + " }\n", + " puffer_eingabe = {\n", + " # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " # \"Anzahl\":0,\n", + " # \"Puffer\":0, #äquivalent zu Anzahl\n", + " # \"Anzahl_Pufferstrecken\":0, #äquivalent zu Anzahl_Staustrecken\n", + " # \"Anzahl_Staustrecken\":0,\n", + " # \"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\": 1,\n", + " # \"Weiche\":0,\n", + " \"Weiche_Korrektur\": 0,\n", + " \"RA_bi_ungerade_Schiene\": 2,\n", + " # \"Doppelstreckenantrieb\":0,\n", + " # \"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\": 0,\n", + " # \"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\": 0,\n", + " }\n", + " turm_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Turm\":0, #äquivalent zu Anzahl\n", + " #\"Anzahl_Wendlungen\":0, #äquivalent zu Anzahl_Staustrecken\n", + " #\"Anzahl_Staustrecken\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " #\"Weiche\":0,\n", + " #\"RA_bi\":0,\n", + " \"RA_bi_Korrektur\":0,\n", + " #\"RA_bi_ohne_SPS\":0,\n", + " \"RA_bi_ohne_SPS_Korrektur\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " }\n", + " mg = rek.MG(Anzahl_MG,\n", + " rsm_direct=rsm_direct_eingabe,\n", + " rsm_fa=rsm_fa_eingabe,\n", + " flyer_f40=flyer_f40_eingabe,\n", + " neuenhauser=neuenhauser_eingabe,\n", + " flyer=flyer_eingabe,\n", + " verbindungsstrecken_w=verbindungsstrecken_w_eingabe,\n", + " puffer=puffer_eingabe,\n", + " turm=turm_eingabe)\n", + " Anzahl_EAS = {}\n", + " eas = rek.EA(Anzahl_EAS, mg)\n", + "\n", + " Anzahl_HW = {}\n", + "\n", + " hw = rek.HW(Anzahl_HW, mg, eas)\n", + "\n", + " emo = rek.EMO(eas, hw, mg)\n", + " Anzahl_DL = {}\n", + " dl = rek.Dienstleistung(Anzahl_DL, hw)\n", + " Anzahl_Ergebnis = {}\n", + " erg = rek.Ergebnis(Anzahl_Ergebnis, hw, dl, emo)\n", + " return erg.get_sum_of_costs(hw)\n", + "\n", + "\n", + "Anzahl_MG = {\n", + " \"SYSTEM\": \"FA\",\n", + " \"RSM\":14,\n", + " \"Flyer\":4,\n", + " \"Flyer_Puffer\":2,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine\":0,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer\":0,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer\":0,\n", + " \"Neuenhauser-Putzmaschine\":0,\n", + " \"Neuenhauser-Putzmaschine_Vorpuffer\":0,\n", + " \"Neuenhauser-Putzmaschine_Nachpuffer\":0,\n", + " \"Cason-Putzmaschine\":0,\n", + " \"Cason-Putzmaschine_Vorpuffer\":0,\n", + " \"Cason-Putzmaschine_Nachpuffer\":0,\n", + " \"Puffer\":1,\n", + " \"Anzahl_der_Pufferstrecken_pro_Puffer\":5,\n", + " \"Begegnungsstrecke_Bypass\":2,\n", + " \"Turm\":0,\n", + " \"Turm_Anzahl_Wendlungen\":0,\n", + " }\n", + "\n", + "\n", + "variationen = {}\n", + "k = 1\n", + "while k < 6:\n", + " Anzahl_MG.update({\"Flyer_Puffer\": k})\n", + " erg = eine_anlage(Anzahl_MG)\n", + " variationen.update({f\"Mit {k} Flyer-Puffern\": erg})\n", + " k += 1\n", + "print(variationen)\n", + "\n", + "lists = sorted(variationen.items()) # sorted by key, return a list of tuples\n", + "\n", + "x, y = zip(*lists) \n", + "\n", + "plt.plot(x, y)\n", + "plt.show()\n", + "\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Puffer" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'Mit 1 Puffern': 104833.16666666667, 'Mit 2 Puffern': 105853.08666666667, 'Mit 3 Puffern': 106873.00666666667, 'Mit 4 Puffern': 107892.92666666667, 'Mit 5 Puffern': 108956.40666666668}\n" + ] + }, + { + "data": { + "image/png": "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RkxMDNavX48//vjDvJSDTCa7Z5aGoLTchEW7TuDTA9kAgI6+blg5KhyBns4SJyMiIqI7qunXDvft2ycA3HYZM2aMEOLm8ggzZ84U3t7eQqVSiX79+omMjAzz/RMTE0VERIRQq9XCwcFBtG/fXrz//vuipKSk0nFSU1NFz549hUqlEs2bNxcLFiy4LcvGjRtFmzZthFKpFB07dhQ7duyodPu9styL1F/zPHu1UDy24oAImLZdBEzbLmZvSxMlZeWSZCEiImoopH7+FkIImRBCSNjvrJper4darYZOp6v3z2N9m3oJf998FPmGcqgd7fHBsBD07+B97zsSERE1clI+f1fgB3isTHGpEfO2pyP+8HkAQLcAdyyPC4NvE0eJkxEREVF1sWBZkczcfIxbl4STuQWQyYBxDwVhUlQw7BQW/S4CERER1TEWLCsghMDGP85j9jfpKCkzwdNFhaUjQtEzmCdpJiIiaohYsCSWX1KGGVvS8E3qJQBAr2BPfDg8FM1ceZJmIiKihooFS0JHLuRhQnwyzl4rgkIuwxsD2uKl3q0gl/N0N0RERA0ZC5YEhBD4969nsOC74ygzCjRv4ojlcWHoGsCTNBMREdkCFiwJpF3U453txwAAAztq8I+hXaB2spc4FREREVkKC5YEOrdQ47V+wfB0UeKpBwIgk/EtQSIiIlvCgiWR1/u3kToCERER1REusERERERkYSxYRERERBbGgkVERERkYSxYRERERBbGgkVERERkYSxYRERERBbGgkVERERkYSxYRERERBbGgkVERERkYSxYRERERBbGgkVERERkYSxYRERERBbGgkVERERkYXZSB7BmQggAgF6vlzgJERERVVfF83bF87gUWLDuIj8/HwDg5+cncRIiIiKqqfz8fKjVakmOLRNS1jsrZzKZcOnSJbi6ukImk1l033q9Hn5+fjh//jzc3Nwsum+qH5zDho3z1/BxDhu+uppDIQTy8/Ph6+sLuVyaT0PxFay7kMvlaNGiRZ0ew83Njf8wNHCcw4aN89fwcQ4bvrqYQ6leuarAD7kTERERWRgLFhEREZGFsWBJRKVSYfbs2VCpVFJHoVriHDZsnL+Gj3PY8NnyHPJD7kREREQWxlewiIiIiCyMBYuIiIjIwliwiIiIiCys0Reshx56CJMmTZI6RrUVFRVh6NChcHNzg0wmQ15eXpXb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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import rieter_ekalk as rek\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def eine_anlage(Anzahl_MG):\n", + "\n", + " rsm_direct_eingabe = {\n", + " }\n", + " rsm_fa_eingabe = {\n", + " \"Flex_A_Premium\":False, # braucht man das noch?\n", + " \"Getriebe_in_der_Mitte\":False, # braucht man das noch?\n", + " \"RSM_Einfahrt_Ein_Beidseitig\":False, # braucht man das noch?\n", + " \"Sensor_optisch_Traverse_zusätzlich\":6,\n", + " \"Bedientableau_1fach_Korrektur\":0,\n", + " \"Bedientableau_2fach_Korrektur\":4,\n", + " \"Weiche_Korrektur\":4,\n", + " \"RRA_bi_Korrektur\":0,\n", + " \"RRA_bi_auf_Haupstrecke\":10,\n", + " \"RRA_uni_Begegnung\":4,\n", + " \"gemeinsame_Wendung\":0,\n", + " \"Mit_Drucktaster_Korrektur\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " \"klemmkasten_rsm\":2,\n", + " }\n", + " flyer_f40_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine\":0, #wird in deckblatt-Klasse berechnet\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur\":0,\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer\":2, #wird in deckblatt-Klasse berechnet\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer\":2, #wird in deckblatt-Klasse berechnet\n", + " #\"Anzahl_Schienen\":0,\n", + " \"Single_Line_Durchfahrt\":False,\n", + " \"Nachpuffer\":False,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensor_induktiv_Spulenhalter\":0,\n", + " \"Sensor_induktiv_Spulenhalter_Korrektur\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " \"Bedientableau_2fach_Korrektur\":0,\n", + " #\"Interface_Doffer\":0,\n", + " \"Interface_Doffer_Korrektur\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_Flyer_bipolar\":0,\n", + " \"Weiche_nach_Flyer_bipolar_Korrektur\":0,\n", + " \"Dreifachweiche\":0,\n", + " \"Wechsel\":0,\n", + " \"Stopper\":0,\n", + " \"RA_uni\":0,\n", + " #\"RA_uni_abhebbar\":0,\n", + " \"RA_uni_abhebbar_Korrektur\":0,\n", + " #\"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " \"RA_uni_ohne_SPS_Ansteuerung_Korrektur\":0,\n", + " #\"RRA_BI_abhebbar\":0,\n", + " \"RRA_BI_abhebbar_Korrektur\":0,\n", + " \"RRA_bi\":0,\n", + " #\"RRA_bi_Korrektur\":0,\n", + " #\"RRA_bi_ohne_SPS_Ansteuerung\":0,\n", + " \"RRA_bi_ohne_SPS_Ansteuerung_Korrektur\":0,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " \"Doppelstreckenantrieb_Korrektur\":0,\n", + " \"RA_bi_abhebbar_unger_Schiene\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " neuenhauser_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Neuenhauser-Putzmaschine\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Neuenhauser-Putzmaschine_Vorpuffer\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Neuenhauser-Putzmaschine_Nachpuffer\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Anzahl_Vorstaustrecken\":0,\n", + " #\"Anzahl_Nachstaustrecken\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensorik_Zugpositionierung\":0,\n", + " #\"Sensor_WT18_Spulenprüfung_voll_leer\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " \"Bedientableau_2fach_Korrektur\":0,\n", + " #\"Interface_Putzmaschine\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_PM_bipolar\":0,\n", + " #\"RA_uni_abhebbar\":0,\n", + " \"RA_uni_abhebbar_Korrektur\":0,\n", + " #\"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " #\"RA_uni_abhebbar_unger_Sch\":0,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " flyer_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Flyer\":0, # äquivalent zu 'Anzahl'\n", + " #\"Anzahl_Schienen:\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensor_induktiv_Spulenalter_Zug_positionierung\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " #\"Interface_Doffer\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_Flyer_bipolar\":0,\n", + " \"Dreifachweiche\":0,\n", + " #\"Wechsel\":0,\n", + " \"Wechsel_Korrektur\":0,\n", + " #\"RA_bi_ohne_SPS-Ansteuerung\":0,\n", + " #\"RA_bi_abhebbar\":0,\n", + " \"RA_bi_abhebbar_Korrektur\":0,\n", + " \"RA_bi\":4,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " \"RA_bi_abhebbar_unger_Schiene\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " verbindungsstrecken_w_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Bedientableau_1fach\":0,\n", + " \"Bedientableau_2fach\":0,\n", + " \"Bedientableau_14fach\":0,\n", + " \"Weiche\":0,\n", + " \"Dreifachweiche\":0,\n", + " \"Kreuzungsweiche\":1,\n", + " \"Werma_Rundumleuchte_Störung\":0,\n", + " \"RA_uni\":0,\n", + " \"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " \"RA_bi\":0,\n", + " \"RA_bi_ohne_SPS-Ansteuerung\":0,\n", + " \"Doppelstreckenantrieb\":0\n", + " }\n", + " puffer_eingabe = {\n", + " # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " # \"Anzahl\":0,\n", + " # \"Puffer\":0, #äquivalent zu Anzahl\n", + " # \"Anzahl_Pufferstrecken\":0, #äquivalent zu Anzahl_Staustrecken\n", + " # \"Anzahl_Staustrecken\":0,\n", + " # \"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\": 1,\n", + " # \"Weiche\":0,\n", + " \"Weiche_Korrektur\": 0,\n", + " \"RA_bi_ungerade_Schiene\": 2,\n", + " # \"Doppelstreckenantrieb\":0,\n", + " # \"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\": 0,\n", + " # \"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\": 0,\n", + " }\n", + " turm_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Turm\":0, #äquivalent zu Anzahl\n", + " #\"Anzahl_Wendlungen\":0, #äquivalent zu Anzahl_Staustrecken\n", + " #\"Anzahl_Staustrecken\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " #\"Weiche\":0,\n", + " #\"RA_bi\":0,\n", + " \"RA_bi_Korrektur\":0,\n", + " #\"RA_bi_ohne_SPS\":0,\n", + " \"RA_bi_ohne_SPS_Korrektur\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " }\n", + " mg = rek.MG(Anzahl_MG,\n", + " rsm_direct=rsm_direct_eingabe,\n", + " rsm_fa=rsm_fa_eingabe,\n", + " flyer_f40=flyer_f40_eingabe,\n", + " neuenhauser=neuenhauser_eingabe,\n", + " flyer=flyer_eingabe,\n", + " verbindungsstrecken_w=verbindungsstrecken_w_eingabe,\n", + " puffer=puffer_eingabe,\n", + " turm=turm_eingabe)\n", + " Anzahl_EAS = {}\n", + " eas = rek.EA(Anzahl_EAS, mg)\n", + "\n", + " Anzahl_HW = {}\n", + "\n", + " hw = rek.HW(Anzahl_HW, mg, eas)\n", + "\n", + " emo = rek.EMO(eas, hw, mg)\n", + " Anzahl_DL = {}\n", + " dl = rek.Dienstleistung(Anzahl_DL, hw)\n", + " Anzahl_Ergebnis = {}\n", + " erg = rek.Ergebnis(Anzahl_Ergebnis, hw, dl, emo)\n", + " return erg.get_sum_of_costs(hw)\n", + "\n", + "\n", + "Anzahl_MG = {\n", + " \"SYSTEM\": \"FA\",\n", + " \"RSM\":14,\n", + " \"Flyer\":4,\n", + " \"Flyer_Puffer\":2,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine\":0,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer\":0,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer\":0,\n", + " \"Neuenhauser-Putzmaschine\":0,\n", + " \"Neuenhauser-Putzmaschine_Vorpuffer\":0,\n", + " \"Neuenhauser-Putzmaschine_Nachpuffer\":0,\n", + " \"Cason-Putzmaschine\":0,\n", + " \"Cason-Putzmaschine_Vorpuffer\":0,\n", + " \"Cason-Putzmaschine_Nachpuffer\":0,\n", + " \"Puffer\":1,\n", + " \"Anzahl_der_Pufferstrecken_pro_Puffer\":5,\n", + " \"Begegnungsstrecke_Bypass\":2,\n", + " \"Turm\":0,\n", + " \"Turm_Anzahl_Wendlungen\":0,\n", + " }\n", + "\n", + "\n", + "variationen = {}\n", + "k = 1\n", + "while k < 6:\n", + " Anzahl_MG.update({\"Puffer\": k})\n", + " erg = eine_anlage(Anzahl_MG)\n", + " variationen.update({f\"Mit {k} Puffern\": erg})\n", + " k += 1\n", + "print(variationen)\n", + "\n", + "lists = sorted(variationen.items()) # sorted by key, return a list of tuples\n", + "\n", + "x, y = zip(*lists) \n", + "\n", + "plt.plot(x, y)\n", + "plt.show()\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Anzahl der Pufferstrecken pro Puffer" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'Mit 2 Pufferstrecken pro Puffer': 104265.42666666667, 'Mit 3 Pufferstrecken pro Puffer': 104380.98666666666, 'Mit 4 Pufferstrecken pro Puffer': 104717.60666666666, 'Mit 5 Pufferstrecken pro Puffer': 104833.16666666667}\n", + "Hinweis: mind. 2 Pufferstrecken pro Puffer sollten existieren\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import rieter_ekalk as rek\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def eine_anlage(Anzahl_MG):\n", + "\n", + " rsm_direct_eingabe = {\n", + " }\n", + " rsm_fa_eingabe = {\n", + " \"Flex_A_Premium\":False, # braucht man das noch?\n", + " \"Getriebe_in_der_Mitte\":False, # braucht man das noch?\n", + " \"RSM_Einfahrt_Ein_Beidseitig\":False, # braucht man das noch?\n", + " \"Sensor_optisch_Traverse_zusätzlich\":6,\n", + " \"Bedientableau_1fach_Korrektur\":0,\n", + " \"Bedientableau_2fach_Korrektur\":4,\n", + " \"Weiche_Korrektur\":4,\n", + " \"RRA_bi_Korrektur\":0,\n", + " \"RRA_bi_auf_Haupstrecke\":10,\n", + " \"RRA_uni_Begegnung\":4,\n", + " \"gemeinsame_Wendung\":0,\n", + " \"Mit_Drucktaster_Korrektur\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " \"klemmkasten_rsm\":2,\n", + " }\n", + " flyer_f40_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine\":0, #wird in deckblatt-Klasse berechnet\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur\":0,\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer\":2, #wird in deckblatt-Klasse berechnet\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer\":2, #wird in deckblatt-Klasse berechnet\n", + " #\"Anzahl_Schienen\":0,\n", + " \"Single_Line_Durchfahrt\":False,\n", + " \"Nachpuffer\":False,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensor_induktiv_Spulenhalter\":0,\n", + " \"Sensor_induktiv_Spulenhalter_Korrektur\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " \"Bedientableau_2fach_Korrektur\":0,\n", + " #\"Interface_Doffer\":0,\n", + " \"Interface_Doffer_Korrektur\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_Flyer_bipolar\":0,\n", + " \"Weiche_nach_Flyer_bipolar_Korrektur\":0,\n", + " \"Dreifachweiche\":0,\n", + " \"Wechsel\":0,\n", + " \"Stopper\":0,\n", + " \"RA_uni\":0,\n", + " #\"RA_uni_abhebbar\":0,\n", + " \"RA_uni_abhebbar_Korrektur\":0,\n", + " #\"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " \"RA_uni_ohne_SPS_Ansteuerung_Korrektur\":0,\n", + " #\"RRA_BI_abhebbar\":0,\n", + " \"RRA_BI_abhebbar_Korrektur\":0,\n", + " \"RRA_bi\":0,\n", + " #\"RRA_bi_Korrektur\":0,\n", + " #\"RRA_bi_ohne_SPS_Ansteuerung\":0,\n", + " \"RRA_bi_ohne_SPS_Ansteuerung_Korrektur\":0,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " \"Doppelstreckenantrieb_Korrektur\":0,\n", + " \"RA_bi_abhebbar_unger_Schiene\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " neuenhauser_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Neuenhauser-Putzmaschine\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Neuenhauser-Putzmaschine_Vorpuffer\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Neuenhauser-Putzmaschine_Nachpuffer\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Anzahl_Vorstaustrecken\":0,\n", + " #\"Anzahl_Nachstaustrecken\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensorik_Zugpositionierung\":0,\n", + " #\"Sensor_WT18_Spulenprüfung_voll_leer\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " \"Bedientableau_2fach_Korrektur\":0,\n", + " #\"Interface_Putzmaschine\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_PM_bipolar\":0,\n", + " #\"RA_uni_abhebbar\":0,\n", + " \"RA_uni_abhebbar_Korrektur\":0,\n", + " #\"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " #\"RA_uni_abhebbar_unger_Sch\":0,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " flyer_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Flyer\":0, # äquivalent zu 'Anzahl'\n", + " #\"Anzahl_Schienen:\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensor_induktiv_Spulenalter_Zug_positionierung\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " #\"Interface_Doffer\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_Flyer_bipolar\":0,\n", + " \"Dreifachweiche\":0,\n", + " #\"Wechsel\":0,\n", + " \"Wechsel_Korrektur\":0,\n", + " #\"RA_bi_ohne_SPS-Ansteuerung\":0,\n", + " #\"RA_bi_abhebbar\":0,\n", + " \"RA_bi_abhebbar_Korrektur\":0,\n", + " \"RA_bi\":4,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " \"RA_bi_abhebbar_unger_Schiene\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " verbindungsstrecken_w_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Bedientableau_1fach\":0,\n", + " \"Bedientableau_2fach\":0,\n", + " \"Bedientableau_14fach\":0,\n", + " \"Weiche\":0,\n", + " \"Dreifachweiche\":0,\n", + " \"Kreuzungsweiche\":1,\n", + " \"Werma_Rundumleuchte_Störung\":0,\n", + " \"RA_uni\":0,\n", + " \"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " \"RA_bi\":0,\n", + " \"RA_bi_ohne_SPS-Ansteuerung\":0,\n", + " \"Doppelstreckenantrieb\":0\n", + " }\n", + " puffer_eingabe = {\n", + " # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " # \"Anzahl\":0,\n", + " # \"Puffer\":0, #äquivalent zu Anzahl\n", + " # \"Anzahl_Pufferstrecken\":0, #äquivalent zu Anzahl_Staustrecken\n", + " # \"Anzahl_Staustrecken\":0,\n", + " # \"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\": 1,\n", + " # \"Weiche\":0,\n", + " \"Weiche_Korrektur\": 0,\n", + " \"RA_bi_ungerade_Schiene\": 2,\n", + " # \"Doppelstreckenantrieb\":0,\n", + " # \"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\": 0,\n", + " # \"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\": 0,\n", + " }\n", + " turm_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Turm\":0, #äquivalent zu Anzahl\n", + " #\"Anzahl_Wendlungen\":0, #äquivalent zu Anzahl_Staustrecken\n", + " #\"Anzahl_Staustrecken\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " #\"Weiche\":0,\n", + " #\"RA_bi\":0,\n", + " \"RA_bi_Korrektur\":0,\n", + " #\"RA_bi_ohne_SPS\":0,\n", + " \"RA_bi_ohne_SPS_Korrektur\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " }\n", + " mg = rek.MG(Anzahl_MG,\n", + " rsm_direct=rsm_direct_eingabe,\n", + " rsm_fa=rsm_fa_eingabe,\n", + " flyer_f40=flyer_f40_eingabe,\n", + " neuenhauser=neuenhauser_eingabe,\n", + " flyer=flyer_eingabe,\n", + " verbindungsstrecken_w=verbindungsstrecken_w_eingabe,\n", + " puffer=puffer_eingabe,\n", + " turm=turm_eingabe)\n", + " Anzahl_EAS = {}\n", + " eas = rek.EA(Anzahl_EAS, mg)\n", + "\n", + " Anzahl_HW = {}\n", + "\n", + " hw = rek.HW(Anzahl_HW, mg, eas)\n", + "\n", + " emo = rek.EMO(eas, hw, mg)\n", + " Anzahl_DL = {}\n", + " dl = rek.Dienstleistung(Anzahl_DL, hw)\n", + " Anzahl_Ergebnis = {}\n", + " erg = rek.Ergebnis(Anzahl_Ergebnis, hw, dl, emo)\n", + " return erg.get_sum_of_costs(hw)\n", + "\n", + "\n", + "Anzahl_MG = {\n", + " \"SYSTEM\": \"FA\",\n", + " \"RSM\":14,\n", + " \"Flyer\":4,\n", + " \"Flyer_Puffer\":2,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine\":0,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer\":0,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer\":0,\n", + " \"Neuenhauser-Putzmaschine\":0,\n", + " \"Neuenhauser-Putzmaschine_Vorpuffer\":0,\n", + " \"Neuenhauser-Putzmaschine_Nachpuffer\":0,\n", + " \"Cason-Putzmaschine\":0,\n", + " \"Cason-Putzmaschine_Vorpuffer\":0,\n", + " \"Cason-Putzmaschine_Nachpuffer\":0,\n", + " \"Puffer\":1,\n", + " \"Anzahl_der_Pufferstrecken_pro_Puffer\":5,\n", + " \"Begegnungsstrecke_Bypass\":2,\n", + " \"Turm\":0,\n", + " \"Turm_Anzahl_Wendlungen\":0,\n", + " }\n", + "\n", + "\n", + "variationen = {}\n", + "k = 2\n", + "while k < 6:\n", + " Anzahl_MG.update({\"Anzahl_der_Pufferstrecken_pro_Puffer\": k})\n", + " erg = eine_anlage(Anzahl_MG)\n", + " variationen.update({f\"Mit {k} Pufferstrecken pro Puffer\": erg})\n", + " k += 1\n", + "print(variationen)\n", + "print(\"Hinweis: mind. 2 Pufferstrecken pro Puffer sollten existieren\")\n", + "lists = sorted(variationen.items()) # sorted by key, return a list of tuples\n", + "\n", + "x, y = zip(*lists) \n", + "\n", + "plt.plot(x, y)\n", + "plt.show()\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Flyer Electrojet incl intergrierte Putzmaschine Vorpuffer" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'Mit 2 Vorpuffern': 104833.16666666667, 'Mit 3 Vorpuffern': 104833.16666666667, 'Mit 4 Vorpuffern': 104833.16666666667, 'Mit 5 Vorpuffern': 104833.16666666667}\n", + "Vorpuffer sollte > 1 sein\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmMAAAGdCAYAAABeuHSJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAs6ElEQVR4nO3df1TVdZ7H8dfFvBc0L6EmiIFipqbjUOmRmH66smCREzNttdZpGKMfbjab2WbjTP6obY8u1lg2mNWcRZu2/HEKt9JsTW2YTaLJxF9jlomjm4JO6b3KKCK89w8P3+UqKiT4kXo+zvme4/fzed/P93PxfbwvL/cLPjMzAQAAwIko1xsAAAD4PiOMAQAAOEQYAwAAcIgwBgAA4BBhDAAAwCHCGAAAgEOEMQAAAIcIYwAAAA6d53oD57K6ujrt2rVLnTp1ks/nc70dAADQBGamAwcOKDExUVFR5/77ToSxU9i1a5eSkpJcbwMAAHwLO3fu1EUXXeR6G6dFGDuFTp06STr2lxkMBh3vBgAANEU4HFZSUpL3On6uI4ydQv23JoPBIGEMAIA2pq18xOjc/0YqAADAdxhhDAAAwCHCGAAAgEOEMQAAAIcIYwAAAA4RxgAAABwijAEAADhEGAMAAHCIMAYAAOAQYQwAAMAhwhgAAIBDhDEAAACHmh3GiouLNXLkSCUmJsrn82nx4sUR82+++aYyMzPVpUsX+Xw+lZWVnbDG4cOHNXbsWHXp0kXnn3++brnlFlVWVkbU7NixQ9nZ2erQoYO6deumRx99VEePHo2o+eCDD3TFFVcoEAioT58+mjt37gnXKigoUK9evRQdHa20tDR9/PHHzX3KAAAArabZYayqqkqpqakqKCg46fzVV1+tf//3fz/pGg8//LDefvttLVq0SH/4wx+0a9cu/fSnP/Xma2trlZ2drSNHjmj16tWaN2+e5s6dq8mTJ3s15eXlys7O1rBhw1RWVqZx48bpnnvu0XvvvefVLFiwQOPHj9eUKVP06aefKjU1VVlZWdqzZ09znzYAAEDrsDMgyYqKihqdKy8vN0m2du3aiPH9+/db+/btbdGiRd7Y5s2bTZKVlJSYmdnSpUstKirKKioqvJoXXnjBgsGgVVdXm5nZhAkTbODAgRFr33777ZaVleWdDx061MaOHeud19bWWmJiok2bNq1Jzy8UCpkkC4VCTaoHAADutbXX77P+mbE1a9aopqZGGRkZ3lj//v2VnJyskpISSVJJSYkGDRqk+Ph4ryYrK0vhcFibNm3yahquUV9Tv8aRI0e0Zs2aiJqoqChlZGR4Ncerrq5WOByOOAAAAFrTWQ9jFRUV8vv9uuCCCyLG4+PjVVFR4dU0DGL18/Vzp6oJh8M6dOiQ/vrXv6q2trbRmvo1jjdt2jTFxsZ6R1JS0rd+ngAAAE3B3ZQNTJw4UaFQyDt27tzpeksAAOA77ryzfcGEhAQdOXJE+/fvj3h3rLKyUgkJCV7N8Xc91t9t2bDm+DswKysrFQwGFRMTo3bt2qldu3aN1tSvcbxAIKBAIHBGzw8AAKA5zvo7Y4MHD1b79u21YsUKb2zLli3asWOH0tPTJUnp6enasGFDxF2Py5cvVzAY1IABA7yahmvU19Sv4ff7NXjw4Iiauro6rVixwqsBAABwrdnvjB08eFBbt271zsvLy1VWVqbOnTsrOTlZ33zzjXbs2KFdu3ZJOha0pGPvZCUkJCg2NlZ5eXkaP368OnfurGAwqF/84hdKT0/XlVdeKUnKzMzUgAEDdNdddyk/P18VFRV6/PHHNXbsWO+dqzFjxui3v/2tJkyYoLvvvlsrV67UwoULtWTJEm9v48ePV25uroYMGaKhQ4fq2WefVVVVlUaPHv3tv2IAAAAtqbm3X65atcoknXDk5uaamVlhYWGj81OmTPHWOHTokD3wwAMWFxdnHTp0sJ/85Ce2e/fuiOts377dbrjhBouJibGuXbvaI488YjU1NSfs5bLLLjO/32+9e/e2wsLCE/b7/PPPW3Jysvn9fhs6dKh99NFHTX6ube3WWAAA0PZev31mZm5i4LkvHA4rNjZWoVBIwWDQ9XYAAEATtLXXb+6mBAAAcIgwBgAA4BBhDAAAwCHCGAAAgEOEMQAAAIcIYwAAAA4RxgAAABwijAEAADhEGAMAAHCIMAYAAOAQYQwAAMAhwhgAAIBDhDEAAACHCGMAAAAOEcYAAAAcIowBAAA4RBgDAABwiDAGAADgEGEMAADAIcIYAACAQ4QxAAAAhwhjAAAADhHGAAAAHCKMAQAAOEQYAwAAcIgwBgAA4BBhDAAAwCHCGAAAgEOEMQAAAIcIYwAAAA4RxgAAABwijAEAADhEGAMAAHCIMAYAAOAQYQwAAMAhwhgAAIBDhDEAAACHCGMAAAAOEcYAAAAcIowBAAA4RBgDAABwiDAGAADgEGEMAADAIcIYAACAQ4QxAAAAhwhjAAAADhHGAAAAHCKMAQAAOEQYAwAAcIgwBgAA4BBhDAAAwCHCGAAAgEOEMQAAAIeaHcaKi4s1cuRIJSYmyufzafHixRHzZqbJkyere/fuiomJUUZGhr744ouIms8//1w333yzunbtqmAwqKuvvlqrVq2KqNmxY4eys7PVoUMHdevWTY8++qiOHj0aUfPBBx/oiiuuUCAQUJ8+fTR37twT9ltQUKBevXopOjpaaWlp+vjjj5v7lAEAAFpNs8NYVVWVUlNTVVBQ0Oh8fn6+Zs2apTlz5qi0tFQdO3ZUVlaWDh8+7NXcdNNNOnr0qFauXKk1a9YoNTVVN910kyoqKiRJtbW1ys7O1pEjR7R69WrNmzdPc+fO1eTJk701ysvLlZ2drWHDhqmsrEzjxo3TPffco/fee8+rWbBggcaPH68pU6bo008/VWpqqrKysrRnz57mPm0AAIDWYWdAkhUVFXnndXV1lpCQYDNmzPDG9u/fb4FAwF5//XUzM9u7d69JsuLiYq8mHA6bJFu+fLmZmS1dutSioqKsoqLCq3nhhRcsGAxadXW1mZlNmDDBBg4cGLGf22+/3bKysrzzoUOH2tixY73z2tpaS0xMtGnTpjXp+YVCIZNkoVCoSfUAAMC9tvb63aKfGSsvL1dFRYUyMjK8sdjYWKWlpamkpESS1KVLF/Xr10+vvPKKqqqqdPToUb344ovq1q2bBg8eLEkqKSnRoEGDFB8f762TlZWlcDisTZs2eTUNr1NfU3+dI0eOaM2aNRE1UVFRysjI8GqOV11drXA4HHEAAAC0pvNacrH6bzM2DFH15/VzPp9P77//vnJyctSpUydFRUWpW7duWrZsmeLi4rx1Gluj4TVOVhMOh3Xo0CHt27dPtbW1jdZ89tlnje5/2rRpeuKJJ77NUwcAAPhWzvrdlGamsWPHqlu3bvrjH/+ojz/+WDk5ORo5cqR27959trcTYeLEiQqFQt6xc+dOp/sBAADffS0axhISEiRJlZWVEeOVlZXe3MqVK/XOO+9o/vz5uuqqq3TFFVdo9uzZiomJ0bx587x1Gluj4TVOVhMMBhUTE6OuXbuqXbt2p9zL8QKBgILBYMQBAADQmlo0jKWkpCghIUErVqzwxsLhsEpLS5Weni5J+tvf/nbswlGRl46KilJdXZ0kKT09XRs2bIi463H58uUKBoMaMGCAV9PwOvU19dfx+/0aPHhwRE1dXZ1WrFjh1QAAALjW7DB28OBBlZWVqaysTNKxD+2XlZVpx44d8vl8GjdunJ566im99dZb2rBhg372s58pMTFROTk5ko6FqLi4OOXm5mrdunX6/PPP9eijj3o/qkKSMjMzNWDAAN11111at26d3nvvPT3++OMaO3asAoGAJGnMmDHatm2bJkyYoM8++0yzZ8/WwoUL9fDDD3t7HT9+vF5++WXNmzdPmzdv1j/90z+pqqpKo0ePPsMvGwAAQAtp7u2Xq1atMkknHLm5uWZ27MdbTJo0yeLj4y0QCNjw4cNty5YtEWv86U9/sszMTOvcubN16tTJrrzySlu6dGlEzfbt2+2GG26wmJgY69q1qz3yyCNWU1Nzwl4uu+wy8/v91rt3byssLDxhv88//7wlJyeb3++3oUOH2kcffdTk59rWbo0FAABt7/XbZ2bmMAue08LhsGJjYxUKhfj8GAAAbURbe/3md1MCAAA4RBgDAABwiDAGAADgEGEMAADAIcIYAACAQ4QxAAAAhwhjAAAADhHGAAAAHCKMAQAAOEQYAwAAcIgwBgAA4BBhDAAAwCHCGAAAgEOEMQAAAIcIYwAAAA4RxgAAABwijAEAADhEGAMAAHCIMAYAAOAQYQwAAMAhwhgAAIBDhDEAAACHCGMAAAAOEcYAAAAcIowBAAA4RBgDAABwiDAGAADgEGEMAADAIcIYAACAQ4QxAAAAhwhjAAAADhHGAAAAHCKMAQAAOEQYAwAAcIgwBgAA4BBhDAAAwCHCGAAAgEOEMQAAAIcIYwAAAA4RxgAAABwijAEAADhEGAMAAHCIMAYAAOAQYQwAAMAhwhgAAIBDhDEAAACHCGMAAAAOEcYAAAAcIowBAAA4RBgDAABwiDAGAADgEGEMAADAIcIYAACAQ80OY8XFxRo5cqQSExPl8/m0ePHiiHkz0+TJk9W9e3fFxMQoIyNDX3zxxQnrLFmyRGlpaYqJiVFcXJxycnIi5nfs2KHs7Gx16NBB3bp106OPPqqjR49G1HzwwQe64oorFAgE1KdPH82dO/eE6xQUFKhXr16Kjo5WWlqaPv744+Y+ZQAAgFbT7DBWVVWl1NRUFRQUNDqfn5+vWbNmac6cOSotLVXHjh2VlZWlw4cPezVvvPGG7rrrLo0ePVrr1q3Thx9+qDvuuMObr62tVXZ2to4cOaLVq1dr3rx5mjt3riZPnuzVlJeXKzs7W8OGDVNZWZnGjRune+65R++9955Xs2DBAo0fP15TpkzRp59+qtTUVGVlZWnPnj3NfdoAAACtw86AJCsqKvLO6+rqLCEhwWbMmOGN7d+/3wKBgL3++utmZlZTU2M9evSw3/3udyddd+nSpRYVFWUVFRXe2AsvvGDBYNCqq6vNzGzChAk2cODAiMfdfvvtlpWV5Z0PHTrUxo4d653X1tZaYmKiTZs2rUnPLxQKmSQLhUJNqgcAAO61tdfvFv3MWHl5uSoqKpSRkeGNxcbGKi0tTSUlJZKkTz/9VF999ZWioqJ0+eWXq3v37rrhhhu0ceNG7zElJSUaNGiQ4uPjvbGsrCyFw2Ft2rTJq2l4nfqa+uscOXJEa9asiaiJiopSRkaGV3O86upqhcPhiAMAAKA1tWgYq6iokKSIEFV/Xj+3bds2SdLUqVP1+OOP65133lFcXJyuv/56ffPNN946ja3R8BonqwmHwzp06JD++te/qra29pR7Od60adMUGxvrHUlJSc3+GgAAADTHWb+bsq6uTpL061//WrfccosGDx6swsJC+Xw+LVq06GxvJ8LEiRMVCoW8Y+fOnU73AwAAvvtaNIwlJCRIkiorKyPGKysrvbnu3btLkgYMGODNBwIB9e7dWzt27PDWaWyNhtc4WU0wGFRMTIy6du2qdu3anXIvxwsEAgoGgxEHAABAa2rRMJaSkqKEhAStWLHCGwuHwyotLVV6erokafDgwQoEAtqyZYtXU1NTo+3bt6tnz56SpPT0dG3YsCHirsfly5crGAx6IS49PT3iOvU19dfx+/0aPHhwRE1dXZ1WrFjh1QAAALh2XnMfcPDgQW3dutU7Ly8vV1lZmTp37qzk5GSNGzdOTz31lC655BKlpKRo0qRJSkxM9H6OWDAY1JgxYzRlyhQlJSWpZ8+emjFjhiTp1ltvlSRlZmZqwIABuuuuu5Sfn6+Kigo9/vjjGjt2rAKBgCRpzJgx+u1vf6sJEybo7rvv1sqVK7Vw4UItWbLE29v48eOVm5urIUOGaOjQoXr22WdVVVWl0aNHf+svGAAAQItq7u2Xq1atMkknHLm5uWZ27MdbTJo0yeLj4y0QCNjw4cNty5YtEWscOXLEHnnkEevWrZt16tTJMjIybOPGjRE127dvtxtuuMFiYmKsa9eu9sgjj1hNTc0Je7nsssvM7/db7969rbCw8IT9Pv/885acnGx+v9+GDh1qH330UZOfa1u7NRYAALS912+fmZnDLHhOC4fDio2NVSgU4vNjAAC0EW3t9ZvfTQkAAOAQYQwAAMAhwhgAAIBDhDEAAACHCGMAAAAOEcYAAAAcIowBAAA4RBgDAABwiDAGAADgEGEMAADAIcIYAACAQ4QxAAAAhwhjAAAADhHGAAAAHCKMAQAAOEQYAwAAcIgwBgAA4BBhDAAAwCHCGAAAgEOEMQAAAIcIYwAAAA4RxgAAABwijAEAADhEGAMAAHCIMAYAAOAQYQwAAMAhwhgAAIBDhDEAAACHznO9ge8jM9OhmlrX2wAA4JwQ076dfD6f6204Qxhz4FBNrQZMfs/1NgAAOCf8+cksdfB/fyMJ36YEAABw6PsbQx2Kad9Of34yy/U2AAA4J8S0b+d6C04Rxhzw+Xzf67djAQDA/+PblAAAAA4RxgAAABwijAEAADhEGAMAAHCIMAYAAOAQYQwAAMAhwhgAAIBDhDEAAACHCGMAAAAOEcYAAAAcIowBAAA4RBgDAABwiDAGAADgEGEMAADAIcIYAACAQ4QxAAAAhwhjAAAADhHGAAAAHCKMAQAAOEQYAwAAcKjZYay4uFgjR45UYmKifD6fFi9eHDFvZpo8ebK6d++umJgYZWRk6Isvvmh0rerqal122WXy+XwqKyuLmFu/fr2uueYaRUdHKykpSfn5+Sc8ftGiRerfv7+io6M1aNAgLV269FvvBQAAwIVmh7GqqiqlpqaqoKCg0fn8/HzNmjVLc+bMUWlpqTp27KisrCwdPnz4hNoJEyYoMTHxhPFwOKzMzEz17NlTa9as0YwZMzR16lS99NJLXs3q1as1atQo5eXlae3atcrJyVFOTo42btz4rfYCAADghJ0BSVZUVOSd19XVWUJCgs2YMcMb279/vwUCAXv99dcjHrt06VLr37+/bdq0ySTZ2rVrvbnZs2dbXFycVVdXe2OPPfaY9evXzzu/7bbbLDs7O2LNtLQ0u//++5u9l5MJhUImyUKhUJPqAQCAe23t9btFPzNWXl6uiooKZWRkeGOxsbFKS0tTSUmJN1ZZWal7771Xv//979WhQ4cT1ikpKdG1114rv9/vjWVlZWnLli3at2+fV9PwOvU19ddp6l4aqq6uVjgcjjgAAABaU4uGsYqKCklSfHx8xHh8fLw3Z2b6+c9/rjFjxmjIkCEnXaexNRpe42Q1DedPt5fjTZs2TbGxsd6RlJR06icMAABwhs763ZTPP/+8Dhw4oIkTJ57tS5/WxIkTFQqFvGPnzp2utwQAAL7jWjSMJSQkSDr2bciGKisrvbmVK1eqpKREgUBA5513nvr06SNJGjJkiHJzc711Gluj4TVOVtNw/nR7OV4gEFAwGIw4AAAAWlOLhrGUlBQlJCRoxYoV3lg4HFZpaanS09MlSbNmzdK6detUVlamsrIy78dRLFiwQP/2b/8mSUpPT1dxcbFqamq8dZYvX65+/fopLi7Oq2l4nfqa+us0ZS8AAACundfcBxw8eFBbt271zsvLy1VWVqbOnTsrOTlZ48aN01NPPaVLLrlEKSkpmjRpkhITE5WTkyNJSk5Ojljv/PPPlyRdfPHFuuiiiyRJd9xxh5544gnl5eXpscce08aNG/Xcc89p5syZ3uMeeughXXfddXrmmWeUnZ2t+fPn65NPPvF+/IXP5zvtXgAAAJxr7u2Xq1atMkknHLm5uWZ27EdKTJo0yeLj4y0QCNjw4cNty5YtJ12vvLz8hB9tYWa2bt06u/rqqy0QCFiPHj1s+vTpJzx24cKF1rdvX/P7/TZw4EBbsmRJxHxz93K8tnZrLAAAaHuv3z4zM3dR8NwWDocVGxurUCjE58cAAGgj2trrN7+bEgAAwCHCGAAAgEOEMQAAAIcIYwAAAA4RxgAAABwijAEAADhEGAMAAHCIMAYAAOAQYQwAAMAhwhgAAIBDhDEAAACHCGMAAAAOEcYAAAAcIowBAAA4RBgDAABwiDAGAADgEGEMAADAIcIYAACAQ4QxAAAAhwhjAAAADhHGAAAAHCKMAQAAOEQYAwAAcIgwBgAA4BBhDAAAwCHCGAAAgEOEMQAAAIcIYwAAAA4RxgAAABwijAEAADhEGAMAAHCIMAYAAOAQYQwAAMAhwhgAAIBDhDEAAACHCGMAAAAOEcYAAAAcIowBAAA4RBgDAABwiDAGAADgEGEMAADAIcIYAACAQ4QxAAAAhwhjAAAADhHGAAAAHCKMAQAAOEQYAwAAcIgwBgAA4BBhDAAAwCHCGAAAgEOEMQAAAIcIYwAAAA4RxgAAABxqdhgrLi7WyJEjlZiYKJ/Pp8WLF0fMm5kmT56s7t27KyYmRhkZGfriiy+8+e3btysvL08pKSmKiYnRxRdfrClTpujIkSMR66xfv17XXHONoqOjlZSUpPz8/BP2smjRIvXv31/R0dEaNGiQli5d2qy9AAAAuNbsMFZVVaXU1FQVFBQ0Op+fn69Zs2Zpzpw5Ki0tVceOHZWVlaXDhw9Lkj777DPV1dXpxRdf1KZNmzRz5kzNmTNHv/rVr7w1wuGwMjMz1bNnT61Zs0YzZszQ1KlT9dJLL3k1q1ev1qhRo5SXl6e1a9cqJydHOTk52rhxY5P3AgAA4JydAUlWVFTkndfV1VlCQoLNmDHDG9u/f78FAgF7/fXXT7pOfn6+paSkeOezZ8+2uLg4q66u9sYee+wx69evn3d+2223WXZ2dsQ6aWlpdv/995/RXhoKhUImyUKhUJPqAQCAe23t9btFPzNWXl6uiooKZWRkeGOxsbFKS0tTSUnJSR8XCoXUuXNn77ykpETXXnut/H6/N5aVlaUtW7Zo3759Xk3D69TX1F/n2+ylurpa4XA44gAAAGhNLRrGKioqJEnx8fER4/Hx8d7c8bZu3arnn39e999/f8Q6ja3R8Bonq2k439y9TJs2TbGxsd6RlJR08icLAADQApzeTfnVV19pxIgRuvXWW3Xvvfe63IokaeLEiQqFQt6xc+dO11sCAADfcS0axhISEiRJlZWVEeOVlZXeXL1du3Zp2LBh+tGPfhTxwfz6dRpbo+E1TlbTcL6pe6kXCAQUDAYjDgAAgNbUomEsJSVFCQkJWrFihTcWDodVWlqq9PR0b+yrr77S9ddfr8GDB6uwsFBRUZHbSE9PV3FxsWpqaryx5cuXq1+/foqLi/NqGl6nvqb+Ok3dCwAAgEvNDmMHDx5UWVmZysrKJB37oHxZWZl27Nghn8+ncePG6amnntJbb72lDRs26Gc/+5kSExOVk5Mj6f+DWHJysp5++mnt3btXFRUVEZ/juuOOO+T3+5WXl6dNmzZpwYIFeu655zR+/Hiv5qGHHtKyZcv0zDPP6LPPPtPUqVP1ySef6MEHH5SkJu0FAADAuebefrlq1SqTdMKRm5trZsd+pMSkSZMsPj7eAoGADR8+3LZs2eI9vrCwsNHHH7+VdevW2dVXX22BQMB69Ohh06dPP2EvCxcutL59+5rf77eBAwfakiVLIuZPt5fTaWu3xgIAgLb3+u0zM3OSAtuAcDis2NhYhUIhPj8GAEAb0dZev/ndlAAAAA4RxgAAABwijAEAADhEGAMAAHCIMAYAAOAQYQwAAMAhwhgAAIBDhDEAAACHCGMAAAAOEcYAAAAcIowBAAA4RBgDAABwiDAGAADgEGEMAADAIcIYAACAQ4QxAAAAhwhjAAAADhHGAAAAHCKMAQAAOEQYAwAAcIgwBgAA4BBhDAAAwCHCGAAAgEOEMQAAAIcIYwAAAA4RxgAAABwijAEAADhEGAMAAHCIMAYAAOAQYQwAAMAhwhgAAIBDhDEAAACHCGMAAAAOEcYAAAAcIowBAAA4RBgDAABwiDAGAADgEGEMAADAIcIYAACAQ4QxAAAAhwhjAAAADhHGAAAAHCKMAQAAOEQYAwAAcIgwBgAA4BBhDAAAwCHCGAAAgEOEMQAAAIcIYwAAAA4RxgAAABwijAEAADhEGAMAAHCIMAYAAOBQs8NYcXGxRo4cqcTERPl8Pi1evDhi3sw0efJkde/eXTExMcrIyNAXX3wRUfPNN9/ozjvvVDAY1AUXXKC8vDwdPHgwomb9+vW65pprFB0draSkJOXn55+wl0WLFql///6Kjo7WoEGDtHTp0mbvBQAAwKVmh7GqqiqlpqaqoKCg0fn8/HzNmjVLc+bMUWlpqTp27KisrCwdPnzYq7nzzju1adMmLV++XO+8846Ki4t13333efPhcFiZmZnq2bOn1qxZoxkzZmjq1Kl66aWXvJrVq1dr1KhRysvL09q1a5WTk6OcnBxt3LixWXsBAABwys6AJCsqKvLO6+rqLCEhwWbMmOGN7d+/3wKBgL3++utmZvbnP//ZJNmf/vQnr+bdd981n89nX331lZmZzZ492+Li4qy6utqreeyxx6xfv37e+W233WbZ2dkR+0lLS7P777+/yXs5nVAoZJIsFAo1qR4AALjX1l6/W/QzY+Xl5aqoqFBGRoY3Fhsbq7S0NJWUlEiSSkpKdMEFF2jIkCFeTUZGhqKiolRaWurVXHvttfL7/V5NVlaWtmzZon379nk1Da9TX1N/nabs5XjV1dUKh8MRBwAAQGtq0TBWUVEhSYqPj48Yj4+P9+YqKirUrVu3iPnzzjtPnTt3jqhpbI2G1zhZTcP50+3leNOmTVNsbKx3JCUlNeFZAwAAfHvcTdnAxIkTFQqFvGPnzp2utwQAAL7jWjSMJSQkSJIqKysjxisrK725hIQE7dmzJ2L+6NGj+uabbyJqGluj4TVOVtNw/nR7OV4gEFAwGIw4AAAAWlOLhrGUlBQlJCRoxYoV3lg4HFZpaanS09MlSenp6dq/f7/WrFnj1axcuVJ1dXVKS0vzaoqLi1VTU+PVLF++XP369VNcXJxX0/A69TX112nKXgAAAJxr7if+Dxw4YGvXrrW1a9eaJPvNb35ja9eutb/85S9mZjZ9+nS74IIL7L/+679s/fr1dvPNN1tKSoodOnTIW2PEiBF2+eWXW2lpqf3P//yPXXLJJTZq1Chvfv/+/RYfH2933XWXbdy40ebPn28dOnSwF1980av58MMP7bzzzrOnn37aNm/ebFOmTLH27dvbhg0bvJqm7OVU2trdGAAAoO29fjc7jK1atcoknXDk5uaa2bEfKTFp0iSLj4+3QCBgw4cPty1btkSs8fXXX9uoUaPs/PPPt2AwaKNHj7YDBw5E1Kxbt86uvvpqCwQC1qNHD5s+ffoJe1m4cKH17dvX/H6/DRw40JYsWRIx35S9nEpb+8sEAABt7/XbZ2bm6l25c104HFZsbKxCoRCfHwMAoI1oa6/f3E0JAADgEGEMAADAIcIYAACAQ4QxAAAAhwhjAAAADhHGAAAAHCKMAQAAOEQYAwAAcIgwBgAA4BBhDAAAwCHCGAAAgEOEMQAAAIcIYwAAAA4RxgAAABwijAEAADhEGAMAAHCIMAYAAOAQYQwAAMAhwhgAAIBDhDEAAACHCGMAAAAOEcYAAAAcOs/1Bs5lZiZJCofDjncCAACaqv51u/51/FxHGDuFAwcOSJKSkpIc7wQAADTXgQMHFBsb63obp+WzthIbHairq9OuXbvUqVMn+Xy+Fl07HA4rKSlJO3fuVDAYbNG18f1FX6G10FtoDa3VV2amAwcOKDExUVFR5/4nsnhn7BSioqJ00UUXteo1gsEg/7ChxdFXaC30FlpDa/RVW3hHrN65HxcBAAC+wwhjAAAADhHGHAkEApoyZYoCgYDrreA7hL5Ca6G30Broq2P4AD8AAIBDvDMGAADgEGEMAADAIcIYAACAQ9+5MHb99ddr3Lhxrrdxzpg6dari4+Pl8/m0ePHik47h1OirSPRVy6G3ItFbLYO+inTO95Wd43Jzc02S3X///SfMPfDAAybJcnNzvbGvv/7awuGwd96zZ0+bOXPmKa/x9ddf24MPPmh9+/a16OhoS0pKsl/84he2f//+kz7mBz/4QaN7MjN75ZVXzO/32969e0/95FrZn//8Z5NkRUVFtnv3bjt8+HCjY99HZ6OvzMzuu+8+6927t0VHR1vXrl3txz/+sW3evPmk9fRV23e2eqteXV2djRgxwvv6nwy91badrb667rrrTFLEcbK+MaOvWkqbeGcsKSlJ8+fP16FDh7yxw4cP67XXXlNycnJEbefOndWpU6dmrb9r1y7t2rVLTz/9tDZu3Ki5c+dq2bJlysvLO+lj8vLyTthTvcLCQv34xz9W165dm7UPSaqpqWn2Y07myy+/lCTdfPPNSkhIUCAQaHTs22jJfbrS2n0lSYMHD1ZhYaE2b96s9957T2amzMxM1dbWNlpPX7X9vpLOTm/Ve/bZZ5v069rorbbfW2err+69917t3r3bO/Lz809aS1+10D6dRsEmyM3NtZtvvtl+8IMf2KuvvuqN/+d//qf98Ic/tJtvvjnifwPXXXedPfTQQ96fdVzCb6qFCxea3++3mpqaRuf37t1rfr/ffv/730eMb9u2zXw+n7377rtmZjZ79mzr3bu3tW/f3vr27WuvvPJKRL0kmz17to0cOdI6dOhgU6ZMsVWrVpkke+edd2zQoEEWCAQsLS3NNmzY4D1uypQplpqaGrHWzJkzrWfPnt788c+9sbF6L7/8svXv398CgYD169fPCgoKvLny8nKTZPPnz7drr73WAoGAFRYWen83M2bMsISEBOvcubM98MADduTIkSZ/nV1x1Vfr1q0zSbZ169ZG5+mrtt1XZme3t9auXWs9evSw3bt3n/adMXqrbffW2eqrho9rCvqqZfqqzYSx3/zmNzZ8+HBvfPjw4TZz5sxTNuDXX39tF110kT355JO2e/du2717d5Ov+/LLL1vXrl1PWXPrrbfasGHDIsYmT55sSUlJVltba2+++aa1b9/eCgoKbMuWLfbMM89Yu3btbOXKlV69JOvWrZv9x3/8h3355Zf2l7/8xWvASy+91P77v//b1q9fbzfddJP16tXL+8s9XQMeOHDACgsLTZL33BsbMzN79dVXrXv37vbGG2/Ytm3b7I033rDOnTvb3Llzzez/G7BXr15eza5duyw3N9eCwaCNGTPGNm/ebG+//bZ16NDBXnrppSZ/nV1x0VcHDx60cePGWUpKilVXV5+0jr5qu31ldvZ6q6qqyi699FJbvHixmdlpw5gZvdWWe+ts9dV1111nXbt2tS5dutjAgQPtl7/8pVVVVZ1yb/TVmfdVmwlje/bssUAgYNu3b7ft27dbdHS07d2795QNaNb8z1+YHUv6ycnJ9qtf/eqUdcuWLTOfz2fbtm0zs2Of3ejZs6c9/vjjZmb2ox/9yO69996Ix9x666124403eueSbNy4cRE19Q04f/58b+zrr7+2mJgYW7BggZmdvgHNzIqKik74H1BjYxdffLG99tprEWP/+q//aunp6Wb2/w347LPPRtTk5uZaz5497ejRoxHP7/bbb7dz3dnsq4KCAuvYsaNJsn79+p30XbF69FXb7Suzs9db9913n+Xl5XnnTQlj9Fbb7a2z1VcvvviiLVu2zNavX2+vvvqq9ejRw37yk5+c8jH01Zn3VZv4zJgkXXjhhcrOztbcuXNVWFio7Ozsb/V96NMJh8PKzs7WgAEDNHXq1FPW/v3f/70uuugiFRYWSpJWrFihHTt2aPTo0ZKkzZs366qrrop4zFVXXaXNmzdHjA0ZMqTR9dPT070/d+7cWf369TvhsWeqqqpKX375pfLy8nT++ed7x1NPPeV9T/1U+xw4cKDatWvnnXfv3l179uxp0T22prPRV3feeafWrl2rP/zhD+rbt69uu+02HT58+KT19FXb7yupdXvrrbfe0sqVK/Xss88263H0Vtvvrdb+N+u+++5TVlaWBg0apDvvvFOvvPKKioqKTvjaNkRfnXlfnfftt3723X333XrwwQclSQUFBS2+/oEDBzRixAh16tRJRUVFat++/Snro6Ki9POf/1zz5s3T1KlTVVhYqGHDhql3797Num7Hjh2bvdeoqCjZcb/J6tt8kPDgwYOSpJdffllpaWkRcw0bS2p8n8d/jXw+n+rq6pq9D5dau69iY2MVGxurSy65RFdeeaXi4uJUVFSkUaNGNVpPX303+kpqvd5auXKlvvzyS11wwQUR47fccouuueYaffDBB40+jt76bvRWa/+b1VD913jr1q26+OKLG62hr868r9rMO2OSNGLECB05ckQ1NTXKyspq0mP8fv9J71xrKBwOKzMzU36/X2+99Zaio6ObtP7o0aO1c+dOvfnmmyoqKoq4A/PSSy/Vhx9+GFH/4YcfasCAAU1a+6OPPvL+vG/fPn3++ee69NJLJR3731FFRUVEE5aVlTVp3Ybi4+OVmJiobdu2qU+fPhFHSkpKs9dri1qzr45nxz4aoOrq6lPW0VffDa3VW7/85S+1fv16lZWVeYckzZw503t34mTorbbvbP6bVf931L1791PW0Vdnpk29M9auXTvvrcnjk+rJ9OrVS8XFxfrHf/xHBQKBRt/OrQ9if/vb3/Tqq68qHA4rHA5LOvYXfaprpaSk6O/+7u903333KRAI6Kc//ak39+ijj+q2227T5ZdfroyMDL399tt688039f777zdp708++aS6dOmi+Ph4/frXv1bXrl2Vk5Mj6dgP9Nu7d6/y8/P1D//wD1q2bJneffddBYPBJq3d0BNPPKF//ud/VmxsrEaMGKHq6mp98skn2rdvn8aPH9/s9dqa1uqrbdu2acGCBcrMzNSFF16o//3f/9X06dMVExOjG2+88ZTr01ffDa3VWwkJCUpISDhhPDk5+bQvHPRW29daffXll1/qtdde04033qguXbpo/fr1evjhh3Xttdfqhz/84SnXp6/OTJt6Z0ySgsFgs77ITz75pLZv366LL75YF154YaM1n376qUpLS7Vhwwb16dNH3bt3946dO3ee9hp5eXnat2+f7rjjjoh31HJycvTcc8/p6aef1sCBA/Xiiy+qsLBQ119/fZP2Pn36dD300EMaPHiwKioq9Pbbb8vv90s69j+N2bNnq6CgQKmpqfr444/1L//yL01a93j33HOPfve736mwsFCDBg3Sddddp7lz535v/pcptU5fRUdH649//KNuvPFG9enTR7fffrs6deqk1atXq1u3bqe9Bn313dAavXWm6K22rzX6yu/36/3331dmZqb69++vRx55RLfccovefvvtJl2Dvvr2fHb8N1vh3AcffKBhw4Zp3759J3wmBPi26Cu0FnoLreH71Fdt7p0xAACA7xLCGAAAgEN8mxIAAMAh3hkDAABwiDAGAADgEGEMAADAIcIYAACAQ4QxAAAAhwhjAAAADhHGAAAAHCKMAQAAOEQYAwAAcOj/AMaDfbhS99szAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import rieter_ekalk as rek\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def eine_anlage(Anzahl_MG):\n", + "\n", + " rsm_direct_eingabe = {\n", + " }\n", + " rsm_fa_eingabe = {\n", + " \"Flex_A_Premium\":False, # braucht man das noch?\n", + " \"Getriebe_in_der_Mitte\":False, # braucht man das noch?\n", + " \"RSM_Einfahrt_Ein_Beidseitig\":False, # braucht man das noch?\n", + " \"Sensor_optisch_Traverse_zusätzlich\":6,\n", + " \"Bedientableau_1fach_Korrektur\":0,\n", + " \"Bedientableau_2fach_Korrektur\":4,\n", + " \"Weiche_Korrektur\":4,\n", + " \"RRA_bi_Korrektur\":0,\n", + " \"RRA_bi_auf_Haupstrecke\":10,\n", + " \"RRA_uni_Begegnung\":4,\n", + " \"gemeinsame_Wendung\":0,\n", + " \"Mit_Drucktaster_Korrektur\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " \"klemmkasten_rsm\":2,\n", + " }\n", + " flyer_f40_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine\":0, #wird in deckblatt-Klasse berechnet\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur\":0,\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer\":2, #wird in deckblatt-Klasse berechnet\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer\":2, #wird in deckblatt-Klasse berechnet\n", + " #\"Anzahl_Schienen\":0,\n", + " \"Single_Line_Durchfahrt\":False,\n", + " \"Nachpuffer\":False,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensor_induktiv_Spulenhalter\":0,\n", + " \"Sensor_induktiv_Spulenhalter_Korrektur\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " \"Bedientableau_2fach_Korrektur\":0,\n", + " #\"Interface_Doffer\":0,\n", + " \"Interface_Doffer_Korrektur\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_Flyer_bipolar\":0,\n", + " \"Weiche_nach_Flyer_bipolar_Korrektur\":0,\n", + " \"Dreifachweiche\":0,\n", + " \"Wechsel\":0,\n", + " \"Stopper\":0,\n", + " \"RA_uni\":0,\n", + " #\"RA_uni_abhebbar\":0,\n", + " \"RA_uni_abhebbar_Korrektur\":0,\n", + " #\"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " \"RA_uni_ohne_SPS_Ansteuerung_Korrektur\":0,\n", + " #\"RRA_BI_abhebbar\":0,\n", + " \"RRA_BI_abhebbar_Korrektur\":0,\n", + " \"RRA_bi\":0,\n", + " #\"RRA_bi_Korrektur\":0,\n", + " #\"RRA_bi_ohne_SPS_Ansteuerung\":0,\n", + " \"RRA_bi_ohne_SPS_Ansteuerung_Korrektur\":0,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " \"Doppelstreckenantrieb_Korrektur\":0,\n", + " \"RA_bi_abhebbar_unger_Schiene\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " neuenhauser_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Neuenhauser-Putzmaschine\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Neuenhauser-Putzmaschine_Vorpuffer\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Neuenhauser-Putzmaschine_Nachpuffer\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Anzahl_Vorstaustrecken\":0,\n", + " #\"Anzahl_Nachstaustrecken\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensorik_Zugpositionierung\":0,\n", + " #\"Sensor_WT18_Spulenprüfung_voll_leer\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " \"Bedientableau_2fach_Korrektur\":0,\n", + " #\"Interface_Putzmaschine\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_PM_bipolar\":0,\n", + " #\"RA_uni_abhebbar\":0,\n", + " \"RA_uni_abhebbar_Korrektur\":0,\n", + " #\"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " #\"RA_uni_abhebbar_unger_Sch\":0,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " flyer_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Flyer\":0, # äquivalent zu 'Anzahl'\n", + " #\"Anzahl_Schienen:\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensor_induktiv_Spulenalter_Zug_positionierung\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " #\"Interface_Doffer\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_Flyer_bipolar\":0,\n", + " \"Dreifachweiche\":0,\n", + " #\"Wechsel\":0,\n", + " \"Wechsel_Korrektur\":0,\n", + " #\"RA_bi_ohne_SPS-Ansteuerung\":0,\n", + " #\"RA_bi_abhebbar\":0,\n", + " \"RA_bi_abhebbar_Korrektur\":0,\n", + " \"RA_bi\":4,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " \"RA_bi_abhebbar_unger_Schiene\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " verbindungsstrecken_w_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Bedientableau_1fach\":0,\n", + " \"Bedientableau_2fach\":0,\n", + " \"Bedientableau_14fach\":0,\n", + " \"Weiche\":0,\n", + " \"Dreifachweiche\":0,\n", + " \"Kreuzungsweiche\":1,\n", + " \"Werma_Rundumleuchte_Störung\":0,\n", + " \"RA_uni\":0,\n", + " \"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " \"RA_bi\":0,\n", + " \"RA_bi_ohne_SPS-Ansteuerung\":0,\n", + " \"Doppelstreckenantrieb\":0\n", + " }\n", + " puffer_eingabe = {\n", + " # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " # \"Anzahl\":0,\n", + " # \"Puffer\":0, #äquivalent zu Anzahl\n", + " # \"Anzahl_Pufferstrecken\":0, #äquivalent zu Anzahl_Staustrecken\n", + " # \"Anzahl_Staustrecken\":0,\n", + " # \"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\": 1,\n", + " # \"Weiche\":0,\n", + " \"Weiche_Korrektur\": 0,\n", + " \"RA_bi_ungerade_Schiene\": 2,\n", + " # \"Doppelstreckenantrieb\":0,\n", + " # \"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\": 0,\n", + " # \"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\": 0,\n", + " }\n", + " turm_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Turm\":0, #äquivalent zu Anzahl\n", + " #\"Anzahl_Wendlungen\":0, #äquivalent zu Anzahl_Staustrecken\n", + " #\"Anzahl_Staustrecken\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " #\"Weiche\":0,\n", + " #\"RA_bi\":0,\n", + " \"RA_bi_Korrektur\":0,\n", + " #\"RA_bi_ohne_SPS\":0,\n", + " \"RA_bi_ohne_SPS_Korrektur\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " }\n", + " mg = rek.MG(Anzahl_MG,\n", + " rsm_direct=rsm_direct_eingabe,\n", + " rsm_fa=rsm_fa_eingabe,\n", + " flyer_f40=flyer_f40_eingabe,\n", + " neuenhauser=neuenhauser_eingabe,\n", + " flyer=flyer_eingabe,\n", + " verbindungsstrecken_w=verbindungsstrecken_w_eingabe,\n", + " puffer=puffer_eingabe,\n", + " turm=turm_eingabe)\n", + " Anzahl_EAS = {}\n", + " eas = rek.EA(Anzahl_EAS, mg)\n", + "\n", + " Anzahl_HW = {}\n", + "\n", + " hw = rek.HW(Anzahl_HW, mg, eas)\n", + "\n", + " emo = rek.EMO(eas, hw, mg)\n", + " Anzahl_DL = {}\n", + " dl = rek.Dienstleistung(Anzahl_DL, hw)\n", + " Anzahl_Ergebnis = {}\n", + " erg = rek.Ergebnis(Anzahl_Ergebnis, hw, dl, emo)\n", + " return erg.get_sum_of_costs(hw)\n", + "\n", + "\n", + "Anzahl_MG = {\n", + " \"SYSTEM\": \"FA\",\n", + " \"RSM\":14,\n", + " \"Flyer\":4,\n", + " \"Flyer_Puffer\":2,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine\":1,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer\":0,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer\":2,\n", + " \"Neuenhauser-Putzmaschine\":0,\n", + " \"Neuenhauser-Putzmaschine_Vorpuffer\":0,\n", + " \"Neuenhauser-Putzmaschine_Nachpuffer\":0,\n", + " \"Cason-Putzmaschine\":0,\n", + " \"Cason-Putzmaschine_Vorpuffer\":0,\n", + " \"Cason-Putzmaschine_Nachpuffer\":0,\n", + " \"Puffer\":1,\n", + " \"Anzahl_der_Pufferstrecken_pro_Puffer\":5,\n", + " \"Begegnungsstrecke_Bypass\":2,\n", + " \"Turm\":0,\n", + " \"Turm_Anzahl_Wendlungen\":0,\n", + " }\n", + "\n", + "\n", + "variationen = {}\n", + "k = 2\n", + "while k < 6:\n", + " Anzahl_MG.update({\"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer\": k})\n", + " erg = eine_anlage(Anzahl_MG)\n", + " variationen.update({f\"Mit {k} Vorpuffern\": erg})\n", + " k += 1\n", + "print(variationen)\n", + "print(\"Vorpuffer sollte > 1 sein\")\n", + "lists = sorted(variationen.items()) # sorted by key, return a list of tuples\n", + "\n", + "x, y = zip(*lists) \n", + "\n", + "plt.plot(x, y)\n", + "plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Flyer Electrojet incl intergrierte Putzmaschine Nachpuffer" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'Mit 1 Nachpuffern': 104833.16666666667, 'Mit 2 Nachpuffern': 104833.16666666667, 'Mit 3 Nachpuffern': 104833.16666666667, 'Mit 4 Nachpuffern': 104833.16666666667, 'Mit 5 Nachpuffern': 104833.16666666667}\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmoAAAGdCAYAAACirV9DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAzz0lEQVR4nO3dfVyV9f3H8fcBPYeDeQg1OaJ4l3dpRqWTaJU1GVjMxdaq2Y2krlvrl2nprLzJVZTWKh2mu/mh/bZZ+li6ClcPU5ubEhWBdxlTh8OpYC05R1EB4fv7wwfXOIIKSfLVXs/H43o8PN/v5/pe34sveN5cXBe4jDFGAAAAsE5YS08AAAAADSOoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClWrX0BGxWU1OjPXv2qG3btnK5XC09HQAA0AjGGB04cECxsbEKCzu7r0kR1E5iz549iouLa+lpAACAr2HXrl3q0qVLS0/jtBDUTqJt27aSji20z+dr4dkAAIDGCAaDiouLc97Hz2YEtZOo/XGnz+cjqAEAcJY5F25bOrt/cAsAAHAOI6gBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClmhzU1q5dqxEjRig2NlYul0vLly8P6X/zzTeVnJys9u3by+VyqaCgoN4YR44c0bhx49S+fXudd955uummm1RaWhpSU1xcrNTUVEVGRqpjx4567LHHdPTo0ZCaDz74QJdffrk8Ho969eqlhQsX1jtWZmamunfvroiICCUkJOijjz5q6ikDAAC0iCYHtfLycsXHxyszM/OE/VdddZWef/75E47xyCOP6O2339bSpUv117/+VXv27NGPf/xjp7+6ulqpqamqrKzU+vXrtWjRIi1cuFDTpk1zaoqKipSamqrrrrtOBQUFGj9+vH72s5/pvffec2reeOMNTZgwQdOnT9enn36q+Ph4paSkaN++fU09bQAAgDPPnAZJZtmyZQ32FRUVGUkmPz8/pL2srMy0bt3aLF261GnbunWrkWRycnKMMcasWLHChIWFmZKSEqfm1VdfNT6fz1RUVBhjjJk0aZIZMGBAyNi33nqrSUlJcV4PGTLEjBs3znldXV1tYmNjTUZGRqPOLxAIGEkmEAg0qh4AALS8c+n9+4zfo5aXl6eqqiolJSU5bf369VPXrl2Vk5MjScrJydHAgQMVExPj1KSkpCgYDGrLli1OTd0xamtqx6isrFReXl5ITVhYmJKSkpya41VUVCgYDIZsAAAALeWMB7WSkhK53W6df/75Ie0xMTEqKSlxauqGtNr+2r6T1QSDQR0+fFhffvmlqqurG6ypHeN4GRkZioqKcra4uLivfZ4AAACni6c+65gyZYoCgYCz7dq1q6WnBAAAvsVanekD+v1+VVZWqqysLOSqWmlpqfx+v1Nz/NOZtU+F1q05/knR0tJS+Xw+eb1ehYeHKzw8vMGa2jGO5/F45PF4Tuv8AAAAmssZv6I2aNAgtW7dWqtWrXLaCgsLVVxcrMTERElSYmKiNm3aFPJ05sqVK+Xz+dS/f3+npu4YtTW1Y7jdbg0aNCikpqamRqtWrXJqAAAAbNbkK2oHDx7U9u3bnddFRUUqKChQu3bt1LVrV3311VcqLi7Wnj17JB0LYdKxK2B+v19RUVEaO3asJkyYoHbt2snn8+mhhx5SYmKirrjiCklScnKy+vfvrzvvvFOzZs1SSUmJnnzySY0bN8654nXffffpV7/6lSZNmqQxY8Zo9erVWrJkibKzs525TZgwQenp6Ro8eLCGDBmil19+WeXl5Ro9evTX/4gBAACcKU19THTNmjVGUr0tPT3dGGNMVlZWg/3Tp093xjh8+LB54IEHTHR0tImMjDQ/+tGPzN69e0OOs3PnTnP99dcbr9drOnToYCZOnGiqqqrqzeXSSy81brfb9OzZ02RlZdWb79y5c03Xrl2N2+02Q4YMMR9++GGjz/VcerwXAIBvi3Pp/dtljDEtExHtFwwGFRUVpUAgIJ/P19LTAQAAjXAuvX/z1CcAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApZoc1NauXasRI0YoNjZWLpdLy5cvD+k3xmjatGnq1KmTvF6vkpKStG3btpCaf/zjH7rxxhvVoUMH+Xw+XXXVVVqzZk1ITXFxsVJTUxUZGamOHTvqscce09GjR0NqPvjgA11++eXyeDzq1auXFi5cWG++mZmZ6t69uyIiIpSQkKCPPvqoqacMAADQIpoc1MrLyxUfH6/MzMwG+2fNmqU5c+Zo/vz5ys3NVZs2bZSSkqIjR444NT/4wQ909OhRrV69Wnl5eYqPj9cPfvADlZSUSJKqq6uVmpqqyspKrV+/XosWLdLChQs1bdo0Z4yioiKlpqbquuuuU0FBgcaPH6+f/exneu+995yaN954QxMmTND06dP16aefKj4+XikpKdq3b19TTxsAAODMM6dBklm2bJnzuqamxvj9fjN79mynrayszHg8HrN48WJjjDFffPGFkWTWrl3r1ASDQSPJrFy50hhjzIoVK0xYWJgpKSlxal599VXj8/lMRUWFMcaYSZMmmQEDBoTM59ZbbzUpKSnO6yFDhphx48Y5r6urq01sbKzJyMho1PkFAgEjyQQCgUbVAwCAlncuvX836z1qRUVFKikpUVJSktMWFRWlhIQE5eTkSJLat2+vvn376rXXXlN5ebmOHj2qBQsWqGPHjho0aJAkKScnRwMHDlRMTIwzTkpKioLBoLZs2eLU1D1ObU3tcSorK5WXlxdSExYWpqSkJKfmeBUVFQoGgyEbAABAS2nVnIPV/uiybsCqfV3b53K59P777ystLU1t27ZVWFiYOnbsqHfffVfR0dHOOA2NUfcYJ6oJBoM6fPiw9u/fr+rq6gZrPv/88wbnn5GRoaeeeurrnDoAAECzO+NPfRpjNG7cOHXs2FF/+9vf9NFHHyktLU0jRozQ3r17z/R0QkyZMkWBQMDZdu3a1aLzAQAA327NGtT8fr8kqbS0NKS9tLTU6Vu9erXeeecdvf766/rud7+ryy+/XPPmzZPX69WiRYuccRoao+4xTlTj8/nk9XrVoUMHhYeHn3Qux/N4PPL5fCEbAABAS2nWoNajRw/5/X6tWrXKaQsGg8rNzVViYqIk6dChQ8cOHBZ66LCwMNXU1EiSEhMTtWnTppCnM1euXCmfz6f+/fs7NXWPU1tTexy3261BgwaF1NTU1GjVqlVODQAAgM2aHNQOHjyogoICFRQUSDr2AEFBQYGKi4vlcrk0fvx4Pf3003rrrbe0adMmjRo1SrGxsUpLS5N0LGBFR0crPT1dGzZs0D/+8Q899thjzq/bkKTk5GT1799fd955pzZs2KD33ntPTz75pMaNGyePxyNJuu+++/TPf/5TkyZN0ueff6558+ZpyZIleuSRR5y5TpgwQb/5zW+0aNEibd26Vffff7/Ky8s1evTo0/ywAQAAnAFNfUx0zZo1RlK9LT093Rhz7Fd0TJ061cTExBiPx2OGDRtmCgsLQ8b4+OOPTXJysmnXrp1p27atueKKK8yKFStCanbu3Gmuv/564/V6TYcOHczEiRNNVVVVvblceumlxu12m549e5qsrKx68507d67p2rWrcbvdZsiQIebDDz9s9LmeS4/3AgDwbXEuvX+7jDGmBXOi1YLBoKKiohQIBLhfDQCAs8S59P7N3/oEAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACxFUAMAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACxFUAMAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACxFUAMAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACxFUAMAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsFSTg9ratWs1YsQIxcbGyuVyafny5SH9xhhNmzZNnTp1ktfrVVJSkrZt21ZvnOzsbCUkJMjr9So6OlppaWkh/cXFxUpNTVVkZKQ6duyoxx57TEePHg2p+eCDD3T55ZfL4/GoV69eWrhwYb3jZGZmqnv37oqIiFBCQoI++uijpp4yAABAi2hyUCsvL1d8fLwyMzMb7J81a5bmzJmj+fPnKzc3V23atFFKSoqOHDni1PzpT3/SnXfeqdGjR2vDhg1at26dbrvtNqe/urpaqampqqys1Pr167Vo0SItXLhQ06ZNc2qKioqUmpqq6667TgUFBRo/frx+9rOf6b333nNq3njjDU2YMEHTp0/Xp59+qvj4eKWkpGjfvn1NPW0AAIAzz5wGSWbZsmXO65qaGuP3+83s2bOdtrKyMuPxeMzixYuNMcZUVVWZzp07m9/+9rcnHHfFihUmLCzMlJSUOG2vvvqq8fl8pqKiwhhjzKRJk8yAAQNC9rv11ltNSkqK83rIkCFm3Lhxzuvq6moTGxtrMjIyGnV+gUDASDKBQKBR9QAAoOWdS+/fzXqPWlFRkUpKSpSUlOS0RUVFKSEhQTk5OZKkTz/9VLt371ZYWJguu+wyderUSddff702b97s7JOTk6OBAwcqJibGaUtJSVEwGNSWLVucmrrHqa2pPU5lZaXy8vJCasLCwpSUlOTUHK+iokLBYDBkAwAAaCnNGtRKSkokKSRg1b6u7fvnP/8pSZoxY4aefPJJvfPOO4qOjta1116rr776yhmnoTHqHuNENcFgUIcPH9aXX36p6urqk87leBkZGYqKinK2uLi4Jn8MAAAAmssZf+qzpqZGkvTEE0/opptu0qBBg5SVlSWXy6WlS5ee6emEmDJligKBgLPt2rWrRecDAAC+3Zo1qPn9fklSaWlpSHtpaanT16lTJ0lS//79nX6Px6OePXuquLjYGaehMeoe40Q1Pp9PXq9XHTp0UHh4+EnncjyPxyOfzxeyAQAAtJRmDWo9evSQ3+/XqlWrnLZgMKjc3FwlJiZKkgYNGiSPx6PCwkKnpqqqSjt37lS3bt0kSYmJidq0aVPI05krV66Uz+dzAl5iYmLIcWprao/jdrs1aNCgkJqamhqtWrXKqQEAALBZq6bucPDgQW3fvt15XVRUpIKCArVr105du3bV+PHj9fTTT6t3797q0aOHpk6dqtjYWOf3pPl8Pt13332aPn264uLi1K1bN82ePVuSdPPNN0uSkpOT1b9/f915552aNWuWSkpK9OSTT2rcuHHyeDySpPvuu0+/+tWvNGnSJI0ZM0arV6/WkiVLlJ2d7cxtwoQJSk9P1+DBgzVkyBC9/PLLKi8v1+jRo7/2BwwAAOCMaepjomvWrDGS6m3p6enGmGO/omPq1KkmJibGeDweM2zYMFNYWBgyRmVlpZk4caLp2LGjadu2rUlKSjKbN28Oqdm5c6e5/vrrjdfrNR06dDATJ040VVVV9eZy6aWXGrfbbXr27GmysrLqzXfu3Lmma9euxu12myFDhpgPP/yw0ed6Lj3eCwDAt8W59P7tMsaYFsyJVgsGg4qKilIgEOB+NQAAzhLn0vs3f+sTAADAUgQ1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACxFUAMAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACxFUAMAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsFSrlp7At5ExRoerqlt6GgAAWMHbOlwul6ulp2ElgloLOFxVrf7T3mvpaQAAYIXPZqYo0k0kaQg/+gQAALAU8bUFeFuH67OZKS09DQAArOBtHd7SU7AWQa0FuFwuLvECAIBT4kefAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClmhzU1q5dqxEjRig2NlYul0vLly8P6TfGaNq0aerUqZO8Xq+SkpK0bdu2BseqqKjQpZdeKpfLpYKCgpC+jRs36uqrr1ZERITi4uI0a9asevsvXbpU/fr1U0REhAYOHKgVK1Z87bkAAADYpslBrby8XPHx8crMzGywf9asWZozZ47mz5+v3NxctWnTRikpKTpy5Ei92kmTJik2NrZeezAYVHJysrp166a8vDzNnj1bM2bM0K9//WunZv369Ro5cqTGjh2r/Px8paWlKS0tTZs3b/5acwEAALCOOQ2SzLJly5zXNTU1xu/3m9mzZzttZWVlxuPxmMWLF4fsu2LFCtOvXz+zZcsWI8nk5+c7ffPmzTPR0dGmoqLCaZs8ebLp27ev8/qWW24xqampIWMmJCSYe++9t8lzOZFAIGAkmUAg0Kh6AADQ8s6l9+9mvUetqKhIJSUlSkpKctqioqKUkJCgnJwcp620tFR33323/u///k+RkZH1xsnJydE111wjt9vttKWkpKiwsFD79+93auoep7am9jiNnUtdFRUVCgaDIRsAAEBLadagVlJSIkmKiYkJaY+JiXH6jDG66667dN9992nw4MEnHKehMeoe40Q1dftPNZfjZWRkKCoqytni4uJOfsIAAADfoDP+1OfcuXN14MABTZky5Uwf+pSmTJmiQCDgbLt27WrpKQEAgG+xZg1qfr9f0rEfbdZVWlrq9K1evVo5OTnyeDxq1aqVevXqJUkaPHiw0tPTnXEaGqPuMU5UU7f/VHM5nsfjkc/nC9kAAABaSrMGtR49esjv92vVqlVOWzAYVG5urhITEyVJc+bM0YYNG1RQUKCCggLnV2q88cYbeuaZZyRJiYmJWrt2raqqqpxxVq5cqb59+yo6OtqpqXuc2pra4zRmLgAAADZr1dQdDh48qO3btzuvi4qKVFBQoHbt2qlr164aP368nn76afXu3Vs9evTQ1KlTFRsbq7S0NElS165dQ8Y777zzJEkXXnihunTpIkm67bbb9NRTT2ns2LGaPHmyNm/erFdeeUUvvfSSs9/DDz+soUOH6sUXX1Rqaqpef/11ffLJJ86v8HC5XKecCwAAgNWa+pjomjVrjKR6W3p6ujHm2K/FmDp1qomJiTEej8cMGzbMFBYWnnC8oqKier+ewxhjNmzYYK666irj8XhM586dzXPPPVdv3yVLlpg+ffoYt9ttBgwYYLKzs0P6mzqX451Lj/cCAPBtcS69f7uMMablYqLdgsGgoqKiFAgEuF8NAICzxLn0/s3f+gQAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACxFUAMAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACxFUAMAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACxFUAMAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACxFUAMAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwVJOD2tq1azVixAjFxsbK5XJp+fLlIf3GGE2bNk2dOnWS1+tVUlKStm3b5vTv3LlTY8eOVY8ePeT1enXhhRdq+vTpqqysDBln48aNuvrqqxUREaG4uDjNmjWr3lyWLl2qfv36KSIiQgMHDtSKFSuaNBcAAACbNTmolZeXKz4+XpmZmQ32z5o1S3PmzNH8+fOVm5urNm3aKCUlRUeOHJEkff7556qpqdGCBQu0ZcsWvfTSS5o/f74ef/xxZ4xgMKjk5GR169ZNeXl5mj17tmbMmKFf//rXTs369es1cuRIjR07Vvn5+UpLS1NaWpo2b97c6LkAAABYzZwGSWbZsmXO65qaGuP3+83s2bOdtrKyMuPxeMzixYtPOM6sWbNMjx49nNfz5s0z0dHRpqKiwmmbPHmy6du3r/P6lltuMampqSHjJCQkmHvvvfe05lJXIBAwkkwgEGhUPQAAaHnn0vt3s96jVlRUpJKSEiUlJTltUVFRSkhIUE5Ozgn3CwQCateunfM6JydH11xzjdxut9OWkpKiwsJC7d+/36mpe5zamtrjfJ25VFRUKBgMhmwAAAAtpVmDWklJiSQpJiYmpD0mJsbpO9727ds1d+5c3XvvvSHjNDRG3WOcqKZuf1PnkpGRoaioKGeLi4s78ckCAAB8w1r0qc/du3dr+PDhuvnmm3X33Xe35FQkSVOmTFEgEHC2Xbt2tfSUAADAt1izBjW/3y9JKi0tDWkvLS11+mrt2bNH1113na688sqQhwRqx2lojLrHOFFN3f7GzqWWx+ORz+cL2QAAAFpKswa1Hj16yO/3a9WqVU5bMBhUbm6uEhMTnbbdu3fr2muv1aBBg5SVlaWwsNBpJCYmau3ataqqqnLaVq5cqb59+yo6OtqpqXuc2pra4zR2LgAAALZqclA7ePCgCgoKVFBQIOnYTfsFBQUqLi6Wy+XS+PHj9fTTT+utt97Spk2bNGrUKMXGxiotLU3Sf0Na165d9cILL+iLL75QSUlJyH1jt912m9xut8aOHastW7bojTfe0CuvvKIJEyY4NQ8//LDeffddvfjii/r88881Y8YMffLJJ3rwwQclqVFzAQAAsFpTHxNds2aNkVRvS09PN8Yc+7UYU6dONTExMcbj8Zhhw4aZwsJCZ/+srKwG9z9+Khs2bDBXXXWV8Xg8pnPnzua5556rN5clS5aYPn36GLfbbQYMGGCys7ND+k81l1M5lx7vBQDg2+Jcev92GWNMiyTEs0AwGFRUVJQCgQD3qwEAcJY4l96/+VufAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJZqclBbu3atRowYodjYWLlcLi1fvjyk3xijadOmqVOnTvJ6vUpKStK2bdtCar766ivdfvvt8vl8Ov/88zV27FgdPHgwpGbjxo26+uqrFRERobi4OM2aNaveXJYuXap+/fopIiJCAwcO1IoVK5o8FwAAAFs1OaiVl5crPj5emZmZDfbPmjVLc+bM0fz585Wbm6s2bdooJSVFR44ccWpuv/12bdmyRStXrtQ777yjtWvX6p577nH6g8GgkpOT1a1bN+Xl5Wn27NmaMWOGfv3rXzs169ev18iRIzV27Fjl5+crLS1NaWlp2rx5c5PmAgAAYC1zGiSZZcuWOa9ramqM3+83s2fPdtrKysqMx+MxixcvNsYY89lnnxlJ5uOPP3Zq/vKXvxiXy2V2795tjDFm3rx5Jjo62lRUVDg1kydPNn379nVe33LLLSY1NTVkPgkJCebee+9t9FxOJRAIGEkmEAg0qh4AALS8c+n9u1nvUSsqKlJJSYmSkpKctqioKCUkJCgnJ0eSlJOTo/PPP1+DBw92apKSkhQWFqbc3Fyn5pprrpHb7XZqUlJSVFhYqP379zs1dY9TW1N7nMbM5XgVFRUKBoMhGwAAQEtp1qBWUlIiSYqJiQlpj4mJcfpKSkrUsWPHkP5WrVqpXbt2ITUNjVH3GCeqqdt/qrkcLyMjQ1FRUc4WFxfXiLMGAAD4ZvDUZx1TpkxRIBBwtl27drX0lAAAwLdYswY1v98vSSotLQ1pLy0tdfr8fr/27dsX0n/06FF99dVXITUNjVH3GCeqqdt/qrkcz+PxyOfzhWwAAAAtpVmDWo8ePeT3+7Vq1SqnLRgMKjc3V4mJiZKkxMRElZWVKS8vz6lZvXq1ampqlJCQ4NSsXbtWVVVVTs3KlSvVt29fRUdHOzV1j1NbU3ucxswFAADAak19+uDAgQMmPz/f5OfnG0nml7/8pcnPzzf/+te/jDHGPPfcc+b88883f/7zn83GjRvNjTfeaHr06GEOHz7sjDF8+HBz2WWXmdzcXPP3v//d9O7d24wcOdLpLysrMzExMebOO+80mzdvNq+//rqJjIw0CxYscGrWrVtnWrVqZV544QWzdetWM336dNO6dWuzadMmp6YxczmZc+mpEQAAvi3OpffvJge1NWvWGEn1tvT0dGPMsV+LMXXqVBMTE2M8Ho8ZNmyYKSwsDBnjP//5jxk5cqQ577zzjM/nM6NHjzYHDhwIqdmwYYO56qqrjMfjMZ07dzbPPfdcvbksWbLE9OnTx7jdbjNgwACTnZ0d0t+YuZzMubTQAAB8W5xL798uY4xpqat5tgsGg4qKilIgEOB+NQAAzhLn0vs3T30CAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGCpVi09AZsZYyRJwWCwhWcCAAAaq/Z9u/Z9/GxGUDuJAwcOSJLi4uJaeCYAAKCpDhw4oKioqJaexmlxmXMhbn5DampqtGfPHrVt21Yul6tZxw4Gg4qLi9OuXbvk8/madWycGazh2Y31O/uxhme/b2oNjTE6cOCAYmNjFRZ2dt/lxRW1kwgLC1OXLl2+0WP4fD7+gznLsYZnN9bv7Mcanv2+iTU826+k1Tq7YyYAAMA5jKAGAABgKYJaC/F4PJo+fbo8Hk9LTwVfE2t4dmP9zn6s4dmPNTw1HiYAAACwFFfUAAAALEVQAwAAsBRBDQAAwFJnbVC79tprNX78+JaeRrPauXOnXC6XCgoKvvFjGWN0zz33qF27ds4xG2r7ppyL6/fBBx/I5XKprKzsGz/WoUOHdNNNN8nn8znHbKjtm8Qanh7W8JvBGp79vm1reErGEunp6UaSuffee+v1PfDAA0aSSU9Pd9r+85//mGAw6Lzu1q2beemll055nAULFpihQ4eatm3bGklm//79jZ5bRkZGSPuyZctMc34Ii4qKjCSTn5/fbGOeyIoVK0zr1q3NunXrzN69e01VVVWDbY11JtbvP//5j3nwwQdNnz59TEREhImLizMPPfSQKSsrO+l+Q4cONZLM4sWLQ9pfeukl061bt1OeW2OtWbOm0Z9Tp2vevHnmggsuMJs2bTJ79+41NTU1DbY1xZn6GrznnntMz549TUREhOnQoYP54Q9/aLZu3XrSfVjDxjlTa1irpqbGDB8+3Egyy5YtO2kta9g4Z2oNa9ej7tbQMRvahzU8s6y6ohYXF6fXX39dhw8fdtqOHDmiP/7xj+ratWtIbbt27dS2bdsmH+PQoUMaPny4Hn/88SbtFxERoeeff1779+9v8jFttGPHDnXq1ElXXnml/H6/WrVq1WBbU9SuX+3fSJWad/327NmjPXv26IUXXtDmzZu1cOFCvfvuuxo7duwp942IiNCTTz6pqqqqJh3TVjt27NBFF12kiy++WH6/Xy6Xq8G2pjoTX4ODBg1SVlaWtm7dqvfee0/GGCUnJ6u6uvqk+7GGjXMm1rDWyy+/3KQ5soaNc6bW8O6779bevXudbdasWafchzVsnOrqatXU1DTPJFs0JtaRnp5ubrzxRnPxxReb3//+9077H/7wB3PJJZeYG2+8MeS7iKFDh5qHH37Y+beO+87gVJqS2NPT080PfvAD069fP/PYY4857cdfUfvyyy/NT3/6UxMbG2u8Xq+5+OKLzR//+MeQsaqrq83zzz9vLrzwQuN2u01cXJx5+umnjTH/vaL2pz/9yVx77bXG6/WaSy65xKxfv97ZPysry0RFRZlly5aZXr16GY/HY5KTk01xcXG9j2VdDz/8sBk6dKjTX/dj1a1btwbbauf77LPPmu7du5uIiAhzySWXmKVLl9b7OCYlJZmoqCgjyTz++ONm6NCh5qGHHjKpqakmPDzceDweEx8f7+x3uutXa8mSJcbtdp/06t/QoUPN6NGjTfv27U1mZqbTfvx3gdu3bzc//OEPTceOHU2bNm3M4MGDzcqVK0PGOnLkiJk0aZLp0qWLcbvd5sILLzS//e1vQz4W77//vhk0aJDxer0mMTHRfP75587+06dPN/Hx8Wb+/PmmS5cuxuv1mptvvjnkqmDdj02tup//x3+8hg4d2mBb7XwnTpxoYmNjTWRkpBkyZIhZs2aNM27t59Of//xnZ/369u1r2rdvb5555hkzevRo4/F4TOvWrU18fHyzfg3W2rBhg5Fktm/ffsIa1tC+NczPzzedO3c2e/fubfQVNdbQnjVs6PxOhTVs3BpedNFFJjw83BQVFZlu3bo5a3jeeeeZuLg4s2DBgiZ93K26oiZJY8aMUVZWlvP6f//3fzV69OiT7vPmm2+qS5cumjlzpvOdQXMLDw/Xs88+q7lz5+rf//53gzVHjhzRoEGDlJ2drc2bN+uee+7RnXfeqY8++sipmTJlip577jlNnTpVn332mf74xz8qJiYmZJwnnnhCjz76qAoKCtSnTx+NHDlSR48edfoPHTqkZ555Rq+99prWrVunsrIy/fSnP230ubzyyiuaOXOmunTpor179+rjjz9usE2SMjIy9Nprr2n+/PnasmWLHnnkEd1xxx3661//GjJmXl6e+vfvr8cff1x///vfJUmLFi3SZ599psmTJ2vAgAHasGGDVq5cWW8+p7N+gUBAPp/vlFf/fD6fnnjiCc2cOVPl5eUN1hw8eFA33HCDVq1apfz8fA0fPlwjRoxQcXGxUzNq1CgtXrxYc+bM0datW7VgwQKdd955IeM88cQTevHFF/XJJ5+oVatWGjNmTEj/9u3btWTJEr399tt69913lZ+frwceeKDR5/zmm2/q7rvvVmJiovbu3as333yzwTZJevDBB5WTk6PXX39dGzdu1M0336zhw4dr27ZtzniHDh3S888/ryuvvFLDhg3T6NGjVV5erhdffFGDBw/WoEGDlJycrA0bNigQCJxwTl9nDcvLy5WVlaUePXooLi7upLWsoT1reOjQId12223KzMyU3+9v9HmzhvasoST94Q9/UIcOHXTxxRdrypQpOnTo0CnPmzU89Rr+9re/1ZYtW9SxY0dJctawdn7333+/CgsLGz1P666o7du3z3g8HrNz506zc+dOExERYb744ouTXlEzpun3VjT1ilrtFaorrrjCjBkzxhjTuHvUUlNTzcSJE40xxgSDQePxeMxvfvObBmtrr6jVfldhjDFbtmwxkpx7eLKysowk8+GHHzo1W7duNZJMbm5uvfnWqntFzZiG7yk4vu3IkSMmMjIy5IqeMcaMHTvWjBw50hjz34/jddddF7J+CQkJZvDgwSHr1759ezN58mRjzOmvnzHGfPHFF6Zr167m8ccfP2ld7bGOHDliunXrZmbOnHnCj8HxBgwYYObOnWuMMaawsNBIqvedYa263wXWys7ONpLM4cOHjTHHvgsMDw83//73v52av/zlLyYsLMzs3bs3ZL51Hf/5f/x6NtT2r3/9y4SHh5vdu3eH1A0bNsxMmTLFGPPfz6eCgoKQr0FJJi0tzfka3Ldvn3G73eaKK65wxjmdNczMzDRt2rRxrhyc7Gpa3WOxhse09Brec889ZuzYsc5rNfKKGmv4Xy29hgsWLDDvvvuu2bhxo/n9739vOnfubH70ox+ddB/WsHFrWFe3bt3MHXfc4byuqakxHTt2NK+++mqD596Qpt2EdAZccMEFSk1N1cKFC2WMUWpqqjp06NDS03I8//zz+t73vqdHH320Xl91dbWeffZZLVmyRLt371ZlZaUqKioUGRkpSdq6dasqKio0bNiwkx7jkksucf7dqVMnSdK+ffvUr18/SVKrVq30ne98x6np16+fzj//fG3dulVDhgw57XOstX37dh06dEjf//73Q9orKyt12WWXhbR16NBBlZWVzvrl5eU5/65dv8jISO3bt69Z5hYMBpWamqr+/ftrxowZjdrH4/Fo5syZeuihh3T//ffX6z948KBmzJih7Oxs7d27V0ePHtXhw4ed7wILCgoUHh6uoUOHnvQ4J1q/2ntLunbtqs6dOzs1iYmJqqmpUWFhYZOuTpzKpk2bVF1drT59+oS0V1RUqH379s5rt9sdMucLLrhAkZGRztWu1NRUXXDBBYqIiNCRI0eaZW633367vv/972vv3r164YUXdMstt2jdunWKiIg46X6s4TEtuYZvvfWWVq9erfz8/K+1P2t4TEt/Hd5zzz3OvwcOHKhOnTpp2LBh2rFjhy688MKT7ssaHnOqNWzoPFwul/x+f5PeC60LatKxH38++OCDkqTMzMwWnk2oa665RikpKZoyZYruuuuukL7Zs2frlVde0csvv6yBAweqTZs2Gj9+vCorKyVJXq+3Ucdo3bq18+/amxibclNiWFiYzHF/Gezr3Ph58OBBSVJ2dnbIF4Oken+XrVWrVs55jhkzRitWrND+/fv11FNPhdQ1x82VBw4c0PDhw9W2bVstW7Ys5ON1KnfccYdeeOEFPf300+revXtI36OPPqqVK1fqhRdeUK9eveT1evWTn/zkrF6/8PBw5eXlKTw8PKSv7o8YvF5vvZtl27Rpo7y8PG3bti3ka/D4eX1dUVFRioqKUu/evXXFFVcoOjpay5Yt08iRI0+5L2t4TEut4erVq7Vjxw6df/75Ie033XSTrr76an3wwQenHIM1PKalvw7rSkhIkHTsG/RTBTWJNax1qjWUVO89yuVyNe08mjjfM2L48OGqrKxUVVWVUlJSGrWP2+0+5VNjzeW5557T22+/rZycnJD2devW6cYbb9Qdd9yh+Ph49ezZU//4xz+c/t69e8vr9WrVqlWndfyjR4/qk08+cV4XFhaqrKxMF110kaRj34kdf2/C1/mdaP3795fH41FxcbF69eoVsp3sfqLhw4erpqZGNTU1zb5+wWBQycnJcrvdeuutt055BeZ4YWFhysjI0KuvvqqdO3eG9K1bt0533XWXfvSjH2ngwIHy+/0hNQMHDlRNTU29+/Oaqri4WHv27HFef/jhhwoLC1Pfvn0l1V+/6upqbd68ucnHueyyy1RdXa19+/bVW79Tfbfp9XpVXV19Rr4GjTEyxqiioqJR9axhy67hz3/+c23cuFEFBQXOJkkvvfRSyP3FJ8Ma2vd1WLuOtVeuToU1bNwaNgcrg1p4eLi2bt2qzz77rF56PZHu3btr7dq12r17t7788ssT1pWUlKigoEDbt2+XdOySZkFBgb766qtGz2/gwIG6/fbbNWfOnJD23r17a+XKlVq/fr22bt2qe++9V6WlpU5/RESEJk+erEmTJum1117Tjh079OGHH+p3v/tdo48tHUvnDz30kHJzc5WXl6e77rpLV1xxhfNjz+9973v65JNP9Nprr2nbtm2aPn361/rkbNu2rR599FE98sgjWrRokXbs2KFPP/1Uc+fO1aJFi064X3h4uL7zne/ojjvuaNb1qw1p5eXl+t3vfqdgMKiSkhKVlJQ06T+m1NRUJSQkaMGCBSHtvXv31ptvvqmCggJt2LBBt912W8h3Pd27d1d6errGjBmj5cuXq6ioSB988IGWLFnS6GNLxz4P0tPTtWHDBv3tb3/T//zP/+iWW25xvuC/973vKTs7W9nZ2fr88891//33f61fuNinTx/dfvvtGjVqlN58800VFRXpo48+UkZGhrKzs0+6r8vl0s9//vNm/xr85z//qYyMDOXl5am4uFjr16/XzTffLK/XqxtuuKHR58Yattwa+v1+XXzxxSGbdOzHUD169Gj0ubGGLbeGO3bs0C9+8Qvl5eVp586deuuttzRq1Chdc801Df7o7kRYw1OvYXOwMqhJx54s8fl8ja6fOXOmdu7cqQsvvFAXXHDBCevmz5+vyy67THfffbekYz/KvOyyy/TWW281aX4zZ86sd+nyySef1OWXX66UlBRde+218vv9SktLC6mZOnWqJk6cqGnTpumiiy7Srbfe2uT7tiIjIzV58mTddttt+u53v6vzzjtPb7zxhtOfkpKiqVOnatKkSfrOd76jAwcOaNSoUU06Rq1f/OIXmjp1qjIyMnTRRRdp+PDhys7OPuV/yK1atar349GTacz6ffrpp8rNzdWmTZvUq1cvderUydl27drVpPN6/vnn693n8ctf/lLR0dG68sorNWLECKWkpOjyyy8PqXn11Vf1k5/8RA888ID69eunu++++4RPPp1Ir1699OMf/1g33HCDkpOTdckll2jevHlO/5gxY5Senq5Ro0Zp6NCh6tmzp6677romHaNWVlaWRo0apYkTJ6pv375KS0vTxx9/XO93MTUkIiKi2b8GIyIi9Le//U033HCDevXqpVtvvVVt27bV+vXrnSekGos1bJk1bE6sYcusodvt1vvvv6/k5GT169dPEydO1E033aS333670cepxRqeeg1Pl8t8Ez/sxjdm4cKFGj9+fMv/SQt8LTNmzNDy5cvPyJ8JwzeDNTz7sYZnv2/TGlp7RQ0AAODbjqAGAABgKX70CQAAYCmuqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWOr/AWivfCVNwfnMAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import rieter_ekalk as rek\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def eine_anlage(Anzahl_MG):\n", + "\n", + " rsm_direct_eingabe = {\n", + " }\n", + " rsm_fa_eingabe = {\n", + " \"Flex_A_Premium\":False, # braucht man das noch?\n", + " \"Getriebe_in_der_Mitte\":False, # braucht man das noch?\n", + " \"RSM_Einfahrt_Ein_Beidseitig\":False, # braucht man das noch?\n", + " \"Sensor_optisch_Traverse_zusätzlich\":6,\n", + " \"Bedientableau_1fach_Korrektur\":0,\n", + " \"Bedientableau_2fach_Korrektur\":4,\n", + " \"Weiche_Korrektur\":4,\n", + " \"RRA_bi_Korrektur\":0,\n", + " \"RRA_bi_auf_Haupstrecke\":10,\n", + " \"RRA_uni_Begegnung\":4,\n", + " \"gemeinsame_Wendung\":0,\n", + " \"Mit_Drucktaster_Korrektur\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " \"klemmkasten_rsm\":2,\n", + " }\n", + " flyer_f40_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine\":0, #wird in deckblatt-Klasse berechnet\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur\":0,\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer\":2, #wird in deckblatt-Klasse berechnet\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer\":2, #wird in deckblatt-Klasse berechnet\n", + " #\"Anzahl_Schienen\":0,\n", + " \"Single_Line_Durchfahrt\":False,\n", + " \"Nachpuffer\":False,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensor_induktiv_Spulenhalter\":0,\n", + " \"Sensor_induktiv_Spulenhalter_Korrektur\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " \"Bedientableau_2fach_Korrektur\":0,\n", + " #\"Interface_Doffer\":0,\n", + " \"Interface_Doffer_Korrektur\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_Flyer_bipolar\":0,\n", + " \"Weiche_nach_Flyer_bipolar_Korrektur\":0,\n", + " \"Dreifachweiche\":0,\n", + " \"Wechsel\":0,\n", + " \"Stopper\":0,\n", + " \"RA_uni\":0,\n", + " #\"RA_uni_abhebbar\":0,\n", + " \"RA_uni_abhebbar_Korrektur\":0,\n", + " #\"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " \"RA_uni_ohne_SPS_Ansteuerung_Korrektur\":0,\n", + " #\"RRA_BI_abhebbar\":0,\n", + " \"RRA_BI_abhebbar_Korrektur\":0,\n", + " \"RRA_bi\":0,\n", + " #\"RRA_bi_Korrektur\":0,\n", + " #\"RRA_bi_ohne_SPS_Ansteuerung\":0,\n", + " \"RRA_bi_ohne_SPS_Ansteuerung_Korrektur\":0,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " \"Doppelstreckenantrieb_Korrektur\":0,\n", + " \"RA_bi_abhebbar_unger_Schiene\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " neuenhauser_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Neuenhauser-Putzmaschine\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Neuenhauser-Putzmaschine_Vorpuffer\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Neuenhauser-Putzmaschine_Nachpuffer\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Anzahl_Vorstaustrecken\":0,\n", + " #\"Anzahl_Nachstaustrecken\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensorik_Zugpositionierung\":0,\n", + " #\"Sensor_WT18_Spulenprüfung_voll_leer\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " \"Bedientableau_2fach_Korrektur\":0,\n", + " #\"Interface_Putzmaschine\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_PM_bipolar\":0,\n", + " #\"RA_uni_abhebbar\":0,\n", + " \"RA_uni_abhebbar_Korrektur\":0,\n", + " #\"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " #\"RA_uni_abhebbar_unger_Sch\":0,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " flyer_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Flyer\":0, # äquivalent zu 'Anzahl'\n", + " #\"Anzahl_Schienen:\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensor_induktiv_Spulenalter_Zug_positionierung\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " #\"Interface_Doffer\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_Flyer_bipolar\":0,\n", + " \"Dreifachweiche\":0,\n", + " #\"Wechsel\":0,\n", + " \"Wechsel_Korrektur\":0,\n", + " #\"RA_bi_ohne_SPS-Ansteuerung\":0,\n", + " #\"RA_bi_abhebbar\":0,\n", + " \"RA_bi_abhebbar_Korrektur\":0,\n", + " \"RA_bi\":4,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " \"RA_bi_abhebbar_unger_Schiene\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " verbindungsstrecken_w_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Bedientableau_1fach\":0,\n", + " \"Bedientableau_2fach\":0,\n", + " \"Bedientableau_14fach\":0,\n", + " \"Weiche\":0,\n", + " \"Dreifachweiche\":0,\n", + " \"Kreuzungsweiche\":1,\n", + " \"Werma_Rundumleuchte_Störung\":0,\n", + " \"RA_uni\":0,\n", + " \"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " \"RA_bi\":0,\n", + " \"RA_bi_ohne_SPS-Ansteuerung\":0,\n", + " \"Doppelstreckenantrieb\":0\n", + " }\n", + " puffer_eingabe = {\n", + " # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " # \"Anzahl\":0,\n", + " # \"Puffer\":0, #äquivalent zu Anzahl\n", + " # \"Anzahl_Pufferstrecken\":0, #äquivalent zu Anzahl_Staustrecken\n", + " # \"Anzahl_Staustrecken\":0,\n", + " # \"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\": 1,\n", + " # \"Weiche\":0,\n", + " \"Weiche_Korrektur\": 0,\n", + " \"RA_bi_ungerade_Schiene\": 2,\n", + " # \"Doppelstreckenantrieb\":0,\n", + " # \"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\": 0,\n", + " # \"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\": 0,\n", + " }\n", + " turm_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Turm\":0, #äquivalent zu Anzahl\n", + " #\"Anzahl_Wendlungen\":0, #äquivalent zu Anzahl_Staustrecken\n", + " #\"Anzahl_Staustrecken\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " #\"Weiche\":0,\n", + " #\"RA_bi\":0,\n", + " \"RA_bi_Korrektur\":0,\n", + " #\"RA_bi_ohne_SPS\":0,\n", + " \"RA_bi_ohne_SPS_Korrektur\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " }\n", + " mg = rek.MG(Anzahl_MG,\n", + " rsm_direct=rsm_direct_eingabe,\n", + " rsm_fa=rsm_fa_eingabe,\n", + " flyer_f40=flyer_f40_eingabe,\n", + " neuenhauser=neuenhauser_eingabe,\n", + " flyer=flyer_eingabe,\n", + " verbindungsstrecken_w=verbindungsstrecken_w_eingabe,\n", + " puffer=puffer_eingabe,\n", + " turm=turm_eingabe)\n", + " Anzahl_EAS = {}\n", + " eas = rek.EA(Anzahl_EAS, mg)\n", + "\n", + " Anzahl_HW = {}\n", + "\n", + " hw = rek.HW(Anzahl_HW, mg, eas)\n", + "\n", + " emo = rek.EMO(eas, hw, mg)\n", + " Anzahl_DL = {}\n", + " dl = rek.Dienstleistung(Anzahl_DL, hw)\n", + " Anzahl_Ergebnis = {}\n", + " erg = rek.Ergebnis(Anzahl_Ergebnis, hw, dl, emo)\n", + " return erg.get_sum_of_costs(hw)\n", + "\n", + "\n", + "Anzahl_MG = {\n", + " \"SYSTEM\": \"FA\",\n", + " \"RSM\":14,\n", + " \"Flyer\":4,\n", + " \"Flyer_Puffer\":2,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine\":0,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer\":0,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer\":0,\n", + " \"Neuenhauser-Putzmaschine\":0,\n", + " \"Neuenhauser-Putzmaschine_Vorpuffer\":0,\n", + " \"Neuenhauser-Putzmaschine_Nachpuffer\":0,\n", + " \"Cason-Putzmaschine\":0,\n", + " \"Cason-Putzmaschine_Vorpuffer\":0,\n", + " \"Cason-Putzmaschine_Nachpuffer\":0,\n", + " \"Puffer\":1,\n", + " \"Anzahl_der_Pufferstrecken_pro_Puffer\":5,\n", + " \"Begegnungsstrecke_Bypass\":2,\n", + " \"Turm\":0,\n", + " \"Turm_Anzahl_Wendlungen\":0,\n", + " }\n", + "\n", + "\n", + "variationen = {}\n", + "k = 1\n", + "while k < 6:\n", + " Anzahl_MG.update({\"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer\": k})\n", + " erg = eine_anlage(Anzahl_MG)\n", + " variationen.update({f\"Mit {k} Nachpuffern\": erg})\n", + " k += 1\n", + "print(variationen)\n", + "lists = sorted(variationen.items()) # sorted by key, return a list of tuples\n", + "\n", + "x, y = zip(*lists) \n", + "\n", + "plt.plot(x, y)\n", + "plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Neuenhauser-Putzmaschine Vorpuffer" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'Mit 1 Vorpuffern': 104833.16666666667, 'Mit 2 Vorpuffern': 104833.16666666667, 'Mit 3 Vorpuffern': 104833.16666666667, 'Mit 4 Vorpuffern': 104833.16666666667, 'Mit 5 Vorpuffern': 104833.16666666667}\n" + ] + }, + { + "data": { + "image/png": "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BQUFevTRRzV//nyVlpaqS5cuys7O1sGDB72aP/zhD7rppps0btw4rV+/Xm+++aZuuOEGb/+RI0eUk5OjQ4cOac2aNXr66ae1YMECTZs2zaupqKhQTk6ORowYobKyMk2YMEG33nqrXnvtNa9m8eLFmjhxoqZPn653331X6enpys7O1scff9za0wYAAGgb9iVIsqVLl3qP6+rqLCEhwebMmeON7d271/x+vy1cuNDMzGpra+2cc86x3/zmN83Ou3z5couMjLTKykpv7PHHH7dAIGA1NTVmZjZ58mQbNGhQ2PPGjh1r2dnZ3uNhw4bZ+PHjvcdHjhyxpKQkmzVrVovOLxgMmiQLBoMtqgcAAO61t9fvU3rNWEVFhSorK5WVleWNxcbGKiMjQyUlJZKkd999Vx999JEiIyN1wQUXKDExUVdccYU2bdrkPaekpESDBw9WfHy8N5adna1QKKTNmzd7NQ2PU19Tf5xDhw5p7dq1YTWRkZHKysryao5VU1OjUCgUtgEAALSlUxrGKisrJSksRNU/rt+3bds2SdKMGTN0//336+WXX1a3bt10+eWX6/PPP/fmaWqOhsdoriYUCunAgQP69NNPdeTIkeOu5VizZs1SbGystyUnJ7f6YwAAANAap/1uyrq6OknSz372M11zzTUaMmSIioqKFBERoeeff/50LyfMlClTFAwGvW3nzp1O1wMAAL76TmkYS0hIkCRVVVWFjVdVVXn7EhMTJUkDBw709vv9fvXu3Vs7duzw5mlqjobHaK4mEAgoOjpa3bt3V4cOHY67lmP5/X4FAoGwDQAAoC2d0jCWlpamhIQErVy50hsLhUIqLS1VZmamJGnIkCHy+/0qLy/3ampra7V9+3alpqZKkjIzM7Vx48awux5XrFihQCDghbjMzMyw49TX1B/H5/NpyJAhYTV1dXVauXKlVwMAAOBax9Y+Yf/+/dq6dav3uKKiQmVlZYqLi1NKSoomTJighx56SOeee67S0tI0depUJSUleX9HLBAI6M4779T06dOVnJys1NRUzZkzR5J07bXXSpJGjRqlgQMH6qabblJBQYEqKyt1//33a/z48fL7/ZKkO++8U7/+9a81efJk3XLLLVq1apWWLFmiV155xVvbxIkTlZeXp6FDh2rYsGF65JFHVF1drXHjxp30BwwAAOCUau3tl6tXrzZJjba8vDwz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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import rieter_ekalk as rek\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def eine_anlage(Anzahl_MG):\n", + "\n", + " rsm_direct_eingabe = {\n", + " }\n", + " rsm_fa_eingabe = {\n", + " \"Flex_A_Premium\":False, # braucht man das noch?\n", + " \"Getriebe_in_der_Mitte\":False, # braucht man das noch?\n", + " \"RSM_Einfahrt_Ein_Beidseitig\":False, # braucht man das noch?\n", + " \"Sensor_optisch_Traverse_zusätzlich\":6,\n", + " \"Bedientableau_1fach_Korrektur\":0,\n", + " \"Bedientableau_2fach_Korrektur\":4,\n", + " \"Weiche_Korrektur\":4,\n", + " \"RRA_bi_Korrektur\":0,\n", + " \"RRA_bi_auf_Haupstrecke\":10,\n", + " \"RRA_uni_Begegnung\":4,\n", + " \"gemeinsame_Wendung\":0,\n", + " \"Mit_Drucktaster_Korrektur\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " \"klemmkasten_rsm\":2,\n", + " }\n", + " flyer_f40_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine\":0, #wird in deckblatt-Klasse berechnet\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur\":0,\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer\":2, #wird in deckblatt-Klasse berechnet\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer\":2, #wird in deckblatt-Klasse berechnet\n", + " #\"Anzahl_Schienen\":0,\n", + " \"Single_Line_Durchfahrt\":False,\n", + " \"Nachpuffer\":False,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensor_induktiv_Spulenhalter\":0,\n", + " \"Sensor_induktiv_Spulenhalter_Korrektur\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " \"Bedientableau_2fach_Korrektur\":0,\n", + " #\"Interface_Doffer\":0,\n", + " \"Interface_Doffer_Korrektur\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_Flyer_bipolar\":0,\n", + " \"Weiche_nach_Flyer_bipolar_Korrektur\":0,\n", + " \"Dreifachweiche\":0,\n", + " \"Wechsel\":0,\n", + " \"Stopper\":0,\n", + " \"RA_uni\":0,\n", + " #\"RA_uni_abhebbar\":0,\n", + " \"RA_uni_abhebbar_Korrektur\":0,\n", + " #\"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " \"RA_uni_ohne_SPS_Ansteuerung_Korrektur\":0,\n", + " #\"RRA_BI_abhebbar\":0,\n", + " \"RRA_BI_abhebbar_Korrektur\":0,\n", + " \"RRA_bi\":0,\n", + " #\"RRA_bi_Korrektur\":0,\n", + " #\"RRA_bi_ohne_SPS_Ansteuerung\":0,\n", + " \"RRA_bi_ohne_SPS_Ansteuerung_Korrektur\":0,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " \"Doppelstreckenantrieb_Korrektur\":0,\n", + " \"RA_bi_abhebbar_unger_Schiene\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " neuenhauser_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Neuenhauser-Putzmaschine\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Neuenhauser-Putzmaschine_Vorpuffer\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Neuenhauser-Putzmaschine_Nachpuffer\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Anzahl_Vorstaustrecken\":0,\n", + " #\"Anzahl_Nachstaustrecken\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensorik_Zugpositionierung\":0,\n", + " #\"Sensor_WT18_Spulenprüfung_voll_leer\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " \"Bedientableau_2fach_Korrektur\":0,\n", + " #\"Interface_Putzmaschine\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_PM_bipolar\":0,\n", + " #\"RA_uni_abhebbar\":0,\n", + " \"RA_uni_abhebbar_Korrektur\":0,\n", + " #\"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " #\"RA_uni_abhebbar_unger_Sch\":0,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " flyer_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Flyer\":0, # äquivalent zu 'Anzahl'\n", + " #\"Anzahl_Schienen:\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensor_induktiv_Spulenalter_Zug_positionierung\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " #\"Interface_Doffer\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_Flyer_bipolar\":0,\n", + " \"Dreifachweiche\":0,\n", + " #\"Wechsel\":0,\n", + " \"Wechsel_Korrektur\":0,\n", + " #\"RA_bi_ohne_SPS-Ansteuerung\":0,\n", + " #\"RA_bi_abhebbar\":0,\n", + " \"RA_bi_abhebbar_Korrektur\":0,\n", + " \"RA_bi\":4,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " \"RA_bi_abhebbar_unger_Schiene\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " verbindungsstrecken_w_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Bedientableau_1fach\":0,\n", + " \"Bedientableau_2fach\":0,\n", + " \"Bedientableau_14fach\":0,\n", + " \"Weiche\":0,\n", + " \"Dreifachweiche\":0,\n", + " \"Kreuzungsweiche\":1,\n", + " \"Werma_Rundumleuchte_Störung\":0,\n", + " \"RA_uni\":0,\n", + " \"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " \"RA_bi\":0,\n", + " \"RA_bi_ohne_SPS-Ansteuerung\":0,\n", + " \"Doppelstreckenantrieb\":0\n", + " }\n", + " puffer_eingabe = {\n", + " # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " # \"Anzahl\":0,\n", + " # \"Puffer\":0, #äquivalent zu Anzahl\n", + " # \"Anzahl_Pufferstrecken\":0, #äquivalent zu Anzahl_Staustrecken\n", + " # \"Anzahl_Staustrecken\":0,\n", + " # \"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\": 1,\n", + " # \"Weiche\":0,\n", + " \"Weiche_Korrektur\": 0,\n", + " \"RA_bi_ungerade_Schiene\": 2,\n", + " # \"Doppelstreckenantrieb\":0,\n", + " # \"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\": 0,\n", + " # \"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\": 0,\n", + " }\n", + " turm_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Turm\":0, #äquivalent zu Anzahl\n", + " #\"Anzahl_Wendlungen\":0, #äquivalent zu Anzahl_Staustrecken\n", + " #\"Anzahl_Staustrecken\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " #\"Weiche\":0,\n", + " #\"RA_bi\":0,\n", + " \"RA_bi_Korrektur\":0,\n", + " #\"RA_bi_ohne_SPS\":0,\n", + " \"RA_bi_ohne_SPS_Korrektur\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " }\n", + " mg = rek.MG(Anzahl_MG,\n", + " rsm_direct=rsm_direct_eingabe,\n", + " rsm_fa=rsm_fa_eingabe,\n", + " flyer_f40=flyer_f40_eingabe,\n", + " neuenhauser=neuenhauser_eingabe,\n", + " flyer=flyer_eingabe,\n", + " verbindungsstrecken_w=verbindungsstrecken_w_eingabe,\n", + " puffer=puffer_eingabe,\n", + " turm=turm_eingabe)\n", + " Anzahl_EAS = {}\n", + " eas = rek.EA(Anzahl_EAS, mg)\n", + "\n", + " Anzahl_HW = {}\n", + "\n", + " hw = rek.HW(Anzahl_HW, mg, eas)\n", + "\n", + " emo = rek.EMO(eas, hw, mg)\n", + " Anzahl_DL = {}\n", + " dl = rek.Dienstleistung(Anzahl_DL, hw)\n", + " Anzahl_Ergebnis = {}\n", + " erg = rek.Ergebnis(Anzahl_Ergebnis, hw, dl, emo)\n", + " return erg.get_sum_of_costs(hw)\n", + "\n", + "\n", + "Anzahl_MG = {\n", + " \"SYSTEM\": \"FA\",\n", + " \"RSM\":14,\n", + " \"Flyer\":4,\n", + " \"Flyer_Puffer\":2,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine\":0,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer\":0,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer\":0,\n", + " \"Neuenhauser-Putzmaschine\":0,\n", + " \"Neuenhauser-Putzmaschine_Vorpuffer\":0,\n", + " \"Neuenhauser-Putzmaschine_Nachpuffer\":0,\n", + " \"Cason-Putzmaschine\":0,\n", + " \"Cason-Putzmaschine_Vorpuffer\":0,\n", + " \"Cason-Putzmaschine_Nachpuffer\":0,\n", + " \"Puffer\":1,\n", + " \"Anzahl_der_Pufferstrecken_pro_Puffer\":5,\n", + " \"Begegnungsstrecke_Bypass\":2,\n", + " \"Turm\":0,\n", + " \"Turm_Anzahl_Wendlungen\":0,\n", + " }\n", + "\n", + "\n", + "variationen = {}\n", + "k = 1\n", + "while k < 6:\n", + " Anzahl_MG.update({\"Neuenhauser-Putzmaschine_Vorpuffer\": k})\n", + " erg = eine_anlage(Anzahl_MG)\n", + " variationen.update({f\"Mit {k} Vorpuffern\": erg})\n", + " k += 1\n", + "print(variationen)\n", + "lists = sorted(variationen.items()) # sorted by key, return a list of tuples\n", + "\n", + "x, y = zip(*lists) \n", + "\n", + "plt.plot(x, y)\n", + "plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Neuenhauser-Putzmaschine Nachpuffer" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'Mit 1 Nachpuffern': 104833.16666666667, 'Mit 2 Nachpuffern': 104833.16666666667, 'Mit 3 Nachpuffern': 104833.16666666667, 'Mit 4 Nachpuffern': 104833.16666666667, 'Mit 5 Nachpuffern': 104833.16666666667}\n" + ] + }, + { + "data": { + "image/png": "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7+x3uutXa8mSJcbtdp/06t/QoUPN6NGjTfv27U1mZqbTfvx3gdu3bzc//OEPTceOHU2bNm3M4MGDzcqVK0PGOnLkiJk0aZLp0qWLcbvd5sILLzS//e1vQz4W77//vhk0aJDxer0mMTHRfP75587+06dPN/Hx8Wb+/PmmS5cuxuv1mptvvjnkqmDdj02tup//x3+8hg4d2mBb7XwnTpxoYmNjTWRkpBkyZIhZs2aNM27t59Of//xnZ/369u1r2rdvb5555hkzevRo4/F4TOvWrU18fHyzfg3W2rBhg5Fktm/ffsIa1tC+NczPzzedO3c2e/fubfQVNdbQnjVs6PxOhTVs3BpedNFFJjw83BQVFZlu3bo5a3jeeeeZuLg4s2DBgiZ93K26oiZJY8aMUVZWlvP6f//3fzV69OiT7vPmm2+qS5cumjlzpvOdQXMLDw/Xs88+q7lz5+rf//53gzVHjhzRoEGDlJ2drc2bN+uee+7RnXfeqY8++sipmTJlip577jlNnTpVn332mf74xz8qJiYmZJwnnnhCjz76qAoKCtSnTx+NHDlSR48edfoPHTqkZ555Rq+99prWrVunsrIy/fSnP230ubzyyiuaOXOmunTpor179+rjjz9usE2SMjIy9Nprr2n+/PnasmWLHnnkEd1xxx3661//GjJmXl6e+vfvr8cff1x///vfJUmLFi3SZ599psmTJ2vAgAHasGGDVq5cWW8+p7N+gUBAPp/vlFf/fD6fnnjiCc2cOVPl5eUN1hw8eFA33HCDVq1apfz8fA0fPlwjRoxQcXGxUzNq1CgtXrxYc+bM0datW7VgwQKdd955IeM88cQTevHFF/XJJ5+oVatWGjNmTEj/9u3btWTJEr399tt69913lZ+frwceeKDR5/zmm2/q7rvvVmJiovbu3as333yzwTZJevDBB5WTk6PXX39dGzdu1M0336zhw4dr27ZtzniHDh3S888/ryuvvFLDhg3T6NGjVV5erhdffFGDBw/WoEGDlJycrA0bNigQCJxwTl9nDcvLy5WVlaUePXooLi7upLWsoT1reOjQId12223KzMyU3+9v9HmzhvasoST94Q9/UIcOHXTxxRdrypQpOnTo0CnPmzU89Rr+9re/1ZYtW9SxY0dJctawdn7333+/CgsLGz1P666o7du3z3g8HrNz506zc+dOExERYb744ouTXlEzpun3VjT1ilrtFaorrrjCjBkzxhjTuHvUUlNTzcSJE40xxgSDQePxeMxvfvObBmtrr6jVfldhjDFbtmwxkpx7eLKysowk8+GHHzo1W7duNZJMbm5uvfnWqntFzZiG7yk4vu3IkSMmMjIy5IqeMcaMHTvWjBw50hjz34/jddddF7J+CQkJZvDgwSHr1759ezN58mRjzOmvnzHGfPHFF6Zr167m8ccfP2ld7bGOHDliunXrZmbOnHnCj8HxBgwYYObOnWuMMaawsNBIqvedYa263wXWys7ONpLM4cOHjTHHvgsMDw83//73v52av/zlLyYsLMzs3bs3ZL51Hf/5f/x6NtT2r3/9y4SHh5vdu3eH1A0bNsxMmTLFGPPfz6eCgoKQr0FJJi0tzfka3Ldvn3G73eaKK65wxjmdNczMzDRt2rRxrhyc7Gpa3WOxhse09Brec889ZuzYsc5rNfKKGmv4Xy29hgsWLDDvvvuu2bhxo/n9739vOnfubH70ox+ddB/WsHFrWFe3bt3MHXfc4byuqakxHTt2NK+++mqD596Qpt2EdAZccMEFSk1N1cKFC2WMUWpqqjp06NDS03I8//zz+t73vqdHH320Xl91dbWeffZZLVmyRLt371ZlZaUqKioUGRkpSdq6dasqKio0bNiwkx7jkksucf7dqVMnSdK+ffvUr18/SVKrVq30ne98x6np16+fzj//fG3dulVDhgw57XOstX37dh06dEjf//73Q9orKyt12WWXhbR16NBBlZWVzvrl5eU5/65dv8jISO3bt69Z5hYMBpWamqr+/ftrxowZjdrH4/Fo5syZeuihh3T//ffX6z948KBmzJih7Oxs7d27V0ePHtXhw4ed7wILCgoUHh6uoUOHnvQ4J1q/2ntLunbtqs6dOzs1iYmJqqmpUWFhYZOuTpzKpk2bVF1drT59+oS0V1RUqH379s5rt9sdMucLLrhAkZGRztWu1NRUXXDBBYqIiNCRI0eaZW633367vv/972vv3r164YUXdMstt2jdunWKiIg46X6s4TEtuYZvvfWWVq9erfz8/K+1P2t4TEt/Hd5zzz3OvwcOHKhOnTpp2LBh2rFjhy688MKT7ssaHnOqNWzoPFwul/x+f5PeC60LatKxH38++OCDkqTMzMwWnk2oa665RikpKZoyZYruuuuukL7Zs2frlVde0csvv6yBAweqTZs2Gj9+vCorKyVJXq+3Ucdo3bq18+/amxibclNiWFiYzHF/Gezr3Ph58OBBSVJ2dnbIF4Oken+XrVWrVs55jhkzRitWrND+/fv11FNPhdQ1x82VBw4c0PDhw9W2bVstW7Ys5ON1KnfccYdeeOEFPf300+revXtI36OPPqqVK1fqhRdeUK9eveT1evWTn/zkrF6/8PBw5eXlKTw8PKSv7o8YvF5vvZtl27Rpo7y8PG3bti3ka/D4eX1dUVFRioqKUu/evXXFFVcoOjpay5Yt08iRI0+5L2t4TEut4erVq7Vjxw6df/75Ie033XSTrr76an3wwQenHIM1PKalvw7rSkhIkHTsG/RTBTWJNax1qjWUVO89yuVyNe08mjjfM2L48OGqrKxUVVWVUlJSGrWP2+0+5VNjzeW5557T22+/rZycnJD2devW6cYbb9Qdd9yh+Ph49ezZU//4xz+c/t69e8vr9WrVqlWndfyjR4/qk08+cV4XFhaqrKxMF110kaRj34kdf2/C1/mdaP3795fH41FxcbF69eoVsp3sfqLhw4erpqZGNTU1zb5+wWBQycnJcrvdeuutt055BeZ4YWFhysjI0KuvvqqdO3eG9K1bt0533XWXfvSjH2ngwIHy+/0hNQMHDlRNTU29+/Oaqri4WHv27HFef/jhhwoLC1Pfvn0l1V+/6upqbd68ucnHueyyy1RdXa19+/bVW79Tfbfp9XpVXV19Rr4GjTEyxqiioqJR9axhy67hz3/+c23cuFEFBQXOJkkvvfRSyP3FJ8Ma2vd1WLuOtVeuToU1bNwaNgcrg1p4eLi2bt2qzz77rF56PZHu3btr7dq12r17t7788ssT1pWUlKigoEDbt2+XdOySZkFBgb766qtGz2/gwIG6/fbbNWfOnJD23r17a+XKlVq/fr22bt2qe++9V6WlpU5/RESEJk+erEmTJum1117Tjh079OGHH+p3v/tdo48tHUvnDz30kHJzc5WXl6e77rpLV1xxhfNjz+9973v65JNP9Nprr2nbtm2aPn361/rkbNu2rR599FE98sgjWrRokXbs2KFPP/1Uc+fO1aJFi064X3h4uL7zne/ojjvuaNb1qw1p5eXl+t3vfqdgMKiSkhKVlJQ06T+m1NRUJSQkaMGCBSHtvXv31ptvvqmCggJt2LBBt912W8h3Pd27d1d6errGjBmj5cuXq6ioSB988IGWLFnS6GNLxz4P0tPTtWHDBv3tb3/T//zP/+iWW25xvuC/973vKTs7W9nZ2fr88891//33f61fuNinTx/dfvvtGjVqlN58800VFRXpo48+UkZGhrKzs0+6r8vl0s9//vNm/xr85z//qYyMDOXl5am4uFjr16/XzTffLK/XqxtuuKHR58Yattwa+v1+XXzxxSGbdOzHUD169Gj0ubGGLbeGO3bs0C9+8Qvl5eVp586deuuttzRq1Chdc801Df7o7kRYw1OvYXOwMqhJx54s8fl8ja6fOXOmdu7cqQsvvFAXXHDBCevmz5+vyy67THfffbekYz/KvOyyy/TWW281aX4zZ86sd+nyySef1OWXX66UlBRde+218vv9SktLC6mZOnWqJk6cqGnTpumiiy7Srbfe2uT7tiIjIzV58mTddttt+u53v6vzzjtPb7zxhtOfkpKiqVOnatKkSfrOd76jAwcOaNSoUU06Rq1f/OIXmjp1qjIyMnTRRRdp+PDhys7OPuV/yK1atar349GTacz6ffrpp8rNzdWmTZvUq1cvderUydl27drVpPN6/vnn693n8ctf/lLR0dG68sorNWLECKWkpOjyyy8PqXn11Vf1k5/8RA888ID69eunu++++4RPPp1Ir1699OMf/1g33HCDkpOTdckll2jevHlO/5gxY5Senq5Ro0Zp6NCh6tmzp6677romHaNWVlaWRo0apYkTJ6pv375KS0vTxx9/XO93MTUkIiKi2b8GIyIi9Le//U033HCDevXqpVtvvVVt27bV+vXrnSekGos1bJk1bE6sYcusodvt1vvvv6/k5GT169dPEydO1E033aS333670cepxRqeeg1Pl8t8Ez/sxjdm4cKFGj9+fMv/SQt8LTNmzNDy5cvPyJ8JwzeDNTz7sYZnv2/TGlp7RQ0AAODbjqAGAABgKX70CQAAYCmuqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWOr/AWivfCVNwfnMAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import rieter_ekalk as rek\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def eine_anlage(Anzahl_MG):\n", + "\n", + " rsm_direct_eingabe = {\n", + " }\n", + " rsm_fa_eingabe = {\n", + " \"Flex_A_Premium\":False, # braucht man das noch?\n", + " \"Getriebe_in_der_Mitte\":False, # braucht man das noch?\n", + " \"RSM_Einfahrt_Ein_Beidseitig\":False, # braucht man das noch?\n", + " \"Sensor_optisch_Traverse_zusätzlich\":6,\n", + " \"Bedientableau_1fach_Korrektur\":0,\n", + " \"Bedientableau_2fach_Korrektur\":4,\n", + " \"Weiche_Korrektur\":4,\n", + " \"RRA_bi_Korrektur\":0,\n", + " \"RRA_bi_auf_Haupstrecke\":10,\n", + " \"RRA_uni_Begegnung\":4,\n", + " \"gemeinsame_Wendung\":0,\n", + " \"Mit_Drucktaster_Korrektur\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " \"klemmkasten_rsm\":2,\n", + " }\n", + " flyer_f40_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine\":0, #wird in deckblatt-Klasse berechnet\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur\":0,\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer\":2, #wird in deckblatt-Klasse berechnet\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer\":2, #wird in deckblatt-Klasse berechnet\n", + " #\"Anzahl_Schienen\":0,\n", + " \"Single_Line_Durchfahrt\":False,\n", + " \"Nachpuffer\":False,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensor_induktiv_Spulenhalter\":0,\n", + " \"Sensor_induktiv_Spulenhalter_Korrektur\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " \"Bedientableau_2fach_Korrektur\":0,\n", + " #\"Interface_Doffer\":0,\n", + " \"Interface_Doffer_Korrektur\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_Flyer_bipolar\":0,\n", + " \"Weiche_nach_Flyer_bipolar_Korrektur\":0,\n", + " \"Dreifachweiche\":0,\n", + " \"Wechsel\":0,\n", + " \"Stopper\":0,\n", + " \"RA_uni\":0,\n", + " #\"RA_uni_abhebbar\":0,\n", + " \"RA_uni_abhebbar_Korrektur\":0,\n", + " #\"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " \"RA_uni_ohne_SPS_Ansteuerung_Korrektur\":0,\n", + " #\"RRA_BI_abhebbar\":0,\n", + " \"RRA_BI_abhebbar_Korrektur\":0,\n", + " \"RRA_bi\":0,\n", + " #\"RRA_bi_Korrektur\":0,\n", + " #\"RRA_bi_ohne_SPS_Ansteuerung\":0,\n", + " \"RRA_bi_ohne_SPS_Ansteuerung_Korrektur\":0,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " \"Doppelstreckenantrieb_Korrektur\":0,\n", + " \"RA_bi_abhebbar_unger_Schiene\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " neuenhauser_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Neuenhauser-Putzmaschine\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Neuenhauser-Putzmaschine_Vorpuffer\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Neuenhauser-Putzmaschine_Nachpuffer\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Anzahl_Vorstaustrecken\":0,\n", + " #\"Anzahl_Nachstaustrecken\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensorik_Zugpositionierung\":0,\n", + " #\"Sensor_WT18_Spulenprüfung_voll_leer\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " \"Bedientableau_2fach_Korrektur\":0,\n", + " #\"Interface_Putzmaschine\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_PM_bipolar\":0,\n", + " #\"RA_uni_abhebbar\":0,\n", + " \"RA_uni_abhebbar_Korrektur\":0,\n", + " #\"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " #\"RA_uni_abhebbar_unger_Sch\":0,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " flyer_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Flyer\":0, # äquivalent zu 'Anzahl'\n", + " #\"Anzahl_Schienen:\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensor_induktiv_Spulenalter_Zug_positionierung\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " #\"Interface_Doffer\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_Flyer_bipolar\":0,\n", + " \"Dreifachweiche\":0,\n", + " #\"Wechsel\":0,\n", + " \"Wechsel_Korrektur\":0,\n", + " #\"RA_bi_ohne_SPS-Ansteuerung\":0,\n", + " #\"RA_bi_abhebbar\":0,\n", + " \"RA_bi_abhebbar_Korrektur\":0,\n", + " \"RA_bi\":4,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " \"RA_bi_abhebbar_unger_Schiene\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " verbindungsstrecken_w_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Bedientableau_1fach\":0,\n", + " \"Bedientableau_2fach\":0,\n", + " \"Bedientableau_14fach\":0,\n", + " \"Weiche\":0,\n", + " \"Dreifachweiche\":0,\n", + " \"Kreuzungsweiche\":1,\n", + " \"Werma_Rundumleuchte_Störung\":0,\n", + " \"RA_uni\":0,\n", + " \"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " \"RA_bi\":0,\n", + " \"RA_bi_ohne_SPS-Ansteuerung\":0,\n", + " \"Doppelstreckenantrieb\":0\n", + " }\n", + " puffer_eingabe = {\n", + " # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " # \"Anzahl\":0,\n", + " # \"Puffer\":0, #äquivalent zu Anzahl\n", + " # \"Anzahl_Pufferstrecken\":0, #äquivalent zu Anzahl_Staustrecken\n", + " # \"Anzahl_Staustrecken\":0,\n", + " # \"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\": 1,\n", + " # \"Weiche\":0,\n", + " \"Weiche_Korrektur\": 0,\n", + " \"RA_bi_ungerade_Schiene\": 2,\n", + " # \"Doppelstreckenantrieb\":0,\n", + " # \"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\": 0,\n", + " # \"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\": 0,\n", + " }\n", + " turm_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Turm\":0, #äquivalent zu Anzahl\n", + " #\"Anzahl_Wendlungen\":0, #äquivalent zu Anzahl_Staustrecken\n", + " #\"Anzahl_Staustrecken\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " #\"Weiche\":0,\n", + " #\"RA_bi\":0,\n", + " \"RA_bi_Korrektur\":0,\n", + " #\"RA_bi_ohne_SPS\":0,\n", + " \"RA_bi_ohne_SPS_Korrektur\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " }\n", + " mg = rek.MG(Anzahl_MG,\n", + " rsm_direct=rsm_direct_eingabe,\n", + " rsm_fa=rsm_fa_eingabe,\n", + " flyer_f40=flyer_f40_eingabe,\n", + " neuenhauser=neuenhauser_eingabe,\n", + " flyer=flyer_eingabe,\n", + " verbindungsstrecken_w=verbindungsstrecken_w_eingabe,\n", + " puffer=puffer_eingabe,\n", + " turm=turm_eingabe)\n", + " Anzahl_EAS = {}\n", + " eas = rek.EA(Anzahl_EAS, mg)\n", + "\n", + " Anzahl_HW = {}\n", + "\n", + " hw = rek.HW(Anzahl_HW, mg, eas)\n", + "\n", + " emo = rek.EMO(eas, hw, mg)\n", + " Anzahl_DL = {}\n", + " dl = rek.Dienstleistung(Anzahl_DL, hw)\n", + " Anzahl_Ergebnis = {}\n", + " erg = rek.Ergebnis(Anzahl_Ergebnis, hw, dl, emo)\n", + " return erg.get_sum_of_costs(hw)\n", + "\n", + "\n", + "Anzahl_MG = {\n", + " \"SYSTEM\": \"FA\",\n", + " \"RSM\":14,\n", + " \"Flyer\":4,\n", + " \"Flyer_Puffer\":2,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine\":0,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer\":0,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer\":0,\n", + " \"Neuenhauser-Putzmaschine\":0,\n", + " \"Neuenhauser-Putzmaschine_Vorpuffer\":0,\n", + " \"Neuenhauser-Putzmaschine_Nachpuffer\":0,\n", + " \"Cason-Putzmaschine\":0,\n", + " \"Cason-Putzmaschine_Vorpuffer\":0,\n", + " \"Cason-Putzmaschine_Nachpuffer\":0,\n", + " \"Puffer\":1,\n", + " \"Anzahl_der_Pufferstrecken_pro_Puffer\":5,\n", + " \"Begegnungsstrecke_Bypass\":2,\n", + " \"Turm\":0,\n", + " \"Turm_Anzahl_Wendlungen\":0,\n", + " }\n", + "\n", + "\n", + "variationen = {}\n", + "k = 1\n", + "while k < 6:\n", + " Anzahl_MG.update({\"Neuenhauser-Putzmaschine_Nachpuffer\": k})\n", + " erg = eine_anlage(Anzahl_MG)\n", + " variationen.update({f\"Mit {k} Nachpuffern\": erg})\n", + " k += 1\n", + "print(variationen)\n", + "lists = sorted(variationen.items()) # sorted by key, return a list of tuples\n", + "\n", + "x, y = zip(*lists) \n", + "\n", + "plt.plot(x, y)\n", + "plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cason-Putzmaschine Vorpuffer" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'Mit 1 Vorpuffern': 104833.16666666667, 'Mit 2 Vorpuffern': 104833.16666666667, 'Mit 3 Vorpuffern': 104833.16666666667, 'Mit 4 Vorpuffern': 104833.16666666667, 'Mit 5 Vorpuffern': 104833.16666666667}\n" + ] + }, + { + "data": { + "image/png": "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BQUFevTRRzV//nyVlpaqS5cuys7O1sGDB72aP/zhD7rppps0btw4rV+/Xm+++aZuuOEGb/+RI0eUk5OjQ4cOac2aNXr66ae1YMECTZs2zaupqKhQTk6ORowYobKyMk2YMEG33nqrXnvtNa9m8eLFmjhxoqZPn653331X6enpys7O1scff9za0wYAAGgb9iVIsqVLl3qP6+rqLCEhwebMmeON7d271/x+vy1cuNDMzGpra+2cc86x3/zmN83Ou3z5couMjLTKykpv7PHHH7dAIGA1NTVmZjZ58mQbNGhQ2PPGjh1r2dnZ3uNhw4bZ+PHjvcdHjhyxpKQkmzVrVovOLxgMmiQLBoMtqgcAAO61t9fvU3rNWEVFhSorK5WVleWNxcbGKiMjQyUlJZKkd999Vx999JEiIyN1wQUXKDExUVdccYU2bdrkPaekpESDBw9WfHy8N5adna1QKKTNmzd7NQ2PU19Tf5xDhw5p7dq1YTWRkZHKysryao5VU1OjUCgUtgEAALSlUxrGKisrJSksRNU/rt+3bds2SdKMGTN0//336+WXX1a3bt10+eWX6/PPP/fmaWqOhsdoriYUCunAgQP69NNPdeTIkeOu5VizZs1SbGystyUnJ7f6YwAAANAap/1uyrq6OknSz372M11zzTUaMmSIioqKFBERoeeff/50LyfMlClTFAwGvW3nzp1O1wMAAL76TmkYS0hIkCRVVVWFjVdVVXn7EhMTJUkDBw709vv9fvXu3Vs7duzw5mlqjobHaK4mEAgoOjpa3bt3V4cOHY67lmP5/X4FAoGwDQAAoC2d0jCWlpamhIQErVy50hsLhUIqLS1VZmamJGnIkCHy+/0qLy/3ampra7V9+3alpqZKkjIzM7Vx48awux5XrFihQCDghbjMzMyw49TX1B/H5/NpyJAhYTV1dXVauXKlVwMAAOBax9Y+Yf/+/dq6dav3uKKiQmVlZYqLi1NKSoomTJighx56SOeee67S0tI0depUJSUleX9HLBAI6M4779T06dOVnJys1NRUzZkzR5J07bXXSpJGjRqlgQMH6qabblJBQYEqKyt1//33a/z48fL7/ZKkO++8U7/+9a81efJk3XLLLVq1apWWLFmiV155xVvbxIkTlZeXp6FDh2rYsGF65JFHVF1drXHjxp30BwwAAOCUau3tl6tXrzZJjba8vDwz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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import rieter_ekalk as rek\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def eine_anlage(Anzahl_MG):\n", + "\n", + " rsm_direct_eingabe = {\n", + " }\n", + " rsm_fa_eingabe = {\n", + " \"Flex_A_Premium\":False, # braucht man das noch?\n", + " \"Getriebe_in_der_Mitte\":False, # braucht man das noch?\n", + " \"RSM_Einfahrt_Ein_Beidseitig\":False, # braucht man das noch?\n", + " \"Sensor_optisch_Traverse_zusätzlich\":6,\n", + " \"Bedientableau_1fach_Korrektur\":0,\n", + " \"Bedientableau_2fach_Korrektur\":4,\n", + " \"Weiche_Korrektur\":4,\n", + " \"RRA_bi_Korrektur\":0,\n", + " \"RRA_bi_auf_Haupstrecke\":10,\n", + " \"RRA_uni_Begegnung\":4,\n", + " \"gemeinsame_Wendung\":0,\n", + " \"Mit_Drucktaster_Korrektur\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " \"klemmkasten_rsm\":2,\n", + " }\n", + " flyer_f40_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine\":0, #wird in deckblatt-Klasse berechnet\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur\":0,\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer\":2, #wird in deckblatt-Klasse berechnet\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer\":2, #wird in deckblatt-Klasse berechnet\n", + " #\"Anzahl_Schienen\":0,\n", + " \"Single_Line_Durchfahrt\":False,\n", + " \"Nachpuffer\":False,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensor_induktiv_Spulenhalter\":0,\n", + " \"Sensor_induktiv_Spulenhalter_Korrektur\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " \"Bedientableau_2fach_Korrektur\":0,\n", + " #\"Interface_Doffer\":0,\n", + " \"Interface_Doffer_Korrektur\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_Flyer_bipolar\":0,\n", + " \"Weiche_nach_Flyer_bipolar_Korrektur\":0,\n", + " \"Dreifachweiche\":0,\n", + " \"Wechsel\":0,\n", + " \"Stopper\":0,\n", + " \"RA_uni\":0,\n", + " #\"RA_uni_abhebbar\":0,\n", + " \"RA_uni_abhebbar_Korrektur\":0,\n", + " #\"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " \"RA_uni_ohne_SPS_Ansteuerung_Korrektur\":0,\n", + " #\"RRA_BI_abhebbar\":0,\n", + " \"RRA_BI_abhebbar_Korrektur\":0,\n", + " \"RRA_bi\":0,\n", + " #\"RRA_bi_Korrektur\":0,\n", + " #\"RRA_bi_ohne_SPS_Ansteuerung\":0,\n", + " \"RRA_bi_ohne_SPS_Ansteuerung_Korrektur\":0,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " \"Doppelstreckenantrieb_Korrektur\":0,\n", + " \"RA_bi_abhebbar_unger_Schiene\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " neuenhauser_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Neuenhauser-Putzmaschine\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Neuenhauser-Putzmaschine_Vorpuffer\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Neuenhauser-Putzmaschine_Nachpuffer\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Anzahl_Vorstaustrecken\":0,\n", + " #\"Anzahl_Nachstaustrecken\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensorik_Zugpositionierung\":0,\n", + " #\"Sensor_WT18_Spulenprüfung_voll_leer\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " \"Bedientableau_2fach_Korrektur\":0,\n", + " #\"Interface_Putzmaschine\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_PM_bipolar\":0,\n", + " #\"RA_uni_abhebbar\":0,\n", + " \"RA_uni_abhebbar_Korrektur\":0,\n", + " #\"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " #\"RA_uni_abhebbar_unger_Sch\":0,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " flyer_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Flyer\":0, # äquivalent zu 'Anzahl'\n", + " #\"Anzahl_Schienen:\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensor_induktiv_Spulenalter_Zug_positionierung\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " #\"Interface_Doffer\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_Flyer_bipolar\":0,\n", + " \"Dreifachweiche\":0,\n", + " #\"Wechsel\":0,\n", + " \"Wechsel_Korrektur\":0,\n", + " #\"RA_bi_ohne_SPS-Ansteuerung\":0,\n", + " #\"RA_bi_abhebbar\":0,\n", + " \"RA_bi_abhebbar_Korrektur\":0,\n", + " \"RA_bi\":4,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " \"RA_bi_abhebbar_unger_Schiene\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " verbindungsstrecken_w_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Bedientableau_1fach\":0,\n", + " \"Bedientableau_2fach\":0,\n", + " \"Bedientableau_14fach\":0,\n", + " \"Weiche\":0,\n", + " \"Dreifachweiche\":0,\n", + " \"Kreuzungsweiche\":1,\n", + " \"Werma_Rundumleuchte_Störung\":0,\n", + " \"RA_uni\":0,\n", + " \"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " \"RA_bi\":0,\n", + " \"RA_bi_ohne_SPS-Ansteuerung\":0,\n", + " \"Doppelstreckenantrieb\":0\n", + " }\n", + " puffer_eingabe = {\n", + " # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " # \"Anzahl\":0,\n", + " # \"Puffer\":0, #äquivalent zu Anzahl\n", + " # \"Anzahl_Pufferstrecken\":0, #äquivalent zu Anzahl_Staustrecken\n", + " # \"Anzahl_Staustrecken\":0,\n", + " # \"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\": 1,\n", + " # \"Weiche\":0,\n", + " \"Weiche_Korrektur\": 0,\n", + " \"RA_bi_ungerade_Schiene\": 2,\n", + " # \"Doppelstreckenantrieb\":0,\n", + " # \"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\": 0,\n", + " # \"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\": 0,\n", + " }\n", + " turm_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Turm\":0, #äquivalent zu Anzahl\n", + " #\"Anzahl_Wendlungen\":0, #äquivalent zu Anzahl_Staustrecken\n", + " #\"Anzahl_Staustrecken\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " #\"Weiche\":0,\n", + " #\"RA_bi\":0,\n", + " \"RA_bi_Korrektur\":0,\n", + " #\"RA_bi_ohne_SPS\":0,\n", + " \"RA_bi_ohne_SPS_Korrektur\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " }\n", + " mg = rek.MG(Anzahl_MG,\n", + " rsm_direct=rsm_direct_eingabe,\n", + " rsm_fa=rsm_fa_eingabe,\n", + " flyer_f40=flyer_f40_eingabe,\n", + " neuenhauser=neuenhauser_eingabe,\n", + " flyer=flyer_eingabe,\n", + " verbindungsstrecken_w=verbindungsstrecken_w_eingabe,\n", + " puffer=puffer_eingabe,\n", + " turm=turm_eingabe)\n", + " Anzahl_EAS = {}\n", + " eas = rek.EA(Anzahl_EAS, mg)\n", + "\n", + " Anzahl_HW = {}\n", + "\n", + " hw = rek.HW(Anzahl_HW, mg, eas)\n", + "\n", + " emo = rek.EMO(eas, hw, mg)\n", + " Anzahl_DL = {}\n", + " dl = rek.Dienstleistung(Anzahl_DL, hw)\n", + " Anzahl_Ergebnis = {}\n", + " erg = rek.Ergebnis(Anzahl_Ergebnis, hw, dl, emo)\n", + " return erg.get_sum_of_costs(hw)\n", + "\n", + "\n", + "Anzahl_MG = {\n", + " \"SYSTEM\": \"FA\",\n", + " \"RSM\":14,\n", + " \"Flyer\":4,\n", + " \"Flyer_Puffer\":2,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine\":0,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer\":0,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer\":0,\n", + " \"Neuenhauser-Putzmaschine\":0,\n", + " \"Neuenhauser-Putzmaschine_Vorpuffer\":0,\n", + " \"Neuenhauser-Putzmaschine_Nachpuffer\":0,\n", + " \"Cason-Putzmaschine\":0,\n", + " \"Cason-Putzmaschine_Vorpuffer\":0,\n", + " \"Cason-Putzmaschine_Nachpuffer\":0,\n", + " \"Puffer\":1,\n", + " \"Anzahl_der_Pufferstrecken_pro_Puffer\":5,\n", + " \"Begegnungsstrecke_Bypass\":2,\n", + " \"Turm\":0,\n", + " \"Turm_Anzahl_Wendlungen\":0,\n", + " }\n", + "\n", + "\n", + "variationen = {}\n", + "k = 1\n", + "while k < 6:\n", + " Anzahl_MG.update({\"Cason-Putzmaschine_Vorpuffer\": k})\n", + " erg = eine_anlage(Anzahl_MG)\n", + " variationen.update({f\"Mit {k} Vorpuffern\": erg})\n", + " k += 1\n", + "print(variationen)\n", + "lists = sorted(variationen.items()) # sorted by key, return a list of tuples\n", + "\n", + "x, y = zip(*lists) \n", + "\n", + "plt.plot(x, y)\n", + "plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cason-Putzmaschine Nachpuffer" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'Mit 1 Nachpuffern': 104833.16666666667, 'Mit 2 Nachpuffern': 104833.16666666667, 'Mit 3 Nachpuffern': 104833.16666666667, 'Mit 4 Nachpuffern': 104833.16666666667, 'Mit 5 Nachpuffern': 104833.16666666667}\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmoAAAGdCAYAAACirV9DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAzz0lEQVR4nO3dfVyV9f3H8fcBPYeDeQg1OaJ4l3dpRqWTaJU1GVjMxdaq2Y2krlvrl2nprLzJVZTWKh2mu/mh/bZZ+li6ClcPU5ubEhWBdxlTh8OpYC05R1EB4fv7wwfXOIIKSfLVXs/H43o8PN/v5/pe34sveN5cXBe4jDFGAAAAsE5YS08AAAAADSOoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClWrX0BGxWU1OjPXv2qG3btnK5XC09HQAA0AjGGB04cECxsbEKCzu7r0kR1E5iz549iouLa+lpAACAr2HXrl3q0qVLS0/jtBDUTqJt27aSji20z+dr4dkAAIDGCAaDiouLc97Hz2YEtZOo/XGnz+cjqAEAcJY5F25bOrt/cAsAAHAOI6gBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClmhzU1q5dqxEjRig2NlYul0vLly8P6X/zzTeVnJys9u3by+VyqaCgoN4YR44c0bhx49S+fXudd955uummm1RaWhpSU1xcrNTUVEVGRqpjx4567LHHdPTo0ZCaDz74QJdffrk8Ho969eqlhQsX1jtWZmamunfvroiICCUkJOijjz5q6ikDAAC0iCYHtfLycsXHxyszM/OE/VdddZWef/75E47xyCOP6O2339bSpUv117/+VXv27NGPf/xjp7+6ulqpqamqrKzU+vXrtWjRIi1cuFDTpk1zaoqKipSamqrrrrtOBQUFGj9+vH72s5/pvffec2reeOMNTZgwQdOnT9enn36q+Ph4paSkaN++fU09bQAAgDPPnAZJZtmyZQ32FRUVGUkmPz8/pL2srMy0bt3aLF261GnbunWrkWRycnKMMcasWLHChIWFmZKSEqfm1VdfNT6fz1RUVBhjjJk0aZIZMGBAyNi33nqrSUlJcV4PGTLEjBs3znldXV1tYmNjTUZGRqPOLxAIGEkmEAg0qh4AALS8c+n9+4zfo5aXl6eqqiolJSU5bf369VPXrl2Vk5MjScrJydHAgQMVExPj1KSkpCgYDGrLli1OTd0xamtqx6isrFReXl5ITVhYmJKSkpya41VUVCgYDIZsAAAALeWMB7WSkhK53W6df/75Ie0xMTEqKSlxauqGtNr+2r6T1QSDQR0+fFhffvmlqqurG6ypHeN4GRkZioqKcra4uLivfZ4AAACni6c+65gyZYoCgYCz7dq1q6WnBAAAvsVanekD+v1+VVZWqqysLOSqWmlpqfx+v1Nz/NOZtU+F1q05/knR0tJS+Xw+eb1ehYeHKzw8vMGa2jGO5/F45PF4Tuv8AAAAmssZv6I2aNAgtW7dWqtWrXLaCgsLVVxcrMTERElSYmKiNm3aFPJ05sqVK+Xz+dS/f3+npu4YtTW1Y7jdbg0aNCikpqamRqtWrXJqAAAAbNbkK2oHDx7U9u3bnddFRUUqKChQu3bt1LVrV3311VcqLi7Wnj17JB0LYdKxK2B+v19RUVEaO3asJkyYoHbt2snn8+mhhx5SYmKirrjiCklScnKy+vfvrzvvvFOzZs1SSUmJnnzySY0bN8654nXffffpV7/6lSZNmqQxY8Zo9erVWrJkibKzs525TZgwQenp6Ro8eLCGDBmil19+WeXl5Ro9evTX/4gBAACcKU19THTNmjVGUr0tPT3dGGNMVlZWg/3Tp093xjh8+LB54IEHTHR0tImMjDQ/+tGPzN69e0OOs3PnTnP99dcbr9drOnToYCZOnGiqqqrqzeXSSy81brfb9OzZ02RlZdWb79y5c03Xrl2N2+02Q4YMMR9++GGjz/VcerwXAIBvi3Pp/dtljDEtExHtFwwGFRUVpUAgIJ/P19LTAQAAjXAuvX/z1CcAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApZoc1NauXasRI0YoNjZWLpdLy5cvD+k3xmjatGnq1KmTvF6vkpKStG3btpCaf/zjH7rxxhvVoUMH+Xw+XXXVVVqzZk1ITXFxsVJTUxUZGamOHTvqscce09GjR0NqPvjgA11++eXyeDzq1auXFi5cWG++mZmZ6t69uyIiIpSQkKCPPvqoqacMAADQIpoc1MrLyxUfH6/MzMwG+2fNmqU5c+Zo/vz5ys3NVZs2bZSSkqIjR444NT/4wQ909OhRrV69Wnl5eYqPj9cPfvADlZSUSJKqq6uVmpqqyspKrV+/XosWLdLChQs1bdo0Z4yioiKlpqbquuuuU0FBgcaPH6+f/exneu+995yaN954QxMmTND06dP16aefKj4+XikpKdq3b19TTxsAAODMM6dBklm2bJnzuqamxvj9fjN79mynrayszHg8HrN48WJjjDFffPGFkWTWrl3r1ASDQSPJrFy50hhjzIoVK0xYWJgpKSlxal599VXj8/lMRUWFMcaYSZMmmQEDBoTM59ZbbzUpKSnO6yFDhphx48Y5r6urq01sbKzJyMho1PkFAgEjyQQCgUbVAwCAlncuvX836z1qRUVFKikpUVJSktMWFRWlhIQE5eTkSJLat2+vvn376rXXXlN5ebmOHj2qBQsWqGPHjho0aJAkKScnRwMHDlRMTIwzTkpKioLBoLZs2eLU1D1ObU3tcSorK5WXlxdSExYWpqSkJKfmeBUVFQoGgyEbAABAS2nVnIPV/uiybsCqfV3b53K59P777ystLU1t27ZVWFiYOnbsqHfffVfR0dHOOA2NUfcYJ6oJBoM6fPiw9u/fr+rq6gZrPv/88wbnn5GRoaeeeurrnDoAAECzO+NPfRpjNG7cOHXs2FF/+9vf9NFHHyktLU0jRozQ3r17z/R0QkyZMkWBQMDZdu3a1aLzAQAA327NGtT8fr8kqbS0NKS9tLTU6Vu9erXeeecdvf766/rud7+ryy+/XPPmzZPX69WiRYuccRoao+4xTlTj8/nk9XrVoUMHhYeHn3Qux/N4PPL5fCEbAABAS2nWoNajRw/5/X6tWrXKaQsGg8rNzVViYqIk6dChQ8cOHBZ66LCwMNXU1EiSEhMTtWnTppCnM1euXCmfz6f+/fs7NXWPU1tTexy3261BgwaF1NTU1GjVqlVODQAAgM2aHNQOHjyogoICFRQUSDr2AEFBQYGKi4vlcrk0fvx4Pf3003rrrbe0adMmjRo1SrGxsUpLS5N0LGBFR0crPT1dGzZs0D/+8Q899thjzq/bkKTk5GT1799fd955pzZs2KD33ntPTz75pMaNGyePxyNJuu+++/TPf/5TkyZN0ueff6558+ZpyZIleuSRR5y5TpgwQb/5zW+0aNEibd26Vffff7/Ky8s1evTo0/ywAQAAnAFNfUx0zZo1RlK9LT093Rhz7Fd0TJ061cTExBiPx2OGDRtmCgsLQ8b4+OOPTXJysmnXrp1p27atueKKK8yKFStCanbu3Gmuv/564/V6TYcOHczEiRNNVVVVvblceumlxu12m549e5qsrKx68507d67p2rWrcbvdZsiQIebDDz9s9LmeS4/3AgDwbXEuvX+7jDGmBXOi1YLBoKKiohQIBLhfDQCAs8S59P7N3/oEAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACxFUAMAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACxFUAMAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACxFUAMAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACxFUAMAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsFSTg9ratWs1YsQIxcbGyuVyafny5SH9xhhNmzZNnTp1ktfrVVJSkrZt21ZvnOzsbCUkJMjr9So6OlppaWkh/cXFxUpNTVVkZKQ6duyoxx57TEePHg2p+eCDD3T55ZfL4/GoV69eWrhwYb3jZGZmqnv37oqIiFBCQoI++uijpp4yAABAi2hyUCsvL1d8fLwyMzMb7J81a5bmzJmj+fPnKzc3V23atFFKSoqOHDni1PzpT3/SnXfeqdGjR2vDhg1at26dbrvtNqe/urpaqampqqys1Pr167Vo0SItXLhQ06ZNc2qKioqUmpqq6667TgUFBRo/frx+9rOf6b333nNq3njjDU2YMEHTp0/Xp59+qvj4eKWkpGjfvn1NPW0AAIAzz5wGSWbZsmXO65qaGuP3+83s2bOdtrKyMuPxeMzixYuNMcZUVVWZzp07m9/+9rcnHHfFihUmLCzMlJSUOG2vvvqq8fl8pqKiwhhjzKRJk8yAAQNC9rv11ltNSkqK83rIkCFm3Lhxzuvq6moTGxtrMjIyGnV+gUDASDKBQKBR9QAAoOWdS+/fzXqPWlFRkUpKSpSUlOS0RUVFKSEhQTk5OZKkTz/9VLt371ZYWJguu+wyderUSddff702b97s7JOTk6OBAwcqJibGaUtJSVEwGNSWLVucmrrHqa2pPU5lZaXy8vJCasLCwpSUlOTUHK+iokLBYDBkAwAAaCnNGtRKSkokKSRg1b6u7fvnP/8pSZoxY4aefPJJvfPOO4qOjta1116rr776yhmnoTHqHuNENcFgUIcPH9aXX36p6urqk87leBkZGYqKinK2uLi4Jn8MAAAAmssZf+qzpqZGkvTEE0/opptu0qBBg5SVlSWXy6WlS5ee6emEmDJligKBgLPt2rWrRecDAAC+3Zo1qPn9fklSaWlpSHtpaanT16lTJ0lS//79nX6Px6OePXuquLjYGaehMeoe40Q1Pp9PXq9XHTp0UHh4+EnncjyPxyOfzxeyAQAAtJRmDWo9evSQ3+/XqlWrnLZgMKjc3FwlJiZKkgYNGiSPx6PCwkKnpqqqSjt37lS3bt0kSYmJidq0aVPI05krV66Uz+dzAl5iYmLIcWprao/jdrs1aNCgkJqamhqtWrXKqQEAALBZq6bucPDgQW3fvt15XVRUpIKCArVr105du3bV+PHj9fTTT6t3797q0aOHpk6dqtjYWOf3pPl8Pt13332aPn264uLi1K1bN82ePVuSdPPNN0uSkpOT1b9/f915552aNWuWSkpK9OSTT2rcuHHyeDySpPvuu0+/+tWvNGnSJI0ZM0arV6/WkiVLlJ2d7cxtwoQJSk9P1+DBgzVkyBC9/PLLKi8v1+jRo7/2BwwAAOCMaepjomvWrDGS6m3p6enGmGO/omPq1KkmJibGeDweM2zYMFNYWBgyRmVlpZk4caLp2LGjadu2rUlKSjKbN28Oqdm5c6e5/vrrjdfrNR06dDATJ040VVVV9eZy6aWXGrfbbXr27GmysrLqzXfu3Lmma9euxu12myFDhpgPP/yw0ed6Lj3eCwDAt8W59P7tMsaYFsyJVgsGg4qKilIgEOB+NQAAzhLn0vs3f+sTAADAUgQ1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACxFUAMAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACxFUAMAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsFSrlp7At5ExRoerqlt6GgAAWMHbOlwul6ulp2ElgloLOFxVrf7T3mvpaQAAYIXPZqYo0k0kaQg/+gQAALAU8bUFeFuH67OZKS09DQAArOBtHd7SU7AWQa0FuFwuLvECAIBT4kefAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClmhzU1q5dqxEjRig2NlYul0vLly8P6TfGaNq0aerUqZO8Xq+SkpK0bdu2BseqqKjQpZdeKpfLpYKCgpC+jRs36uqrr1ZERITi4uI0a9asevsvXbpU/fr1U0REhAYOHKgVK1Z87bkAAADYpslBrby8XPHx8crMzGywf9asWZozZ47mz5+v3NxctWnTRikpKTpy5Ei92kmTJik2NrZeezAYVHJysrp166a8vDzNnj1bM2bM0K9//WunZv369Ro5cqTGjh2r/Px8paWlKS0tTZs3b/5acwEAALCOOQ2SzLJly5zXNTU1xu/3m9mzZzttZWVlxuPxmMWLF4fsu2LFCtOvXz+zZcsWI8nk5+c7ffPmzTPR0dGmoqLCaZs8ebLp27ev8/qWW24xqampIWMmJCSYe++9t8lzOZFAIGAkmUAg0Kh6AADQ8s6l9+9mvUetqKhIJSUlSkpKctqioqKUkJCgnJwcp620tFR33323/u///k+RkZH1xsnJydE111wjt9vttKWkpKiwsFD79+93auoep7am9jiNnUtdFRUVCgaDIRsAAEBLadagVlJSIkmKiYkJaY+JiXH6jDG66667dN9992nw4MEnHKehMeoe40Q1dftPNZfjZWRkKCoqytni4uJOfsIAAADfoDP+1OfcuXN14MABTZky5Uwf+pSmTJmiQCDgbLt27WrpKQEAgG+xZg1qfr9f0rEfbdZVWlrq9K1evVo5OTnyeDxq1aqVevXqJUkaPHiw0tPTnXEaGqPuMU5UU7f/VHM5nsfjkc/nC9kAAABaSrMGtR49esjv92vVqlVOWzAYVG5urhITEyVJc+bM0YYNG1RQUKCCggLnV2q88cYbeuaZZyRJiYmJWrt2raqqqpxxVq5cqb59+yo6OtqpqXuc2pra4zRmLgAAADZr1dQdDh48qO3btzuvi4qKVFBQoHbt2qlr164aP368nn76afXu3Vs9evTQ1KlTFRsbq7S0NElS165dQ8Y777zzJEkXXnihunTpIkm67bbb9NRTT2ns2LGaPHmyNm/erFdeeUUvvfSSs9/DDz+soUOH6sUXX1Rqaqpef/11ffLJJ86v8HC5XKecCwAAgNWa+pjomjVrjKR6W3p6ujHm2K/FmDp1qomJiTEej8cMGzbMFBYWnnC8oqKier+ewxhjNmzYYK666irj8XhM586dzXPPPVdv3yVLlpg+ffoYt9ttBgwYYLKzs0P6mzqX451Lj/cCAPBtcS69f7uMMablYqLdgsGgoqKiFAgEuF8NAICzxLn0/s3f+gQAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACxFUAMAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACxFUAMAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACxFUAMAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACxFUAMAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwVJOD2tq1azVixAjFxsbK5XJp+fLlIf3GGE2bNk2dOnWS1+tVUlKStm3b5vTv3LlTY8eOVY8ePeT1enXhhRdq+vTpqqysDBln48aNuvrqqxUREaG4uDjNmjWr3lyWLl2qfv36KSIiQgMHDtSKFSuaNBcAAACbNTmolZeXKz4+XpmZmQ32z5o1S3PmzNH8+fOVm5urNm3aKCUlRUeOHJEkff7556qpqdGCBQu0ZcsWvfTSS5o/f74ef/xxZ4xgMKjk5GR169ZNeXl5mj17tmbMmKFf//rXTs369es1cuRIjR07Vvn5+UpLS1NaWpo2b97c6LkAAABYzZwGSWbZsmXO65qaGuP3+83s2bOdtrKyMuPxeMzixYtPOM6sWbNMjx49nNfz5s0z0dHRpqKiwmmbPHmy6du3r/P6lltuMampqSHjJCQkmHvvvfe05lJXIBAwkkwgEGhUPQAAaHnn0vt3s96jVlRUpJKSEiUlJTltUVFRSkhIUE5Ozgn3CwQCateunfM6JydH11xzjdxut9OWkpKiwsJC7d+/36mpe5zamtrjfJ25VFRUKBgMhmwAAAAtpVmDWklJiSQpJiYmpD0mJsbpO9727ds1d+5c3XvvvSHjNDRG3WOcqKZuf1PnkpGRoaioKGeLi4s78ckCAAB8w1r0qc/du3dr+PDhuvnmm3X33Xe35FQkSVOmTFEgEHC2Xbt2tfSUAADAt1izBjW/3y9JKi0tDWkvLS11+mrt2bNH1113na688sqQhwRqx2lojLrHOFFN3f7GzqWWx+ORz+cL2QAAAFpKswa1Hj16yO/3a9WqVU5bMBhUbm6uEhMTnbbdu3fr2muv1aBBg5SVlaWwsNBpJCYmau3ataqqqnLaVq5cqb59+yo6OtqpqXuc2pra4zR2LgAAALZqclA7ePCgCgoKVFBQIOnYTfsFBQUqLi6Wy+XS+PHj9fTTT+utt97Spk2bNGrUKMXGxiotLU3Sf0Na165d9cILL+iLL75QSUlJyH1jt912m9xut8aOHastW7bojTfe0CuvvKIJEyY4NQ8//LDeffddvfjii/r88881Y8YMffLJJ3rwwQclqVFzAQAAsFpTHxNds2aNkVRvS09PN8Yc+7UYU6dONTExMcbj8Zhhw4aZwsJCZ/+srKwG9z9+Khs2bDBXXXWV8Xg8pnPnzua5556rN5clS5aYPn36GLfbbQYMGGCys7ND+k81l1M5lx7vBQDg2+Jcev92GWNMiyTEs0AwGFRUVJQCgQD3qwEAcJY4l96/+VufAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJZqclBbu3atRowYodjYWLlcLi1fvjyk3xijadOmqVOnTvJ6vUpKStK2bdtCar766ivdfvvt8vl8Ov/88zV27FgdPHgwpGbjxo26+uqrFRERobi4OM2aNaveXJYuXap+/fopIiJCAwcO1IoVK5o8FwAAAFs1OaiVl5crPj5emZmZDfbPmjVLc+bM0fz585Wbm6s2bdooJSVFR44ccWpuv/12bdmyRStXrtQ777yjtWvX6p577nH6g8GgkpOT1a1bN+Xl5Wn27NmaMWOGfv3rXzs169ev18iRIzV27Fjl5+crLS1NaWlp2rx5c5PmAgAAYC1zGiSZZcuWOa9ramqM3+83s2fPdtrKysqMx+MxixcvNsYY89lnnxlJ5uOPP3Zq/vKXvxiXy2V2795tjDFm3rx5Jjo62lRUVDg1kydPNn379nVe33LLLSY1NTVkPgkJCebee+9t9FxOJRAIGEkmEAg0qh4AALS8c+n9u1nvUSsqKlJJSYmSkpKctqioKCUkJCgnJ0eSlJOTo/PPP1+DBw92apKSkhQWFqbc3Fyn5pprrpHb7XZqUlJSVFhYqP379zs1dY9TW1N7nMbM5XgVFRUKBoMhGwAAQEtp1qBWUlIiSYqJiQlpj4mJcfpKSkrUsWPHkP5WrVqpXbt2ITUNjVH3GCeqqdt/qrkcLyMjQ1FRUc4WFxfXiLMGAAD4ZvDUZx1TpkxRIBBwtl27drX0lAAAwLdYswY1v98vSSotLQ1pLy0tdfr8fr/27dsX0n/06FF99dVXITUNjVH3GCeqqdt/qrkcz+PxyOfzhWwAAAAtpVmDWo8ePeT3+7Vq1SqnLRgMKjc3V4mJiZKkxMRElZWVKS8vz6lZvXq1ampqlJCQ4NSsXbtWVVVVTs3KlSvVt29fRUdHOzV1j1NbU3ucxswFAADAak19+uDAgQMmPz/f5OfnG0nml7/8pcnPzzf/+te/jDHGPPfcc+b88883f/7zn83GjRvNjTfeaHr06GEOHz7sjDF8+HBz2WWXmdzcXPP3v//d9O7d24wcOdLpLysrMzExMebOO+80mzdvNq+//rqJjIw0CxYscGrWrVtnWrVqZV544QWzdetWM336dNO6dWuzadMmp6YxczmZc+mpEQAAvi3OpffvJge1NWvWGEn1tvT0dGPMsV+LMXXqVBMTE2M8Ho8ZNmyYKSwsDBnjP//5jxk5cqQ577zzjM/nM6NHjzYHDhwIqdmwYYO56qqrjMfjMZ07dzbPPfdcvbksWbLE9OnTx7jdbjNgwACTnZ0d0t+YuZzMubTQAAB8W5xL798uY4xpqat5tgsGg4qKilIgEOB+NQAAzhLn0vs3T30CAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWIqgBgAAYCmCGgAAgKUIagAAAJYiqAEAAFiKoAYAAGCpVi09AZsZYyRJwWCwhWcCAAAaq/Z9u/Z9/GxGUDuJAwcOSJLi4uJaeCYAAKCpDhw4oKioqJaexmlxmXMhbn5DampqtGfPHrVt21Yul6tZxw4Gg4qLi9OuXbvk8/madWycGazh2Y31O/uxhme/b2oNjTE6cOCAYmNjFRZ2dt/lxRW1kwgLC1OXLl2+0WP4fD7+gznLsYZnN9bv7Mcanv2+iTU826+k1Tq7YyYAAMA5jKAGAABgKYJaC/F4PJo+fbo8Hk9LTwVfE2t4dmP9zn6s4dmPNTw1HiYAAACwFFfUAAAALEVQAwAAsBRBDQAAwFJnbVC79tprNX78+JaeRrPauXOnXC6XCgoKvvFjGWN0zz33qF27ds4xG2r7ppyL6/fBBx/I5XKprKzsGz/WoUOHdNNNN8nn8znHbKjtm8Qanh7W8JvBGp79vm1reErGEunp6UaSuffee+v1PfDAA0aSSU9Pd9r+85//mGAw6Lzu1q2beemll055nAULFpihQ4eatm3bGklm//79jZ5bRkZGSPuyZctMc34Ii4qKjCSTn5/fbGOeyIoVK0zr1q3NunXrzN69e01VVVWDbY11JtbvP//5j3nwwQdNnz59TEREhImLizMPPfSQKSsrO+l+Q4cONZLM4sWLQ9pfeukl061bt1OeW2OtWbOm0Z9Tp2vevHnmggsuMJs2bTJ79+41NTU1DbY1xZn6GrznnntMz549TUREhOnQoYP54Q9/aLZu3XrSfVjDxjlTa1irpqbGDB8+3Egyy5YtO2kta9g4Z2oNa9ej7tbQMRvahzU8s6y6ohYXF6fXX39dhw8fdtqOHDmiP/7xj+ratWtIbbt27dS2bdsmH+PQoUMaPny4Hn/88SbtFxERoeeff1779+9v8jFttGPHDnXq1ElXXnml/H6/WrVq1WBbU9SuX+3fSJWad/327NmjPXv26IUXXtDmzZu1cOFCvfvuuxo7duwp942IiNCTTz6pqqqqJh3TVjt27NBFF12kiy++WH6/Xy6Xq8G2pjoTX4ODBg1SVlaWtm7dqvfee0/GGCUnJ6u6uvqk+7GGjXMm1rDWyy+/3KQ5soaNc6bW8O6779bevXudbdasWafchzVsnOrqatXU1DTPJFs0JtaRnp5ubrzxRnPxxReb3//+9077H/7wB3PJJZeYG2+8MeS7iKFDh5qHH37Y+beO+87gVJqS2NPT080PfvAD069fP/PYY4857cdfUfvyyy/NT3/6UxMbG2u8Xq+5+OKLzR//+MeQsaqrq83zzz9vLrzwQuN2u01cXJx5+umnjTH/vaL2pz/9yVx77bXG6/WaSy65xKxfv97ZPysry0RFRZlly5aZXr16GY/HY5KTk01xcXG9j2VdDz/8sBk6dKjTX/dj1a1btwbbauf77LPPmu7du5uIiAhzySWXmKVLl9b7OCYlJZmoqCgjyTz++ONm6NCh5qGHHjKpqakmPDzceDweEx8f7+x3uutXa8mSJcbtdp/06t/QoUPN6NGjTfv27U1mZqbTfvx3gdu3bzc//OEPTceOHU2bNm3M4MGDzcqVK0PGOnLkiJk0aZLp0qWLcbvd5sILLzS//e1vQz4W77//vhk0aJDxer0mMTHRfP75587+06dPN/Hx8Wb+/PmmS5cuxuv1mptvvjnkqmDdj02tup//x3+8hg4d2mBb7XwnTpxoYmNjTWRkpBkyZIhZs2aNM27t59Of//xnZ/369u1r2rdvb5555hkzevRo4/F4TOvWrU18fHyzfg3W2rBhg5Fktm/ffsIa1tC+NczPzzedO3c2e/fubfQVNdbQnjVs6PxOhTVs3BpedNFFJjw83BQVFZlu3bo5a3jeeeeZuLg4s2DBgiZ93K26oiZJY8aMUVZWlvP6f//3fzV69OiT7vPmm2+qS5cumjlzpvOdQXMLDw/Xs88+q7lz5+rf//53gzVHjhzRoEGDlJ2drc2bN+uee+7RnXfeqY8++sipmTJlip577jlNnTpVn332mf74xz8qJiYmZJwnnnhCjz76qAoKCtSnTx+NHDlSR48edfoPHTqkZ555Rq+99prWrVunsrIy/fSnP230ubzyyiuaOXOmunTpor179+rjjz9usE2SMjIy9Nprr2n+/PnasmWLHnnkEd1xxx3661//GjJmXl6e+vfvr8cff1x///vfJUmLFi3SZ599psmTJ2vAgAHasGGDVq5cWW8+p7N+gUBAPp/vlFf/fD6fnnjiCc2cOVPl5eUN1hw8eFA33HCDVq1apfz8fA0fPlwjRoxQcXGxUzNq1CgtXrxYc+bM0datW7VgwQKdd955IeM88cQTevHFF/XJJ5+oVatWGjNmTEj/9u3btWTJEr399tt69913lZ+frwceeKDR5/zmm2/q7rvvVmJiovbu3as333yzwTZJevDBB5WTk6PXX39dGzdu1M0336zhw4dr27ZtzniHDh3S888/ryuvvFLDhg3T6NGjVV5erhdffFGDBw/WoEGDlJycrA0bNigQCJxwTl9nDcvLy5WVlaUePXooLi7upLWsoT1reOjQId12223KzMyU3+9v9HmzhvasoST94Q9/UIcOHXTxxRdrypQpOnTo0CnPmzU89Rr+9re/1ZYtW9SxY0dJctawdn7333+/CgsLGz1P666o7du3z3g8HrNz506zc+dOExERYb744ouTXlEzpun3VjT1ilrtFaorrrjCjBkzxhjTuHvUUlNTzcSJE40xxgSDQePxeMxvfvObBmtrr6jVfldhjDFbtmwxkpx7eLKysowk8+GHHzo1W7duNZJMbm5uvfnWqntFzZiG7yk4vu3IkSMmMjIy5IqeMcaMHTvWjBw50hjz34/jddddF7J+CQkJZvDgwSHr1759ezN58mRjzOmvnzHGfPHFF6Zr167m8ccfP2ld7bGOHDliunXrZmbOnHnCj8HxBgwYYObOnWuMMaawsNBIqvedYa263wXWys7ONpLM4cOHjTHHvgsMDw83//73v52av/zlLyYsLMzs3bs3ZL51Hf/5f/x6NtT2r3/9y4SHh5vdu3eH1A0bNsxMmTLFGPPfz6eCgoKQr0FJJi0tzfka3Ldvn3G73eaKK65wxjmdNczMzDRt2rRxrhyc7Gpa3WOxhse09Brec889ZuzYsc5rNfKKGmv4Xy29hgsWLDDvvvuu2bhxo/n9739vOnfubH70ox+ddB/WsHFrWFe3bt3MHXfc4byuqakxHTt2NK+++mqD596Qpt2EdAZccMEFSk1N1cKFC2WMUWpqqjp06NDS03I8//zz+t73vqdHH320Xl91dbWeffZZLVmyRLt371ZlZaUqKioUGRkpSdq6dasqKio0bNiwkx7jkksucf7dqVMnSdK+ffvUr18/SVKrVq30ne98x6np16+fzj//fG3dulVDhgw57XOstX37dh06dEjf//73Q9orKyt12WWXhbR16NBBlZWVzvrl5eU5/65dv8jISO3bt69Z5hYMBpWamqr+/ftrxowZjdrH4/Fo5syZeuihh3T//ffX6z948KBmzJih7Oxs7d27V0ePHtXhw4ed7wILCgoUHh6uoUOHnvQ4J1q/2ntLunbtqs6dOzs1iYmJqqmpUWFhYZOuTpzKpk2bVF1drT59+oS0V1RUqH379s5rt9sdMucLLrhAkZGRztWu1NRUXXDBBYqIiNCRI0eaZW633367vv/972vv3r164YUXdMstt2jdunWKiIg46X6s4TEtuYZvvfWWVq9erfz8/K+1P2t4TEt/Hd5zzz3OvwcOHKhOnTpp2LBh2rFjhy688MKT7ssaHnOqNWzoPFwul/x+f5PeC60LatKxH38++OCDkqTMzMwWnk2oa665RikpKZoyZYruuuuukL7Zs2frlVde0csvv6yBAweqTZs2Gj9+vCorKyVJXq+3Ucdo3bq18+/amxibclNiWFiYzHF/Gezr3Ph58OBBSVJ2dnbIF4Oken+XrVWrVs55jhkzRitWrND+/fv11FNPhdQ1x82VBw4c0PDhw9W2bVstW7Ys5ON1KnfccYdeeOEFPf300+revXtI36OPPqqVK1fqhRdeUK9eveT1evWTn/zkrF6/8PBw5eXlKTw8PKSv7o8YvF5vvZtl27Rpo7y8PG3bti3ka/D4eX1dUVFRioqKUu/evXXFFVcoOjpay5Yt08iRI0+5L2t4TEut4erVq7Vjxw6df/75Ie033XSTrr76an3wwQenHIM1PKalvw7rSkhIkHTsG/RTBTWJNax1qjWUVO89yuVyNe08mjjfM2L48OGqrKxUVVWVUlJSGrWP2+0+5VNjzeW5557T22+/rZycnJD2devW6cYbb9Qdd9yh+Ph49ezZU//4xz+c/t69e8vr9WrVqlWndfyjR4/qk08+cV4XFhaqrKxMF110kaRj34kdf2/C1/mdaP3795fH41FxcbF69eoVsp3sfqLhw4erpqZGNTU1zb5+wWBQycnJcrvdeuutt055BeZ4YWFhysjI0KuvvqqdO3eG9K1bt0533XWXfvSjH2ngwIHy+/0hNQMHDlRNTU29+/Oaqri4WHv27HFef/jhhwoLC1Pfvn0l1V+/6upqbd68ucnHueyyy1RdXa19+/bVW79Tfbfp9XpVXV19Rr4GjTEyxqiioqJR9axhy67hz3/+c23cuFEFBQXOJkkvvfRSyP3FJ8Ma2vd1WLuOtVeuToU1bNwaNgcrg1p4eLi2bt2qzz77rF56PZHu3btr7dq12r17t7788ssT1pWUlKigoEDbt2+XdOySZkFBgb766qtGz2/gwIG6/fbbNWfOnJD23r17a+XKlVq/fr22bt2qe++9V6WlpU5/RESEJk+erEmTJum1117Tjh079OGHH+p3v/tdo48tHUvnDz30kHJzc5WXl6e77rpLV1xxhfNjz+9973v65JNP9Nprr2nbtm2aPn361/rkbNu2rR599FE98sgjWrRokXbs2KFPP/1Uc+fO1aJFi064X3h4uL7zne/ojjvuaNb1qw1p5eXl+t3vfqdgMKiSkhKVlJQ06T+m1NRUJSQkaMGCBSHtvXv31ptvvqmCggJt2LBBt912W8h3Pd27d1d6errGjBmj5cuXq6ioSB988IGWLFnS6GNLxz4P0tPTtWHDBv3tb3/T//zP/+iWW25xvuC/973vKTs7W9nZ2fr88891//33f61fuNinTx/dfvvtGjVqlN58800VFRXpo48+UkZGhrKzs0+6r8vl0s9//vNm/xr85z//qYyMDOXl5am4uFjr16/XzTffLK/XqxtuuKHR58Yattwa+v1+XXzxxSGbdOzHUD169Gj0ubGGLbeGO3bs0C9+8Qvl5eVp586deuuttzRq1Chdc801Df7o7kRYw1OvYXOwMqhJx54s8fl8ja6fOXOmdu7cqQsvvFAXXHDBCevmz5+vyy67THfffbekYz/KvOyyy/TWW281aX4zZ86sd+nyySef1OWXX66UlBRde+218vv9SktLC6mZOnWqJk6cqGnTpumiiy7Srbfe2uT7tiIjIzV58mTddttt+u53v6vzzjtPb7zxhtOfkpKiqVOnatKkSfrOd76jAwcOaNSoUU06Rq1f/OIXmjp1qjIyMnTRRRdp+PDhys7OPuV/yK1atar349GTacz6ffrpp8rNzdWmTZvUq1cvderUydl27drVpPN6/vnn693n8ctf/lLR0dG68sorNWLECKWkpOjyyy8PqXn11Vf1k5/8RA888ID69eunu++++4RPPp1Ir1699OMf/1g33HCDkpOTdckll2jevHlO/5gxY5Senq5Ro0Zp6NCh6tmzp6677romHaNWVlaWRo0apYkTJ6pv375KS0vTxx9/XO93MTUkIiKi2b8GIyIi9Le//U033HCDevXqpVtvvVVt27bV+vXrnSekGos1bJk1bE6sYcusodvt1vvvv6/k5GT169dPEydO1E033aS333670cepxRqeeg1Pl8t8Ez/sxjdm4cKFGj9+fMv/SQt8LTNmzNDy5cvPyJ8JwzeDNTz7sYZnv2/TGlp7RQ0AAODbjqAGAABgKX70CQAAYCmuqAEAAFiKoAYAAGApghoAAIClCGoAAACWIqgBAABYiqAGAABgKYIaAACApQhqAAAAliKoAQAAWOr/AWivfCVNwfnMAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import rieter_ekalk as rek\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def eine_anlage(Anzahl_MG):\n", + "\n", + " rsm_direct_eingabe = {\n", + " }\n", + " rsm_fa_eingabe = {\n", + " \"Flex_A_Premium\":False, # braucht man das noch?\n", + " \"Getriebe_in_der_Mitte\":False, # braucht man das noch?\n", + " \"RSM_Einfahrt_Ein_Beidseitig\":False, # braucht man das noch?\n", + " \"Sensor_optisch_Traverse_zusätzlich\":6,\n", + " \"Bedientableau_1fach_Korrektur\":0,\n", + " \"Bedientableau_2fach_Korrektur\":4,\n", + " \"Weiche_Korrektur\":4,\n", + " \"RRA_bi_Korrektur\":0,\n", + " \"RRA_bi_auf_Haupstrecke\":10,\n", + " \"RRA_uni_Begegnung\":4,\n", + " \"gemeinsame_Wendung\":0,\n", + " \"Mit_Drucktaster_Korrektur\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " \"klemmkasten_rsm\":2,\n", + " }\n", + " flyer_f40_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine\":0, #wird in deckblatt-Klasse berechnet\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur\":0,\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer\":2, #wird in deckblatt-Klasse berechnet\n", + " #\"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer\":2, #wird in deckblatt-Klasse berechnet\n", + " #\"Anzahl_Schienen\":0,\n", + " \"Single_Line_Durchfahrt\":False,\n", + " \"Nachpuffer\":False,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensor_induktiv_Spulenhalter\":0,\n", + " \"Sensor_induktiv_Spulenhalter_Korrektur\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " \"Bedientableau_2fach_Korrektur\":0,\n", + " #\"Interface_Doffer\":0,\n", + " \"Interface_Doffer_Korrektur\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_Flyer_bipolar\":0,\n", + " \"Weiche_nach_Flyer_bipolar_Korrektur\":0,\n", + " \"Dreifachweiche\":0,\n", + " \"Wechsel\":0,\n", + " \"Stopper\":0,\n", + " \"RA_uni\":0,\n", + " #\"RA_uni_abhebbar\":0,\n", + " \"RA_uni_abhebbar_Korrektur\":0,\n", + " #\"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " \"RA_uni_ohne_SPS_Ansteuerung_Korrektur\":0,\n", + " #\"RRA_BI_abhebbar\":0,\n", + " \"RRA_BI_abhebbar_Korrektur\":0,\n", + " \"RRA_bi\":0,\n", + " #\"RRA_bi_Korrektur\":0,\n", + " #\"RRA_bi_ohne_SPS_Ansteuerung\":0,\n", + " \"RRA_bi_ohne_SPS_Ansteuerung_Korrektur\":0,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " \"Doppelstreckenantrieb_Korrektur\":0,\n", + " \"RA_bi_abhebbar_unger_Schiene\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " neuenhauser_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Neuenhauser-Putzmaschine\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Neuenhauser-Putzmaschine_Vorpuffer\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Neuenhauser-Putzmaschine_Nachpuffer\":0, #wird in deckblatt-Klasse zugewiesen\n", + " #\"Anzahl_Vorstaustrecken\":0,\n", + " #\"Anzahl_Nachstaustrecken\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensorik_Zugpositionierung\":0,\n", + " #\"Sensor_WT18_Spulenprüfung_voll_leer\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " \"Bedientableau_2fach_Korrektur\":0,\n", + " #\"Interface_Putzmaschine\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_PM_bipolar\":0,\n", + " #\"RA_uni_abhebbar\":0,\n", + " \"RA_uni_abhebbar_Korrektur\":0,\n", + " #\"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " #\"RA_uni_abhebbar_unger_Sch\":0,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " flyer_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Flyer\":0, # äquivalent zu 'Anzahl'\n", + " #\"Anzahl_Schienen:\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\":0,\n", + " #\"Sensor_induktiv_Spulenalter_Zug_positionierung\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " #\"Interface_Doffer\":0,\n", + " #\"Weiche\":0,\n", + " \"Weiche_Korrektur\":0,\n", + " #\"Weiche_nach_Flyer_bipolar\":0,\n", + " \"Dreifachweiche\":0,\n", + " #\"Wechsel\":0,\n", + " \"Wechsel_Korrektur\":0,\n", + " #\"RA_bi_ohne_SPS-Ansteuerung\":0,\n", + " #\"RA_bi_abhebbar\":0,\n", + " \"RA_bi_abhebbar_Korrektur\":0,\n", + " \"RA_bi\":4,\n", + " #\"Doppelstreckenantrieb\":0,\n", + " \"RA_bi_abhebbar_unger_Schiene\":0,\n", + " #\"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\":0,\n", + " #\"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\":0,\n", + " #\"Werma_Rundumleuchte_Störung\":0,\n", + " \"Werma_Rundumleuchte_Störung_Korrektur\":0,\n", + " }\n", + " verbindungsstrecken_w_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " \"Bedientableau_1fach\":0,\n", + " \"Bedientableau_2fach\":0,\n", + " \"Bedientableau_14fach\":0,\n", + " \"Weiche\":0,\n", + " \"Dreifachweiche\":0,\n", + " \"Kreuzungsweiche\":1,\n", + " \"Werma_Rundumleuchte_Störung\":0,\n", + " \"RA_uni\":0,\n", + " \"RA_uni_ohne_SPS_Ansteuerung\":0,\n", + " \"RA_bi\":0,\n", + " \"RA_bi_ohne_SPS-Ansteuerung\":0,\n", + " \"Doppelstreckenantrieb\":0\n", + " }\n", + " puffer_eingabe = {\n", + " # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " # \"Anzahl\":0,\n", + " # \"Puffer\":0, #äquivalent zu Anzahl\n", + " # \"Anzahl_Pufferstrecken\":0, #äquivalent zu Anzahl_Staustrecken\n", + " # \"Anzahl_Staustrecken\":0,\n", + " # \"Sensor_optisch_Traverse\":0,\n", + " \"Sensor_optisch_Traverse_Korrektur\": 1,\n", + " # \"Weiche\":0,\n", + " \"Weiche_Korrektur\": 0,\n", + " \"RA_bi_ungerade_Schiene\": 2,\n", + " # \"Doppelstreckenantrieb\":0,\n", + " # \"Meldelampe_Überstrom\":0,\n", + " \"Meldelampe_Überstrom_Korrektur\": 0,\n", + " # \"Hauptschalter_Ein_Meldung\":0,\n", + " \"Hauptschalter_Ein-Meldung_Korrektur\": 0,\n", + " }\n", + " turm_eingabe = {\n", + " #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet\n", + " #\"Anzahl\":0,\n", + " #\"Turm\":0, #äquivalent zu Anzahl\n", + " #\"Anzahl_Wendlungen\":0, #äquivalent zu Anzahl_Staustrecken\n", + " #\"Anzahl_Staustrecken\":0,\n", + " #\"Sensor_optisch_Traverse\":0,\n", + " #\"Weiche\":0,\n", + " #\"RA_bi\":0,\n", + " \"RA_bi_Korrektur\":0,\n", + " #\"RA_bi_ohne_SPS\":0,\n", + " \"RA_bi_ohne_SPS_Korrektur\":0,\n", + " #\"Bedientableau_2fach\":0,\n", + " }\n", + " mg = rek.MG(Anzahl_MG,\n", + " rsm_direct=rsm_direct_eingabe,\n", + " rsm_fa=rsm_fa_eingabe,\n", + " flyer_f40=flyer_f40_eingabe,\n", + " neuenhauser=neuenhauser_eingabe,\n", + " flyer=flyer_eingabe,\n", + " verbindungsstrecken_w=verbindungsstrecken_w_eingabe,\n", + " puffer=puffer_eingabe,\n", + " turm=turm_eingabe)\n", + " Anzahl_EAS = {}\n", + " eas = rek.EA(Anzahl_EAS, mg)\n", + "\n", + " Anzahl_HW = {}\n", + "\n", + " hw = rek.HW(Anzahl_HW, mg, eas)\n", + "\n", + " emo = rek.EMO(eas, hw, mg)\n", + " Anzahl_DL = {}\n", + " dl = rek.Dienstleistung(Anzahl_DL, hw)\n", + " Anzahl_Ergebnis = {}\n", + " erg = rek.Ergebnis(Anzahl_Ergebnis, hw, dl, emo)\n", + " return erg.get_sum_of_costs(hw)\n", + "\n", + "\n", + "Anzahl_MG = {\n", + " \"SYSTEM\": \"FA\",\n", + " \"RSM\":14,\n", + " \"Flyer\":4,\n", + " \"Flyer_Puffer\":2,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine\":0,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer\":0,\n", + " \"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer\":0,\n", + " \"Neuenhauser-Putzmaschine\":0,\n", + " \"Neuenhauser-Putzmaschine_Vorpuffer\":0,\n", + " \"Neuenhauser-Putzmaschine_Nachpuffer\":0,\n", + " \"Cason-Putzmaschine\":0,\n", + " \"Cason-Putzmaschine_Vorpuffer\":0,\n", + " \"Cason-Putzmaschine_Nachpuffer\":0,\n", + " \"Puffer\":1,\n", + " \"Anzahl_der_Pufferstrecken_pro_Puffer\":5,\n", + " \"Begegnungsstrecke_Bypass\":2,\n", + " \"Turm\":0,\n", + " \"Turm_Anzahl_Wendlungen\":0,\n", + " }\n", + "\n", + "\n", + "variationen = {}\n", + "k = 1\n", + "while k < 6:\n", + " Anzahl_MG.update({\"Cason-Putzmaschine_Nachpuffer\": k})\n", + " erg = eine_anlage(Anzahl_MG)\n", + " variationen.update({f\"Mit {k} Nachpuffern\": erg})\n", + " k += 1\n", + "print(variationen)\n", + "lists = sorted(variationen.items()) # sorted by key, return a list of tuples\n", + "\n", + "x, y = zip(*lists) \n", + "\n", + "plt.plot(x, y)\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.0" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "c261aea317cc0286b3b3261fbba9abdec21eaa57589985bb7a274bf54d6cc0a7" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/rieter_ekalk.py b/rieter_ekalk.py index 306602a..ad69bf2 100644 --- a/rieter_ekalk.py +++ b/rieter_ekalk.py @@ -2,6 +2,9 @@ import unittest import test_jayjay import math import json + + + JSON_IDENT = 5 class MG(): @@ -1235,11 +1238,12 @@ class HW(): "korrektur_et200_sp_eingangskarte_8_do":0, "et200_sp_eingangskarte_16_do":0, # "et200_sp_base_unit_neue_last_mit_potKlemmen":0, + "et200_sp_base_unit_neue_last_mit_potKlemmen_or_et200_sp_base_unit_neue_last":"et200_sp_base_unit_neue_last_mit_potKlemmen",### "korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen":0, # "et200_sp_base_unit_links_gebrueckt_mit_pot_klemmen":0, # "et200_sp_base_unit_neue_last":0, - "korrektur_et200_sp_base_unit_neue_last":-15, ### dann ist die anzahl aber bei -1! - # "et200_sp_base_unit_links_gebrueckt":0, ### gesamtkosten müssten doch eigtl bei 11 sein oder? + "korrektur_et200_sp_base_unit_neue_last":-15, + # "et200_sp_base_unit_links_gebrueckt":0, "korrektur_et200_sp_base_unit_links_gebrueckt":0, "SLIO":0, @@ -1285,7 +1289,7 @@ class HW(): # "kabel_fuer_klemmkasten_und_bts_60m":0, # "kabel_fuer_1fach_bts_zug_wechseln":0, # "zuleitung_75_m_unterverteiler_4x4mm2_400vac":0, - # "zuleitung_75_m_unterverteiler_12x4mm2_24_vdc":0, ### anzahl ist -1 + # "zuleitung_75_m_unterverteiler_12x4mm2_24_vdc":0, "korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc":-6, # "zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc":0, "korrektur_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc": 0, @@ -1345,7 +1349,7 @@ class HW(): "unterverteiler_fuer_12_rsm_direct": 8258, # 790820302 # korrektur_12_rsm_zusaetzlich_im_unterverteiler - "unterverteiler_fuer_8_rsm_direct": 6736, # 790820301 ### immer 800 abgezogen? + "unterverteiler_fuer_8_rsm_direct": 6736, # 790820301 # korrektur_8_rsm_zusaetzlich_im_unterverteiler "busverteiler_6_rsm_direct": 1747.53, # 790801002 @@ -1737,19 +1741,28 @@ class HW(): self._anzahl["korrektur_et200_sp_eingangskarte_8_do"] = self.mengen.get("korrektur_et200_sp_eingangskarte_8_do", 0) self._anzahl["et200_sp_eingangskarte_16_do"] = anzahl.get("et200_sp_eingangskarte_16_do", 0) self._anzahl["et200_sp_base_unit_neue_last_mit_potKlemmen"] = anzahl.get("ET200_SP", 0) * (anzahl.get("et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45", 0) * 2 + - anzahl.get("korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen", 0)) - self._anzahl["korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen"] = self.mengen.get("korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen", 0) + anzahl.get("korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen", 0)) ### entweder oder und bei dem das nicht verwendet wird wird im korrekturfaktor "et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45" * 2 abgezogen + if self.mengen.get("et200_sp_base_unit_neue_last_mit_potKlemmen_or_et200_sp_base_unit_neue_last" == "et200_sp_base_unit_neue_last"): + self._anzahl["korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen"] = self.mengen.get("korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen", 0) + self._anzahl["korrektur_et200_sp_base_unit_neue_last"] = self.mengen.get("korrektur_et200_sp_base_unit_neue_last", 0) -\ + anzahl.get("et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45") * 2 + elif self.mengen.get("et200_sp_base_unit_neue_last_mit_potKlemmen_or_et200_sp_base_unit_neue_last" == "et200_sp_base_unit_neue_last_mit_potKlemmen"): + self._anzahl["korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen"] = self.mengen.get("korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen", 0) -\ + anzahl.get("et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45") * 2 + self._anzahl["korrektur_et200_sp_base_unit_neue_last"] = self.mengen.get("korrektur_et200_sp_base_unit_neue_last", 0) + else: + self._anzahl["korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen"] = self.mengen.get("korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen", 0) + self._anzahl["korrektur_et200_sp_base_unit_neue_last"] = self.mengen.get("korrektur_et200_sp_base_unit_neue_last", 0) self._anzahl["et200_sp_base_unit_links_gebrueckt_mit_pot_klemmen"] = anzahl.get("ET200_SP", 0) * (math.ceil((anzahl.get("et200_sp_eingangskarte_8_de", 0) + anzahl.get("et200_sp_eingangskarte_8_do", 0))) - anzahl.get("et200_sp_base_unit_neue_last_mit_potKlemmen", 0)) - self._anzahl["korrektur_et200_sp_base_unit_neue_last"] = self.mengen.get("korrektur_et200_sp_base_unit_neue_last", 0) self._anzahl["et200_sp_base_unit_neue_last"] = anzahl.get("ET200_SP", 0) * (anzahl.get("et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45", 0) * 2 + anzahl.get("korrektur_et200_sp_base_unit_neue_last", 0)) self._anzahl["et200_sp_base_unit_links_gebrueckt"] = anzahl.get("ET200_SP", 0) * (math.ceil((anzahl.get("et200_sp_eingangskarte_16_de", 0) + anzahl.get("et200_sp_eingangskarte_16_do", 0))) - anzahl.get("et200_sp_base_unit_neue_last", 0) + - anzahl.get("korrektur_et200_sp_base_unit_links_gebrueckt", 0)) + anzahl.get("korrektur_et200_sp_base_unit_links_gebrueckt", 0)) self._anzahl["korrektur_et200_sp_base_unit_links_gebrueckt"] = self.mengen.get("korrektur_et200_sp_base_unit_links_gebrueckt", 0) self._anzahl["SLIO"] = self.mengen.get("SLIO", 0) @@ -1908,7 +1921,7 @@ class HW(): anzahl.get("bedienstation_4fach_kpl", 0) +\ anzahl.get("bedienstation_6fach_kpl", 0) self._anzahl["kabel_fuer_1fach_bts_zug_wechseln"] = anzahl.get("bedienstation_1fach_kpl", 0) - self._anzahl["korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc"] = self.mengen.get("korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc", 0) + self._anzahl["korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc"] = self.mengen.get("korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc", 0) ###entweder oder self._anzahl["zuleitung_75_m_unterverteiler_12x4mm2_24_vdc"] = anzahl.get("unterverteiler_fuer_1neuenhauser_pm", 0) +\ anzahl.get("unterverteiler_fuer_1flyer", 0) +\ anzahl.get("unterverteiler_fuer_2flyer", 0) +\ @@ -1921,7 +1934,7 @@ class HW(): anzahl.get("unterverteiler_fuer_12_rsm_direct", 0) +\ anzahl.get("unterverteiler_fuer_8_rsm_direct", 0) +\ anzahl.get("busverteiler_8_rsm_direct", 0) +\ - anzahl.get("korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc", 0) + anzahl.get("korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc", 0) ### entweder oder bei dem, das nicht vcerwendet wird ist der korrakturfaktor self._anzahl["zuleitung_75_m_unterverteiler_4x4mm2_400vac"] self._anzahl["zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc"] = anzahl.get("unterverteiler_fuer_1neuenhauser_pm", 0) +\ anzahl.get("unterverteiler_fuer_1flyer", 0) +\ anzahl.get("unterverteiler_fuer_2flyer", 0) +\ @@ -2375,14 +2388,31 @@ class EMO(): def dauer_emo_incl_mehrauwand(self): return (self.dauer_emo() * (1 + self._mehraufwand)) -class Anschlussl(): +class Anschlussl(): ### stimmt das so? + antrieb_cos_phi = { + 0.09:0.77, + 0.12:0.77, + 0.18:0.77, + 0.37:0.7, + 0.55:0.77, + 0.75:0.73, + 1.1:0.81 + } + antrieb_strom = { + 0.09:0.4, + 0.12:0.55, + 0.18:0.75, + 0.37:1.24, + 0.55:1.62, + 0.75:1.75, + 1.1:2.55 + } mengen = { #auskommentiert, was später berechnet wird #"Anschlussspannung":400, #Volt - "Motor_Art":0.12, #kilo Watt ### dasselbe wie Antrieb? und eigtl regelmäßig oder immer anders? + "Motor_Art":0.12, #kilo Watt #"Anzahl_Motor":48, - "Antrieb":0.12, #kilo Watt - "Strom_Motor":0.55, #Ampere + #"Strom_Motor":0.55, #Ampere #"Summe_Strom_Motor":26.4, #"cos_phi":0.77, #"Versorgung_SPS_und_Peripherie":3, #Ampere @@ -2401,7 +2431,7 @@ class Anschlussl(): self._GZE_Faktor = 0.5 self._Res_Faktor = 0.1 self._Anschlussspannung = 400 - self._cos_phi = 0.77 ### wird nicht verwendet + self._cos_phi = self.antrieb_cos_phi.get(self.mengen.get("Motor_Art")) ### wird nicht verwendet, Leistungsfaktor self._x_Wurzel_3 = 1.732 self._Versorgung_SPS_und_Peripherie = 3 self._ANZAHL = anzahl @@ -2412,7 +2442,7 @@ class Anschlussl(): mg.zusammenfassung().get("RA_bi_ohne_SPS-Ansteuerung", 0) +\ mg.zusammenfassung().get("RA_bi_abhebbar", 0) +\ mg.zusammenfassung().get("Doppelstreckenantrieb", 0) - self._ANZAHL["Summe_Strom_Motor"] = self.mengen.get("Strom_Motor") *\ + self._ANZAHL["Summe_Strom_Motor"] = self.antrieb_strom.get(self.mengen.get("Motor_Art")) *\ anzahl.get("Anzahl_Motor") self._ANZAHL["Summe_Strom_Motor_SPS_Peripherie"] = anzahl.get("Summe_Strom_Motor") +\ self._Versorgung_SPS_und_Peripherie @@ -2443,7 +2473,7 @@ class Anschlussl(): if PS > 1 or PS < 0: raise Exception("Falsche Spanne") self._Res_Faktor = PS -class Ergebnis(): ###f was sind die grünen zahlen auf dem deckblatt? +class Ergebnis(): preis_kostenart_h = { "E_Werkstatt": 32, "Schaltschrankbau_extern_Mehrkosten": 0, #Wenn Schaltschrankbau extern die Mehrkosten eintragen Standard = 18 € Hier wird nur die Diverenz zwischen Kosten intern(32€) und dem externen Kosten eingetragen. Beispiel: extern = 50€ intern 32 € = Wert: 18€ @@ -2551,7 +2581,7 @@ class Ergebnis(): ###f was sind die grünen zahlen auf dem deckblatt? def get_cost_of(self, partname): return (self._anzahl.get(partname) * self.preis_kostenart_h.get(partname)) def summary_costs(self, hw): - summary = {} + summary = {} keys_costs = { "E_Werkstatt", "Schaltschrankbau_extern_Mehrkosten", @@ -2575,10 +2605,40 @@ class Ergebnis(): ###f was sind die grünen zahlen auf dem deckblatt? for k in keys_costs: cost = self._anzahl[k] * self.preis_kostenart_h[k] summary.update({k: round(cost, 2)}) + summary.update({"Installationsmaterial_vor_Ort": round(hw.summe_vorort(), 2)}) summary.update({"Material_in_LL": round(hw.summe_in_LL(), 2)}) summary.update({"GESAMT": round(self.get_sum_of_costs(hw), 2)}) - print(summary) + return summary + + #def deckblatt(self): + # keys_sivas = ( + # ("E_Werkstatt","10"), + # ("Schaltschrankbau_extern_Mehrkosten","121"), + # ("Dienstleistung_in_LL","43"), + # ("Pflichtenheft","40"), + # ("SPS_Programmierung","46/100"), + # ("PC_Programmierung_Visualisierung","49/110"), + # ("Montage_elektrisch","25"), + # ("Inbetriebnahmetest_Hardware_durch_Montage","26"), + # ("SPS_Inbetriebsetzung","47/101"), + # ("PC_Inbetriebsetzung","49"), + # ("Inbetriebnahmeunterstützung_durch_Montage","26"), + # ("Dokumentation","65"), + # ("Bedienungsanleitung_Emmert","65"), + # ("Schulung_vor_Ort_beim_Kunden","26"), + # ("Abnahme","26"), + # ("SPS_Anlagenbetreuung","46"), + # ("PC_Anlagenbetreuung","49"), + # ("Anlagenbetreuung_durch_Montage","26") + # ) + #for row in keys_sivas: ###ergänzen + #summary.setdefault(row[0],[]).append(row[1]) + #siv = keys_sivas.get(k) + #summary.append(siv) + #df = pd.DataFrame.from_dict(data=summary, orient='index', columns=['Kostenart', 'Aufwand']) + #df.to_excel("output.xlsx", sheet_name="Kostenaufstellung") + class TestObjectMethods(unittest.TestCase): @@ -4142,9 +4202,11 @@ class TestObjectMethods(unittest.TestCase): self.assertEqual(erg.get_cost_of("SPS_Anlagenbetreuung"), 0) self.assertEqual(erg.get_cost_of("PC_Anlagenbetreuung"), 0) self.assertEqual(erg.get_cost_of("Anlagenbetreuung_durch_Montage"), 0) - self.assertEqual(erg.get_sum_of_costs(hw), 104833.16666666666) - erg.summary_costs(hw) + self.assertAlmostEqual(erg.get_sum_of_costs(hw), 104833.16666666666) + summary = erg.summary_costs(hw) ### soll ich pro Register noch eine Möglichkeit ergänzen, manuell Kosten abzuziehen? Bei Jayjay zb in der HW waren es 800€ weniger als zu erwarten + # df = pd.DataFrame.from_dict(data=summary, orient='index', columns=['Aufwand']) + # df.to_excel("output.xlsx", sheet_name="Kostenaufstellung") def test_Unittests(): unittest.main()