Algoritmos y arquitectura: Un nuevo horizonte del diseño
Despiertas y debes preparar tu desayuno. Una vez decidido, planeas qué necesitas específicamente y qué actividades realizarás para lograr tu objetivo: ollas, insumos, cantidades y tiempo. Este procedimiento discreto lo realizamos cada vez que intentamos resolver un problema en nuestras mentes, gracias a la experiencia que hemos adquirido. Como una receta de cocina, así mismo están compuestos los algoritmos: un conjunto de acciones ordenadas alimentado con parámetros específicos, con el objetivo de lograr un resultado determinado. ¿Necesitas más huevos? ¿Precisas bajar la temperatura? Cualquier cambio resulta en un desayuno diferente.
Pero, ¿cómo contextualizamos nuestro proceso de diseño por medio de algoritmos? Primero, un poco de historia.
Las herramientas de diseño básico y fluido siempre han sido sencillas, desde los inicios rupestres hasta el lápiz, la tinta y el papel, capturando nuestras ideas, precisas o abstractas, para visualizar o resolver problemas. Durante este proceso se pueden producir múltiples resultados, pero, bajo este método, solo lo terminado queda grabado.
Con la llegada de la era digital, el diseño asistido por computadora (CAD, por sus siglas en inglés) evolucionaría el medio a una manera versátil y sostenible. Esto trajo consigo la oportunidad de probar y corregir diseños de una forma mucho más eficiente y económica. Supuso un cambio del medio físico al digital que era necesario, pero aún requería realizar tareas muy repetitivas y análogas.
En la búsqueda de una metodología que realmente aprovechara las ventajas del manejo de datos computacionales y el proceso de diseño arquitectónico, el modelado de información de construcción (BIM) formuló, por primera vez, una interfaz de parámetros preprogramados enfocados realmente en satisfacer la necesidad de simplificar tareas repetitivas, convirtiendo el proceso al campo tridimensional y el manejo de datos simultáneamente. Un escenario híbrido entre la manera artesanal de diseñar y elementos paramétricos preestablecidos que ayudan a facilitar el resultado final.
Al arribar el internet, esto supuso un cambio radical en la manera cómo transmitimos información y el desarrollo del software abrió las puertas a no solo el desarrollo tipo “caja negra” (desarrollo orientado a lo que hace y no a cómo lo hace), sino también un tipo de colaboración conjunta de código abierto (open source). Esto logró que muchos usuarios experimentaran creando scripts: libretos escritos en un lenguaje de programación para generar resultados de manera casi inmediata. Por primera vez empezamos a diseñar, no solo el resultado, sino el proceso.
Dentro del avance surgió una nueva ventana para programar, no solo a través de scripts de texto en lenguajes de programación como Python o C#, sino también a la programación visual, basado generalmente en nodos predefinidos que realizan acciones. Esto dio como resultado el surgimiento de programas como Grasshopper, un software enlazado a Rhinoceros 3D que usa la programación visual para diseñar algoritmos de modelado 3D. Esto supondría un campo completamente nuevo dentro de la arquitectura: el modelado algorítmico.
· Modelado algorítmico
A pesar de que la programación visual no es nueva, ha significado una ventana muy intuitiva hacia diseñadores no afines al campo de la programación y una forma diferente en cómo formular el proceso de diseño. Grasshopper es esencialmente un programa de modelado algorítmico, donde usas el teclado y el ratón para diseñar, explícitamente, algoritmos. Cada nueva interación que se diseñe es recomputada, pero el proceso de diseño queda registrado.
El método que emplea el diseño algorítmico para realizar sus procesos está compuesto por 3 elementos básicos: entrada de datos (input), proceso determinado y salida de datos (output). Regresando, por ejemplo, a nuestro desayuno: tomar los ingredientes (input), cocinarlos en la olla (proceso clave) y servir tu comida (output). De cierta forma, muchos procesos humanos tienen una base algorítmica, pero de una manera implícita.
Al modelar una masa de manera tradicional seguimos una serie de pasos específicos: primero pensamos en nuestro objetivo (masa), luego escribimos los comandos necesarios para crearla, moverla, escalarla, rotarla y cortarla como queramos, y visualizamos nuestra creación al instante y de una forma muy interactiva. Pero en el modelado algorítmico no existe interacción, cada acción que se quiera tomar debe especificarse de manera explícita, ya sea dimensiones, vectores, orientación, etc., por medio de parámetros.
Existen algoritmos también capaces de retroalimentar sus propios datos en un ciclo de reacción repetitiva, con la posibilidad de realizar simulaciones físicas. Un plug-in muy utilizado dentro de Grasshopper es Kangaroo physics, con componentes aptos para la simulación de viento, relajación estructural liviana y colisiones.
Diseño generativo
Dentro de esta rama (también conocida como diseño computacional) han logrado entrar nuevas ideas que aportan una metodología para resolver problemas aún más complejos que el diseño paramétrico no puede resolver fácilmente, que van desde la aplicación de la teoría de la evolución de Darwin hasta principios de inteligencia artificial, conocido en un término general como diseño generativo, pero este término ha sufrido una definición bastante vaga en el argot computacional. Por ahora solo me referiré a una pequeña parte, como ejemplo, de los múltiples campos dentro del proceso generativo conocido como solucionadores evolutivos (evolutionary solvers).
Los solucionadores evolutivos son algoritmos que implementan el concepto de la “evolución biológica” para analizar la posible solución a un problema. Un algoritmo evolucionario usa una búsqueda metaheurística (método algorítmico para la búsqueda de una solución lo suficientemente buena), funcionando como un medio de optimización aproximada. Durante su función, el algoritmo necesita de parámetros para satisfacer el resultado lo más cercano posible de una manera progresiva. Un algoritmo evolutivo puede tener múltiples objetivos para satisfacer y es deber del diseñador intuir al algoritmo el resultado que busca. Al final, el algoritmo “genera” un paisaje de opciones, de las cuales se debe escoger la que mejor ofrezca el resultado aparente y deseado.
Como método de optimización, estos algoritmos empoderan el proceso de diseño con un método capaz de realizar tareas difíciles de resolver, casi como un atajo al resultado, ahorrando una inmensa cantidad de tiempo. También ha servido de piedra angular para la investigación, por ejemplo, de componentes de análisis y optimización estructural, y la optimización topológica estructural (proceso de aligeramiento que mantiene las funcionalidades mecánicas del componente objetivo).
Una cosa es cierta, como lo dice David Rutten, creador de Grasshopper, en su blog “I eat bugs for breakfast”, los algoritmos evolutivos no garantizan una solución absoluta, ejecutándose de manera indefinida hasta quizás nunca encontrar la respuesta. También pueden ser “lentos”. Encontrar una solución podría tardar horas, días y hasta semanas. Es un proceso progresivo que necesita intuirse, modificarse muchas veces hasta alcanzar un resultado objetivo. Sin embargo, también pueden ser muy flexibles al tomar una amplia variedad de problemas a la vez.
De arquitecto a programador
Diseñar algoritmos requiere cierto nivel de conocimiento en geometría, matemáticas y programación. Como arquitectos, en un principio puede ser algo abrumador, pero no es imposible que la práctica y el tiempo ayuden a ejercitar ese músculo mental. Con el modelado algorítmico es de suma importancia tomar en cuenta que para llegar a un objetivo específico debes manejar el flujo de la información de una manera ordenada, controlar la economía en el nivel de información y los recursos necesarios para computar el resultado de una manera eficiente. Para ayudarlos a adentrarse, les recomiendo 4 pasos sencillos al momento de realizar un algoritmo:
Piensa claramente en el resultado deseado (output)
Intenta identificar los procesos necesarios para alcanzar el resultado (procesos clave)
Reconoce los datos y los parámetros que necesitas (input)
Define los pasos intermedios para generar los datos implícitos del proceso.
Para realizar un proceso algorítmico no necesitas una computadora. Arquitectos como Gaudí o Frei Otto construyeron modelos interactivos dentro de su proceso de diseño para tener una retroalimentación más directa. Los algoritmos están en todas partes y son elementos de nuestra vida diaria, pero la computación ha levantado el pensamiento algorítmico a nuevos niveles de análisis que un ser humano no podría realizar en poco tiempo. Así que la próxima vez que pienses en cómo hacer tu desayuno, maravíllate de lo increíble que es la mente humana mientras saboreas un rico omelette.
Duabitad más que arquitectura y diseño
Las opiniones plasmadas en este artículo corresponden enteramente al autor del mismo, no representa la opinión de la empresa.