1. Optimización lineal.

1.1. Objetivo(s).

🎯 Comprender el proceso de optimizar una función de múltiples variables sujeta a un conjunto de restricciones lineales.

🎯 Formular problemas de programación lineal a partir de situaciones prácticas.

🎯 Resolver el problema utilizando RStudio.

1.2. Definición.

📘 La optimización lineal, también llamada programación lineal, es una técnica matemática que permite encontrar el valor máximo o mínimo de una función objetivo, respetando un conjunto de restricciones lineales impuestas sobre las variables involucradas.

1.3. Propiedad.

Las principales etapas en un proceso de optimización lineal son:

1. Identificar las variables de decisión.

2. Formular la función objetivo a maximizar o minimizar.

3. Establecer las restricciones en forma de inecuaciones lineales.

4. Determinar la(s) solución(es) óptima(s) utilizando métodos gráficos o algorítmicos.

1.4. Práctica.

✏️ I. Leer atentamente cada situación, formular la función objetivo, las restricciones y responder las subpreguntas.

Ver situaciones.

1. Una empresa fabrica mochilas y bolsos. Cada mochila deja una ganancia de \(5\) y cada bolso de \(8\). Cada mochila consume \(2\) metros de tela y cada bolso \(3\) metros. Hay disponibles \(600\) metros de tela. Además, la producción de bolsos no puede superar el doble de la producción de mochilas.

a) Formula la función objetivo.

b) Establece las restricciones.

c) Determina el valor máximo de la función objetivo.

d) ¿Qué ocurre si la disponibilidad de tela aumenta en un \(20\%\)?

e) ¿Qué sucede si la producción máxima de bolsos disminuye en un \(30\%\)?

2. Un taller confecciona camisas y pantalones. Cada camisa requiere \(1,5\) horas de trabajo y cada pantalón \(2\) horas. Se dispone de un máximo de \(360\) horas de trabajo. Además, solo se pueden fabricar hasta \(150\) camisas. Cada camisa genera una ganancia de \(12\) y cada pantalón de \(18\).

a) Plantea la función objetivo.

b) Escribe las restricciones.

c) Calcula el valor máximo de la función objetivo.

d) ¿Cómo se modifican las restricciones si las horas de trabajo se reducen en un \(15\%\)?

e) ¿Qué sucede si ahora se permite fabricar hasta \(180\) camisas?

3. Una empresa produce estuches, mochilas y carteras. Cada estuche requiere \(0,5\) metros de material, cada mochila \(2\) metros y cada cartera \(1\) metro. Hay disponibles \(500\) metros de material. La ganancia es de \(4\) por estuche, \(10\) por mochila y \(8\) por cartera. La cantidad de mochilas no puede superar la cantidad de carteras. Se deben producir al menos \(50\) estuches.

a) Establece la función objetivo.

b) Plantea las restricciones correspondientes.

c) Calcula el valor máximo de la función objetivo.

d) ¿Qué cambia si el material disponible aumenta en un \(25\%\)?

e) ¿Cómo cambia el modelo si ahora se exige producir al menos \(100\) estuches?

4. Una empresa produce alimento balanceado para salmones utilizando harina de pescado, harina de soja, aceite de pescado y trigo. Cada kilogramo de harina de pescado requiere \(2\) unidades de materia prima, cada kilogramo de harina de soja requiere \(1,5\) unidades, cada litro de aceite de pescado \(0,8\) unidades y cada kilogramo de trigo \(1\) unidad. Se dispone de \(1.200\) unidades de materia prima.

a) Formula la función objetivo.

b) Plantea las restricciones.

c) Determina el valor máximo de la función objetivo.

d) ¿Qué sucede si la disponibilidad de materia prima aumenta en un \(15\%\)?

e) ¿Qué cambios ocurren si ahora se exige fabricar al menos \(300\) litros de aceite de pescado?

5. Una fábrica de autopartes produce tres tipos de componentes: ejes, transmisiones y chasis. Cada eje en la Línea \(1\) toma \(4\) horas de fabricación, mientras que en la Línea \(2\) toma \(3\) horas. Cada transmisión en la Línea \(1\) toma \(5\) horas y en la Línea \(2\) toma \(4\) horas. Cada chasis solo puede ser fabricado en la Línea \(2\) y su producción demora \(6\) horas. La empresa debe fabricar al menos \(100\) ejes, \(80\) transmisiones y \(60\) chasis.

a) Formula la función objetivo que minimice el tiempo total de producción.

b) Plantea las restricciones correspondientes.

c) Determina la combinación de producción que minimiza el tiempo total de fabricación.

d) ¿Qué sucede si la disponibilidad de horas aumenta en un \(10\%\)?

e) ¿Qué cambios se producen si ahora deben fabricarse al menos \(90\) transmisiones?

2. Optimización binaria.

2.1. Objetivo(s).

🎯 Comprender el proceso de optimizar problemas de decisión utilizando variables binarias (\(0\), \(1\)) en contextos prácticos.

🎯 Formular y resolver problemas de programación binaria aplicando técnicas de modelación matemática.

🎯 Implementar soluciones de programación binaria en RStudio utilizando paquetes especializados.

2.2. Definición.

📘 La optimización binaria es una variante de la programación lineal en la cual las variables de decisión solo pueden tomar valores de \(0\) o \(1\). Esta técnica es utilizada para seleccionar o descartar alternativas discretas (por ejemplo, proyectos de inversión, rutas de transporte, o asignación de recursos), maximizando o minimizando una función objetivo bajo un conjunto de restricciones.

2.3. Propiedad.

📐 Las etapas clave en un proceso de optimización binaria son:

1. Identificar las variables de decisión binarias \((0, 1)\).

2. Formular la función objetivo a maximizar o minimizar.

3. Establecer las restricciones, considerando que cada variable solo puede ser \(0\) o \(1\).

4. Implementar el modelo en un software de optimización, como RStudio, utilizando paquetes especializados como lpSolve.

2.4 Propiedad.

📐 Para resolver un problema de optimización binaria en RStuido, debemos utilizar el siguiente código:

# Cargar el paquete lpSolve
library(lpSolve)

# Coeficientes de la función objetivo.

coef_objetivo <- c(A1, A2, A3, A4, A5)

# Matriz de coeficientes de las restricciones.

coef_restriccion <- matrix(c(R1, R2, R3, R4, R5), nrow = 1)

# Límite de la restricción principal.

rhs <- L

# Dirección restricción principal.

dir <- "<="

# Resolver el problema de programación lineal binaria

solucion <- lp(
  direction = "max",
  objective.in = coef_objetivo,
  const.mat = coef_restriccion,
  const.dir = dir,
  const.rhs = rhs,
  all.bin = TRUE  
)
# Mostrar los resultados de la solución

cat("Valor de la función objetivo: ", solucion$objval, "\n")
# Mostrar los resultados de la solución

  cat("Valores de las variables de decisión:\n")
  for (i in 1:n) {
    cat("x_", i, "= ", solucion$solution[i], "\n")
  }

2.5. Ejemplo(s).

🔍 E.1. Una empresa constructora está evaluando la posibilidad de invertir en un conjunto de proyectos de desarrollo urbano. Cada proyecto tiene un costo y un beneficio estimado. El objetivo es seleccionar los proyectos que maximicen el beneficio total sin superar el presupuesto disponible de $800.000.000.

La información de los proyectos es la siguiente:

Proyecto Costo ($) Beneficio ($)
P1 300.000.000 150.000.000
P2 200.000.000 120.000.000
P3 250.000.000 180.000.000
P4 150.000.000 100.000.000
P5 100.000.000 80.000.000

La empresa solo puede seleccionar o no un proyecto, es decir, cada proyecto es una decisión binaria (0: No seleccionado, 1: Seleccionado).

Respuesta
# Cargar el paquete lpSolve
library(lpSolve)

# Coeficientes de la función objetivo (Beneficio de cada proyecto)
beneficios <- c(150000000, 120000000, 180000000, 100000000, 80000000)

# Coeficientes de la restricción principal (Costo de cada proyecto)
costos <- matrix(c(300000000, 200000000, 250000000, 150000000, 100000000), nrow = 1)

# Límite del presupuesto
presupuesto <- 800000000

# Tipo de restricción ("<=")
direccion <- "<="

# Resolver el problema de programación lineal binaria
solucion <- lp(
  direction = "max",
  objective.in = beneficios,
  const.mat = costos,
  const.dir = direccion,
  const.rhs = presupuesto,
  all.bin = TRUE
)
# Mostrar los resultados de la solución

cat("Valor de la función objetivo: ", solucion$objval, "\n")

Valor de la función objetivo: 5.1e+08

  cat("Valores de las variables de decisión:\n")

Valores de las variables de decisión:

  for (i in 1:5) {
    cat("P_", i, "= ", solucion$solution[i],";", "\n")
  }

P_ 1 = 1 ; P_ 2 = 0 ; P_ 3 = 1 ; P_ 4 = 1 ; P_ 5 = 1 ;

Al utilidad máxima se alcanza con los proyectos \(P1,P3,P4\) y \(P5\), la cual corresponde a \(\$510.000.000\)

🔍 E.1. Una empresa de transporte está planificando la distribución de mercancías a distintos centros de entrega. Cada ruta tiene un costo logístico y un tiempo estimado de entrega. El objetivo es seleccionar las rutas que minimicen el costo total sin superar el tiempo máximo de entrega de 120 horas.

La información de las rutas es la siguiente:

Ruta Costo ($) Tiempo (horas)
R1 180.000.000 40
R2 250.000.000 35
R3 100.000.000 25
R4 320.000.000 50
R5 150.000.000 30

La empresa solo puede seleccionar o no una ruta, es decir, cada ruta es una decisión binaria (0: No seleccionada, 1: Seleccionada).

Respuesta
# Cargar el paquete lpSolve
library(lpSolve)

# Coeficientes de la función objetivo 

beneficios <- c(180000000,150000000,100000000,320000000,150000000)

# Coeficientes de la restricción principal 
costos <- matrix(c(40,35,25,50,30), nrow = 1)

# Límite del presupuesto
presupuesto <- 120

# Tipo de restricción ("<=")
direccion <- "<="

# Resolver el problema de programación lineal binaria
solucion <- lp(
  direction = "max",
  objective.in = beneficios,
  const.mat = costos,
  const.dir = direccion,
  const.rhs = presupuesto,
  all.bin = TRUE
)
# Mostrar los resultados de la solución

cat("Valor de la función objetivo: ", solucion$objval, "\n")

Valor de la función objetivo: 6.5e+08

  cat("Valores de las variables de decisión:\n")

Valores de las variables de decisión:

  for (i in 1:5) {
    cat("R_", i, "= ", solucion$solution[i],";", "\n")
  }

R_ 1 = 1 ; R_ 2 = 0 ; R_ 3 = 0 ; R_ 4 = 1 ; R_ 5 = 1 ;

El costo mínimo se alcanza con las rutas \(R1,R4\) y \(R5\), el cual corresponde a \(\$650.000.000\)

2.6. Práctica

✏️ I. Estudiar las siguientes situaciones problemáticas sobre optimización binaria.

Ver problemas.

1. Una empresa de transporte desea minimizar los costos logísticos sin superar un presupuesto de \(\$400.000.000\).

Ruta Costo ($) Tiempo (horas)
R1 120.000.000 35
R2 180.000.000 50
R3 100.000.000 25
R4 160.000.000 30

2. Un agricultor quiere maximizar la producción sin exceder un área total de \(300\) hectáreas.

Parcela Área (hectáreas) Producción (toneladas)
A 100 80
B 120 90
C 90 60
D 50 40

3. Un banco desea minimizar el riesgo total sin invertir más de \(\$600.000.000\).

Proyecto Costo ($) Riesgo (%)
P1 250.000.000 7
P2 150.000.000 5
P3 200.000.000 8
P4 100.000.000 3

4. Un hospital busca maximizar el número de pacientes atendidos con un presupuesto de \(\$500.000.000\).

Área Costo ($) Pacientes Atendidos
Urgencias 150.000.000 120
Pediatría 100.000.000 80
Cirugía 200.000.000 150
Laboratorio 90.000.000 60

5. Un centro de investigación desea minimizar el uso de recursos sin afectar el impacto social de los proyectos. Recursos disponibles: \(400\) unidades.

Proyecto Recursos (unidades) Impacto_Social (puntos)
X 120 90
Y 150 100
Z 80 70
W 110 85