¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Modelar una decisión: variables y restricciones

Después de esta lección: Puedo escribir una decisión como variables, un objetivo y restricciones.

Lección de 60 min1 comandoLaboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

¿Cuántas tandas de pan y de tartas hacer?

La investigación de operaciones usa las matemáticas para tomar la mejor decisión cuando los recursos son limitados. Esos recursos son el tiempo, el dinero o las materias primas. Sirve para ganar más, gastar menos y repartir mejor.

Una panadería de Valencia tiene un horno con 24 horas al día y 32 kilos de harina. Puede hacer pan o tartas. ¿Cuántas tandas de cada una le dan más beneficio?

Al final de esta lección

Nota

Puedo escribir una decisión como variables, un objetivo y restricciones.

Palabras clave

PalabraQué significaEjemplo
Variable de decisiónuna cantidad que tú eligesx = tandas de pan
Función objetivola cuenta que mide lo bueno que es un plan
Restricciónun límite que el plan debe respetar
Plan factibleun plan que cumple todas las restricciones
Modelola decisión escrita con números

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Una variable de decisión es lo que eliges

En la panadería eliges dos cantidades: cuántas tandas de pan haces y cuántas tandas de tartas. Cada una es una variable de decisión.

Las llamamos x e y. Una tanda es lo que cabe en el horno de una vez, y se puede hacer media tanda. Así x = 6 significa seis tandas de pan.

Ejemplo resuelto: gasto y beneficio de cada tanda

ProductoHorno (horas)Harina (kg)Beneficio (€)
Pan (x)2450
Tarta (y)3260
Disponible al día2432

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

El objetivo es lo que quieres maximizar

La función objetivo es la cuenta que mide cómo de bueno es un plan. Aquí es el beneficio: 50 € por cada tanda de pan y 60 € por cada tanda de tarta.

Se escribe 50 x + 60 y. Un objetivo se maximiza, como el beneficio, o se minimiza, como un coste.

Las restricciones son los límites del plan

Una restricción es un límite. El horno da 24 horas: 2 x + 3 y no puede pasar de 24. La harina da 32 kg: 4 x + 2 y no puede pasar de 32.

Tampoco existe una cantidad negativa de pan. Por eso x e y valen 0 o más, y eso también es una restricción.

Calcula horno, harina y beneficio de un plan

Comando
docker exec jupyter python3 -c "print(2 * 6 + 3 * 4, 4 * 6 + 2 * 4, 50 * 6 + 60 * 4)"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un error muy común

Advertencia

Mucha gente cree que cuantas más tandas, mejor. Pero cada tanda gasta horno y harina, y esos recursos se acaban. Un plan solo sirve si cumple todos los límites, y entre esos planes se busca el que más gana.

Un plan factible cumple todos los límites

Para comprobar un plan, sustituye x e y en cada restricción. El plan de 6 tandas de pan y 4 de tarta usa 24 horas de 24 y 32 kg de 32. Es factible y da 540 €.

El plan 5 y 5 promete 550 €, pero usa 25 horas y el horno solo tiene 24. No es factible, así que no vale.

Comprueba tres planes con una función

Código: python
def is_feasible(x, y):
    # El plan cumple todos los límites de la panadería
    return x >= 0 and y >= 0 and 2 * x + 3 * y <= 24 and 4 * x + 2 * y <= 32

for plan in [[6, 4], [5, 5], [8, 0]]:
    print(plan, is_feasible(plan[0], plan[1]))
# Prueba tu propio plan: ¿cuántas tandas de tarta caben si no haces pan?

Para ir más lejos: una dieta como modelo

El mismo esquema sirve para una dieta. Las variables son los gramos de cada alimento, el objetivo es el coste y las restricciones son las calorías y las proteínas mínimas. Escribe en una hoja las variables, el objetivo y dos restricciones de tu comida diaria.

Sobre este laboratorio y su código: Laboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.