298 KiB
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}