Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -296,118 +296,12 @@ elif page == "PS3":
|
|
296 |
elif page == "PS2":
|
297 |
st.header("CLICK ON RUN SCRIPT TO START A TRAFFIC SIMULATION")
|
298 |
script = st.button("RUN SCRIPT")
|
299 |
-
st.
|
300 |
-
|
301 |
-
st.session_state.con += 1
|
302 |
-
import gymnasium as gym
|
303 |
-
import sumo_rl
|
304 |
-
import os
|
305 |
-
from stable_baselines3 import DQN
|
306 |
-
from stable_baselines3.common.vec_env import DummyVecEnv
|
307 |
-
from stable_baselines3.common.evaluation import evaluate_policy
|
308 |
-
from sumo_rl import SumoEnvironment
|
309 |
-
env = gym.make('sumo-rl-v0',
|
310 |
-
net_file='single-intersection.net.xml',
|
311 |
-
route_file='single-intersection-gen.rou.xml',
|
312 |
-
out_csv_name='output',
|
313 |
-
use_gui=True,
|
314 |
-
single_agent=True,
|
315 |
-
num_seconds=5000)
|
316 |
-
model1 = DQN.load('DQN_MODEL3.zip',env=env)
|
317 |
-
st.write("The Simulation is currently running for 5000 steps, Results will be shown shortly.....")
|
318 |
-
one,two = evaluate_policy(model1,env = env,n_eval_episodes=5,render=True)
|
319 |
-
st.write("Evaluation Results: \nPer Episode Rewards(Higher the better):",one,"\nPer-episode lengths (in number of steps):",two)
|
320 |
-
import matplotlib.pyplot as plt
|
321 |
-
def eval_plot(path,metric,path_compare = None):
|
322 |
-
data = pd.read_csv(path)
|
323 |
-
if path_compare is not None:
|
324 |
-
data1 = pd.read_csv(path_compare)
|
325 |
-
x = []
|
326 |
-
for i in range(0,len(data)):
|
327 |
-
x.append(i)
|
328 |
-
|
329 |
-
y = data[metric]
|
330 |
-
y_1 = pd.to_numeric(y)
|
331 |
-
y_arr = np.array(y_1)
|
332 |
-
if path_compare is not None:
|
333 |
-
y2 = data1[metric]
|
334 |
-
y_2 = pd.to_numeric(y2)
|
335 |
-
y_arr2 = np.array(y_2)
|
336 |
-
|
337 |
-
x_arr = np.array(x)
|
338 |
-
|
339 |
-
fig = plt.figure()
|
340 |
-
ax1 = fig.add_subplot(2, 1, 1)
|
341 |
-
ax1.set_title(metric)
|
342 |
-
if path_compare is not None:
|
343 |
-
ax2 = fig.add_subplot(2, 1, 2,sharey=ax1)
|
344 |
-
ax2.set_title('compare '+metric)
|
345 |
-
|
346 |
-
ax1.plot(x_arr,y_arr)
|
347 |
-
|
348 |
-
if path_compare is not None:
|
349 |
-
ax2.plot(x_arr,y_arr2)
|
350 |
-
|
351 |
-
return fig
|
352 |
-
for i in range(1,2):
|
353 |
-
st.pyplot(eval_plot(f'output_conn{st.session_state.con}_ep{i}.csv','system_mean_waiting_time'))
|
354 |
-
st.pyplot(eval_plot(f'output_conn{st.session_state.con}_ep{i}.csv','agents_total_accumulated_waiting_time'))
|
355 |
|
356 |
elif page == "Chat with Results":
|
357 |
st.title('Chat with the Results')
|
358 |
st.write("Please upload the relevant CSV data to get started")
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
uploaded_file = st.file_uploader('Choose your .csv file', type=["csv"])
|
365 |
-
if uploaded_file is not None and st.session_state['isran'] == False:
|
366 |
-
with open("temp.csv", "wb") as f:
|
367 |
-
f.write(uploaded_file.getvalue())
|
368 |
-
loader = CSVLoader('temp.csv')
|
369 |
-
docs = loader.load()
|
370 |
-
text_splitter = RecursiveCharacterTextSplitter(chunk_size = 1000, chunk_overlap = 200)
|
371 |
-
splits = text_splitter.split_documents(docs)
|
372 |
-
|
373 |
-
embeddings = OllamaEmbeddings(model='mistral')
|
374 |
-
st.session_state.vectorstore = Chroma.from_documents(documents=splits,embedding=embeddings)
|
375 |
-
st.session_state['isran'] = True
|
376 |
-
|
377 |
-
if st.session_state['isran'] == True:
|
378 |
-
st.write("Embedding created")
|
379 |
-
|
380 |
-
def fdocs(docs):
|
381 |
-
return "\n\n".join(doc.page_content for doc in docs)
|
382 |
-
|
383 |
-
def llm(question,context):
|
384 |
-
formatted_prompt = f"Question: {question}\n\nContext:{context}"
|
385 |
-
response = ollama.chat(model='mistral', messages=[
|
386 |
-
{
|
387 |
-
'role': 'user',
|
388 |
-
'content': formatted_prompt
|
389 |
-
},
|
390 |
-
])
|
391 |
-
return response['message']['content']
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
def rag_chain(question):
|
396 |
-
retriever = st.session_state.vectorstore.as_retriever()
|
397 |
-
retrieved_docs = retriever.invoke(question)
|
398 |
-
formatted_context = fdocs(retrieved_docs)
|
399 |
-
return llm(question,formatted_context)
|
400 |
-
|
401 |
-
if 'messages' not in st.session_state:
|
402 |
-
st.session_state.messages = []
|
403 |
-
|
404 |
-
for message in st.session_state.messages:
|
405 |
-
st.chat_message(message['role']).markdown(message['content'])
|
406 |
-
|
407 |
-
prompt = st.chat_input("Say something")
|
408 |
-
response = rag_chain(prompt)
|
409 |
-
if prompt:
|
410 |
-
st.chat_message('user').markdown(prompt)
|
411 |
-
st.session_state.messages.append({'role':'user','content':prompt})
|
412 |
-
st.session_state.messages.append({'role':'AI','content':response})
|
413 |
-
st.chat_message('AI').markdown(response)
|
|
|
296 |
elif page == "PS2":
|
297 |
st.header("CLICK ON RUN SCRIPT TO START A TRAFFIC SIMULATION")
|
298 |
script = st.button("RUN SCRIPT")
|
299 |
+
st.alert("This simulation, Unfortunately was not optimized for deployed but still works for locally run version")
|
300 |
+
st.write("check out this [link](https://github.com/pranavsrinivasa/Traffic-Optimization-Projects)")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
301 |
|
302 |
elif page == "Chat with Results":
|
303 |
st.title('Chat with the Results')
|
304 |
st.write("Please upload the relevant CSV data to get started")
|
305 |
+
|
306 |
+
st.alert("This model, Unfortunately was not optimized for deployed but still works for locally run version")
|
307 |
+
st.write("check out this [link](https://github.com/pranavsrinivasa/Traffic-Optimization-Projects)")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|