Files
Rieter-EKalk/Kalkulation Spinnerei.ipynb
T

298 KiB

Kalkulation Spinnerei

Das folgende Szenario ist eine Variante um die Anzahl der Puffer zu testen

Flyer Puffer

In [13]:
import rieter_ekalk as rek
import matplotlib.pyplot as plt

def eine_anlage(Anzahl_MG):

        rsm_direct_eingabe = {
        }
        rsm_fa_eingabe = {
            "Flex_A_Premium":False,        # braucht man das noch?
            "Getriebe_in_der_Mitte":False, # braucht man das noch?
            "RSM_Einfahrt_Ein_Beidseitig":False,  # braucht man das noch?
            "Sensor_optisch_Traverse_zusätzlich":6,
            "Bedientableau_1fach_Korrektur":0,
            "Bedientableau_2fach_Korrektur":4,
            "Weiche_Korrektur":4,
            "RRA_bi_Korrektur":0,
            "RRA_bi_auf_Haupstrecke":10,
            "RRA_uni_Begegnung":4,
            "gemeinsame_Wendung":0,
            "Mit_Drucktaster_Korrektur":0,
            "Meldelampe_Überstrom_Korrektur":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            "klemmkasten_rsm":2,
            }
        flyer_f40_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine":0,   #wird in deckblatt-Klasse berechnet
            "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur":0,
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2, #wird in deckblatt-Klasse berechnet
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":2,    #wird in deckblatt-Klasse berechnet
            #"Anzahl_Schienen":0,
            "Single_Line_Durchfahrt":False,
            "Nachpuffer":False,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensor_induktiv_Spulenhalter":0,
            "Sensor_induktiv_Spulenhalter_Korrektur":0,
            #"Bedientableau_2fach":0,
            "Bedientableau_2fach_Korrektur":0,
            #"Interface_Doffer":0,
            "Interface_Doffer_Korrektur":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_Flyer_bipolar":0,
            "Weiche_nach_Flyer_bipolar_Korrektur":0,
            "Dreifachweiche":0,
            "Wechsel":0,
            "Stopper":0,
            "RA_uni":0,
            #"RA_uni_abhebbar":0,
            "RA_uni_abhebbar_Korrektur":0,
            #"RA_uni_ohne_SPS_Ansteuerung":0,
            "RA_uni_ohne_SPS_Ansteuerung_Korrektur":0,
            #"RRA_BI_abhebbar":0,
            "RRA_BI_abhebbar_Korrektur":0,
            "RRA_bi":0,
            #"RRA_bi_Korrektur":0,
            #"RRA_bi_ohne_SPS_Ansteuerung":0,
            "RRA_bi_ohne_SPS_Ansteuerung_Korrektur":0,
            #"Doppelstreckenantrieb":0,
            "Doppelstreckenantrieb_Korrektur":0,
            "RA_bi_abhebbar_unger_Schiene":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        neuenhauser_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Neuenhauser-Putzmaschine":0,      #wird in deckblatt-Klasse zugewiesen
            #"Neuenhauser-Putzmaschine_Vorpuffer":0,    #wird in deckblatt-Klasse zugewiesen
            #"Neuenhauser-Putzmaschine_Nachpuffer":0,   #wird in deckblatt-Klasse zugewiesen
            #"Anzahl_Vorstaustrecken":0,
            #"Anzahl_Nachstaustrecken":0,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensorik_Zugpositionierung":0,
            #"Sensor_WT18_Spulenprüfung_voll_leer":0,
            #"Bedientableau_2fach":0,
            "Bedientableau_2fach_Korrektur":0,
            #"Interface_Putzmaschine":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_PM_bipolar":0,
            #"RA_uni_abhebbar":0,
            "RA_uni_abhebbar_Korrektur":0,
            #"RA_uni_ohne_SPS_Ansteuerung":0,
            #"RA_uni_abhebbar_unger_Sch":0,
            #"Doppelstreckenantrieb":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        flyer_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Flyer":0, # äquivalent zu 'Anzahl'
            #"Anzahl_Schienen:":0,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensor_induktiv_Spulenalter_Zug_positionierung":0,
            #"Bedientableau_2fach":0,
            #"Interface_Doffer":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_Flyer_bipolar":0,
            "Dreifachweiche":0,
            #"Wechsel":0,
            "Wechsel_Korrektur":0,
            #"RA_bi_ohne_SPS-Ansteuerung":0,
            #"RA_bi_abhebbar":0,
            "RA_bi_abhebbar_Korrektur":0,
            "RA_bi":4,
            #"Doppelstreckenantrieb":0,
            "RA_bi_abhebbar_unger_Schiene":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        verbindungsstrecken_w_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Sensor_optisch_Traverse":0,
            "Bedientableau_1fach":0,
            "Bedientableau_2fach":0,
            "Bedientableau_14fach":0,
            "Weiche":0,
            "Dreifachweiche":0,
            "Kreuzungsweiche":1,
            "Werma_Rundumleuchte_Störung":0,
            "RA_uni":0,
            "RA_uni_ohne_SPS_Ansteuerung":0,
            "RA_bi":0,
            "RA_bi_ohne_SPS-Ansteuerung":0,
            "Doppelstreckenantrieb":0
            }
        puffer_eingabe = {
            # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            # "Anzahl":0,
            # "Puffer":0, #äquivalent zu Anzahl
            # "Anzahl_Pufferstrecken":0, #äquivalent zu Anzahl_Staustrecken
            # "Anzahl_Staustrecken":0,
            # "Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur": 1,
            # "Weiche":0,
            "Weiche_Korrektur": 0,
            "RA_bi_ungerade_Schiene": 2,
            # "Doppelstreckenantrieb":0,
            # "Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur": 0,
            # "Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur": 0,
        }
        turm_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Turm":0, #äquivalent zu Anzahl
            #"Anzahl_Wendlungen":0,  #äquivalent zu Anzahl_Staustrecken
            #"Anzahl_Staustrecken":0,
            #"Sensor_optisch_Traverse":0,
            #"Weiche":0,
            #"RA_bi":0,
            "RA_bi_Korrektur":0,
            #"RA_bi_ohne_SPS":0,
            "RA_bi_ohne_SPS_Korrektur":0,
            #"Bedientableau_2fach":0,
        }
        mg = rek.MG(Anzahl_MG,
                    rsm_direct=rsm_direct_eingabe,
                    rsm_fa=rsm_fa_eingabe,
                    flyer_f40=flyer_f40_eingabe,
                    neuenhauser=neuenhauser_eingabe,
                    flyer=flyer_eingabe,
                    verbindungsstrecken_w=verbindungsstrecken_w_eingabe,
                    puffer=puffer_eingabe,
                    turm=turm_eingabe)
        Anzahl_EAS = {}
        eas = rek.EA(Anzahl_EAS, mg)

        Anzahl_HW = {}

        hw = rek.HW(Anzahl_HW, mg, eas)

        emo = rek.EMO(eas, hw, mg)
        Anzahl_DL = {}
        dl = rek.Dienstleistung(Anzahl_DL, hw)
        Anzahl_Ergebnis = {}
        erg = rek.Ergebnis(Anzahl_Ergebnis, hw, dl, emo)
        return erg.get_sum_of_costs(hw)


Anzahl_MG = {
        "SYSTEM": "FA",
        "RSM":14,
        "Flyer":4,
        "Flyer_Puffer":2,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine":0,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":0,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":0,
        "Neuenhauser-Putzmaschine":0,
        "Neuenhauser-Putzmaschine_Vorpuffer":0,
        "Neuenhauser-Putzmaschine_Nachpuffer":0,
        "Cason-Putzmaschine":0,
        "Cason-Putzmaschine_Vorpuffer":0,
        "Cason-Putzmaschine_Nachpuffer":0,
        "Puffer":1,
        "Anzahl_der_Pufferstrecken_pro_Puffer":5,
        "Begegnungsstrecke_Bypass":2,
        "Turm":0,
        "Turm_Anzahl_Wendlungen":0,
        }


variationen = {}
k = 1
while k < 6:
    Anzahl_MG.update({"Flyer_Puffer": k})
    erg = eine_anlage(Anzahl_MG)
    variationen.update({f"Mit {k} Flyer-Puffern": erg})
    k += 1
print(variationen)

lists = sorted(variationen.items()) # sorted by key, return a list of tuples

x, y = zip(*lists) 

plt.plot(x, y)
plt.show()
{'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}

Puffer

In [14]:
import rieter_ekalk as rek
import matplotlib.pyplot as plt

def eine_anlage(Anzahl_MG):

        rsm_direct_eingabe = {
        }
        rsm_fa_eingabe = {
            "Flex_A_Premium":False,        # braucht man das noch?
            "Getriebe_in_der_Mitte":False, # braucht man das noch?
            "RSM_Einfahrt_Ein_Beidseitig":False,  # braucht man das noch?
            "Sensor_optisch_Traverse_zusätzlich":6,
            "Bedientableau_1fach_Korrektur":0,
            "Bedientableau_2fach_Korrektur":4,
            "Weiche_Korrektur":4,
            "RRA_bi_Korrektur":0,
            "RRA_bi_auf_Haupstrecke":10,
            "RRA_uni_Begegnung":4,
            "gemeinsame_Wendung":0,
            "Mit_Drucktaster_Korrektur":0,
            "Meldelampe_Überstrom_Korrektur":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            "klemmkasten_rsm":2,
            }
        flyer_f40_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine":0,   #wird in deckblatt-Klasse berechnet
            "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur":0,
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2, #wird in deckblatt-Klasse berechnet
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":2,    #wird in deckblatt-Klasse berechnet
            #"Anzahl_Schienen":0,
            "Single_Line_Durchfahrt":False,
            "Nachpuffer":False,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensor_induktiv_Spulenhalter":0,
            "Sensor_induktiv_Spulenhalter_Korrektur":0,
            #"Bedientableau_2fach":0,
            "Bedientableau_2fach_Korrektur":0,
            #"Interface_Doffer":0,
            "Interface_Doffer_Korrektur":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_Flyer_bipolar":0,
            "Weiche_nach_Flyer_bipolar_Korrektur":0,
            "Dreifachweiche":0,
            "Wechsel":0,
            "Stopper":0,
            "RA_uni":0,
            #"RA_uni_abhebbar":0,
            "RA_uni_abhebbar_Korrektur":0,
            #"RA_uni_ohne_SPS_Ansteuerung":0,
            "RA_uni_ohne_SPS_Ansteuerung_Korrektur":0,
            #"RRA_BI_abhebbar":0,
            "RRA_BI_abhebbar_Korrektur":0,
            "RRA_bi":0,
            #"RRA_bi_Korrektur":0,
            #"RRA_bi_ohne_SPS_Ansteuerung":0,
            "RRA_bi_ohne_SPS_Ansteuerung_Korrektur":0,
            #"Doppelstreckenantrieb":0,
            "Doppelstreckenantrieb_Korrektur":0,
            "RA_bi_abhebbar_unger_Schiene":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        neuenhauser_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Neuenhauser-Putzmaschine":0,      #wird in deckblatt-Klasse zugewiesen
            #"Neuenhauser-Putzmaschine_Vorpuffer":0,    #wird in deckblatt-Klasse zugewiesen
            #"Neuenhauser-Putzmaschine_Nachpuffer":0,   #wird in deckblatt-Klasse zugewiesen
            #"Anzahl_Vorstaustrecken":0,
            #"Anzahl_Nachstaustrecken":0,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensorik_Zugpositionierung":0,
            #"Sensor_WT18_Spulenprüfung_voll_leer":0,
            #"Bedientableau_2fach":0,
            "Bedientableau_2fach_Korrektur":0,
            #"Interface_Putzmaschine":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_PM_bipolar":0,
            #"RA_uni_abhebbar":0,
            "RA_uni_abhebbar_Korrektur":0,
            #"RA_uni_ohne_SPS_Ansteuerung":0,
            #"RA_uni_abhebbar_unger_Sch":0,
            #"Doppelstreckenantrieb":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        flyer_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Flyer":0, # äquivalent zu 'Anzahl'
            #"Anzahl_Schienen:":0,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensor_induktiv_Spulenalter_Zug_positionierung":0,
            #"Bedientableau_2fach":0,
            #"Interface_Doffer":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_Flyer_bipolar":0,
            "Dreifachweiche":0,
            #"Wechsel":0,
            "Wechsel_Korrektur":0,
            #"RA_bi_ohne_SPS-Ansteuerung":0,
            #"RA_bi_abhebbar":0,
            "RA_bi_abhebbar_Korrektur":0,
            "RA_bi":4,
            #"Doppelstreckenantrieb":0,
            "RA_bi_abhebbar_unger_Schiene":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        verbindungsstrecken_w_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Sensor_optisch_Traverse":0,
            "Bedientableau_1fach":0,
            "Bedientableau_2fach":0,
            "Bedientableau_14fach":0,
            "Weiche":0,
            "Dreifachweiche":0,
            "Kreuzungsweiche":1,
            "Werma_Rundumleuchte_Störung":0,
            "RA_uni":0,
            "RA_uni_ohne_SPS_Ansteuerung":0,
            "RA_bi":0,
            "RA_bi_ohne_SPS-Ansteuerung":0,
            "Doppelstreckenantrieb":0
            }
        puffer_eingabe = {
            # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            # "Anzahl":0,
            # "Puffer":0, #äquivalent zu Anzahl
            # "Anzahl_Pufferstrecken":0, #äquivalent zu Anzahl_Staustrecken
            # "Anzahl_Staustrecken":0,
            # "Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur": 1,
            # "Weiche":0,
            "Weiche_Korrektur": 0,
            "RA_bi_ungerade_Schiene": 2,
            # "Doppelstreckenantrieb":0,
            # "Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur": 0,
            # "Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur": 0,
        }
        turm_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Turm":0, #äquivalent zu Anzahl
            #"Anzahl_Wendlungen":0,  #äquivalent zu Anzahl_Staustrecken
            #"Anzahl_Staustrecken":0,
            #"Sensor_optisch_Traverse":0,
            #"Weiche":0,
            #"RA_bi":0,
            "RA_bi_Korrektur":0,
            #"RA_bi_ohne_SPS":0,
            "RA_bi_ohne_SPS_Korrektur":0,
            #"Bedientableau_2fach":0,
        }
        mg = rek.MG(Anzahl_MG,
                    rsm_direct=rsm_direct_eingabe,
                    rsm_fa=rsm_fa_eingabe,
                    flyer_f40=flyer_f40_eingabe,
                    neuenhauser=neuenhauser_eingabe,
                    flyer=flyer_eingabe,
                    verbindungsstrecken_w=verbindungsstrecken_w_eingabe,
                    puffer=puffer_eingabe,
                    turm=turm_eingabe)
        Anzahl_EAS = {}
        eas = rek.EA(Anzahl_EAS, mg)

        Anzahl_HW = {}

        hw = rek.HW(Anzahl_HW, mg, eas)

        emo = rek.EMO(eas, hw, mg)
        Anzahl_DL = {}
        dl = rek.Dienstleistung(Anzahl_DL, hw)
        Anzahl_Ergebnis = {}
        erg = rek.Ergebnis(Anzahl_Ergebnis, hw, dl, emo)
        return erg.get_sum_of_costs(hw)


Anzahl_MG = {
        "SYSTEM": "FA",
        "RSM":14,
        "Flyer":4,
        "Flyer_Puffer":2,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine":0,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":0,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":0,
        "Neuenhauser-Putzmaschine":0,
        "Neuenhauser-Putzmaschine_Vorpuffer":0,
        "Neuenhauser-Putzmaschine_Nachpuffer":0,
        "Cason-Putzmaschine":0,
        "Cason-Putzmaschine_Vorpuffer":0,
        "Cason-Putzmaschine_Nachpuffer":0,
        "Puffer":1,
        "Anzahl_der_Pufferstrecken_pro_Puffer":5,
        "Begegnungsstrecke_Bypass":2,
        "Turm":0,
        "Turm_Anzahl_Wendlungen":0,
        }


variationen = {}
k = 1
while k < 6:
    Anzahl_MG.update({"Puffer": k})
    erg = eine_anlage(Anzahl_MG)
    variationen.update({f"Mit {k} Puffern": erg})
    k += 1
print(variationen)

lists = sorted(variationen.items()) # sorted by key, return a list of tuples

x, y = zip(*lists) 

plt.plot(x, y)
plt.show()
{'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}

Anzahl der Pufferstrecken pro Puffer

In [16]:
import rieter_ekalk as rek
import matplotlib.pyplot as plt

def eine_anlage(Anzahl_MG):

        rsm_direct_eingabe = {
        }
        rsm_fa_eingabe = {
            "Flex_A_Premium":False,        # braucht man das noch?
            "Getriebe_in_der_Mitte":False, # braucht man das noch?
            "RSM_Einfahrt_Ein_Beidseitig":False,  # braucht man das noch?
            "Sensor_optisch_Traverse_zusätzlich":6,
            "Bedientableau_1fach_Korrektur":0,
            "Bedientableau_2fach_Korrektur":4,
            "Weiche_Korrektur":4,
            "RRA_bi_Korrektur":0,
            "RRA_bi_auf_Haupstrecke":10,
            "RRA_uni_Begegnung":4,
            "gemeinsame_Wendung":0,
            "Mit_Drucktaster_Korrektur":0,
            "Meldelampe_Überstrom_Korrektur":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            "klemmkasten_rsm":2,
            }
        flyer_f40_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine":0,   #wird in deckblatt-Klasse berechnet
            "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur":0,
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2, #wird in deckblatt-Klasse berechnet
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":2,    #wird in deckblatt-Klasse berechnet
            #"Anzahl_Schienen":0,
            "Single_Line_Durchfahrt":False,
            "Nachpuffer":False,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensor_induktiv_Spulenhalter":0,
            "Sensor_induktiv_Spulenhalter_Korrektur":0,
            #"Bedientableau_2fach":0,
            "Bedientableau_2fach_Korrektur":0,
            #"Interface_Doffer":0,
            "Interface_Doffer_Korrektur":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_Flyer_bipolar":0,
            "Weiche_nach_Flyer_bipolar_Korrektur":0,
            "Dreifachweiche":0,
            "Wechsel":0,
            "Stopper":0,
            "RA_uni":0,
            #"RA_uni_abhebbar":0,
            "RA_uni_abhebbar_Korrektur":0,
            #"RA_uni_ohne_SPS_Ansteuerung":0,
            "RA_uni_ohne_SPS_Ansteuerung_Korrektur":0,
            #"RRA_BI_abhebbar":0,
            "RRA_BI_abhebbar_Korrektur":0,
            "RRA_bi":0,
            #"RRA_bi_Korrektur":0,
            #"RRA_bi_ohne_SPS_Ansteuerung":0,
            "RRA_bi_ohne_SPS_Ansteuerung_Korrektur":0,
            #"Doppelstreckenantrieb":0,
            "Doppelstreckenantrieb_Korrektur":0,
            "RA_bi_abhebbar_unger_Schiene":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        neuenhauser_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Neuenhauser-Putzmaschine":0,      #wird in deckblatt-Klasse zugewiesen
            #"Neuenhauser-Putzmaschine_Vorpuffer":0,    #wird in deckblatt-Klasse zugewiesen
            #"Neuenhauser-Putzmaschine_Nachpuffer":0,   #wird in deckblatt-Klasse zugewiesen
            #"Anzahl_Vorstaustrecken":0,
            #"Anzahl_Nachstaustrecken":0,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensorik_Zugpositionierung":0,
            #"Sensor_WT18_Spulenprüfung_voll_leer":0,
            #"Bedientableau_2fach":0,
            "Bedientableau_2fach_Korrektur":0,
            #"Interface_Putzmaschine":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_PM_bipolar":0,
            #"RA_uni_abhebbar":0,
            "RA_uni_abhebbar_Korrektur":0,
            #"RA_uni_ohne_SPS_Ansteuerung":0,
            #"RA_uni_abhebbar_unger_Sch":0,
            #"Doppelstreckenantrieb":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        flyer_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Flyer":0, # äquivalent zu 'Anzahl'
            #"Anzahl_Schienen:":0,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensor_induktiv_Spulenalter_Zug_positionierung":0,
            #"Bedientableau_2fach":0,
            #"Interface_Doffer":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_Flyer_bipolar":0,
            "Dreifachweiche":0,
            #"Wechsel":0,
            "Wechsel_Korrektur":0,
            #"RA_bi_ohne_SPS-Ansteuerung":0,
            #"RA_bi_abhebbar":0,
            "RA_bi_abhebbar_Korrektur":0,
            "RA_bi":4,
            #"Doppelstreckenantrieb":0,
            "RA_bi_abhebbar_unger_Schiene":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        verbindungsstrecken_w_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Sensor_optisch_Traverse":0,
            "Bedientableau_1fach":0,
            "Bedientableau_2fach":0,
            "Bedientableau_14fach":0,
            "Weiche":0,
            "Dreifachweiche":0,
            "Kreuzungsweiche":1,
            "Werma_Rundumleuchte_Störung":0,
            "RA_uni":0,
            "RA_uni_ohne_SPS_Ansteuerung":0,
            "RA_bi":0,
            "RA_bi_ohne_SPS-Ansteuerung":0,
            "Doppelstreckenantrieb":0
            }
        puffer_eingabe = {
            # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            # "Anzahl":0,
            # "Puffer":0, #äquivalent zu Anzahl
            # "Anzahl_Pufferstrecken":0, #äquivalent zu Anzahl_Staustrecken
            # "Anzahl_Staustrecken":0,
            # "Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur": 1,
            # "Weiche":0,
            "Weiche_Korrektur": 0,
            "RA_bi_ungerade_Schiene": 2,
            # "Doppelstreckenantrieb":0,
            # "Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur": 0,
            # "Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur": 0,
        }
        turm_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Turm":0, #äquivalent zu Anzahl
            #"Anzahl_Wendlungen":0,  #äquivalent zu Anzahl_Staustrecken
            #"Anzahl_Staustrecken":0,
            #"Sensor_optisch_Traverse":0,
            #"Weiche":0,
            #"RA_bi":0,
            "RA_bi_Korrektur":0,
            #"RA_bi_ohne_SPS":0,
            "RA_bi_ohne_SPS_Korrektur":0,
            #"Bedientableau_2fach":0,
        }
        mg = rek.MG(Anzahl_MG,
                    rsm_direct=rsm_direct_eingabe,
                    rsm_fa=rsm_fa_eingabe,
                    flyer_f40=flyer_f40_eingabe,
                    neuenhauser=neuenhauser_eingabe,
                    flyer=flyer_eingabe,
                    verbindungsstrecken_w=verbindungsstrecken_w_eingabe,
                    puffer=puffer_eingabe,
                    turm=turm_eingabe)
        Anzahl_EAS = {}
        eas = rek.EA(Anzahl_EAS, mg)

        Anzahl_HW = {}

        hw = rek.HW(Anzahl_HW, mg, eas)

        emo = rek.EMO(eas, hw, mg)
        Anzahl_DL = {}
        dl = rek.Dienstleistung(Anzahl_DL, hw)
        Anzahl_Ergebnis = {}
        erg = rek.Ergebnis(Anzahl_Ergebnis, hw, dl, emo)
        return erg.get_sum_of_costs(hw)


Anzahl_MG = {
        "SYSTEM": "FA",
        "RSM":14,
        "Flyer":4,
        "Flyer_Puffer":2,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine":0,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":0,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":0,
        "Neuenhauser-Putzmaschine":0,
        "Neuenhauser-Putzmaschine_Vorpuffer":0,
        "Neuenhauser-Putzmaschine_Nachpuffer":0,
        "Cason-Putzmaschine":0,
        "Cason-Putzmaschine_Vorpuffer":0,
        "Cason-Putzmaschine_Nachpuffer":0,
        "Puffer":1,
        "Anzahl_der_Pufferstrecken_pro_Puffer":5,
        "Begegnungsstrecke_Bypass":2,
        "Turm":0,
        "Turm_Anzahl_Wendlungen":0,
        }


variationen = {}
k = 2
while k < 6:
    Anzahl_MG.update({"Anzahl_der_Pufferstrecken_pro_Puffer": k})
    erg = eine_anlage(Anzahl_MG)
    variationen.update({f"Mit {k} Pufferstrecken pro Puffer": erg})
    k += 1
print(variationen)
print("Hinweis: mind. 2 Pufferstrecken pro Puffer sollten existieren")
lists = sorted(variationen.items()) # sorted by key, return a list of tuples

x, y = zip(*lists) 

plt.plot(x, y)
plt.show()
{'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}
Hinweis: mind. 2 Pufferstrecken pro Puffer sollten existieren

Flyer Electrojet incl intergrierte Putzmaschine Vorpuffer

In [27]:
import rieter_ekalk as rek
import matplotlib.pyplot as plt

def eine_anlage(Anzahl_MG):

        rsm_direct_eingabe = {
        }
        rsm_fa_eingabe = {
            "Flex_A_Premium":False,        # braucht man das noch?
            "Getriebe_in_der_Mitte":False, # braucht man das noch?
            "RSM_Einfahrt_Ein_Beidseitig":False,  # braucht man das noch?
            "Sensor_optisch_Traverse_zusätzlich":6,
            "Bedientableau_1fach_Korrektur":0,
            "Bedientableau_2fach_Korrektur":4,
            "Weiche_Korrektur":4,
            "RRA_bi_Korrektur":0,
            "RRA_bi_auf_Haupstrecke":10,
            "RRA_uni_Begegnung":4,
            "gemeinsame_Wendung":0,
            "Mit_Drucktaster_Korrektur":0,
            "Meldelampe_Überstrom_Korrektur":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            "klemmkasten_rsm":2,
            }
        flyer_f40_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine":0,   #wird in deckblatt-Klasse berechnet
            "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur":0,
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2, #wird in deckblatt-Klasse berechnet
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":2,    #wird in deckblatt-Klasse berechnet
            #"Anzahl_Schienen":0,
            "Single_Line_Durchfahrt":False,
            "Nachpuffer":False,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensor_induktiv_Spulenhalter":0,
            "Sensor_induktiv_Spulenhalter_Korrektur":0,
            #"Bedientableau_2fach":0,
            "Bedientableau_2fach_Korrektur":0,
            #"Interface_Doffer":0,
            "Interface_Doffer_Korrektur":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_Flyer_bipolar":0,
            "Weiche_nach_Flyer_bipolar_Korrektur":0,
            "Dreifachweiche":0,
            "Wechsel":0,
            "Stopper":0,
            "RA_uni":0,
            #"RA_uni_abhebbar":0,
            "RA_uni_abhebbar_Korrektur":0,
            #"RA_uni_ohne_SPS_Ansteuerung":0,
            "RA_uni_ohne_SPS_Ansteuerung_Korrektur":0,
            #"RRA_BI_abhebbar":0,
            "RRA_BI_abhebbar_Korrektur":0,
            "RRA_bi":0,
            #"RRA_bi_Korrektur":0,
            #"RRA_bi_ohne_SPS_Ansteuerung":0,
            "RRA_bi_ohne_SPS_Ansteuerung_Korrektur":0,
            #"Doppelstreckenantrieb":0,
            "Doppelstreckenantrieb_Korrektur":0,
            "RA_bi_abhebbar_unger_Schiene":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        neuenhauser_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Neuenhauser-Putzmaschine":0,      #wird in deckblatt-Klasse zugewiesen
            #"Neuenhauser-Putzmaschine_Vorpuffer":0,    #wird in deckblatt-Klasse zugewiesen
            #"Neuenhauser-Putzmaschine_Nachpuffer":0,   #wird in deckblatt-Klasse zugewiesen
            #"Anzahl_Vorstaustrecken":0,
            #"Anzahl_Nachstaustrecken":0,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensorik_Zugpositionierung":0,
            #"Sensor_WT18_Spulenprüfung_voll_leer":0,
            #"Bedientableau_2fach":0,
            "Bedientableau_2fach_Korrektur":0,
            #"Interface_Putzmaschine":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_PM_bipolar":0,
            #"RA_uni_abhebbar":0,
            "RA_uni_abhebbar_Korrektur":0,
            #"RA_uni_ohne_SPS_Ansteuerung":0,
            #"RA_uni_abhebbar_unger_Sch":0,
            #"Doppelstreckenantrieb":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        flyer_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Flyer":0, # äquivalent zu 'Anzahl'
            #"Anzahl_Schienen:":0,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensor_induktiv_Spulenalter_Zug_positionierung":0,
            #"Bedientableau_2fach":0,
            #"Interface_Doffer":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_Flyer_bipolar":0,
            "Dreifachweiche":0,
            #"Wechsel":0,
            "Wechsel_Korrektur":0,
            #"RA_bi_ohne_SPS-Ansteuerung":0,
            #"RA_bi_abhebbar":0,
            "RA_bi_abhebbar_Korrektur":0,
            "RA_bi":4,
            #"Doppelstreckenantrieb":0,
            "RA_bi_abhebbar_unger_Schiene":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        verbindungsstrecken_w_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Sensor_optisch_Traverse":0,
            "Bedientableau_1fach":0,
            "Bedientableau_2fach":0,
            "Bedientableau_14fach":0,
            "Weiche":0,
            "Dreifachweiche":0,
            "Kreuzungsweiche":1,
            "Werma_Rundumleuchte_Störung":0,
            "RA_uni":0,
            "RA_uni_ohne_SPS_Ansteuerung":0,
            "RA_bi":0,
            "RA_bi_ohne_SPS-Ansteuerung":0,
            "Doppelstreckenantrieb":0
            }
        puffer_eingabe = {
            # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            # "Anzahl":0,
            # "Puffer":0, #äquivalent zu Anzahl
            # "Anzahl_Pufferstrecken":0, #äquivalent zu Anzahl_Staustrecken
            # "Anzahl_Staustrecken":0,
            # "Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur": 1,
            # "Weiche":0,
            "Weiche_Korrektur": 0,
            "RA_bi_ungerade_Schiene": 2,
            # "Doppelstreckenantrieb":0,
            # "Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur": 0,
            # "Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur": 0,
        }
        turm_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Turm":0, #äquivalent zu Anzahl
            #"Anzahl_Wendlungen":0,  #äquivalent zu Anzahl_Staustrecken
            #"Anzahl_Staustrecken":0,
            #"Sensor_optisch_Traverse":0,
            #"Weiche":0,
            #"RA_bi":0,
            "RA_bi_Korrektur":0,
            #"RA_bi_ohne_SPS":0,
            "RA_bi_ohne_SPS_Korrektur":0,
            #"Bedientableau_2fach":0,
        }
        mg = rek.MG(Anzahl_MG,
                    rsm_direct=rsm_direct_eingabe,
                    rsm_fa=rsm_fa_eingabe,
                    flyer_f40=flyer_f40_eingabe,
                    neuenhauser=neuenhauser_eingabe,
                    flyer=flyer_eingabe,
                    verbindungsstrecken_w=verbindungsstrecken_w_eingabe,
                    puffer=puffer_eingabe,
                    turm=turm_eingabe)
        Anzahl_EAS = {}
        eas = rek.EA(Anzahl_EAS, mg)

        Anzahl_HW = {}

        hw = rek.HW(Anzahl_HW, mg, eas)

        emo = rek.EMO(eas, hw, mg)
        Anzahl_DL = {}
        dl = rek.Dienstleistung(Anzahl_DL, hw)
        Anzahl_Ergebnis = {}
        erg = rek.Ergebnis(Anzahl_Ergebnis, hw, dl, emo)
        return erg.get_sum_of_costs(hw)


Anzahl_MG = {
        "SYSTEM": "FA",
        "RSM":14,
        "Flyer":4,
        "Flyer_Puffer":2,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine":1,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":0,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":2,
        "Neuenhauser-Putzmaschine":0,
        "Neuenhauser-Putzmaschine_Vorpuffer":0,
        "Neuenhauser-Putzmaschine_Nachpuffer":0,
        "Cason-Putzmaschine":0,
        "Cason-Putzmaschine_Vorpuffer":0,
        "Cason-Putzmaschine_Nachpuffer":0,
        "Puffer":1,
        "Anzahl_der_Pufferstrecken_pro_Puffer":5,
        "Begegnungsstrecke_Bypass":2,
        "Turm":0,
        "Turm_Anzahl_Wendlungen":0,
        }


variationen = {}
k = 2
while k < 6:
    Anzahl_MG.update({"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer": k})
    erg = eine_anlage(Anzahl_MG)
    variationen.update({f"Mit {k} Vorpuffern": erg})
    k += 1
print(variationen)
print("Vorpuffer sollte > 1 sein")
lists = sorted(variationen.items()) # sorted by key, return a list of tuples

x, y = zip(*lists) 

plt.plot(x, y)
plt.show()
{'Mit 2 Vorpuffern': 104833.16666666667, 'Mit 3 Vorpuffern': 104833.16666666667, 'Mit 4 Vorpuffern': 104833.16666666667, 'Mit 5 Vorpuffern': 104833.16666666667}
Vorpuffer sollte > 1 sein

Flyer Electrojet incl intergrierte Putzmaschine Nachpuffer

In [18]:
import rieter_ekalk as rek
import matplotlib.pyplot as plt

def eine_anlage(Anzahl_MG):

        rsm_direct_eingabe = {
        }
        rsm_fa_eingabe = {
            "Flex_A_Premium":False,        # braucht man das noch?
            "Getriebe_in_der_Mitte":False, # braucht man das noch?
            "RSM_Einfahrt_Ein_Beidseitig":False,  # braucht man das noch?
            "Sensor_optisch_Traverse_zusätzlich":6,
            "Bedientableau_1fach_Korrektur":0,
            "Bedientableau_2fach_Korrektur":4,
            "Weiche_Korrektur":4,
            "RRA_bi_Korrektur":0,
            "RRA_bi_auf_Haupstrecke":10,
            "RRA_uni_Begegnung":4,
            "gemeinsame_Wendung":0,
            "Mit_Drucktaster_Korrektur":0,
            "Meldelampe_Überstrom_Korrektur":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            "klemmkasten_rsm":2,
            }
        flyer_f40_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine":0,   #wird in deckblatt-Klasse berechnet
            "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur":0,
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2, #wird in deckblatt-Klasse berechnet
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":2,    #wird in deckblatt-Klasse berechnet
            #"Anzahl_Schienen":0,
            "Single_Line_Durchfahrt":False,
            "Nachpuffer":False,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensor_induktiv_Spulenhalter":0,
            "Sensor_induktiv_Spulenhalter_Korrektur":0,
            #"Bedientableau_2fach":0,
            "Bedientableau_2fach_Korrektur":0,
            #"Interface_Doffer":0,
            "Interface_Doffer_Korrektur":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_Flyer_bipolar":0,
            "Weiche_nach_Flyer_bipolar_Korrektur":0,
            "Dreifachweiche":0,
            "Wechsel":0,
            "Stopper":0,
            "RA_uni":0,
            #"RA_uni_abhebbar":0,
            "RA_uni_abhebbar_Korrektur":0,
            #"RA_uni_ohne_SPS_Ansteuerung":0,
            "RA_uni_ohne_SPS_Ansteuerung_Korrektur":0,
            #"RRA_BI_abhebbar":0,
            "RRA_BI_abhebbar_Korrektur":0,
            "RRA_bi":0,
            #"RRA_bi_Korrektur":0,
            #"RRA_bi_ohne_SPS_Ansteuerung":0,
            "RRA_bi_ohne_SPS_Ansteuerung_Korrektur":0,
            #"Doppelstreckenantrieb":0,
            "Doppelstreckenantrieb_Korrektur":0,
            "RA_bi_abhebbar_unger_Schiene":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        neuenhauser_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Neuenhauser-Putzmaschine":0,      #wird in deckblatt-Klasse zugewiesen
            #"Neuenhauser-Putzmaschine_Vorpuffer":0,    #wird in deckblatt-Klasse zugewiesen
            #"Neuenhauser-Putzmaschine_Nachpuffer":0,   #wird in deckblatt-Klasse zugewiesen
            #"Anzahl_Vorstaustrecken":0,
            #"Anzahl_Nachstaustrecken":0,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensorik_Zugpositionierung":0,
            #"Sensor_WT18_Spulenprüfung_voll_leer":0,
            #"Bedientableau_2fach":0,
            "Bedientableau_2fach_Korrektur":0,
            #"Interface_Putzmaschine":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_PM_bipolar":0,
            #"RA_uni_abhebbar":0,
            "RA_uni_abhebbar_Korrektur":0,
            #"RA_uni_ohne_SPS_Ansteuerung":0,
            #"RA_uni_abhebbar_unger_Sch":0,
            #"Doppelstreckenantrieb":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        flyer_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Flyer":0, # äquivalent zu 'Anzahl'
            #"Anzahl_Schienen:":0,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensor_induktiv_Spulenalter_Zug_positionierung":0,
            #"Bedientableau_2fach":0,
            #"Interface_Doffer":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_Flyer_bipolar":0,
            "Dreifachweiche":0,
            #"Wechsel":0,
            "Wechsel_Korrektur":0,
            #"RA_bi_ohne_SPS-Ansteuerung":0,
            #"RA_bi_abhebbar":0,
            "RA_bi_abhebbar_Korrektur":0,
            "RA_bi":4,
            #"Doppelstreckenantrieb":0,
            "RA_bi_abhebbar_unger_Schiene":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        verbindungsstrecken_w_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Sensor_optisch_Traverse":0,
            "Bedientableau_1fach":0,
            "Bedientableau_2fach":0,
            "Bedientableau_14fach":0,
            "Weiche":0,
            "Dreifachweiche":0,
            "Kreuzungsweiche":1,
            "Werma_Rundumleuchte_Störung":0,
            "RA_uni":0,
            "RA_uni_ohne_SPS_Ansteuerung":0,
            "RA_bi":0,
            "RA_bi_ohne_SPS-Ansteuerung":0,
            "Doppelstreckenantrieb":0
            }
        puffer_eingabe = {
            # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            # "Anzahl":0,
            # "Puffer":0, #äquivalent zu Anzahl
            # "Anzahl_Pufferstrecken":0, #äquivalent zu Anzahl_Staustrecken
            # "Anzahl_Staustrecken":0,
            # "Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur": 1,
            # "Weiche":0,
            "Weiche_Korrektur": 0,
            "RA_bi_ungerade_Schiene": 2,
            # "Doppelstreckenantrieb":0,
            # "Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur": 0,
            # "Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur": 0,
        }
        turm_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Turm":0, #äquivalent zu Anzahl
            #"Anzahl_Wendlungen":0,  #äquivalent zu Anzahl_Staustrecken
            #"Anzahl_Staustrecken":0,
            #"Sensor_optisch_Traverse":0,
            #"Weiche":0,
            #"RA_bi":0,
            "RA_bi_Korrektur":0,
            #"RA_bi_ohne_SPS":0,
            "RA_bi_ohne_SPS_Korrektur":0,
            #"Bedientableau_2fach":0,
        }
        mg = rek.MG(Anzahl_MG,
                    rsm_direct=rsm_direct_eingabe,
                    rsm_fa=rsm_fa_eingabe,
                    flyer_f40=flyer_f40_eingabe,
                    neuenhauser=neuenhauser_eingabe,
                    flyer=flyer_eingabe,
                    verbindungsstrecken_w=verbindungsstrecken_w_eingabe,
                    puffer=puffer_eingabe,
                    turm=turm_eingabe)
        Anzahl_EAS = {}
        eas = rek.EA(Anzahl_EAS, mg)

        Anzahl_HW = {}

        hw = rek.HW(Anzahl_HW, mg, eas)

        emo = rek.EMO(eas, hw, mg)
        Anzahl_DL = {}
        dl = rek.Dienstleistung(Anzahl_DL, hw)
        Anzahl_Ergebnis = {}
        erg = rek.Ergebnis(Anzahl_Ergebnis, hw, dl, emo)
        return erg.get_sum_of_costs(hw)


Anzahl_MG = {
        "SYSTEM": "FA",
        "RSM":14,
        "Flyer":4,
        "Flyer_Puffer":2,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine":0,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":0,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":0,
        "Neuenhauser-Putzmaschine":0,
        "Neuenhauser-Putzmaschine_Vorpuffer":0,
        "Neuenhauser-Putzmaschine_Nachpuffer":0,
        "Cason-Putzmaschine":0,
        "Cason-Putzmaschine_Vorpuffer":0,
        "Cason-Putzmaschine_Nachpuffer":0,
        "Puffer":1,
        "Anzahl_der_Pufferstrecken_pro_Puffer":5,
        "Begegnungsstrecke_Bypass":2,
        "Turm":0,
        "Turm_Anzahl_Wendlungen":0,
        }


variationen = {}
k = 1
while k < 6:
    Anzahl_MG.update({"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer": k})
    erg = eine_anlage(Anzahl_MG)
    variationen.update({f"Mit {k} Nachpuffern": erg})
    k += 1
print(variationen)
lists = sorted(variationen.items()) # sorted by key, return a list of tuples

x, y = zip(*lists) 

plt.plot(x, y)
plt.show()
{'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}

Neuenhauser-Putzmaschine Vorpuffer

In [19]:
import rieter_ekalk as rek
import matplotlib.pyplot as plt

def eine_anlage(Anzahl_MG):

        rsm_direct_eingabe = {
        }
        rsm_fa_eingabe = {
            "Flex_A_Premium":False,        # braucht man das noch?
            "Getriebe_in_der_Mitte":False, # braucht man das noch?
            "RSM_Einfahrt_Ein_Beidseitig":False,  # braucht man das noch?
            "Sensor_optisch_Traverse_zusätzlich":6,
            "Bedientableau_1fach_Korrektur":0,
            "Bedientableau_2fach_Korrektur":4,
            "Weiche_Korrektur":4,
            "RRA_bi_Korrektur":0,
            "RRA_bi_auf_Haupstrecke":10,
            "RRA_uni_Begegnung":4,
            "gemeinsame_Wendung":0,
            "Mit_Drucktaster_Korrektur":0,
            "Meldelampe_Überstrom_Korrektur":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            "klemmkasten_rsm":2,
            }
        flyer_f40_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine":0,   #wird in deckblatt-Klasse berechnet
            "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur":0,
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2, #wird in deckblatt-Klasse berechnet
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":2,    #wird in deckblatt-Klasse berechnet
            #"Anzahl_Schienen":0,
            "Single_Line_Durchfahrt":False,
            "Nachpuffer":False,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensor_induktiv_Spulenhalter":0,
            "Sensor_induktiv_Spulenhalter_Korrektur":0,
            #"Bedientableau_2fach":0,
            "Bedientableau_2fach_Korrektur":0,
            #"Interface_Doffer":0,
            "Interface_Doffer_Korrektur":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_Flyer_bipolar":0,
            "Weiche_nach_Flyer_bipolar_Korrektur":0,
            "Dreifachweiche":0,
            "Wechsel":0,
            "Stopper":0,
            "RA_uni":0,
            #"RA_uni_abhebbar":0,
            "RA_uni_abhebbar_Korrektur":0,
            #"RA_uni_ohne_SPS_Ansteuerung":0,
            "RA_uni_ohne_SPS_Ansteuerung_Korrektur":0,
            #"RRA_BI_abhebbar":0,
            "RRA_BI_abhebbar_Korrektur":0,
            "RRA_bi":0,
            #"RRA_bi_Korrektur":0,
            #"RRA_bi_ohne_SPS_Ansteuerung":0,
            "RRA_bi_ohne_SPS_Ansteuerung_Korrektur":0,
            #"Doppelstreckenantrieb":0,
            "Doppelstreckenantrieb_Korrektur":0,
            "RA_bi_abhebbar_unger_Schiene":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        neuenhauser_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Neuenhauser-Putzmaschine":0,      #wird in deckblatt-Klasse zugewiesen
            #"Neuenhauser-Putzmaschine_Vorpuffer":0,    #wird in deckblatt-Klasse zugewiesen
            #"Neuenhauser-Putzmaschine_Nachpuffer":0,   #wird in deckblatt-Klasse zugewiesen
            #"Anzahl_Vorstaustrecken":0,
            #"Anzahl_Nachstaustrecken":0,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensorik_Zugpositionierung":0,
            #"Sensor_WT18_Spulenprüfung_voll_leer":0,
            #"Bedientableau_2fach":0,
            "Bedientableau_2fach_Korrektur":0,
            #"Interface_Putzmaschine":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_PM_bipolar":0,
            #"RA_uni_abhebbar":0,
            "RA_uni_abhebbar_Korrektur":0,
            #"RA_uni_ohne_SPS_Ansteuerung":0,
            #"RA_uni_abhebbar_unger_Sch":0,
            #"Doppelstreckenantrieb":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        flyer_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Flyer":0, # äquivalent zu 'Anzahl'
            #"Anzahl_Schienen:":0,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensor_induktiv_Spulenalter_Zug_positionierung":0,
            #"Bedientableau_2fach":0,
            #"Interface_Doffer":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_Flyer_bipolar":0,
            "Dreifachweiche":0,
            #"Wechsel":0,
            "Wechsel_Korrektur":0,
            #"RA_bi_ohne_SPS-Ansteuerung":0,
            #"RA_bi_abhebbar":0,
            "RA_bi_abhebbar_Korrektur":0,
            "RA_bi":4,
            #"Doppelstreckenantrieb":0,
            "RA_bi_abhebbar_unger_Schiene":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        verbindungsstrecken_w_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Sensor_optisch_Traverse":0,
            "Bedientableau_1fach":0,
            "Bedientableau_2fach":0,
            "Bedientableau_14fach":0,
            "Weiche":0,
            "Dreifachweiche":0,
            "Kreuzungsweiche":1,
            "Werma_Rundumleuchte_Störung":0,
            "RA_uni":0,
            "RA_uni_ohne_SPS_Ansteuerung":0,
            "RA_bi":0,
            "RA_bi_ohne_SPS-Ansteuerung":0,
            "Doppelstreckenantrieb":0
            }
        puffer_eingabe = {
            # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            # "Anzahl":0,
            # "Puffer":0, #äquivalent zu Anzahl
            # "Anzahl_Pufferstrecken":0, #äquivalent zu Anzahl_Staustrecken
            # "Anzahl_Staustrecken":0,
            # "Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur": 1,
            # "Weiche":0,
            "Weiche_Korrektur": 0,
            "RA_bi_ungerade_Schiene": 2,
            # "Doppelstreckenantrieb":0,
            # "Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur": 0,
            # "Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur": 0,
        }
        turm_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Turm":0, #äquivalent zu Anzahl
            #"Anzahl_Wendlungen":0,  #äquivalent zu Anzahl_Staustrecken
            #"Anzahl_Staustrecken":0,
            #"Sensor_optisch_Traverse":0,
            #"Weiche":0,
            #"RA_bi":0,
            "RA_bi_Korrektur":0,
            #"RA_bi_ohne_SPS":0,
            "RA_bi_ohne_SPS_Korrektur":0,
            #"Bedientableau_2fach":0,
        }
        mg = rek.MG(Anzahl_MG,
                    rsm_direct=rsm_direct_eingabe,
                    rsm_fa=rsm_fa_eingabe,
                    flyer_f40=flyer_f40_eingabe,
                    neuenhauser=neuenhauser_eingabe,
                    flyer=flyer_eingabe,
                    verbindungsstrecken_w=verbindungsstrecken_w_eingabe,
                    puffer=puffer_eingabe,
                    turm=turm_eingabe)
        Anzahl_EAS = {}
        eas = rek.EA(Anzahl_EAS, mg)

        Anzahl_HW = {}

        hw = rek.HW(Anzahl_HW, mg, eas)

        emo = rek.EMO(eas, hw, mg)
        Anzahl_DL = {}
        dl = rek.Dienstleistung(Anzahl_DL, hw)
        Anzahl_Ergebnis = {}
        erg = rek.Ergebnis(Anzahl_Ergebnis, hw, dl, emo)
        return erg.get_sum_of_costs(hw)


Anzahl_MG = {
        "SYSTEM": "FA",
        "RSM":14,
        "Flyer":4,
        "Flyer_Puffer":2,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine":0,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":0,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":0,
        "Neuenhauser-Putzmaschine":0,
        "Neuenhauser-Putzmaschine_Vorpuffer":0,
        "Neuenhauser-Putzmaschine_Nachpuffer":0,
        "Cason-Putzmaschine":0,
        "Cason-Putzmaschine_Vorpuffer":0,
        "Cason-Putzmaschine_Nachpuffer":0,
        "Puffer":1,
        "Anzahl_der_Pufferstrecken_pro_Puffer":5,
        "Begegnungsstrecke_Bypass":2,
        "Turm":0,
        "Turm_Anzahl_Wendlungen":0,
        }


variationen = {}
k = 1
while k < 6:
    Anzahl_MG.update({"Neuenhauser-Putzmaschine_Vorpuffer": k})
    erg = eine_anlage(Anzahl_MG)
    variationen.update({f"Mit {k} Vorpuffern": erg})
    k += 1
print(variationen)
lists = sorted(variationen.items()) # sorted by key, return a list of tuples

x, y = zip(*lists) 

plt.plot(x, y)
plt.show()
{'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}

Neuenhauser-Putzmaschine Nachpuffer

In [20]:
import rieter_ekalk as rek
import matplotlib.pyplot as plt

def eine_anlage(Anzahl_MG):

        rsm_direct_eingabe = {
        }
        rsm_fa_eingabe = {
            "Flex_A_Premium":False,        # braucht man das noch?
            "Getriebe_in_der_Mitte":False, # braucht man das noch?
            "RSM_Einfahrt_Ein_Beidseitig":False,  # braucht man das noch?
            "Sensor_optisch_Traverse_zusätzlich":6,
            "Bedientableau_1fach_Korrektur":0,
            "Bedientableau_2fach_Korrektur":4,
            "Weiche_Korrektur":4,
            "RRA_bi_Korrektur":0,
            "RRA_bi_auf_Haupstrecke":10,
            "RRA_uni_Begegnung":4,
            "gemeinsame_Wendung":0,
            "Mit_Drucktaster_Korrektur":0,
            "Meldelampe_Überstrom_Korrektur":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            "klemmkasten_rsm":2,
            }
        flyer_f40_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine":0,   #wird in deckblatt-Klasse berechnet
            "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur":0,
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2, #wird in deckblatt-Klasse berechnet
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":2,    #wird in deckblatt-Klasse berechnet
            #"Anzahl_Schienen":0,
            "Single_Line_Durchfahrt":False,
            "Nachpuffer":False,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensor_induktiv_Spulenhalter":0,
            "Sensor_induktiv_Spulenhalter_Korrektur":0,
            #"Bedientableau_2fach":0,
            "Bedientableau_2fach_Korrektur":0,
            #"Interface_Doffer":0,
            "Interface_Doffer_Korrektur":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_Flyer_bipolar":0,
            "Weiche_nach_Flyer_bipolar_Korrektur":0,
            "Dreifachweiche":0,
            "Wechsel":0,
            "Stopper":0,
            "RA_uni":0,
            #"RA_uni_abhebbar":0,
            "RA_uni_abhebbar_Korrektur":0,
            #"RA_uni_ohne_SPS_Ansteuerung":0,
            "RA_uni_ohne_SPS_Ansteuerung_Korrektur":0,
            #"RRA_BI_abhebbar":0,
            "RRA_BI_abhebbar_Korrektur":0,
            "RRA_bi":0,
            #"RRA_bi_Korrektur":0,
            #"RRA_bi_ohne_SPS_Ansteuerung":0,
            "RRA_bi_ohne_SPS_Ansteuerung_Korrektur":0,
            #"Doppelstreckenantrieb":0,
            "Doppelstreckenantrieb_Korrektur":0,
            "RA_bi_abhebbar_unger_Schiene":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        neuenhauser_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Neuenhauser-Putzmaschine":0,      #wird in deckblatt-Klasse zugewiesen
            #"Neuenhauser-Putzmaschine_Vorpuffer":0,    #wird in deckblatt-Klasse zugewiesen
            #"Neuenhauser-Putzmaschine_Nachpuffer":0,   #wird in deckblatt-Klasse zugewiesen
            #"Anzahl_Vorstaustrecken":0,
            #"Anzahl_Nachstaustrecken":0,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensorik_Zugpositionierung":0,
            #"Sensor_WT18_Spulenprüfung_voll_leer":0,
            #"Bedientableau_2fach":0,
            "Bedientableau_2fach_Korrektur":0,
            #"Interface_Putzmaschine":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_PM_bipolar":0,
            #"RA_uni_abhebbar":0,
            "RA_uni_abhebbar_Korrektur":0,
            #"RA_uni_ohne_SPS_Ansteuerung":0,
            #"RA_uni_abhebbar_unger_Sch":0,
            #"Doppelstreckenantrieb":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        flyer_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Flyer":0, # äquivalent zu 'Anzahl'
            #"Anzahl_Schienen:":0,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensor_induktiv_Spulenalter_Zug_positionierung":0,
            #"Bedientableau_2fach":0,
            #"Interface_Doffer":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_Flyer_bipolar":0,
            "Dreifachweiche":0,
            #"Wechsel":0,
            "Wechsel_Korrektur":0,
            #"RA_bi_ohne_SPS-Ansteuerung":0,
            #"RA_bi_abhebbar":0,
            "RA_bi_abhebbar_Korrektur":0,
            "RA_bi":4,
            #"Doppelstreckenantrieb":0,
            "RA_bi_abhebbar_unger_Schiene":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        verbindungsstrecken_w_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Sensor_optisch_Traverse":0,
            "Bedientableau_1fach":0,
            "Bedientableau_2fach":0,
            "Bedientableau_14fach":0,
            "Weiche":0,
            "Dreifachweiche":0,
            "Kreuzungsweiche":1,
            "Werma_Rundumleuchte_Störung":0,
            "RA_uni":0,
            "RA_uni_ohne_SPS_Ansteuerung":0,
            "RA_bi":0,
            "RA_bi_ohne_SPS-Ansteuerung":0,
            "Doppelstreckenantrieb":0
            }
        puffer_eingabe = {
            # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            # "Anzahl":0,
            # "Puffer":0, #äquivalent zu Anzahl
            # "Anzahl_Pufferstrecken":0, #äquivalent zu Anzahl_Staustrecken
            # "Anzahl_Staustrecken":0,
            # "Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur": 1,
            # "Weiche":0,
            "Weiche_Korrektur": 0,
            "RA_bi_ungerade_Schiene": 2,
            # "Doppelstreckenantrieb":0,
            # "Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur": 0,
            # "Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur": 0,
        }
        turm_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Turm":0, #äquivalent zu Anzahl
            #"Anzahl_Wendlungen":0,  #äquivalent zu Anzahl_Staustrecken
            #"Anzahl_Staustrecken":0,
            #"Sensor_optisch_Traverse":0,
            #"Weiche":0,
            #"RA_bi":0,
            "RA_bi_Korrektur":0,
            #"RA_bi_ohne_SPS":0,
            "RA_bi_ohne_SPS_Korrektur":0,
            #"Bedientableau_2fach":0,
        }
        mg = rek.MG(Anzahl_MG,
                    rsm_direct=rsm_direct_eingabe,
                    rsm_fa=rsm_fa_eingabe,
                    flyer_f40=flyer_f40_eingabe,
                    neuenhauser=neuenhauser_eingabe,
                    flyer=flyer_eingabe,
                    verbindungsstrecken_w=verbindungsstrecken_w_eingabe,
                    puffer=puffer_eingabe,
                    turm=turm_eingabe)
        Anzahl_EAS = {}
        eas = rek.EA(Anzahl_EAS, mg)

        Anzahl_HW = {}

        hw = rek.HW(Anzahl_HW, mg, eas)

        emo = rek.EMO(eas, hw, mg)
        Anzahl_DL = {}
        dl = rek.Dienstleistung(Anzahl_DL, hw)
        Anzahl_Ergebnis = {}
        erg = rek.Ergebnis(Anzahl_Ergebnis, hw, dl, emo)
        return erg.get_sum_of_costs(hw)


Anzahl_MG = {
        "SYSTEM": "FA",
        "RSM":14,
        "Flyer":4,
        "Flyer_Puffer":2,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine":0,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":0,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":0,
        "Neuenhauser-Putzmaschine":0,
        "Neuenhauser-Putzmaschine_Vorpuffer":0,
        "Neuenhauser-Putzmaschine_Nachpuffer":0,
        "Cason-Putzmaschine":0,
        "Cason-Putzmaschine_Vorpuffer":0,
        "Cason-Putzmaschine_Nachpuffer":0,
        "Puffer":1,
        "Anzahl_der_Pufferstrecken_pro_Puffer":5,
        "Begegnungsstrecke_Bypass":2,
        "Turm":0,
        "Turm_Anzahl_Wendlungen":0,
        }


variationen = {}
k = 1
while k < 6:
    Anzahl_MG.update({"Neuenhauser-Putzmaschine_Nachpuffer": k})
    erg = eine_anlage(Anzahl_MG)
    variationen.update({f"Mit {k} Nachpuffern": erg})
    k += 1
print(variationen)
lists = sorted(variationen.items()) # sorted by key, return a list of tuples

x, y = zip(*lists) 

plt.plot(x, y)
plt.show()
{'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}

Cason-Putzmaschine Vorpuffer

In [21]:
import rieter_ekalk as rek
import matplotlib.pyplot as plt

def eine_anlage(Anzahl_MG):

        rsm_direct_eingabe = {
        }
        rsm_fa_eingabe = {
            "Flex_A_Premium":False,        # braucht man das noch?
            "Getriebe_in_der_Mitte":False, # braucht man das noch?
            "RSM_Einfahrt_Ein_Beidseitig":False,  # braucht man das noch?
            "Sensor_optisch_Traverse_zusätzlich":6,
            "Bedientableau_1fach_Korrektur":0,
            "Bedientableau_2fach_Korrektur":4,
            "Weiche_Korrektur":4,
            "RRA_bi_Korrektur":0,
            "RRA_bi_auf_Haupstrecke":10,
            "RRA_uni_Begegnung":4,
            "gemeinsame_Wendung":0,
            "Mit_Drucktaster_Korrektur":0,
            "Meldelampe_Überstrom_Korrektur":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            "klemmkasten_rsm":2,
            }
        flyer_f40_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine":0,   #wird in deckblatt-Klasse berechnet
            "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur":0,
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2, #wird in deckblatt-Klasse berechnet
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":2,    #wird in deckblatt-Klasse berechnet
            #"Anzahl_Schienen":0,
            "Single_Line_Durchfahrt":False,
            "Nachpuffer":False,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensor_induktiv_Spulenhalter":0,
            "Sensor_induktiv_Spulenhalter_Korrektur":0,
            #"Bedientableau_2fach":0,
            "Bedientableau_2fach_Korrektur":0,
            #"Interface_Doffer":0,
            "Interface_Doffer_Korrektur":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_Flyer_bipolar":0,
            "Weiche_nach_Flyer_bipolar_Korrektur":0,
            "Dreifachweiche":0,
            "Wechsel":0,
            "Stopper":0,
            "RA_uni":0,
            #"RA_uni_abhebbar":0,
            "RA_uni_abhebbar_Korrektur":0,
            #"RA_uni_ohne_SPS_Ansteuerung":0,
            "RA_uni_ohne_SPS_Ansteuerung_Korrektur":0,
            #"RRA_BI_abhebbar":0,
            "RRA_BI_abhebbar_Korrektur":0,
            "RRA_bi":0,
            #"RRA_bi_Korrektur":0,
            #"RRA_bi_ohne_SPS_Ansteuerung":0,
            "RRA_bi_ohne_SPS_Ansteuerung_Korrektur":0,
            #"Doppelstreckenantrieb":0,
            "Doppelstreckenantrieb_Korrektur":0,
            "RA_bi_abhebbar_unger_Schiene":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        neuenhauser_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Neuenhauser-Putzmaschine":0,      #wird in deckblatt-Klasse zugewiesen
            #"Neuenhauser-Putzmaschine_Vorpuffer":0,    #wird in deckblatt-Klasse zugewiesen
            #"Neuenhauser-Putzmaschine_Nachpuffer":0,   #wird in deckblatt-Klasse zugewiesen
            #"Anzahl_Vorstaustrecken":0,
            #"Anzahl_Nachstaustrecken":0,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensorik_Zugpositionierung":0,
            #"Sensor_WT18_Spulenprüfung_voll_leer":0,
            #"Bedientableau_2fach":0,
            "Bedientableau_2fach_Korrektur":0,
            #"Interface_Putzmaschine":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_PM_bipolar":0,
            #"RA_uni_abhebbar":0,
            "RA_uni_abhebbar_Korrektur":0,
            #"RA_uni_ohne_SPS_Ansteuerung":0,
            #"RA_uni_abhebbar_unger_Sch":0,
            #"Doppelstreckenantrieb":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        flyer_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Flyer":0, # äquivalent zu 'Anzahl'
            #"Anzahl_Schienen:":0,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensor_induktiv_Spulenalter_Zug_positionierung":0,
            #"Bedientableau_2fach":0,
            #"Interface_Doffer":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_Flyer_bipolar":0,
            "Dreifachweiche":0,
            #"Wechsel":0,
            "Wechsel_Korrektur":0,
            #"RA_bi_ohne_SPS-Ansteuerung":0,
            #"RA_bi_abhebbar":0,
            "RA_bi_abhebbar_Korrektur":0,
            "RA_bi":4,
            #"Doppelstreckenantrieb":0,
            "RA_bi_abhebbar_unger_Schiene":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        verbindungsstrecken_w_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Sensor_optisch_Traverse":0,
            "Bedientableau_1fach":0,
            "Bedientableau_2fach":0,
            "Bedientableau_14fach":0,
            "Weiche":0,
            "Dreifachweiche":0,
            "Kreuzungsweiche":1,
            "Werma_Rundumleuchte_Störung":0,
            "RA_uni":0,
            "RA_uni_ohne_SPS_Ansteuerung":0,
            "RA_bi":0,
            "RA_bi_ohne_SPS-Ansteuerung":0,
            "Doppelstreckenantrieb":0
            }
        puffer_eingabe = {
            # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            # "Anzahl":0,
            # "Puffer":0, #äquivalent zu Anzahl
            # "Anzahl_Pufferstrecken":0, #äquivalent zu Anzahl_Staustrecken
            # "Anzahl_Staustrecken":0,
            # "Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur": 1,
            # "Weiche":0,
            "Weiche_Korrektur": 0,
            "RA_bi_ungerade_Schiene": 2,
            # "Doppelstreckenantrieb":0,
            # "Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur": 0,
            # "Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur": 0,
        }
        turm_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Turm":0, #äquivalent zu Anzahl
            #"Anzahl_Wendlungen":0,  #äquivalent zu Anzahl_Staustrecken
            #"Anzahl_Staustrecken":0,
            #"Sensor_optisch_Traverse":0,
            #"Weiche":0,
            #"RA_bi":0,
            "RA_bi_Korrektur":0,
            #"RA_bi_ohne_SPS":0,
            "RA_bi_ohne_SPS_Korrektur":0,
            #"Bedientableau_2fach":0,
        }
        mg = rek.MG(Anzahl_MG,
                    rsm_direct=rsm_direct_eingabe,
                    rsm_fa=rsm_fa_eingabe,
                    flyer_f40=flyer_f40_eingabe,
                    neuenhauser=neuenhauser_eingabe,
                    flyer=flyer_eingabe,
                    verbindungsstrecken_w=verbindungsstrecken_w_eingabe,
                    puffer=puffer_eingabe,
                    turm=turm_eingabe)
        Anzahl_EAS = {}
        eas = rek.EA(Anzahl_EAS, mg)

        Anzahl_HW = {}

        hw = rek.HW(Anzahl_HW, mg, eas)

        emo = rek.EMO(eas, hw, mg)
        Anzahl_DL = {}
        dl = rek.Dienstleistung(Anzahl_DL, hw)
        Anzahl_Ergebnis = {}
        erg = rek.Ergebnis(Anzahl_Ergebnis, hw, dl, emo)
        return erg.get_sum_of_costs(hw)


Anzahl_MG = {
        "SYSTEM": "FA",
        "RSM":14,
        "Flyer":4,
        "Flyer_Puffer":2,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine":0,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":0,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":0,
        "Neuenhauser-Putzmaschine":0,
        "Neuenhauser-Putzmaschine_Vorpuffer":0,
        "Neuenhauser-Putzmaschine_Nachpuffer":0,
        "Cason-Putzmaschine":0,
        "Cason-Putzmaschine_Vorpuffer":0,
        "Cason-Putzmaschine_Nachpuffer":0,
        "Puffer":1,
        "Anzahl_der_Pufferstrecken_pro_Puffer":5,
        "Begegnungsstrecke_Bypass":2,
        "Turm":0,
        "Turm_Anzahl_Wendlungen":0,
        }


variationen = {}
k = 1
while k < 6:
    Anzahl_MG.update({"Cason-Putzmaschine_Vorpuffer": k})
    erg = eine_anlage(Anzahl_MG)
    variationen.update({f"Mit {k} Vorpuffern": erg})
    k += 1
print(variationen)
lists = sorted(variationen.items()) # sorted by key, return a list of tuples

x, y = zip(*lists) 

plt.plot(x, y)
plt.show()
{'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}

Cason-Putzmaschine Nachpuffer

In [22]:
import rieter_ekalk as rek
import matplotlib.pyplot as plt

def eine_anlage(Anzahl_MG):

        rsm_direct_eingabe = {
        }
        rsm_fa_eingabe = {
            "Flex_A_Premium":False,        # braucht man das noch?
            "Getriebe_in_der_Mitte":False, # braucht man das noch?
            "RSM_Einfahrt_Ein_Beidseitig":False,  # braucht man das noch?
            "Sensor_optisch_Traverse_zusätzlich":6,
            "Bedientableau_1fach_Korrektur":0,
            "Bedientableau_2fach_Korrektur":4,
            "Weiche_Korrektur":4,
            "RRA_bi_Korrektur":0,
            "RRA_bi_auf_Haupstrecke":10,
            "RRA_uni_Begegnung":4,
            "gemeinsame_Wendung":0,
            "Mit_Drucktaster_Korrektur":0,
            "Meldelampe_Überstrom_Korrektur":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            "klemmkasten_rsm":2,
            }
        flyer_f40_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine":0,   #wird in deckblatt-Klasse berechnet
            "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur":0,
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2, #wird in deckblatt-Klasse berechnet
            #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":2,    #wird in deckblatt-Klasse berechnet
            #"Anzahl_Schienen":0,
            "Single_Line_Durchfahrt":False,
            "Nachpuffer":False,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensor_induktiv_Spulenhalter":0,
            "Sensor_induktiv_Spulenhalter_Korrektur":0,
            #"Bedientableau_2fach":0,
            "Bedientableau_2fach_Korrektur":0,
            #"Interface_Doffer":0,
            "Interface_Doffer_Korrektur":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_Flyer_bipolar":0,
            "Weiche_nach_Flyer_bipolar_Korrektur":0,
            "Dreifachweiche":0,
            "Wechsel":0,
            "Stopper":0,
            "RA_uni":0,
            #"RA_uni_abhebbar":0,
            "RA_uni_abhebbar_Korrektur":0,
            #"RA_uni_ohne_SPS_Ansteuerung":0,
            "RA_uni_ohne_SPS_Ansteuerung_Korrektur":0,
            #"RRA_BI_abhebbar":0,
            "RRA_BI_abhebbar_Korrektur":0,
            "RRA_bi":0,
            #"RRA_bi_Korrektur":0,
            #"RRA_bi_ohne_SPS_Ansteuerung":0,
            "RRA_bi_ohne_SPS_Ansteuerung_Korrektur":0,
            #"Doppelstreckenantrieb":0,
            "Doppelstreckenantrieb_Korrektur":0,
            "RA_bi_abhebbar_unger_Schiene":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        neuenhauser_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Neuenhauser-Putzmaschine":0,      #wird in deckblatt-Klasse zugewiesen
            #"Neuenhauser-Putzmaschine_Vorpuffer":0,    #wird in deckblatt-Klasse zugewiesen
            #"Neuenhauser-Putzmaschine_Nachpuffer":0,   #wird in deckblatt-Klasse zugewiesen
            #"Anzahl_Vorstaustrecken":0,
            #"Anzahl_Nachstaustrecken":0,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensorik_Zugpositionierung":0,
            #"Sensor_WT18_Spulenprüfung_voll_leer":0,
            #"Bedientableau_2fach":0,
            "Bedientableau_2fach_Korrektur":0,
            #"Interface_Putzmaschine":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_PM_bipolar":0,
            #"RA_uni_abhebbar":0,
            "RA_uni_abhebbar_Korrektur":0,
            #"RA_uni_ohne_SPS_Ansteuerung":0,
            #"RA_uni_abhebbar_unger_Sch":0,
            #"Doppelstreckenantrieb":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        flyer_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Flyer":0, # äquivalent zu 'Anzahl'
            #"Anzahl_Schienen:":0,
            #"Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur":0,
            #"Sensor_induktiv_Spulenalter_Zug_positionierung":0,
            #"Bedientableau_2fach":0,
            #"Interface_Doffer":0,
            #"Weiche":0,
            "Weiche_Korrektur":0,
            #"Weiche_nach_Flyer_bipolar":0,
            "Dreifachweiche":0,
            #"Wechsel":0,
            "Wechsel_Korrektur":0,
            #"RA_bi_ohne_SPS-Ansteuerung":0,
            #"RA_bi_abhebbar":0,
            "RA_bi_abhebbar_Korrektur":0,
            "RA_bi":4,
            #"Doppelstreckenantrieb":0,
            "RA_bi_abhebbar_unger_Schiene":0,
            #"Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur":0,
            #"Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur":0,
            #"Werma_Rundumleuchte_Störung":0,
            "Werma_Rundumleuchte_Störung_Korrektur":0,
            }
        verbindungsstrecken_w_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Sensor_optisch_Traverse":0,
            "Bedientableau_1fach":0,
            "Bedientableau_2fach":0,
            "Bedientableau_14fach":0,
            "Weiche":0,
            "Dreifachweiche":0,
            "Kreuzungsweiche":1,
            "Werma_Rundumleuchte_Störung":0,
            "RA_uni":0,
            "RA_uni_ohne_SPS_Ansteuerung":0,
            "RA_bi":0,
            "RA_bi_ohne_SPS-Ansteuerung":0,
            "Doppelstreckenantrieb":0
            }
        puffer_eingabe = {
            # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            # "Anzahl":0,
            # "Puffer":0, #äquivalent zu Anzahl
            # "Anzahl_Pufferstrecken":0, #äquivalent zu Anzahl_Staustrecken
            # "Anzahl_Staustrecken":0,
            # "Sensor_optisch_Traverse":0,
            "Sensor_optisch_Traverse_Korrektur": 1,
            # "Weiche":0,
            "Weiche_Korrektur": 0,
            "RA_bi_ungerade_Schiene": 2,
            # "Doppelstreckenantrieb":0,
            # "Meldelampe_Überstrom":0,
            "Meldelampe_Überstrom_Korrektur": 0,
            # "Hauptschalter_Ein_Meldung":0,
            "Hauptschalter_Ein-Meldung_Korrektur": 0,
        }
        turm_eingabe = {
            #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
            #"Anzahl":0,
            #"Turm":0, #äquivalent zu Anzahl
            #"Anzahl_Wendlungen":0,  #äquivalent zu Anzahl_Staustrecken
            #"Anzahl_Staustrecken":0,
            #"Sensor_optisch_Traverse":0,
            #"Weiche":0,
            #"RA_bi":0,
            "RA_bi_Korrektur":0,
            #"RA_bi_ohne_SPS":0,
            "RA_bi_ohne_SPS_Korrektur":0,
            #"Bedientableau_2fach":0,
        }
        mg = rek.MG(Anzahl_MG,
                    rsm_direct=rsm_direct_eingabe,
                    rsm_fa=rsm_fa_eingabe,
                    flyer_f40=flyer_f40_eingabe,
                    neuenhauser=neuenhauser_eingabe,
                    flyer=flyer_eingabe,
                    verbindungsstrecken_w=verbindungsstrecken_w_eingabe,
                    puffer=puffer_eingabe,
                    turm=turm_eingabe)
        Anzahl_EAS = {}
        eas = rek.EA(Anzahl_EAS, mg)

        Anzahl_HW = {}

        hw = rek.HW(Anzahl_HW, mg, eas)

        emo = rek.EMO(eas, hw, mg)
        Anzahl_DL = {}
        dl = rek.Dienstleistung(Anzahl_DL, hw)
        Anzahl_Ergebnis = {}
        erg = rek.Ergebnis(Anzahl_Ergebnis, hw, dl, emo)
        return erg.get_sum_of_costs(hw)


Anzahl_MG = {
        "SYSTEM": "FA",
        "RSM":14,
        "Flyer":4,
        "Flyer_Puffer":2,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine":0,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":0,
        "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":0,
        "Neuenhauser-Putzmaschine":0,
        "Neuenhauser-Putzmaschine_Vorpuffer":0,
        "Neuenhauser-Putzmaschine_Nachpuffer":0,
        "Cason-Putzmaschine":0,
        "Cason-Putzmaschine_Vorpuffer":0,
        "Cason-Putzmaschine_Nachpuffer":0,
        "Puffer":1,
        "Anzahl_der_Pufferstrecken_pro_Puffer":5,
        "Begegnungsstrecke_Bypass":2,
        "Turm":0,
        "Turm_Anzahl_Wendlungen":0,
        }


variationen = {}
k = 1
while k < 6:
    Anzahl_MG.update({"Cason-Putzmaschine_Nachpuffer": k})
    erg = eine_anlage(Anzahl_MG)
    variationen.update({f"Mit {k} Nachpuffern": erg})
    k += 1
print(variationen)
lists = sorted(variationen.items()) # sorted by key, return a list of tuples

x, y = zip(*lists) 

plt.plot(x, y)
plt.show()
{'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}