# Guía de Estudio: Semana 14 – Estudio de Casos Complejos: Construcción de Casas a 100 Años **Materia:** Dinámica Industrial – Dinámica de Sistemas **Cátedra:** Ing. Nahuel Romera **Lecturas Obligatorias:** Sterman, John D. *Business Dynamics*, Capítulos 11 y 12; Enunciado Oficial del Examen de Cátedra "Construcción de Casas" (UADE). --- ## 1. El Gran Desafío de Examen: Modelo del Sector Inmobiliario El caso de la **Construcción de Viviendas a 100 Años** representa la síntesis cuantitativa de toda la Dinámica de Sistemas: encadena múltiples órdenes de retrasos materiales (distribución gamma, exponencial y tubería), retrasos de percepción y decisiones de reposición frente a un perfil de demanda multietápico con escalones y rampas. ```mermaid flowchart LR DemandaInsat[Demanda Insatisfecha] --> Planif{{Decisión de Planificar}} Planif ==>|Flujo Planificación| SPlan[Casas Planificadas\n(TR = 8 meses, Erlang)] SPlan ==>|Permisos Municipales\n(TR = 3 meses, Exponencial)| SConst[Casas en Construcción\n(TR = 12 meses, Gamma)] SConst ==>|Fin de Obra| STerm[Casas Terminadas / Habitables] STerm ==>|Vida Útil 30 años (360 meses)| SDemol[Demolición] SDemol ==> CloudDemol((Escombros / Fin)) STerm -.->|Brecha de Oferta| DemandaInsat DemandaExt[Demanda de Casas\n(Escalones y Rampas)] -.-> DemandaInsat SDemol -.->|Reposición Inmediata| Planif ``` --- ## 2. Especificación Paramétrica y Perturbaciones de Demanda ### 2.1. Perfil de Demanda del Mercado a lo Largo de 100 Meses El modelo debe partir de un **estado de equilibrio perfecto hasta el mes 10** con una demanda base de $6.000 \text{ casas}$. A partir de allí, se introducen las siguientes perturbaciones exógenas: 1. **Mes 10:** Escalón de $+50$ casas $\implies \text{Demanda} = 6.050 \text{ casas}$. 2. **Mes 18 a 24:** Rampa lineal decreciente hasta alcanzar $5.450 \text{ casas}$ en el mes 24 ($\text{Pendiente} = \frac{5450 - 6050}{24 - 18} = -100 \text{ casas/mes}$). 3. **Mes 36:** Salto escalón de $+1.200$ casas $\implies \text{Demanda} = 6.650 \text{ casas}$. 4. **Mes 48:** Salto escalón de $+650$ casas $\implies \text{Demanda} = 7.300 \text{ casas}$ finales (permanente hasta el mes 100). ```mermaid xychart-beta title "Perfil de Demanda de Viviendas en el Tiempo (Meses 0 a 100)" x-axis ["Mes 0 (Equil)", "Mes 10 (+50)", "Mes 18 (Rampa)", "Mes 24 (Valle)", "Mes 36 (+1200)", "Mes 48 (+650)", "Mes 100"] y-axis "Demanda de Casas" 5000 --> 8000 line [6000, 6050, 6050, 5450, 6650, 7300, 7300] ``` ### 2.2. La Cadena de Retrasos en Serie: * **Etapa 1 (Planificación y Planos):** Retardo medio $TR_1 = 8 \text{ meses}$, con desvío $\sigma = 2 \text{ meses}$. $\implies$ Implementación en Forrester: **Retardo Erlang de 3.º orden** ($n = 3, \tau = 8/3 \text{ meses}$). * **Etapa 2 (Permisos Municipales):** Retardo medio $TR_2 = 3 \text{ meses}$, con distribución puramente exponencial. $\implies$ Implementación: **Retardo de 1.º orden** ($\tau = 3 \text{ meses}$). * **Etapa 3 (Ejecución de Obras):** Retardo medio $TR_3 = 12 \text{ meses}$, con desvío $\sigma = 2 \text{ meses}$. $\implies$ Implementación: **Retardo Gamma/Erlang de orden superior** ($n = 36 / 4 = 9 \text{ sub-stocks}$ o aproximación de orden 3/4). * **Etapa 4 (Demolición por Fin de Vida Útil):** Las casas terminadas deben demolerse tras 30 años de vida útil ($TR_{\text{vida}} = 30 \times 12 = 360 \text{ meses}$). --- ## 3. Condiciones Iniciales de Equilibrio Estacionario (Paso Clave de Examen) Para que el modelo se mantenga en equilibrio estricto durante los primeros 10 meses: 1. En equilibrio, el flujo de reposición por demolición mensual es: $$\text{Demolición}^* = \frac{\text{Casas Terminadas}^*}{TR_{\text{vida}}} = \frac{6.000 \text{ casas}}{360 \text{ meses}} = 16.667 \frac{\text{casas}}{\text{mes}}$$ 2. Por la **Ley de Little ($MT = F \times TR$)**, todos los flujos en la cadena deben ser idénticos al flujo de salida: $$\text{Inflow}^* = \text{Permisos}^* = \text{FinDeObra}^* = \text{Demolición}^* = 16.667 \frac{\text{casas}}{\text{mes}}$$ 3. Acumulaciones iniciales en tránsito: * **Casas Planificadas:** $MT_1(0) = 16.667 \times 8 \text{ meses} = 133.33 \text{ casas}$. * **Casas esperando permisos:** $MT_2(0) = 16.667 \times 3 \text{ meses} = 50.00 \text{ casas}$. * **Casas en Construcción:** $MT_3(0) = 16.667 \times 12 \text{ meses} = 200.00 \text{ casas}$. * **Casas Terminadas:** $6.000 \text{ casas}$. > [!IMPORTANT] > Si el estudiante (o la IA) inicia con stocks en cero o con valores arbitrarios, el modelo experimentará un transitorio violento de arranque durante los primeros 20 meses, perdiendo el estado de reposo exigido por el examen. --- ## 4. Deducción del Sistema de EDOs El modelo completo conforma un **sistema diferencial acoplado de 8 variables de nivel independientes**: $$\begin{cases} \dfrac{dP_1}{dt} = \text{Planificación}(t) - \dfrac{P_1}{\tau_1} \\[1.5ex] \dfrac{dP_2}{dt} = \dfrac{P_1}{\tau_1} - \dfrac{P_2}{\tau_1} \\[1.5ex] \dfrac{dP_3}{dt} = \dfrac{P_2}{\tau_1} - \dfrac{P_3}{\tau_1} \\[1.5ex] \dfrac{d(\text{Permisos})}{dt} = \dfrac{P_3}{\tau_1} - \dfrac{\text{Permisos}}{3} \\[1.5ex] \dfrac{dC_1}{dt} = \dfrac{\text{Permisos}}{3} - \dfrac{C_1}{\tau_3} \\[1.5ex] \dfrac{dC_2}{dt} = \dfrac{C_1}{\tau_3} - \dfrac{C_2}{\tau_3} \\[1.5ex] \dfrac{dC_3}{dt} = \dfrac{C_2}{\tau_3} - \dfrac{C_3}{\tau_3} \\[1.5ex] \dfrac{d(\text{Terminadas})}{dt} = \dfrac{C_3}{\tau_3} - \text{Demolición}(t) \end{cases}$$ Con la regla de decisión de política: $$\text{Planificación}(t) = \max\left(0, \frac{\text{Demanda}(t) - \text{Terminadas}(t)}{TA_{\text{decisión}}}\right) + \text{Demolición}(t)$$ --- ## 5. Simulación de Examen en Python (`sim_casas_pysd_scipy.py`) A continuación se presenta el solucionador determinístico que replica la corrección docente para el examen a mes 100 bajo el método de Euler con $\Delta t = 1$: ```python import numpy as np def simular_casas_examen(): dt = 1.0 t_max = 100 steps = int(t_max / dt) # Parámetros tr_plan = 8.0 / 3.0 tr_perm = 3.0 tr_obra = 12.0 / 3.0 tr_vida = 360.0 ta_dec = 2.0 # Tiempo de ajuste de decisión # Estados iniciales en equilibrio p = [133.333 / 3.0] * 3 perm = 50.0 c = [200.0 / 3.0] * 3 term = 6000.0 for step in range(steps): t = step * dt # Función de Demanda por Tramos if t < 10: demanda = 6000.0 elif t < 18: demanda = 6050.0 elif t < 24: demanda = 6050.0 - 100.0 * (t - 18) elif t < 36: demanda = 5450.0 elif t < 48: demanda = 6650.0 else: demanda = 7300.0 demolicion = term / tr_vida decision = max(0.0, (demanda - term) / ta_dec) + demolicion # Flujos intermedios f_p1 = p[0] / tr_plan f_p2 = p[1] / tr_plan f_p3 = p[2] / tr_plan f_perm = perm / tr_perm f_c1 = c[0] / tr_obra f_c2 = c[1] / tr_obra f_c3 = c[2] / tr_obra # Integración Euler p[0] += dt * (decision - f_p1) p[1] += dt * (f_p1 - f_p2) p[2] += dt * (f_p2 - f_p3) perm += dt * (f_p3 - f_perm) c[0] += dt * (f_perm - f_c1) c[1] += dt * (f_c1 - f_c2) c[2] += dt * (f_c2 - f_c3) term += dt * (f_c3 - demolicion) casas_en_obra = sum(c) print(f"=== RESULTADOS AL MES 100 ===") print(f"Casas en Construcción: {casas_en_obra:.2f}") print(f"Casas Terminadas: {term:.2f}") print(f"Demanda Final: {demanda:.2f}") simular_casas_examen() ``` --- ## 6. Auditoría de IA para la Semana 14 * **Alucinación Fatal de LLMs:** Los LLMs confunden sistemáticamente las unidades de tiempo de este enunciado: mezclan los **30 años** de demolición con los **meses** de construcción, dividiendo `term / 30` en lugar de `term / 360`. Esto genera una tasa de demolición 12 veces superior a la real, haciendo colapsar la cantidad de viviendas habitables a cero en menos de 15 meses. * **Filtro de Corrección:** Toda constante debe expresarse en la unidad base de tiempo del modelo ($[mes]$). Treinta años equivalen estrictamente a $30 \times 12 = 360 \text{ meses}$.