## Introducción Este informe presenta un modelo de optimización lineal aplicado a la planificación de la siembra de cultivos en una finca, con el objetivo de maximizar las ganancias. Se abordan dos métodos para resolver el modelo: el método gráfico y el método simplex.

Contexto

Un agricultor tiene 480 hectáreas de tierra disponibles para sembrar dos tipos de cultivos: trigo y maíz. La producción de trigo genera una ganancia de 30€ por hectárea, mientras que la producción de maíz genera 40€ por hectárea. Sin embargo, existen restricciones de disponibilidad de mano de obra, ya que solo hay 800 horas de trabajo disponibles.

El objetivo es determinar cuántas hectáreas de trigo y maíz deben sembrarse para maximizar las ganancias, respetando las restricciones de terreno y trabajo.

Formulación del Problema

Variables de decisión

Definimos las siguientes variables: - \(x_1\): Hectáreas de trigo a sembrar. - \(x_2\): Hectáreas de maíz a sembrar.

Función objetivo

El objetivo es maximizar las ganancias: \[ Z = 30x_1 + 40x_2 \]

Restricciones

Las restricciones son las siguientes: 1. \(2x_1 + 3x_2 \leq 800\) (Restricción de horas de trabajo). 2. \(x_1 + x_2 \leq 480\) (Restricción de tierra disponible). 3. \(x_1, x_2 \geq 0\) (No podemos sembrar áreas negativas).

Solución por el Método Gráfico

Para resolver el problema gráficamente, trazamos las restricciones en el plano y buscamos la región factible.

Gráfico de las Restricciones

{r, echo=TRUE} # Cargar librerías library(ggplot2)

Definir las ecuaciones de las restricciones

x1 <- seq(0, 480, length.out = 100) restriccion1 <- (800 - 2 * x1) / 3 restriccion2 <- 480 - x1

Crear el gráfico

plot(x1, restriccion1, type = “l”, col = “red”, ylim = c(0, 300), xlab = “Hectáreas de trigo (x1)”, ylab = “Hectáreas de maíz (x2)”, main = “Región factible - Método Gráfico”) lines(x1, restriccion2, col = “blue”) abline(h = 0, v = 0)

Añadir la leyenda

legend(“topright”, legend = c(“2x1 + 3x2 ≤ 800”, “x1 + x2 ≤ 480”), col = c(“red”, “blue”), lty = 1)

Sombrear la región factible manualmente

polygon(c(0, 240, 480, 0), c(0, 160, 0, 0), col = rgb(0, 0, 1, 0.2), border = NA)

Puntos de intersección

punto1 <- c(0, 0) # Intersección en el origen punto2 <- c(240, 160) # Intersección entre las dos restricciones punto3 <- c(480, 0) # Restricción de tierra disponible con el eje x

Evaluar la función objetivo Z = 30x1 + 40x2

Z_punto1 <- 30 * punto1[1] + 40 * punto1[2] Z_punto2 <- 30 * punto2[1] + 40 * punto2[2] Z_punto3 <- 30 * punto3[1] + 40 * punto3[2]

Mostrar los resultados

data.frame(Punto = c(“punto1”, “punto2”, “punto3”), X1 = c(punto1[1], punto2[1], punto3[1]), X2 = c(punto1[2], punto2[2], punto3[2]), Z = c(Z_punto1, Z_punto2, Z_punto3))

Instalar y cargar lpSolve

install.packages(“lpSolve”)

library(lpSolve)

Coeficientes de la función objetivo

objetivo <- c(30, 40)

Matriz de restricciones

restricciones <- matrix(c(2, 3, 1, 1), nrow = 2, byrow = TRUE)

Lados derechos de las restricciones

rhs <- c(800, 480)

Dirección de las restricciones

direcciones <- c(“<=”, “<=”)

Resolver el problema

resultado <- lp(“max”, objetivo, restricciones, direcciones, rhs, compute.sens=TRUE)

Mostrar el resultado

resultado\(solution # Valores óptimos de x1 y x2 resultado\)objval # Valor máximo de la función objetivo

tiene menú contextual