Repositorio documental de un framework propio para análisis, validación normativa y optimización estructural de edificios de acero.
Este proyecto integra Python, OpenSeesPy, DEAP/NSGA-II y generación automática de reportes técnicos para modelar, analizar y optimizar estructuras metálicas mediante un flujo reproducible y trazable.
Nota: este repositorio funciona como versión showcase/documental. El código fuente completo no se publica en su totalidad por tratarse de un proyecto académico/profesional en desarrollo.
- Modelado estructural 3D con OpenSeesPy.
- Análisis modal y respuesta espectral CQC.
- Revisión de derivas, desplazamientos, demanda/capacidad y esbeltez.
- Diseño LRFD de elementos de acero.
- Optimización multiobjetivo mediante NSGA-II.
- Generación automática de reportes en Markdown, CSV y JSON.
- Validación contra software comercial y ejercicios de referencia.
El framework fue aplicado a un edificio metálico de departamentos estudiantiles de cuatro niveles, evaluando alternativas estructurales y seleccionando un sistema con marcos a momento y contravientos Chevron en X.
Resultados principales:
- Peso de acero aproximado: 44.84 t
- D/C máxima global: 0.793
- Deriva máxima de servicio: 0.000816
- Desplazamiento de azotea: 8.35 mm
- Candidato adoptado: Rank 55
Este proyecto integra Python, OpenSeesPy, DEAP/NSGA-II y generación automática de reportes técnicos para modelar, analizar y optimizar estructuras metálicas mediante un flujo reproducible y trazable.
Nota: este repositorio funciona como versión showcase/documental. El código fuente completo no se publica en su totalidad por tratarse de un proyecto académico/profesional en desarrollo.
Este repositorio está organizado como una vitrina técnica del framework. No busca publicar todo el código fuente, sino mostrar la arquitectura, documentación, reportes generados y evidencia del flujo computacional.
-
docs/Documentación técnica del framework: arquitectura, UML, convenciones de modelado y criterios de orientación de perfiles. -
reportes_generados/Ejemplos de salidas automáticas producidas por el framework, incluyendo memorias, CSV, JSON, revisiones LRFD, deflexiones, fuerzas internas y trazabilidad de resultados. -
resultados_optimizacion/Archivos asociados al proceso de optimización, candidatos evaluados, resultados de desempeño y selección de alternativas estructurales.
- Revisar primero este
README.md. - Abrir la documentación de arquitectura en
docs/. - Revisar los reportes automáticos en
reportes_generados/. - Consultar los resultados de optimización para entender la selección del candidato estructural adoptado.
- Modelado estructural 3D con OpenSeesPy.
- Análisis modal y respuesta espectral CQC.
- Revisión de derivas, desplazamientos, demanda/capacidad y esbeltez.
- Diseño LRFD de elementos de acero.
- Optimización multiobjetivo mediante NSGA-II.
- Generación automática de reportes en Markdown, CSV y JSON.
- Validación contra software comercial y ejercicios de referencia.
El framework fue aplicado a un edificio metálico de departamentos estudiantiles de cuatro niveles, evaluando alternativas estructurales y seleccionando un sistema con marcos a momento y contravientos Chevron en X.
Resultados principales:
- Peso de acero aproximado: 44.84 t
- D/C máxima global: 0.793
- Deriva máxima de servicio: 0.000816
- Desplazamiento de azotea: 8.35 mm
- Candidato adoptado: Rank 55
Framework en Python para modelado, analisis, validacion normativa, optimizacion genetica y generacion de memorias tecnicas de estructuras metalicas y mixtas.
El proyecto integra:
- OpenSeesPy para el analisis estructural.
- DEAP para optimizacion genetica multiobjetivo NSGA-II.
- Streamlit y Plotly para interfaz visual.
- SQLite para catalogos IMCA de perfiles.
- Excel como fuente externa de datos del proyecto.
- Markdown, CSV y JSON para trazabilidad de resultados.
El framework ya cuenta con:
- Modelo 3D parametrico desde Excel.
- Lectura de nodos, elementos, cargas, combinaciones y configuracion.
- Convencion documentada de
Orientacion_Betapara perfiles IR. - Catalogo IMCA desde SQLite.
- Materiales por familia: IR=A992, OR/OR rellenos=A500 Gr B y A36 como base.
- Espectro de diseno parametrico desde Excel.
- Analisis modal con seleccion automatica de modos por participacion modal minima.
- Respuesta espectral CQC.
- Peso propio automatico de elementos.
- Auditoria de masas, preflight de entrada y constructibilidad.
- Validacion normativa global: D/C, derivas, desplazamiento de azotea, esbeltez y cortante basal.
- Reglas de constructibilidad: espesor minimo, continuidad vertical de columnas, telescopia, ancho en nudos y CFVD segun sistema lateral.
- Optimizador NSGA-II con multiprocessing.
- Evaluacion LRFD detallada dentro de la optimizacion cuando esta activa.
- Exportacion de frente Pareto y candidatos elite con motivos de seleccion.
- Limpieza automatica de corridas antiguas.
- Alias amigables para corridas.
- Interfaz Streamlit.
- Memorias automaticas con evidencia Markdown, JSON y CSV.
Cambios recientes integrados:
- Demanda local gravitacional de vigas: redistribuye cargas nodales tributarias como carga distribuida equivalente por claro fisico.
- Diseno LRFD detallado de vigas IR por flexion, cortante, flexion+cortante y flecha.
- Diseno LRFD detallado de columnas OR simples por compresion, flexion, cortante e interaccion axial-flexion biaxial.
- Diseno LRFD detallado de columnas IR por pandeo flexional y torsional, esbeltez local, flexion fuerte/debil, cortante e interaccion axial-flexion biaxial.
- Diseno axial LRFD de contravientos OR por tension y compresion, incluyendo pandeo global y clasificacion local.
- Exportacion de fuerzas internas LRFD por elemento, combinacion y extremo.
- Envolventes LRFD por elemento y por grupo de diseno.
- Reacciones de base para cimentacion preliminar: detalle por apoyo, resumen por combinacion y envolvente por nodo.
- Memoria de calculo ampliada con deflexiones verticales, fuerzas LRFD, diseno detallado y reacciones de cimentacion.
Forma recomendada:
.\run_interfaz_streamlit.ps1Luego abrir:
http://localhost:8501
Alternativa directa:
.\.venv\Scripts\python.exe -m streamlit run interfaz_streamlit.py --server.port 8501- Preparar el Excel en
auxiliares/1_Nodos_y_Geometria.xlsxo en la carpeta de insumos elegida. - Abrir la interfaz.
- Revisar modelo 3D, grupos, orientacion beta y espectro.
- Ejecutar analisis del edificio base.
- Revisar normativa, derivas, masas, constructibilidad, deflexiones y fuerzas LRFD si aplica.
- Configurar optimizacion.
- Lanzar corrida piloto, mediana o grande.
- Revisar frente Pareto y candidatos elite.
- Aplicar candidato elite si se desea generar evidencia de esa propuesta.
- Generar memoria de calculo y archivos CSV/JSON.
Regla operativa: el framework lee el Excel, pero no debe modificarlo sin autorizacion explicita del usuario.
.
|-- interfaz_streamlit.py
|-- contexto_proyecto.py
|-- run_interfaz_streamlit.ps1
|-- auxiliares/
|-- core/
|-- data/
|-- config/
|-- analysis/
| |-- builders/
| |-- solvers/
| |-- results/
| |-- validation/
| |-- design/
|-- optimization/
|-- herramientas/
| |-- diagnostico/
| |-- optimizacion/
| |-- reportes/
| |-- legacy/
|-- reportes/
|-- resultados_optimizacion/
|-- reportes_generados/
|-- docs/
contexto_proyecto.py: construccion comun del proyecto para interfaz, CLI y reportes.interfaz_streamlit.py: aplicacion visual.auxiliares/: lectura de Excel.core/: dominio estructural: nodos, elementos, secciones, materiales y edificio.data/: catalogos SQLite IMCA.config/: espectro de diseno.analysis/: construccion OpenSees, solvers, resultados, validaciones y diseno local.optimization/: genotipo, constructibilidad, embudo, objetivos y motor genetico.herramientas/: scripts CLI de diagnostico, optimizacion y reportes.reportes/: generacion de memoria y evidencia.
La interfaz tiene cinco areas principales:
- KPIs del edificio.
- Visualizacion 3D.
- Resumen por tipo y grupo de diseno.
- Orientacion beta.
- Espectro de diseno con fondo blanco, lineas limpias, texto negro y leyenda formal.
- Parametros del espectro leidos desde Excel.
- Ejecuta el motor validado.
- Muestra resumen normativo.
- Muestra constructibilidad.
- Grafica distorsiones.
- Permite auditorias de deflexion vertical y fuerzas internas LRFD.
- Configura poblacion, generaciones, nucleos, cruce, mutacion y seed.
- Permite objetivo de deriva automatico o manual.
- Permite alias de corrida.
- Permite forzar columnas OR simples sin editar Excel.
- Lanza el optimizador por subprocess para estabilidad en Windows.
- Lista corridas con nombre tecnico y alias amigable.
- Permite editar alias visible.
- Muestra KPIs del frente Pareto.
- Muestra ranking Pareto, candidatos elite y frente completo.
- Grafica peso, D/C y deriva.
- Permite identificar motivos de seleccion: menor peso, D/C eficiente, deriva equilibrada, menor esbeltez y mejor balance.
- Genera memoria de calculo del edificio actual o del candidato aplicado.
- Exporta Markdown, evidencia JSON y tablas CSV.
Validar entrada:
.\.venv\Scripts\python.exe -X utf8 -m herramientas.diagnostico.validar_entrada --ruta-insumos auxiliares\Pruebas\Proyecto_4_pisos_chevr_XAuditar masas:
.\.venv\Scripts\python.exe -X utf8 -m herramientas.diagnostico.auditar_masas --ruta-insumos auxiliares\Pruebas\Proyecto_4_pisos_chevr_XAuditar constructibilidad:
.\.venv\Scripts\python.exe -X utf8 -m herramientas.diagnostico.auditar_constructibilidad --ruta-insumos auxiliares\Pruebas\Proyecto_4_pisos_chevr_XAuditar deflexiones verticales:
.\.venv\Scripts\python.exe -X utf8 -m herramientas.diagnostico.auditar_deflexiones --ruta-insumos auxiliares\Pruebas\Proyecto_4_pisos_chevr_XExportar fuerzas LRFD:
.\.venv\Scripts\python.exe -X utf8 -m herramientas.diagnostico.exportar_fuerzas_lrfd --ruta-insumos auxiliares\Pruebas\Proyecto_4_pisos_chevr_XCorrida parametrica:
.\.venv\Scripts\python.exe -X utf8 -m herramientas.optimizacion.correr_optimizacion_cli --ruta-insumos auxiliares\Pruebas\Proyecto_4_pisos_chevr_X --poblacion 72 --generaciones 32 --nucleos 8 --lrfd-detallado rapido --columnas-or-simplesCorrida grande usada en el flujo final:
.\.venv\Scripts\python.exe -X utf8 -m herramientas.optimizacion.correr_optimizacion_cli --ruta-insumos auxiliares\Pruebas\Proyecto_4_pisos_chevr_X --poblacion 96 --generaciones 48 --nucleos 8 --prob-cruce 0.85 --prob-mutacion 0.35 --objetivo-deriva auto --dc-meta 0.80 --dc-max-diseno 0.95 --factor-dc-sobre-meta 6.0 --lrfd-detallado rapido --columnas-or-simplesGenerar memoria del edificio del Excel:
.\.venv\Scripts\python.exe -X utf8 -m herramientas.reportes.generar_memoria_cli --ruta-insumos auxiliares\Pruebas\Proyecto_4_pisos_chevr_XGenerar memoria desde elite:
.\.venv\Scripts\python.exe -X utf8 -m herramientas.reportes.generar_memoria_cli --ruta-insumos auxiliares\Pruebas\Proyecto_4_pisos_chevr_X --elite-csv resultados_optimizacion\corrida_x\elite_candidatos.csv --rank 55El optimizador usa NSGA-II con tres objetivos:
- Minimizar peso penalizado.
- Buscar eficiencia demanda/capacidad sin exceder el limite normativo.
- Equilibrar la utilizacion de deriva para no premiar edificios innecesariamente rigidos.
El motor evalua cada individuo con:
perfil comercial
-> constructibilidad
-> embudo preliminar
-> OpenSeesPy
-> normativa global
-> LRFD detallado si esta activo
-> fitness
El sistema detecta la presencia de contravientos:
- Sistema arriostrado:
min=0.25,meta=0.35. - Marco a momento:
min=0.35,meta=0.80.
Cuando Validar_LRFD_Detallado_Optimizacion esta activo, el evaluador revisa:
- Vigas IR: flexion, cortante, flexion+cortante, PLT, pandeo local y flecha.
- Columnas IR: pandeo por ambos ejes y torsional, esbeltez local, flexion fuerte/debil, cortante e interaccion P-M biaxial.
- Columnas OR simples: compresion, flexion, cortante e interaccion P-M biaxial.
- Contravientos OR: tension, compresion, pandeo global y clasificacion local.
El modo rapido aprovecha resultados ya calculados en el loop; la exportacion final reevalua candidatos elite con evidencia completa.
Cada corrida exporta:
frente_pareto.csv/jsonelite_candidatos.csv/jsonresumen.json
Los candidatos elite incluyen motivos de seleccion:
- menor peso
- D/C mas eficiente
- deriva de servicio mas eficiente
- deriva de colapso mas eficiente
- deriva equilibrada
- menor esbeltez
- mejor balance global
- top por peso
La memoria automatica incluye:
- alcance
- modelo analizado
- metodologia general
- auditoria de masas
- analisis modal
- resumen normativo
- constructibilidad
- distorsiones de entrepiso
- deflexiones verticales por claros fisicos
- reacciones de base para cimentacion preliminar
- fuerzas internas LRFD por elemento y extremo
- diseno LRFD de vigas IR
- diseno detallado de columnas OR
- diseno axial de contravientos OR
- tablas resumen de elementos criticos
- dictamen automatico
La generacion de memoria produce, segun el caso:
*.md*_evidencia.json*_columnas.csv*_deflexiones.csv*_reacciones_base_detalle.csv*_reacciones_base_resumen.csv*_reacciones_base_envolvente.csv*_reacciones_base.json*_fuerzas_lrfd_detalle.csv*_fuerzas_lrfd_envolvente.csv*_fuerzas_lrfd_envolvente_grupos.csv*_diseno_vigas_ir_flexion.csv/json*_diseno_columnas_or.csv/json*_diseno_contravientos_or.csv/json
El framework revisa:
- consistencia de entrada
- masas y peso propio
- participacion modal minima
- espectro y combinaciones
- derivas de servicio
- derivas de colapso
- desplazamiento de azotea
- D/C maximo
- esbeltez de columnas
- cortante basal dinamico vs minimo
- constructibilidad
- demanda/capacidad biaxial para elementos compatibles
- deflexiones verticales de vigas
- fuerzas LRFD y envolventes
- reacciones de base para cimentacion preliminar
La convencion de ejes locales y orientacion de perfiles IR se documenta en 04_Convencion_Orientacion_Beta.md.
El flujo productivo actual es elastico lineal con respuesta espectral.
No estan en produccion todavia:
- pushover
- rotulas plasticas
- modelos de fibras
- tiempo-historia no lineal
- IDA
- degradacion ciclica
- diseno completo de conexiones
- bloque de cortante y area neta en tension de conexiones de contravientos
- diseno LRFD detallado de columnas OR rellenas
- cimentacion formal; solo se exportan reacciones para predimensionamiento
Notas tecnicas importantes:
- Las combinaciones CQC se reportan como envolventes positivas; no conservan un signo concurrente unico.
- Las reacciones de base CQC usan envolvente absoluta de gravedad mas sismo, consistente con el criterio de fuerzas LRFD.
- En vigas IR,
Cb=1.0yLbse toma entre nodos salvo configuracion explicita; se debe confirmar el arriostramiento lateral real del patin comprimido. - El factor de resistencia a cortante en los modulos LRFD esta pendiente de parametrizacion normativa; actualmente el codigo conserva
FR_CORTANTE=0.90en vigas y columnas hasta que se defina el valor final de proyecto.
- Parametrizar factores de resistencia LRFD desde configuracion.
- Mejorar memorias por familia de elementos.
- Agregar comparadores automaticos entre corridas.
- Guardar imagenes del modelo y espectro en memoria.
- Diseno de conexiones.
- Modulo auxiliar de cimentacion preliminar.
- Revision LRFD de columnas OR rellenas.
- Analisis pushover para candidatos elite.
- Tiempo-historia no lineal.
- Modelos de dano.
- Optimizacion robusta.
- Surrogate models.
- Integracion BIM.
El framework se encuentra en desarrollo y mejora continua. La versión mostrada en este repositorio corresponde a una etapa documental/showcase, enfocada en demostrar arquitectura, flujo de análisis, validación técnica, optimización estructural y generación automática de reportes.
El código fuente completo no se publica en su totalidad para proteger el desarrollo académico/profesional del proyecto.
