Fundamentos de Investigación de Operaciones
"La IO no inventa la decisión correcta — la encuentra entre todas las matemáticamente posibles."
Qué vas a aprender en este capítulo
Antes de tocar Simplex o Excel Solver, hay que modelar el problema: traducir una situación verbal ("quiero maximizar mi ganancia con estos recursos") en una estructura matemática que una computadora pueda procesar. Este capítulo cubre:
- Qué es la IO y los problemas que ataca.
- La clasificación de modelos (te orienta para elegir qué técnica usar después).
- Las 6 fases de un estudio profesional.
- Formulación: del enunciado verbal a las ecuaciones, paso a paso, con un ejemplo de pupusería.
- Errores comunes que arruinan el modelo antes de empezar.
1.1 ¿Qué problema resuelve la IO?
💡 Intuición
Tenés una pupusería con dos productos: pupusa de queso (0.65). Cada queso usa 50 g de masa y 30 g de queso. Cada revuelta usa 50 g de masa, 20 g de queso y 30 g de chicharrón. Por día tenés 5 kg de masa, 2 kg de queso y 1.5 kg de chicharrón.
¿Cuántas de cada una hacés para maximizar tus ingresos del día?
Tu primer impulso es intuitivo: "hago revueltas, pagan más". Pero las revueltas consumen más recursos. Tal vez hago una mezcla. ¿Cuál? La respuesta no es obvia.
La IO formula esto matemáticamente y te da el óptimo exacto, no una corazonada. Ese es su valor.
Casos reales donde se aplica:
- Producción: cuánto fabricar de cada producto con recursos limitados.
- Logística: rutas óptimas de reparto (Google Maps, Amazon Last Mile).
- Finanzas: portafolio óptimo dado riesgo y rendimiento.
- Recursos humanos: asignación de turnos minimizando costos.
- Energía: despacho económico de centrales.
- Salud: programación de quirófanos.
📜 Historia
En 1939, el Reino Unido enfrentaba un problema brutal: cómo desplegar sus radares, cazas y baterías antiaéreas para defender la isla. Formaron equipos de matemáticos, físicos y biólogos para responder con modelos cuantitativos. Bautizaron la disciplina Operations Research.
En 1947, George Dantzig publicó el método Simplex, un algoritmo para resolver programas lineales. Es uno de los algoritmos más importantes del siglo XX: hizo posible resolver problemas que antes requerían cálculos manuales de meses.
En la actualidad, IO es el motor matemático detrás de logística (UPS, FedEx ahorran cientos de millones al año con IO), supply chain (Walmart, Amazon), finanzas (portafolios cuánticos) y energía (mercados eléctricos).
1.2 Anatomía de un modelo de optimización
📐 Fundamento
Todo modelo de IO tiene tres partes:
1. Variables de decisión
Las cantidades que vos controlás. En la pupusería: = cantidad de pupusas de queso, = cantidad de revueltas.
2. Función objetivo
Una expresión que maximizás o minimizás. Es función de las variables.
Pupusería: (ingresos del día).
3. Restricciones
Limitaciones que las variables deben cumplir. Pueden ser:
- Recursos limitados: (masa en g).
- Demanda mínima: (al menos 30 pupusas de queso).
- No negatividad (siempre): .
- Tecnológicas: (no más de 3 revueltas por queso).
Forma estándar
$$ \begin{aligned} \max ; & Z = c_1 x_1 + c_2 x_2 + \cdots + c_n x_n \ \text{s.a.} ; & a_{11} x_1 + \cdots + a_{1n} x_n \leq b_1 \ & a_{21} x_1 + \cdots + a_{2n} x_n \leq b_2 \ & \vdots \ & x_j \geq 0 \text{ para todo } j \end{aligned} $$
En notación matricial: sujeto a , .
Estandarizar antes de resolver es clave: los algoritmos esperan esta forma. Más detalle en cap. 2.
1.3 Tipos de problemas
📐 Fundamento
La técnica correcta depende del tipo del modelo:
| Característica | Tipo | Técnica |
|---|---|---|
| Función objetivo y restricciones lineales, | Programación lineal | Simplex |
| Igual, pero | Programación entera | Branch & Bound |
| Mezcla: algunas enteras, otras continuas | MIP (Mixed Integer) | Branch & Bound + LP relajado |
| Binaria | caso especial de entera | |
| Objetivo o restricciones no lineales | Programación no lineal | gradient descent, Newton |
| Múltiples objetivos | Multi-objetivo | Pareto, ponderación |
| Datos con incertidumbre | Estocástica | escenarios, recourse |
| Decisiones en el tiempo | Dinámica | DP, Markov decision processes |
En este libro cubrimos lineal, entera y estocástica básica. Lo demás es electivas de posgrado.
1.4 Las 6 fases de un estudio de IO
🛠️ Aplicado
Un estudio profesional sigue estas fases. Las fases 1 y 6 son las más importantes: si las hacés mal, el resto no importa.
1. Definir el problema (la fase descuidada)
Hablás con stakeholders, mediciás procesos, leés contratos. Salida: un documento de 1-2 páginas que define:
- Quién está afectado.
- Qué se quiere optimizar (ingresos, costos, tiempo).
- Qué controla vs. qué viene fijo.
- Qué restricciones legales/operativas existen.
- Qué pasa si no se hace nada (baseline).
2. Construir el modelo
Variables, objetivo, restricciones. Validás con el cliente: "¿este planteo refleja tu negocio?".
3. Recolectar datos
A menudo el paso más caro: , , no aparecen mágicamente. Estimás con datos históricos, mediciones, entrevistas.
4. Resolver
Software: Solver (Excel), scipy.optimize.linprog, PuLP, Pyomo, Gurobi, CPLEX. Comparás el modelo simple vs. una versión más completa para detectar bugs.
5. Análisis de sensibilidad
¿Qué pasa si un parámetro cambia? Si tu solución colapsa cuando cambia 1 %, no es robusta. Más detalle en cap. 3.
6. Implementar y monitorear
La solución hay que convertirla en acciones concretas + medir si los resultados predichos se cumplen. Si no, se reformula. Es un ciclo iterativo.
Lección clave: la matemática es ~30 % del trabajo. El resto es definición, datos, comunicación, implementación.
1.5 Ejemplo trabajado — Formulación completa
📝 Ejemplo trabajado
Enunciado: La pupusería La Esquina produce dos tipos de pupusa.
| Recurso | Queso (por pupusa) | Revuelta (por pupusa) | Disponible/día |
|---|---|---|---|
| Masa | 50 g | 50 g | 5000 g |
| Queso | 30 g | 20 g | 2000 g |
| Chicharrón | 0 g | 30 g | 1500 g |
| Precio venta | 0.65 | — |
Por contrato con la cooperativa, debe producir al menos 30 pupusas de queso/día.
Modelado:
-
Variables:
- = pupusas de queso/día (, en principio entero pero relajamos a continuo).
- = pupusas revueltas/día.
-
Objetivo: maximizar ingresos.
- Restricciones:
- Masa: .
- Queso: .
- Chicharrón: .
- Contrato: .
- No negatividad: .
Modelo completo:
$$ \begin{aligned} \max ; & Z = 0.50 x_1 + 0.65 x_2 \ \text{s.a.} ; & x_1 + x_2 \leq 100 \ & 30 x_1 + 20 x_2 \leq 2000 \ & x_2 \leq 50 \ & x_1 \geq 30 \ & x_1, x_2 \geq 0 \end{aligned} $$
En el próximo capítulo lo resolvemos. Spoiler: , , $Z = $46.00$.
1.6 Modelo en Python — preview
🛠️ Aplicado
Resolvemos el modelo de la pupusería con scipy.optimize.linprog:
from scipy.optimize import linprog
# linprog MINIMIZA, así que negamos el objetivo para maximizar.
c = [-0.50, -0.65] # coeficientes objetivo
# Ax <= b
A_ub = [
[ 1, 1], # masa
[30, 20], # queso
[ 0, 1], # chicharrón
[-1, 0], # x_1 >= 30 → -x_1 <= -30
]
b_ub = [100, 2000, 50, -30]
bounds = [(0, None), (0, None)]
res = linprog(c, A_ub=A_ub, b_ub=b_ub, bounds=bounds, method='highs')
print(res)
# x = [40, 40], -fun = 46.00
Para problemas grandes: Pyomo (más expresivo) o PuLP (más simple). Para problemas industriales: Gurobi o CPLEX (comerciales, mucho más rápidos).
1.7 Errores comunes
⚠️ Trampa común
Confundir "objetivo del problema" con "objetivo del modelo". El cliente dice "queremos vender más". ¿Vender más unidades? ¿Vender más en dólares? ¿Vender más a clientes nuevos? Cada interpretación lleva a un modelo distinto y a una solución distinta.
Tip: preguntá hasta que la respuesta sea medible y única. Escribilo en el documento de la fase 1 y hacé que el cliente firme. Sin eso, te van a culpar de "haber optimizado lo equivocado".
⚠️ Trampa común
Olvidar la no-negatividad. Olvidar es un error clásico en parciales: el modelo "permite" producir cantidades negativas, lo cual no tiene sentido físico, y el algoritmo devuelve resultados aparentemente correctos pero absurdos.
Tip: la no-negatividad casi siempre aplica. Excepción: si tu variable representa una diferencia (puede ser negativa) o un flujo neto (positivo en una dirección, negativo en la otra).
⚠️ Trampa común
Modelar a la perfección antes de resolver. "Voy a incluir todas las restricciones reales del negocio: vacaciones, mantenimiento, demanda estacional, costos variables por turno..." → terminás con un modelo con 5000 restricciones que nadie entiende ni puede validar.
Tip: empezá con el modelo más simple que represente el 80 % del problema. Resolvelo. Validá con el cliente. Después agregás complejidad. Iterar siempre gana a intentar perfecto al primer tiro.
1.8 Resumen visual
Problema verbal del cliente
│
┌────────▼────────┐
│ Fase 1: definir │ ← descuidada por los novatos, decisiva
└────────┬────────┘
│
┌────────▼────────┐
│ Variables │
│ Objetivo │ ← modelo matemático
│ Restricciones │
└────────┬────────┘
│
┌────────▼────────┐
│ Recolectar │ ← más caro de lo esperado
│ datos │
└────────┬────────┘
│
┌────────▼────────┐
│ Resolver │ ← Simplex (cap. 2)
└────────┬────────┘
│
┌────────▼────────┐
│ Sensibilidad │ ← cap. 3
└────────┬────────┘
│
┌────────▼────────┐
│ Implementar │ ← devolverlo a la realidad
│ + monitorear │
└─────────────────┘
1.9 Ejercicios
- Una panadería produce pan dulce (P) y pan francés (F). Por hornada usa 2 kg harina + 1 hora horno para P, y 1.5 kg harina + 0.5 h horno para F. Tiene 50 kg de harina y 30 h de horno/día. P se vende 3. Formulá el modelo (no lo resolvás todavía).
- Identificá las variables de decisión, objetivo y restricciones del siguiente caso: "Un microbús tiene 25 asientos. Asignar asalariados (tarifa 0.15) según política: al menos 5 estudiantes, no más de 20 asalariados".
- Clasificá: una empresa quiere asignar 8 ingenieros a 8 proyectos (cada uno a un proyecto). ¿Qué tipo de problema es? ¿Lineal, entera, binaria?
- Para tu carrera (sistemas, civil, industrial, admin), pensá en un problema real de tu campus o ciudad que pueda formularse como optimización. Listá variables, objetivo, 3 restricciones. No hace falta resolverlo.
1.10 Para profundizar
- Hillier & Lieberman, Introduction to Operations Research — la biblia.
- Winston, Operations Research: Applications and Algorithms.
- Render, Stair & Hanna, Métodos Cuantitativos para los Negocios — más amigable, orientado a AED.
- Coursera "Operations Research" (Berkeley, Stanford) — clases en video.
- Siguiente capítulo: Programación lineal y método Simplex.
1.11 Mini-proyecto integrador
🏗️ Proyecto del libro — Tu primer estudio de IO
Alcance: durante todo el libro vas a aplicar las técnicas a un problema real de tu vida o entorno. En este capítulo solo lo definís.
Entregables (cap. 1):
- Caso elegido — 1 párrafo describiendo el problema. Ejemplo: "Optimizar mi ruta semanal entre clases, gimnasio y trabajo minimizando tiempo total de viaje".
- Stakeholders — quién decide, quién se beneficia, quién paga.
- Variables candidatas — lista preliminar.
- Objetivo medible — una métrica con unidades (no "ser eficiente"; sí "minimizar km/semana").
- 3-5 restricciones que reconozcas.
- Plan de datos — qué necesitás medir/buscar.
Criterio de éxito: otro estudiante lee tu doc y puede continuar el modelo sin entrevistarte.
Tiempo estimado en este capítulo: 1-2 horas. Resto del libro: avanzarás un cap. de este proyecto en cada capítulo.
Definiciones nuevas: Investigación de Operaciones, modelo de optimización, variables de decisión, función objetivo, restricciones, programación lineal, programación entera, programación no lineal, optimización estocástica, fases de un estudio de IO, no-negatividad, análisis de sensibilidad.