import streamlit as st import matplotlib.pyplot as plt import numpy as np import pandas as pd import math import numpy_financial as np_fin st.set_page_config( page_title="Ex-stream-ly Cool App", page_icon="🧊", layout="wide", initial_sidebar_state="expanded" ) st.title("ΠšΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ Toyota πŸ“¦") st.subheader('Toyota Material Handling') st.write(""" ΠŸΠΎΡ‚ΠΎΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² связываСт ΠΌΠΈΡ€ ΠΈ ΠΎΠ±ΠΎΠ³Π°Ρ‰Π°Π΅Ρ‚ Тизнь людСй ΠΈ общСства. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΠ΅ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎ-Ρ€Π°Π·Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠ°ΠΊ Π²ΠΈΠ»ΠΎΡ‡Π½Ρ‹Π΅ ΠΏΠΎΠ³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ, TMH ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ людСй, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅ΠΌ ΠΊΡ€Π°Π΅ логистики ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠ»Ρ‹Π±Π°Ρ‚ΡŒΡΡ людям Π²ΠΎ всСм ΠΌΠΈΡ€Π΅. Π‘ 2000 Π³ΠΎΠ΄Π° ΠΌΡ‹ являСмся ΠΌΠΈΡ€ΠΎΠ²Ρ‹ΠΌ поставщиком ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎ-Ρ€Π°Π·Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎΠ³ΠΎ оборудования β„–1. Π ΠΈΡ‡Ρ‚Ρ€Π°ΠΊΠΈ-это Π²ΠΈΠ»ΠΎΡ‡Π½Ρ‹Π΅ ΠΏΠΎΠ³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ высоту ΠΏΠΎΠ΄ΡŠΡ‘ΠΌΠ° ΠΈ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΌΠ°Π½Π΅Π²Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² ΡƒΠ·ΠΊΠΈΡ… ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π°Ρ… благодаря конструкции. Π ΠΈΡ‡Ρ‚Ρ€Π°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‡Ρ‚Ρƒ, Π΄ΠΎΡ‚ΡΠ½ΡƒΠ²ΡˆΠΈΡΡŒ Π΄ΠΎ Π³Ρ€ΡƒΠ·Π°, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π² исходноС ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ позволяСт Ρ€ΠΈΡ‡Ρ‚Ρ€Π°ΠΊΡƒ Π΄ΠΎΡΡ‚ΠΈΠ³Π°Ρ‚ΡŒ максимальной манСврСнности ΠΈ компактности ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π° складС ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Ρ… пространствах. Toyota-Ρ€ΠΈΡ‡Ρ‚Ρ€Π°ΠΊ Π½Π° протяТСнии ΠΌΠ½ΠΎΠ³ΠΈΡ… Π»Π΅Ρ‚ Π»ΠΈΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ Π² своСм классС благодаря ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ функциям. Π›ΠΈΠ½Π΅ΠΉΠΊΠ° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ собрала Π² сСбС ΠΌΠΎΠ΄Π΅Π»ΠΈ для всСх основных складских ΠΈ производствСнных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Автопилот – это Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π½Π΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅, Π° работоспособноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ всСгда обСспСчиваСм ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠšΠ»ΠΈΠ΅Π½Ρ‚Π° Π½Π° всСх этапах: ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСхничСского задания, Π΄ΠΎ внСдрСния ΠΈ сопровоТдСния. Π”Π°Π½Π½Ρ‹ΠΉ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π’Π°ΠΌ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ NPV ΠΈ IRR для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ для Π’Π°ΡˆΠ΅Π³ΠΎ склада, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΉ! """) genre = st.radio("Какой ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²", ("ΠŸΠΎΠΊΡƒΠΏΠΊΠ° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΈΡ‡Ρ‚Ρ€Π°ΠΊΠ°", "АрСнда Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΈΡ‡Ρ‚Ρ€Π°ΠΊΠ°", "ΠŸΠΎΠΊΡƒΠΏΠΊΠ° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΈΡ‡Ρ‚Ρ€Π°ΠΊΠ°")) if genre == 'ΠŸΠΎΠΊΡƒΠΏΠΊΠ° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΈΡ‡Ρ‚Ρ€Π°ΠΊΠ°': col1, col2 = st.columns(2) with col1: Buying_an_autopilot = st.number_input('ΠŸΠΎΠΊΡƒΠΏΠΊΠ° Π°Π²Ρ‚ΠΎΠΏΠΈΠ»ΠΎΡ‚Π°, Ρ€ΡƒΠ±.', value=2000000) Purchase_of_peripheral_equipment = st.number_input('ΠŸΠΎΠΊΡƒΠΏΠΊΠ° ΠΏΠ΅Ρ€Π΅Ρ„ΠΈΡ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ оборудования, Ρ€ΡƒΠ±.', value=40000) Purchase_by = st.number_input('ΠŸΠΎΠΊΡƒΠΏΠΊΠ° ПО, Ρ€ΡƒΠ±.', value=10000) Introduction_of_autopilot = st.number_input('Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ Π°Π²Ρ‚ΠΎΠΏΠΈΠ»ΠΎΡ‚Π°, Ρ€ΡƒΠ±.', value=20000) Maintenance = st.number_input('ΠžΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΠ΅ (мСсяц), Ρ€ΡƒΠ±.', value=100000) The_cost_of_repairing_one_car = st.number_input('Π‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Ρ€Π΅ΠΌΠΎΠ½Ρ‚Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Ρ€ΡƒΠ±.', value=10000) Monthly_salary_rate = 0 #st.number_input('Заработная ставка, Ρ€ΡƒΠ±. Π² мСсяц', value=40000) Number_of_months = st.number_input('ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ мСсяцСв', value=12) Equipment_breakdown_rate = st.number_input('ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ»ΠΎΠΌΠΊΠΈ оборудования', value=0.1) with col2: Price_for_processing_ont_pallet = st.number_input('Π¦Π΅Π½Π° Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ 1 ΠΏΠ°Π»Π»Π΅Ρ‚Π°, Ρ€ΡƒΠ±.', value=300) Cargo_flow = st.number_input('Π“Ρ€ΡƒΠ·ΠΎΠΏΠΎΡ‚ΠΎΠΊ, ΡˆΡ‚/мСсяц', value=10000) Efficiency = st.number_input('ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΡˆΡ‚ Π² час', value=5) Number_of_working_hours = st.number_input('ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… часов', value=8) Shift_of_one_employee = 0 #st.number_input('Π‘ΠΌΠ΅Π½Π° 1 Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ°, Ρ‡.', value=8) Number_of_working_days_month = st.number_input('ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π΄Π½Π΅ΠΉ Π² мСсяц, Π΄Π½.', value=20) Social_benefits_for_one_employee = 0 #st.number_input('Π‘ΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π²Ρ‹ΠΏΠ»Π°Ρ‚Ρ‹ 1 сотруднику, Ρ€ΡƒΠ±.', value=10000) Insurance_rate = st.number_input('Π‘Ρ‚Π°Π²ΠΊΠ° страхования', value=0.005) Income_tax_rate = st.number_input('Π‘Ρ‚Π°Π²ΠΊΠ° Π½Π°Π»ΠΎΠ³Π° Π½Π° ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ', value=0.2) discounting = st.number_input('Π‘Ρ‚Π°Π²ΠΊΠ° дисконтирования Π² мСсяц', value=0.028) elif genre == 'АрСнда Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΈΡ‡Ρ‚Ρ€Π°ΠΊΠ°': col1, col2 = st.columns(2) with col1: Rent_an_autopilot = st.number_input('АрСнда Π°Π²Ρ‚ΠΎΠΏΠΈΠ»ΠΎΡ‚Π°, Ρ€ΡƒΠ±.', value = 20000) Rent_of_peripheral_equipment = st.number_input('АрСнда ΠΏΠ΅Ρ€Π΅Ρ„ΠΈΡ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ оборудования, Ρ€ΡƒΠ±.', value = 4000) Purchase_by = st.number_input('ΠŸΠΎΠΊΡƒΠΏΠΊΠ° ПО, Ρ€ΡƒΠ±. ', value = 10000) Introduction_of_autopilot = st.number_input('Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ Π°Π²Ρ‚ΠΎΠΏΠΈΠ»ΠΎΡ‚Π°, Ρ€ΡƒΠ±.', value = 20000) Maintenance = st.number_input('ΠžΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΠ΅ (мСсяц), Ρ€ΡƒΠ±.', value = 100000) The_cost_of_repairing_one_car = st.number_input('Π‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Ρ€Π΅ΠΌΠΎΠ½Ρ‚Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Ρ€ΡƒΠ±.', value = 10000) Monthly_salary_rate = 0 #st.number_input('Заработная ставка Π² мСсяц, Ρ€ΡƒΠ±.', value = 40000) Number_of_months = st.number_input('Π‘Ρ€ΠΎΠΊ Π°Ρ€Π΅Π½Π΄Ρ‹, мСсяц', value = 12) with col2: Equipment_breakdown_rate = st.number_input('ΠšΠΎΡΡ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ»ΠΎΠΌΠΊΠΈ оборудования', value = 0.1) Price_for_processing_ont_pallet = st.number_input('Π¦Π΅Π½Π° Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ 1 ΠΏΠ°Π»Π»Π΅Ρ‚Π°, Ρ€ΡƒΠ±.', value = 300) Cargo_flow = st.number_input('Π“Ρ€ΡƒΠ·ΠΎΠΏΠΎΡ‚ΠΎΠΊ, ΡˆΡ‚ Π² мСсяц ', value = 10000) Efficiency = st.number_input('ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ,ΡˆΡ‚ Π² час', value = 5) Number_of_working_hours = st.number_input('ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… часов', value = 8) Shift_of_one_employee = 0 #st.number_input('Π‘ΠΌΠ΅Π½Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ°, часы', value = 8) Number_of_working_days_month = st.number_input('ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π΄Π½Π΅ΠΉ Π² мСсяц, Π΄Π½.', value = 20) Social_benefits_for_one_employee = 0 #st.number_input('Π‘ΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π²Ρ‹ΠΏΠ»Π°Ρ‚Ρ‹ ΠΎΠ΄Π½ΠΎΠΌΡƒ сотруднику, Ρ€ΡƒΠ±.', value = 10000) Income_tax_rate = st.number_input('Π‘Ρ‚Π°Π²ΠΊΠ° Π½Π°Π»ΠΎΠ³Π° Π½Π° ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ', value = 0.2) Number_of_autopilots_serviced_by_one_employee = 0 #st.number_input('ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π°Π²Ρ‚ΠΎΠΏΠΈΠ»ΠΎΡ‚ΠΎΠ², обслуТиваСмых ΠΎΠ΄Π½ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠΎΠΌ, ΡˆΡ‚.', value = 10) discounting = st.number_input('Π‘Ρ‚Π°Π²ΠΊΠ° дисконтирования Π² мСсяц', value = 0.028) else: col1, col2 = st.columns(2) with col1: Buying_a_richtruck = st.number_input('ΠŸΠΎΠΊΡƒΠΏΠΊΠ° Ρ€ΠΈΡ‡Ρ‚Ρ€Π°ΠΊΠ°, Ρ€ΡƒΠ±.', value=2000000) Maintenance = st.number_input('ΠžΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΠ΅ (мСсяц), Ρ€ΡƒΠ±.', value=10000) The_cost_of_repairing_one_car = st.number_input('Π‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Ρ€Π΅ΠΌΠΎΠ½Ρ‚Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Ρ€ΡƒΠ±.', value=1000) Monthly_salary_rate = st.number_input('Заработная ставка, Ρ€ΡƒΠ±. Π² мСсяц', value=40000) Number_of_months = st.number_input('ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ мСсяцСв', value=12) Equipment_breakdown_rate = st.number_input('ΠšΠΎΡΡ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ»ΠΎΠΌΠΊΠΈ оборудования', value=0.3) Price_for_processing_ont_pallet = st.number_input('Π¦Π΅Π½Π° Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ 1 ΠΏΠ°Π»Π»Π΅Ρ‚Π°, Ρ€ΡƒΠ±.', value=300) Cargo_flow = st.number_input('Π“Ρ€ΡƒΠ·ΠΎΠΏΠΎΡ‚ΠΎΠΊ, ΡˆΡ‚/мСсяц всСго', value=10000) Efficiency = st.number_input('ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΡˆΡ‚ Π² час', value=3) with col2: Number_of_working_hours = st.number_input('ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… часов', value=8) Shift_of_one_employee = st.number_input('Π‘ΠΌΠ΅Π½Π° 1 Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ°, Ρ‡.', value=8) Number_of_working_days_month = st.number_input('ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π΄Π½Π΅ΠΉ Π² мСсяц, Π΄Π½.', value=20) Social_benefits_for_one_employee = st.number_input('Π‘ΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π²Ρ‹ΠΏΠ»Π°Ρ‚Ρ‹ 1 сотруднику, Ρ€ΡƒΠ±.', value=10000) Insurance_rate = st.number_input('Π‘Ρ‚Π°Π²ΠΊΠ° страхования', value=0.005) The_cost_of_demaged_goods = st.number_input('Π‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°', value=1000) Product_damage_rate= st.number_input('ΠšΠΎΡΡ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ поврСТдСния Ρ‚ΠΎΠ²Π°Ρ€Π°', value=0.005) discounting = st.number_input('Π‘Ρ‚Π°Π²ΠΊΠ° дисконтирования Π² мСсяц', value=0.028) Rate_CPI = 1.05 Rate_employee_absences = 1.1 def get_number_pallets_and_machines_employees(): Number_pallets = Efficiency * Number_of_working_hours * Number_of_working_days_month Number_machines = math.ceil(Cargo_flow / Number_pallets) if genre == 'ΠŸΠΎΠΊΡƒΠΏΠΊΠ° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΈΡ‡Ρ‚Ρ€Π°ΠΊΠ°': Number_employees = 0 elif genre == 'АрСнда Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΈΡ‡Ρ‚Ρ€Π°ΠΊΠ°': Number_employees = 0 else: Number_employees = math.ceil(Rate_employee_absences * (Number_machines * Number_of_working_hours / Shift_of_one_employee)) return Number_pallets, Number_machines, Number_employees def get_revenue(idx): indexation = math.floor((idx - 1) / 12) Price = Price_for_processing_ont_pallet * math.pow(Rate_CPI, indexation) revenue = Number_machines * Number_pallets * Price return revenue def get_costs(idx): indexation = math.floor(idx / 12) start_year = ((idx - 1) % 12 == 0) cost = 0 wage_fund_with_indexation = (Social_benefits_for_one_employee + Monthly_salary_rate) * math.pow(Rate_CPI, indexation) if genre == 'ΠŸΠΎΠΊΡƒΠΏΠΊΠ° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΈΡ‡Ρ‚Ρ€Π°ΠΊΠ°': Expected_repair_costs_per_month = Number_machines * Equipment_breakdown_rate * The_cost_of_repairing_one_car Wage_Fund = Number_employees * wage_fund_with_indexation if start_year: The_cost_of_insurance = Number_machines * Insurance_rate * (Buying_an_autopilot + Purchase_of_peripheral_equipment) cost += The_cost_of_insurance + Purchase_by cost += Number_machines * Maintenance + Expected_repair_costs_per_month + Wage_Fund elif genre == 'АрСнда Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΈΡ‡Ρ‚Ρ€Π°ΠΊΠ°': Expected_repair_costs_per_month = Number_machines * Equipment_breakdown_rate * The_cost_of_repairing_one_car Wage_Fund = Number_employees * wage_fund_with_indexation Autopilot_rental = Number_machines * Rent_an_autopilot if start_year: cost += Purchase_by cost += Autopilot_rental + Rent_of_peripheral_equipment + Purchase_by + Number_machines * Maintenance + Wage_Fund + Expected_repair_costs_per_month else: Expected_repair_costs_per_month = Number_machines * Equipment_breakdown_rate * The_cost_of_repairing_one_car Wage_Fund = Number_employees * wage_fund_with_indexation Expected_costs_for_the_purchase_of_damaged_goods = Efficiency * The_cost_of_demaged_goods * Product_damage_rate if start_year: The_cost_of_insurance = Number_machines * Insurance_rate * Buying_a_richtruck cost += The_cost_of_insurance cost += Number_machines * Maintenance + Expected_repair_costs_per_month + Wage_Fund + Expected_costs_for_the_purchase_of_damaged_goods return cost def get_profit(amortization, idx): profit = get_revenue(idx) - get_costs(idx) - amortization if profit > 0: return profit else: return profit * 0.8 def get_PV(profit, discounting): return profit * discounting def get_array_discounting(): array_discounting = [1] for idx in range(Number_of_months): array_discounting.append(array_discounting[-1] / (1 + discounting)) return array_discounting def get_amortization(value): array_amortization = [0] value = value / 60 for idx in range(Number_of_months): if idx >= 61: array_amortization.append(0) else: array_amortization.append(value) return array_amortization def get_array_CF_PV(): if genre == 'ΠŸΠΎΠΊΡƒΠΏΠΊΠ° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΈΡ‡Ρ‚Ρ€Π°ΠΊΠ°': I_0 = (Buying_an_autopilot + Introduction_of_autopilot) * Number_machines + Purchase_of_peripheral_equipment amortizat = (Buying_an_autopilot + Introduction_of_autopilot) * Number_machines elif genre == 'АрСнда Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΈΡ‡Ρ‚Ρ€Π°ΠΊΠ°': I_0 = Rent_of_peripheral_equipment amortizat = 0 else: I_0 = Buying_a_richtruck * Number_machines amortizat = Buying_a_richtruck * Number_machines array_discounting = get_array_discounting() array_amortization = get_amortization(amortizat) array_PV = [-I_0] array_CF = [-I_0] for idx in range(1, Number_of_months + 1, 1): profit = get_profit(array_amortization[idx], idx) array_CF.append(round(profit)) cur_PV = get_PV(profit, array_discounting[idx]) array_PV.append(round(cur_PV)) sale_price_mashine = 0 if genre == 'ΠŸΠΎΠΊΡƒΠΏΠΊΠ° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΈΡ‡Ρ‚Ρ€Π°ΠΊΠ°': sale_price_mashine = 0.7*(I_0 - np.sum(array_amortization)) elif genre == 'ΠŸΠΎΠΊΡƒΠΏΠΊΠ° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΈΡ‡Ρ‚Ρ€Π°ΠΊΠ°': sale_price_mashine = 0.7*(I_0 - np.sum(array_amortization)) array_PV.append(round(sale_price_mashine * array_discounting[-1] * 0.8)) array_CF.append(round(sale_price_mashine * 0.8)) return array_CF, array_PV, sale_price_mashine def get_array_NPV(): array_NPV = [array_PV[0]] for idx in range(1, len(array_PV), 1): array_NPV.append(array_NPV[-1] + array_PV[idx]) return array_NPV def get_id_first_positive_NPV(array_NPV): for idx, npv in enumerate(array_NPV): if npv > 0: return idx return len(array_NPV) if st.button('РасчСт эффСктивности'): Number_pallets, Number_machines, Number_employees = get_number_pallets_and_machines_employees() array_CF, array_PV, sale_price_mashine = get_array_CF_PV() array_NPV = get_array_NPV() IRR = np_fin.irr(array_CF) st.write(f'НСобходимоС ΠΊΠΎΠ»-Π²ΠΎ Ρ€ΠΈΡ‡Ρ‚Ρ€Π°ΠΊΠΎΠ² {Number_machines}') if genre == "ΠŸΠΎΠΊΡƒΠΏΠΊΠ° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΈΡ‡Ρ‚Ρ€Π°ΠΊΠ°": st.write(f'НСобходимоС ΠΊΠΎΠ»-Π²ΠΎ сотрудников {Number_employees}') if genre == 'ΠŸΠΎΠΊΡƒΠΏΠΊΠ° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΈΡ‡Ρ‚Ρ€Π°ΠΊΠ°': st.write(f'Π‘ ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ изнашивания ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄Π°Ρ‚ΡŒ Π·Π° {round(sale_price_mashine)} Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°') elif genre == 'ΠŸΠΎΠΊΡƒΠΏΠΊΠ° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΈΡ‡Ρ‚Ρ€Π°ΠΊΠ°': st.write(f'Π‘ ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ изнашивания ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄Π°Ρ‚ΡŒ Π·Π° {round(sale_price_mashine)} Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°') st.write(f'NPV Π·Π° {Number_of_months} мСсяцСв: {array_NPV[-1]}') st.write(f'IRR Π½Π° {Number_of_months} мСсяцСв: {round(100 * IRR, 2)}%') if array_NPV[-1] < 0: st.write(f'{Number_of_months} мСсяцСв Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ для окупаСмости ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°') else: id_first_positive_NPV = get_id_first_positive_NPV(array_NPV) st.write(f'ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ окупаСтся Π½Π° {id_first_positive_NPV} мСсяц') chart_data = pd.DataFrame(columns=['PV', 'NPV']) chart_data['PV'] = array_PV chart_data['NPV'] = array_NPV st.bar_chart(chart_data)