arnikdehnavi's picture
Update app.py
5637c56
raw
history blame
No virus
2.11 kB
import joblib
import streamlit as st
import matplotlib.pyplot as plt
import pandas as pd
import plotly.express as px
import numpy as np
from geneticalgorithm import geneticalgorithm as ga
st.title('Indoor temperature')
model=joblib.load('temperature.json')
st.sidebar.title('Inputs:')
st.sidebar.header('Dimention')
i1=st.sidebar.slider('Outdoor wind speed',value=10,min_value=1,max_value=20)
i2=st.sidebar.slider('Outdoor wind direction',value=24)
i3=st.sidebar.slider('Radiation')
i4=st.sidebar.slider( 'Humidity',value=10)
i5=st.sidebar.slider('Outdoor Drybulb temperature',value=10)
i6=st.sidebar.radio('Window opening1',[0,1])
i7=st.sidebar.radio('Window opening2',[0,1])
i8=st.sidebar.slider('luminance',value=10)
i9=st.sidebar.slider('T',value=10)
st.sidebar.markdown("gas=1,propain=2,wood=3")
i10=st.sidebar.selectbox("f_t1",[1,2,3])
if i10=="gas":
i10=1
elif i10=="propain":
i10=2
elif i10=="wood":
i10=3
elif i10=="electricity":
i10=5
else:
i10=4
st.header(i10)
p=model.predict([[i1,i2,i3,i4,i5,i6,i7,i8,i9]])
output=[p[0][0],p[0][1],p[0][2]]
st.write(output)
df=pd.DataFrame(output,columns=['Temperature'],index=['15th','30th','45th'])
plot=pd.DataFrame({'Time':[15,30,45],'T':output})
#graph
fig=px.line(plot,x='Time',y='T')
st.plotly_chart(fig)
st.write(df)
#optimization
def f(X):
t= abs(22.5 - model.predict([[i1,i2,i3,i4,i5,X[0],X[1],i8,i9]])[0][0])
return t
button1=st.button('TAP to Suggestion!!')
if button1:
varbound=np.array([[0,1]]*2)
with st.spinner('Wait for optimizing ...'):
optimization=ga(function=f,dimension=2,variable_type='int',variable_boundaries=varbound)
optimization.run()
st.write ('for next 15th minutes to reach thermal comfort Opening situation of the first window is '+str(optimization.best_variable[0])+' and Opening situation of the second window is '+str(optimization.best_variable[1]))
r="optimized indoor temperature {}".format(round(model.predict([[i1,i2,i3,i4,i5,optimization.best_variable[0],optimization.best_variable[1],i8,i9]])[0][0],1))
st.success(r)