You are on page 1of 22

Juan Antonio Roldán Díaz Raúl Sánchez Navarro

• Muchos problemas de administración y economía están relacionados con la optimización de una función sujeta a un sistema de igualdades o desigualdades. La función por optimizar es la función objetivo. El sistema de igualdades o desigualdades a las que está sujeta la función objetivo reflejan las restricciones impuestas a la solución (o soluciones) del problema. Los problemas de esta naturaleza se llaman problemas de programación matemática. En particular, aquellos donde la función objetivo y las restricciones se expresan como ecuaciones o desigualdades lineales se llaman problemas de programación lineal.

• Un problema de programación lineal consta de una función objetivo lineal por maximizar o minimizar, sujeta a ciertas restricciones en la forma de igualdades o desigualdades lineales.

define una región limitada por la línea recta o plano que se obtiene al considerar la restricción como una igualdad. Para ello notar que si una restricción es una desigualdad. se dibuja como una línea recta o un plano. • Determinar los puntos extremos del espacio de soluciones y evaluar la función objetivo en esos puntos. La intersección de todas las regiones determina la región factible.• Dibujar un sistema de coordenadas cartesianas en que las variables de decisión estén representadas por los ejes. . Si la restricción es una igualdad. • Dibujar en el sistema coordenado las restricciones del problema.

• Región factible: Conjunto de todas las soluciones factibles de un problema de Programación Lineal. si: • ∄𝑥1 ≠ 𝑥2 ∈ 𝒞: x = α𝑥1 + 1 − 𝛼 𝑥2 ∀𝛼 ∈ 0. Diremos que 𝑥 es un punto extremo cuando se pueda expresar como combinación lineal de dos puntos. es decir. 𝑥𝑖 ≥ 0 o bien 𝐹 = 𝑥 ∈ ℝ𝑛 : 𝐴𝑥 ≥ 𝑏. • Se nota 𝐹 = 𝑥 ∈ ℝ𝑛 : 𝐴𝑥 ≤ 𝑏. 𝑥𝑖 ≥ 0 • Punto extremo: Sean un conjunto convexo 𝒞 y un punto del mismo 𝑥 ∈ 𝒞 . o también cuando no exista un segmento rectilíneo contenido estrictamente en 𝒞.1 ⟹ 𝑥 es un punto extremo de 𝒞 .

max 𝑧 = 2𝑥1 + 𝑥2 𝑥1 + 𝑥2 ≤ 2 𝑥1 . 𝑥2 ≥ 0 .

Desplazar la curva de nivel paralelamente en la dirección del gradiente. • El óptimo satura al menos dos restricciones. Calcular el vector gradiente de la función objetivo.El proceso para resolverlo gráficamente es el siguiente: • • • • • Comprobar la linealidad de la función objetivo. . Representar la curva de nivel. Definir el conjunto de oportunidades. El último punto de la solución que choque con la recta será la solución óptima.

entendiendo por “mejor” el máximo si se está maximizando. 𝛻𝑓(𝑥) indica la dirección en la cual el campo 𝑓 varía más rápidamente y su módulo representa el ritmo de variación de 𝑓 en la dirección de dicho vector gradiente. El vector gradiente de 𝑓 evaluado en un punto genérico 𝑥 del dominio de 𝑓.• El conjunto de oportunidades de un problema es el conjunto 𝑆 formado por todas sus soluciones factibles. por lo que el conjunto de oportunidades es 𝑆 = ℝ𝑛 . . • Dado 𝑓: ℝ𝑛 ⟶ ℝ se llama curva de nivel 𝑘 ∈ ℝ de la función al subconjunto 𝐶𝑘 ⊂ ℝ𝑛 . o el mínimo si se está minimizando. Si un problema no tiene restricciones entonces todas las soluciones son factibles. La curva de nivel k de f es el conjunto de puntos del espacio ℝ𝑛 en los que f toma el valor constante k. El conjunto formado por las distintas curvas de nivel de f obtenidas al variar k se llama mapa de curvas de nivel de la función. • Una solución óptima es una solución factible que proporciona el “mejor” valor para la función objetivo. • El gradiente 𝛻𝑓 de un campo escalar 𝑓 es un campo vectorial.

max 𝑧 = 2𝑥1 + 𝑥2 𝑥1 + 𝑥2 ≤ 2 𝑥1 . 𝑥2 ≥ 0 .

.Resolución gráfica de un problema de programación lineal utilizando el programa Mathematica.

. Calcular el vector gradiente de la función objetivo. Representar la curva de nivel. Definir el conjunto de oportunidades. El último punto de la solución que choque con la recta será la solución óptima. Desplazar la curva de nivel paralelamente en la dirección del gradiente. • El óptimo satura al menos dos restricciones.El proceso para resolverlo gráficamente es el siguiente: • • • • • Comprobar la linealidad de la función objetivo.

• Las dibujamos mediante la función RegionPlot[ ]: RegionPlot[restrinciones.y0.-(7/5). {x.{y.-(7/5).21/5}] .• Definimos el conjunto de oportunidades como una lista de inecuaciones: 𝑥1 + 𝑥2 ≤ 2 𝑥1 . 𝑥2 ≥ 0 restrinciones={x0.x+y2}.21/5}.

{x.21/5}.Reals].-(7/5). • Dibujamos en color amarillo la región factible con la función RegionPlot[ ]: RFactible=RegionPlot[RFact.21/5}.-(7/5).y}.• Resolvemos la región factible mediante la función Reduce[ ]: RFact=Reduce[restrinciones.{y. PlotStyle->Yellow] . {x.

RFactible] .• Unimos los dos gráficos mediante la función Show[ ]: Show[Inecuaciones.

Para ello usamos la función D[ ] para hacer las derivadas parciales: vgradiente={D[fobjetivo. VectorPoints> {3. VectorStyle>RGBColor[1.-(7/5). D[fobjetivo. VectorScale ->Medium.0.{x. • Para dibujar la dirección del vector usamos la función VectorPlot[ ]: VGradiente=VectorPlot[vgradiente.21/5}.3}.x].• Definimos la función objetivo: fobjetivo=2*x+y.(7/5).21/5}.y]}.0]] 3 2 1 0 1 1 0 1 2 3 4 .{y. 4 • Definimos el vector gradiente.

• Unimos los gráficos mediante la función Show[ ]: Show[Inecuaciones.VGradiente] . RFactible.

j++. restig = Table[ restrinciones[[i. np}][[k]] == True. np = (n^2 . If[Table[Sum[(restrinciones /. For[j = i + 1. {j. y}][[1]]. n}]. {i. For[i = 1. PRFact = {}. puntos[[k]].1. 2]]. {i. n}] == n True. k++. 1. {x. k = k + 1]]. restig[[j]]}. .n)/2. 1]] == restrinciones[[i.n = Length[restrinciones]. puntos)[[i]][[j]]. k = 1. PRFact = Insert[PRFact. For[k = 1. 1. k <= np. i <= n . j <= n. 1. puntos = Range[np]. puntos[[k]] = Solve[{restig[[i]]. 1]]]. i++.

1.y}/.• Dibujamos los puntos extremos mediante la función ListPlot[ ]: PExtremos=ListPlot[{x.015]}] .PlotSty le-> {RGBColor[0. PointSize[0.0].PRFact.

0]. POpt=ListPlot[{x.evalp=fobjetivo/.PointSize[0.y}/.VOpt]. For[i=1.PlotStyle {RGBColor[1. VOpt=Max[evalp].Opt=Insert[Opt.0. Print["Valor Óptimo: ". Print["Puntos en los que se alcanza el óptimo: ". Opt={}.PRFact.1]]].02]}] .Opt].Opt.iLength[PRFact].PRFact[[i]].i++.If[evalp[[i] ]VOpt.

RFactible.• Unimos todos los gráficos anteriores: Show[Inecuaciones. VGradiente.PExtremos.POpt] .

{x.• Dibujamos la curva de nivel con la función Plot[ ]. vista[[3]]}. 0]] 1 6 4 2 1 2 2 3 4 4 . y]. PlotStyle -> RGBColor[1. vista[[1]]. 0. como la solución de la ecuación que forma la función objetivo igualada a la solución óptima del problema: CurvaNivel = Plot[y /. Solve[fobjetivo == VOpt.

• Unimos los gráficos nuevamente: Show[Inecuaciones.RFactible.CurvaNivel] .PExtremos. VGradiente. POpt.