ML-INTA commited on
Commit
8b4f7f1
1 Parent(s): 30f2b74

Delete app.py

Browse files
Files changed (1) hide show
  1. app.py +0 -212
app.py DELETED
@@ -1,212 +0,0 @@
1
- import streamlit as st
2
-
3
- '''
4
- # ######################
5
- # Configuración de página
6
- # ######################
7
-
8
- st.set_page_config(
9
- page_title="LupercAI",
10
- page_icon= "🚛",
11
- layout="centered", #"wide" or "centered"
12
- initial_sidebar_state="collapsed", #"auto" or "expanded" or "collapsed"
13
- menu_items={
14
- 'Get Help': "https://www.inta.es/INTA/es/index.html",
15
- 'Report a bug': "https://www.inta.es/INTA/es/index.html",
16
- 'About': "Si necesitas ayuda, puedes dirigirte a *[email protected]*."
17
- }
18
- )
19
-
20
- ######################
21
- # Page Title
22
- ######################
23
-
24
- if "alg_genetico" in st.session_state: del st.session_state["alg_genetico"]
25
-
26
- st.title("LupercAI 🚛")
27
-
28
- st.header("Entrada de archivos")
29
- '''
30
-
31
- #import pandas as pd
32
-
33
- '''
34
- tab1, tab2 = st.tabs(["Excel", "Manual"])
35
-
36
- with tab1:
37
- uploaded_file = st.file_uploader("Elige un archivo", accept_multiple_files=False, type=["xlsx"], help="Solo acepta excel")
38
- if uploaded_file is not None:
39
- st.write(uploaded_file.name)
40
-
41
- datos = pd.read_excel(uploaded_file, sheet_name=None)
42
- nombres_hojas = list(datos.keys())
43
-
44
- if "Distancias" not in nombres_hojas or "Demandas_clientes" not in nombres_hojas or "Capacidad_vehiculos" not in nombres_hojas:
45
- st.error("Falta una hoja", icon = "❌")
46
-
47
- else:
48
- #names permite añadir nombres, si no pandas añade directamente int desde 0.
49
- valores = dict()
50
- for hoja in ["Num_nodos", "Distancias", "Demandas_clientes", "Num_vehiculos", "Capacidad_vehiculos"]: # Usa 'openpyxl' como motor para leer archivos xlsx
51
- #dataframe = pd.read_excel('6. Algoritmo genético.py\Datos.xlsx', sheet_name= hoja, header=None, names=[]) #Si el archivo estuviera en la carpeta, no cargado
52
- if hoja in nombres_hojas:
53
- dataframe = pd.read_excel(uploaded_file, engine='openpyxl', sheet_name=hoja, header=None, names=[])
54
- matriz = dataframe.values.tolist()
55
- valores[hoja] = matriz
56
-
57
- if "Num_nodos" in nombres_hojas: num_nodos = valores["Num_nodos"][0][0]
58
- distancias = valores["Distancias"]
59
- demandas_clientes = [valor[0] for valor in valores["Demandas_clientes"]]
60
- if "Num_vehiculos" in nombres_hojas: num_vehiculos = valores["Num_vehiculos"][0][0]
61
- capacidad_vehiculos = [valor[0] for valor in valores["Capacidad_vehiculos"]]
62
-
63
-
64
-
65
- with tab2:
66
-
67
- left_column, right_column = st.columns(2)
68
-
69
- with left_column:
70
- form1 = st.form("Grafo")
71
- num_nodosB = form1.number_input('Número de paradas', value = 1, help="Incluye el almacén")
72
- form1.form_submit_button("OK")
73
-
74
- st.subheader("Demandas")
75
- form2 = st.form("Demanda de cada parada")
76
- demandas_clientesB = []
77
- demandas_clientesB.append(form2.number_input('Demanda del Almacén', value = 0, max_value=0, min_value=0))
78
- for i in range(1, num_nodosB):
79
- demandas_clientesB.append(form2.number_input('Demanda de la parada ' + str(i), value = 1))
80
- boton2 = form2.form_submit_button("OK")
81
-
82
- if boton2:
83
- form2.success("Demandas actualizado")
84
-
85
-
86
- with right_column:
87
- form3 = st.form("número de vehiculos")
88
- num_vehiculosB = form3.number_input('Número de vehiculos', value = 1)
89
- form3.form_submit_button("OK")
90
-
91
- st.subheader("Vehiculos")
92
- form4 = st.form("Carga de vehiculos")
93
- capacidad_vehiculosB = []
94
- for i in range(1, num_vehiculosB + 1):
95
- capacidad_vehiculosB.append(form4.number_input('Carga del vehiculo ' + str(i), value = 1))
96
- boton4 = form4.form_submit_button("OK")
97
-
98
- if boton4:
99
- form4.success("Cargas actualizado")
100
-
101
- st.subheader("Distancias")
102
- form5 = st.form("Distancias")
103
-
104
-
105
- data_inicial = [dict([(str(i),None) for i in range(num_nodosB)])] * num_nodosB #los elementos están vinculados
106
- data_df = pd.DataFrame(data_inicial)
107
- for i in range(num_nodosB): data_df[str(i)][i] = 0
108
- edited_df = form5.data_editor(data_df)
109
-
110
- (fila, columna) = (0, 0)
111
- favorite_command = edited_df[str(columna)][fila]
112
- form5.write(f"Fila {fila} Columna {columna}: **{favorite_command}** ")
113
-
114
- distanciasB = edited_df.values.tolist()
115
-
116
- boton5 = form5.form_submit_button("OK")
117
-
118
- if boton5:
119
- form5.success("Distancias actualizado")
120
-
121
- if boton2 or boton4 or boton5:
122
- uploaded_file = None
123
-
124
- if uploaded_file == None:
125
- num_nodos = num_nodosB
126
- distancias = distanciasB
127
- demandas_clientes = demandas_clientesB
128
- num_vehiculos = num_vehiculosB
129
- capacidad_vehiculos = capacidad_vehiculosB
130
- '''
131
-
132
-
133
- '''
134
- st.header("Variables genéticas")
135
-
136
- chosen = st.radio(
137
- '¿Desea incluir alguna variable genética?',
138
- ("Variables predefinidas", "Escoger variables"),
139
- 0)
140
-
141
- if not chosen == "Escoger variables":
142
- st.session_state["activar_generaciones"] = False
143
-
144
- else:
145
-
146
- c1, c2, c3 = st.columns(3)
147
-
148
-
149
- with c1:
150
- tamano_poblacion_bool = st.checkbox('Tamaño poblacion')
151
- tamano_poblacion = 50
152
- if tamano_poblacion_bool: tamano_poblacion = st.number_input('Tamaño poblacion', value = 50, min_value = 1, label_visibility = "hidden")
153
-
154
- tamano_torneo_bool = st.checkbox('Tamaño torneo')
155
- tamano_torneo = 5
156
- if tamano_torneo_bool: tamano_torneo = st.number_input('Tamaño poblacion', value = 5, min_value = 1,
157
- help = 'El tamaño del torneo debe ser menor al tamaño de la población', label_visibility = "hidden")
158
-
159
- if tamano_poblacion <= tamano_torneo:
160
- st.warning('El tamaño del torneo debe ser menor al tamaño de la población.', icon="⚠️")
161
- tamano_torneo = 1
162
-
163
- with c2:
164
- generaciones_bool = st.checkbox('Generaciones')
165
- generaciones = 100
166
- if generaciones_bool: generaciones = st.number_input('Generaciones', value = 100, min_value = 1, label_visibility = "hidden")
167
-
168
- st.session_state['generaciones'] = generaciones
169
-
170
- with c3:
171
- crossover_prob_bool = st.checkbox('Probabilidad de cruce')
172
- crossover_prob = 0.8
173
- if crossover_prob_bool: crossover_prob = st.number_input('Probabilidad de cruce', value = 0.8, min_value = 0.0, max_value = 1.0, label_visibility = "hidden")
174
-
175
- mutation_prob_bool = st.checkbox('Probabilidad de mutación')
176
- mutation_prob = 0.2
177
- if mutation_prob_bool: mutation_prob = st.number_input('Probabilidad de mutación', value = 0.2, min_value = 0.0, max_value = 1.0, label_visibility = "hidden")
178
-
179
- if tamano_poblacion_bool or tamano_torneo_bool or generaciones_bool or crossover_prob_bool or mutation_prob_bool:
180
- st.session_state["activar_generaciones"] = True
181
- st.session_state["tamano_poblacion"] = tamano_poblacion
182
- st.session_state["tamano_torneo"] = tamano_torneo
183
- st.session_state["generaciones"] = generaciones
184
- st.session_state["crossover_prob"] = crossover_prob
185
- st.session_state["mutation_prob"] = mutation_prob
186
- else:
187
- st.session_state["activar_generaciones"] = False
188
- '''
189
-
190
- '''
191
- st.header("Guardar")
192
- boton = st.button("¿Guardar variables?", type="primary")
193
-
194
- if boton:
195
-
196
- if distancias == None or demandas_clientes == None or capacidad_vehiculos == None: st.error(f"Falta un valor fundamental")
197
- elif len(distancias) != len(demandas_clientes): st.error(f"Distancias: {distancias} no coincide con Demandas: {demandas_clientes}")
198
- else:
199
- st.session_state["distancias"] = distancias
200
- st.session_state["demandas_clientes"] = demandas_clientes
201
- st.session_state["capacidad_vehiculos"] = capacidad_vehiculos
202
-
203
- if num_nodos != None:
204
- if num_nodos != len(distancias): st.warning(f"Número de paradas: {num_nodos} no coincide con Distancias: {distancias}")
205
- else: st.session_state["num_nodos"] = num_nodos
206
-
207
- if num_vehiculos != None:
208
- if num_vehiculos != len(capacidad_vehiculos): st.warning(f"Número de vehiculos: {num_vehiculos} no coincide con Cargas Vehiculos: {capacidad_vehiculos}")
209
- else: st.session_state["num_vehiculos"] = num_vehiculos
210
-
211
- st.success(f"Valores actualizados")
212
- '''