Test: Descubre qué bootcamp es para ti

whatsapp keepcoding

3 Ejercicios de programación lineal con Python

| Última modificación: 27 de enero de 2025 | Tiempo de Lectura: 4 minutos

En ocasiones anteriores, he hablado acerca de la programación lineal y lo útil que es aprender a resolver sus problemas cuando queremos tomar una decisión, pero tenemos recursos limitados. Hoy, he querido traerte varios ejercicios de programación lineal con los que podrás poner en práctica lo que has aprendido. Créeme cuando te digo que resolver este tipo de ejercicios no sólo va a mejorar tus habilidades matemáticas y lógicas, sino que también te va a entrenar para resolver problemas en la vida real. Así que vamos a desglosarlos paso a paso y a solucionarlos con una herramienta tan útil como lo es Python.

3 Ejercicios de programación lineal con Python

¿Qué son los ejercicios de programación lineal?

Antes de comenzar, vale la pena recordar que los ejercicios de programación lineal son problemas matemáticos en los que debes optimizar una función objetivo (ya sea maximizar las ganancias o minimizar los costos) mientras respetas un conjunto de restricciones. Por lo general, estas restricciones representan limitaciones de recursos, como el tiempo, dinero o los materiales.

Cada ejercicio se compone de tres elementos básicos:

  1. Función objetivo: Lo que quieres optimizar.
  2. Restricciones: Las limitaciones del problema.
  3. Restricciones de no negatividad: Garantizan que las variables no tengan valores negativos para que los resultados sean posibles en la vida real. 

Ahora que lo tienes claro, vamos a la parte más interesante. Voy a presentarte tres problemas que deberás resolver utilizando Python. Pero, no tienes que preocuparte si todavía no te sientes preparado, porque te mostraré cómo puedes resolver los dos primeros, antes de pasar con el tercero.

Ejercicio 1: optimizar la producción en una fábrica

Tenemos el siguiente problema: Una fábrica produce dos productos, o sea, mesas y sillas. Cada mesa genera 50 € de ganancia y cada silla 30 €. La producción está limitada por:

  • Horas de trabajo: 4 horas por mesa y 2 horas por silla, con un total disponible de 240 horas.
  • Material disponible: 3 unidades por mesa y 1 unidad por silla, con un total de 100 unidades.

¿Cómo es el planteamiento del problema?

  1. Función objetivo: Maximizar las ganancias:

Z= 50x +30y

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

Donde X es el número de mesas y Y el número de sillas.

  1. Restricciones:

4x + 2Y ≤ 240 (Horas disponibles)

3x + Y ≤ 100 (material disponible)

x ≤ 0, y ≤0

¿Cuál es la solución en Python?

En el código, debes definir estas restricciones y usar el método solve() para encontrar los valores de X y Y que van a maximizar la ganancia total. 

from pulp import LpMaximize, LpProblem, LpVariable

# Crear el modelo
model = LpProblem(name="fabrica", sense=LpMaximize)

# Definir las variables
x = LpVariable(name="mesas", lowBound=0)
y = LpVariable(name="sillas", lowBound=0)

# Función objetivo
model += 50 * x + 30 * y, "Ganancia total"

# Restricciones
model += (4 * x + 2 * y <= 240, "Restricción de horas")
model += (3 * x + y <= 100, "Restricción de material")

# Resolver el problema
model.solve()

# Resultados
print(f"Mesas: {x.varValue}")
print(f"Sillas: {y.varValue}")
print(f"Ganancia máxima: {model.objective.value()}")

Después de resolver el problema, tenemos los siguientes resultados:

  1. El número de mesas a producir es de 40.
  2. El número de sillas a producir es de 20.
  3. La ganancia máxima que puedes obtener bajo estas condiciones es de 2600 €.

Ejercicio 2: planificar la producción de una granja

Ahora, pasemos a un problema diferente. Tenemos una granja que cultiva maíz y trigo. Cada hectárea de maíz genera 100 € de beneficio, y cada hectárea de trigo genera 120 €. La granja cuenta con:

  • Superficie total: 90 hectáreas.
  • Agua disponible: 300 unidades; el maíz requiere 3 unidades por hectárea, y el trigo, 2.
  • Trabajadores: 120 horas de trabajo; el maíz requiere 2 horas por hectárea y el trigo, 4.

¿Cómo es el planteamiento del problema?

  1. Función objetivo: Maximizar beneficios:

Z= 100x +120 y

Donde X es la superficie de maíz, mientras Y es la de trigo.

  1. Restricciones: 

x + y ≤ 90 (superficie total)

3x + 2y ≤ 300 (agua disponible)

2x + 4y ≤ 120 (trabajadores disponibles)

x ≤ 0, y ≤ 0

¿Cuál es la solución en Python?

from pulp import LpProblem, LpMaximize, LpVariable

# Crear el modelo
model = LpProblem(name="granja", sense=LpMaximize)

# Definir las variables
x = LpVariable(name="maiz", lowBound=0)
y = LpVariable(name="trigo", lowBound=0)

# Función objetivo
model += 100 * x + 120 * y, "Beneficio total"

# Restricciones
model += (x + y <= 90, "Superficie total")
model += (3 * x + 2 * y <= 300, "Agua disponible")
model += (2 * x + 4 * y <= 120, "Horas de trabajo")

# Resolver
model.solve()

# Resultados
print(f"Maíz: {x.varValue} hectáreas")
print(f"Trigo: {y.varValue} hectáreas")
print(f"Beneficio máximo: {model.objective.value()}")

De esta manera, los resultados que obtenemos al resolver este problema son los siguientes:

  1. El número de hectáreas que se van a dedicar al maíz es de 30.
  2. El número óptimo de hectáreas que se van a dedicar al trigo es 30.
  3. El beneficio máximo que puedes obtener bajo estas condiciones es de 6600 €.

Ejercicio 3: logística de transporte

Para nuestro último problema, tenemos una empresa de transporte que necesita llevar productos a dos ciudades. Cada camión que envía a la ciudad A genera 200 € de beneficio, y cada camión a la ciudad B genera 150 €. La empresa tiene:

  • Capacidad de camiones: 50 unidades.
  • Horas disponibles: 600 horas; cada camión a la ciudad A requiere 10 horas y cada uno a la ciudad B, 5 horas.

¿Cómo es el planteamiento del problema?

  1. Función objetivo: Maximizar beneficios:

Z= 200x + 150y

Donde X es el número de camiones a la ciudad A y Y a la ciudad B.

  1. Restricciones:

x + y ≤ 50 (capacidad de camiones)

10x + 5y ≤ 600 (horas disponibles)

x ≤ 0, y ≤ 0

¿Cuál es la solución en Python?

Ahora, es tu turno de resolver el ejercicio siguiendo el mismo esquema de los anteriores.

¿Por qué practicar con ejercicios de programación lineal?

Como has podido ver con estos ejemplos, resolver ejercicios de programación lineal es muy práctico porque te ayuda a tomar mejores decisiones, tanto en tu carrera como en tu vida diaria. Espero que estos ejemplos hayan sido útiles y te ayuden a entender el proceso y la lógica detrás de la programación lineal. 

¿Sabes qué más es una buena decisión? Unirte a nuestro Bootcamp Aprende a Programar desde Cero, donde aprenderás desde en pocos meses las bases de la programación y otras técnicas avanzadas que te abrirán puertas en el sector IT. Anímate a comenzar una nueva carrera como programador en un sector con salarios inigualables y oportunidades laborales por doquier. 

¡Da el paso que cambiará tu vida para siempre!

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a programar desde cero

Full Stack JR. Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado