Diseñar una Supply Chain sin proveedor en la Tierra: optimizando el sistema alimentario de una misión a Marte con Investigación de Operaciones
Un modelo MILP en Python + PuLP que convierte la resiliencia alimentaria en una variable matemática — inspirado en el desafío Mars to Table de la NASA.
¿Cómo diseñarías una supply chain si tu proveedor estuviera a millones de kilómetros? Sin entregas urgentes, sin proveedores alternativos, sin inventario infinito. Y si el sistema falla, no puedes llamar y pedir más.
Ese es el problema real detrás de cualquier misión de larga duración a Marte, y el que me llevó a construir un caso de estudio inspirado en el desafío Mars to Table de la NASA. Pero en lugar de preguntar "¿qué cultivo produce más?", cambié la pregunta a una de diseño de cadena de suministro:
En cuanto se plantea así, el problema deja de ser agrícola. Se convierte en Investigación de Operaciones.
El desafío Mars to Table
La NASA propuso Mars to Table como un desafío abierto de ingeniería de sistemas alimentarios: diseñar cómo alimentar a una tripulación durante una misión de larga duración a Marte con la mínima dependencia de reabastecimiento desde la Tierra. La mayoría de las respuestas al desafío se centran en agronomía — qué especie cultivar, con qué rendimiento por metro cuadrado. Yo quise abordarlo como se aborda un problema de diseño de red de suministro: no "¿qué cultivo rinde más?", sino "¿qué combinación de fuentes de alimento, en qué cantidad y en qué momento, minimiza el riesgo de depender de un proveedor a 225 millones de kilómetros?".
El modelo: un MILP de portafolio para 18 candidatos
Construí un modelo de Programación Lineal Entera Mixta (MILP) en Python con PuLP y el solver CBC, sobre una misión de referencia:
- 4 tripulantes, 16 semanas de planificación
- 13 cultivos fotosintéticos + 5 fuentes alternativas de proteína
- Restricciones de calorías (2.100 kcal/persona/día) y proteína (60 g/persona/día)
- Área cultivable máxima (100 m²) y consumo máximo de agua diario (2.000 L/día)
- Ciclos de maduración por especie (nada se cosecha antes de completar su ciclo)
- Variables binarias de activación por candidato y una restricción de diversidad mínima
- Dependencia decreciente de suministros desde la Tierra a lo largo de la misión
Las 18 fuentes de alimento evaluadas
El portafolio candidato combina cultivos fotosintéticos tradicionales con fuentes de proteína alternativa, cada una con su propio perfil de rendimiento, agua y ciclo de maduración:
| Grupo | Candidatos | Parámetro distintivo |
|---|---|---|
| Cultivos fotosintéticos (13) | hortalizas de hoja, tubérculos, leguminosas y cereales del set de datos del desafío | rendimiento de proteína/calorías por m², ciclo de maduración en días |
| Grillo (Acheta domesticus) | proteína alternativa | ≈4.500 kcal/kg |
| Tenebrio (Tenebrio molitor) | proteína alternativa | ≈5.500 kcal/kg |
| Micoproteína (tipo Quorn) | proteína alternativa | ≈1.100 kcal/kg |
| Hongo ostra (Pleurotus ostreatus) | proteína alternativa | ≈330 kcal/kg |
| Carne cultivada (in-vitro) | proteína alternativa | ≈2.500 kcal/kg |
Las densidades calóricas de las proteínas alternativas no vienen en el dataset original: se estimaron a partir de literatura (Finke 2002, USDA FoodData Central, FAO), documentado en docs/assumptions.md del repositorio.
Variables de decisión
Para cada candidato i y semana t:
Función objetivo
Minimiza dependencia de la Tierra como objetivo dominante, y usa el consumo de agua como criterio de desempate:
Restricciones del sistema
Además del balance nutricional semana a semana, el modelo impone seis restricciones estructurales que reflejan las limitaciones físicas reales de un hábitat marciano:
| Restricción | Qué limita |
|---|---|
| Área de cultivo | Σ área usada por los cultivos ≤ 100 m² cada semana |
| Presupuesto de agua | Σ agua consumida (cultivos + proteínas alternativas) ≤ 2.000 L/día |
| Capacidad de biorreactor | Σ biomasa de proteína alternativa ≤ 5 kg/día |
| Ciclo de maduración | x[i,t] = 0 mientras la especie i no complete su ciclo de crecimiento |
| Activación Big-M | x[i,t] ≤ M · y[i] — solo produce lo que fue seleccionado en el portafolio |
| Capacidad de suministro terrestre | δ[t] ≤ α(t) · demanda, con α(t) decreciendo linealmente de 100% (semana 1) a 0% (semana 16) |
Esta última restricción es clave para el realismo del modelo: obliga a la tripulación a volverse autosuficiente progresivamente, en vez de asumir que el sistema productivo funciona a plena capacidad desde el primer día.
La restricción que convierte resiliencia en matemática
Definí K como el número mínimo de especies activas en el portafolio:
K bajo
Menor dependencia de la Tierra y menos agua consumida. Pero si una especie falla, no hay respaldo: la nutrición colapsa.
K alto
Más especies activas absorben la pérdida de una cosecha. El costo: más agua y área para sostener la misma nutrición.
Implementación en Python (extracto)
Resultados y métricas
El modelo resultante tiene un tamaño manejable para CBC pero suficientemente realista para el análisis de trade-offs:
| Métrica | Valor |
|---|---|
| Candidatos totales | 18 (13 cultivos + 5 proteínas alternativas) |
| Horizonte de planificación | 16 semanas |
| Variables aproximadas | ~300 |
| Restricciones aproximadas | ~700 |
| Escenarios de diversidad evaluados | K ∈ {1, 3, 5, 7, 9, 11, 13, 15} |
Para cada escenario, el notebook registra dependencia de la Tierra, agua promedio consumida, área promedio usada, biomasa alternativa producida y número de especies activas. El patrón cualitativo es consistente con la intuición de supply chain: forzar más diversidad (K alto) generalmente exige más agua y área para sostener la misma nutrición, porque el solver ya no puede concentrarse en los candidatos más eficientes — el precio de la resiliencia.
| Grupo de candidatos | Tasa de reciclaje asumida |
|---|---|
| Cultivos hidropónicos (trigo, soya, papa, etc.) | 0.95 – 0.96 |
| Microalgas / macrófitas acuáticas | 0.94 |
| Cría de insectos (grillo, tenebrio) | 0.75 |
| Micoproteína | 0.80 |
| Hongo ostra | 0.65 |
| Carne cultivada | 0.70 |
Qué es dato y qué es supuesto
Un modelo de OR responsable distingue explícitamente entre datos medidos y estimaciones de ingeniería. El repositorio documenta esto en docs/assumptions.md, clasificando cada parámetro por nivel de confianza:
| Parámetro | Nivel de supuesto |
|---|---|
| Tamaño de tripulación, requerimiento calórico y proteico | Bajo — estándares NASA / OMS-FAO |
| Horizonte de planificación (16 semanas) | Medio — cubre el ciclo del cultivo más lento |
| Área máxima de cultivo, presupuesto de agua, capacidad de biorreactor | Alto — estimaciones ilustrativas, deben validarse contra el diseño real del hábitat |
| Densidad calórica de proteínas alternativas | Media — derivada de literatura, no del dataset original |
El modelo tampoco captura micronutrientes, fibra, palatabilidad ni variabilidad estocástica del rendimiento — limitaciones explícitas que el propio repositorio señala como líneas de trabajo futuro.
Por qué esto importa más allá de Marte
El mismo patrón — optimizar bajo escasez, sin proveedor de respaldo, con trade-offs explícitos entre costo y resiliencia — aparece en:
- Diseño de redes de suministro (Supply Chain Design)
- Optimización de inventario y ruteo
- Sistemas de energía y operaciones sostenibles
- Sistemas autónomos y logística espacial
Revisa el modelo completo
mars-to-table-optimization
Formulación matemática completa, código fuente, notebook de Colab con el análisis de sensibilidad y escenarios.
Si fueras responsable de diseñar esta supply chain para Marte, ¿qué incorporarías primero? ¿Incertidumbre en rendimientos, fallas de cosecha, costos de energía, tiempo de tripulación, resupply desde la Tierra, u optimización multiobjetivo? Déjalo en los comentarios.