Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ecuación objetivo:
𝐹(𝑥, 𝑦) = 2𝑥 + 4𝑦 − 5
Restricciones:
𝑥−𝑦 ≤1
𝑥 + 2𝑦 ≥ 7
𝑥≥0
𝑦≤5
Recinto y vértices:
import pulp as pl #importa la libreria de programacion lineal
#variables
x = pl.LpVariable('x',0) #crea la variable x>=0
y = pl.LpVariable('y',upBound=5) #crea la variable y<=5
#restricciones
r1 = 1*x - 1*y <= 1
r2 = 1*x + 2*y >= 7
#ecuacion objetivo
a = 2 #coeficiente de x
b = 4 #coeficiente de y
c = -5 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Valor {nombre}={resultado} en el punto ({x.varValue},{y.varValue})")
𝑓 = fijos; 𝑝 = portátiles
0 ≤ 𝑓 ≤ 10
0 ≤ 𝑝 ≤ 15
4𝑓 + 10𝑝 ≤ 160
𝐹(𝑓, 𝑝) = 100𝑓 + 150𝑝
#variables
f = pl.LpVariable('f',0,10,cat="Integer")#crea la variable 0<=f<=10, int
p = pl.LpVariable('p',0,15,cat="Integer")#crea la variable 0<=p<=15, int
#restricciones
r1 = 4*f + 10*p <= 160 #horas de trabajo
#ecuacion objetivo
a = 100 #coeficiente de f
b = 150 #coeficiente de p
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Beneficio máximo={beneficio} euros, montando semanalmente:\n"
f"{f.varValue} ordenadores fijos\n"
f"{p.varValue} ordenadores portátiles")
3. Sea el sistema de inecuaciones siguiente:
𝑥 + 𝑦 ≤ 600; 𝑥 ≤ 500; 𝑦 ≤ 3𝑥; 𝑥 ≥ 0; 𝑦 ≥ 0
a) Represente gráficamente el conjunto de soluciones del sistema y calcule sus vértices.
b) Halle el punto del recinto anterior en el que la función 𝐹(𝑥, 𝑦) = 38𝑥 + 27𝑦 alcanza su valor máximo.
Ecuación objetivo:
𝑥 + 𝑦 ≤ 600
𝑦 ≤ 3𝑥
0 ≤ 𝑥 ≤ 500
𝑦≥0
Recinto y vértices:
#variables
x = pl.LpVariable('x',0,500)#crea la variable 0<=x<=10, int
y = pl.LpVariable('y',0)#crea la variable 0<=y<=15, int
#restricciones
r1 = x + y <= 600
r2 = y <= 3*x
#ecuacion objetivo
a = 38 #coeficiente de x
b = 27 #coeficiente de y
c = 0 #coeficiente independiente
#se añade la ecuación objetivo al problema
problema += a*x + b*y + c
#resolver
problema.solve()
#mostrar resultado
print(f"Valor máximo={beneficio} en el punto({x.varValue},{y.varValue})")
4. El estadio del Mediterráneo, construido para la celebración de los “Juegos Mediterráneos Almería 2005”, tiene una
capacidad de 20,000 espectadores. Para la asistencia a estos juegos se han establecido las siguientes normas: El
número de adultos no debe superar al doble del número de niños; el número de adultos menos el número de niños
no será superior a 5000. Si el precio de la entrada de niño es de 10 euros y la de adulto 15 euros ¿cuál es la composición
de espectadores que proporciona mayores ingresos? ¿A cuánto ascenderán esos ingresos?
𝑎 = adultos; 𝑛 = niños
Restricciones:
𝑎 + 𝑛 ≤ 20,000
𝑎 ≤ 2𝑛
𝑎 − 5𝑛 ≤ 5,000
𝑎≥0
𝑛≥0
Ecuación objetivo
#variables
A = pl.LpVariable('A',0,cat="Integer")#crea la variable 0<=A, int
n = pl.LpVariable('n',0,cat="Integer")#crea la variable 0<=n, int
#restricciones
r1 = A + n <= 20_000 #capacidad de espectadores
r2 = A <= 2*n
r3 = A + 5*n <= 5_000
#ecuacion objetivo
a = 15 #coeficiente de A
b = 10 #coeficiente de n
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Ingreso máximo={beneficio} euros, con espectadores compuestos por:\n"
f"{int(A.varValue)} adultos\n"
f"{int(n.varValue)} niños")
5. a) Represente la región definida por las siguientes inecuaciones y calcule sus vértices:
𝑥 𝑦
𝑥 + 2𝑦 ≥ 6; 𝑥 ≤ 10 − 2𝑦; + ≥ 1; 𝑥 ≥ 0
12 3
b) Calcule el máximo y el mínimo de la función 𝐹(𝑥, 𝑦) = 4 − 3𝑥 − 6𝑦 en la región anterior e indique en qué
puntos se alcanzan.
Ecuación objetivo:
𝐹(𝑥, 𝑦) = −3𝑥 − 6𝑦 + 4
Restricciones:
𝑥 + 2𝑦 ≥ 6
𝑥 ≤ 10 − 2𝑦
𝑥 𝑦
+ ≥1
12 3
𝑥≥0
import pulp as pl #importa la libreria de programacion lineal
#variables
x = pl.LpVariable('x',0) #crea la variable x>=0
y = pl.LpVariable('y') #crea la variable y
#restricciones
r1 = x + 2*y >= 6
r2 = x <= 10 - 2*y
r3 = x*1/12 + y*1/3 >= 1
#ecuacion objetivo
a = -3 #coeficiente de x
b = -6 #coeficiente de y
c = 4 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Valor {nombre}={resultado} en el punto ({x.varValue},{y.varValue})")
Ecuación objetivo:
𝐹(𝑥, 𝑦) = 2𝑥 + 3𝑦
Restricciones:
2𝑥 − 3𝑦 ≤ 6
𝑥 ≥ 2𝑦 − 4
𝑥+𝑦 ≤8
𝑥≥0
𝑦≥0
import pulp as pl #importa la libreria de programacion lineal
#variables
x = pl.LpVariable('x',0) #crea la variable x>=0
y = pl.LpVariable('y',0) #crea la variable y>=0
#restricciones
r1 = 2*x - 3*y <= 6
r2 = x >= 2*y - 4
r3 = x + y <= 8
#ecuacion objetivo
a = 2 #coeficiente de x
b = 3 #coeficiente de y
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Valor {nombre} = {resultado} en el punto ({x.varValue},{y.varValue})")
𝑏 = bombillas; 𝑓 = 𝑓𝑜𝑐𝑜𝑠
Ecuación objetivo:
𝐹(𝑏, 𝑓) = 𝑏 + 1.5𝑓
Restricciones:
𝑏 + 𝑓 ≤ 1000
0 ≤ 𝑏 ≤ 800
0 ≤ 𝑓 ≤ 600
import pulp as pl #importa la libreria de programacion lineal
#variables
B = pl.LpVariable('B',0,800,cat="Integer")#Bombillas 0<=B<=800, int
f = pl.LpVariable('f',0,600,cat="Integer")#focos 0<=f<=600, int
#restricciones
r1 = B + f <= 1000 #capacidad máxima de producción
#resolver
problema.solve()
#mostrar resultado
print(f"Beneficio máximo={beneficio} euros, fabricando:\n"
f"{int(B.varValue)} bombillas de bajo consumo\n"
f"{int(f.varValue)} focos halógenos")
8. Una imprenta local edita periódicos y revistas. Para cada periódico necesita un cartucho de tinta negra y otro de color,
y para cada revista uno de tinta negra y dos de color. Si sólo dispone de 800 cartuchos de tinta negra y 1100 de color,
y si no puede imprimir más de 400 revistas, ¿cuánto dinero ingresará como máximo, si vende cada periódico a 0.90 €
y cada revista a 1.20 €?
𝑝 + 𝑟 ≤ 800
𝑝 + 2𝑟 ≤ 1100
𝑝≥0
𝑟≥0
import pulp as pl #importa la libreria de programacion lineal
#variables
p = pl.LpVariable('p',0,cat="Integer")#periodico 0<=p, int
r = pl.LpVariable('r',0,cat="Integer")#revista 0<=r, int
#restricciones
r1 = p + r <= 800
r2 = p + 2*r <= 1100
#ecuacion objetivo
a = 0.9 #coeficiente de p
b = 1.2 #coeficiente de r
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Beneficio máximo = {beneficio} euros,imprimiendo:\n"
f"{int(p.varValue)} periódicos\n"
f"{int(r.varValue)} revistas")
9. Un laboratorio farmacéutico vende dos preparados, A y B, a razón de 40 y 20 euros el kg, respectivamente. Su
producción máxima es de 1000 kg de cada preparado. Si su producción total no puede superar los 1700 kg, ¿cuál es la
producción que maximiza sus ingresos? Calcule dichos ingresos máximos.
Ecuación objetivo:
0 ≤ 𝐴 ≤ 1000
0 ≤ 𝐵 ≤ 1000
𝐴 + 𝐵 ≤ 1700
import pulp as pl #importa la libreria de programacion lineal
#variables
A = pl.LpVariable('A',0,1000,cat="Integer")#preparadoA 0<=A<=1000, int
B = pl.LpVariable('B',0,1000,cat="Integer")#preparadoB 0<=B<=1000, int
#restricciones
r1 = A+ B <= 1700 #límite de producción total en kg
#resolver
problema.solve()
#mostrar resultado
print(f"Beneficio máximo = {int(beneficio)} euros, produciendo:\n"
f"{int(A.varValue)} kg de preparado A\n"
f"{int(B.varValue)} kg de preparado B")
10. Represente la región definida por las siguientes inecuaciones y calcule sus vértices:
𝑥 ≥ 0; 𝑦 ≥ 0; − 𝑥 + 2𝑦 ≤ 6; 𝑥 + 𝑦 ≤ 6; 𝑥 ≤ 4
Calcule el máximo de la función 𝐹(𝑥, 𝑦) = 2𝑥 + 2𝑦 + 1 en la región anterior e indique dónde se alcanza.
Ecuación objetivo:
𝐹(𝑥, 𝑦) = 2𝑥 + 2𝑦 + 1
Restricciones:
−𝑥 + 2𝑦 ≤ 6
𝑥+𝑦 ≤6
0≤𝑥≤4
𝑦≥0
import pulp as pl #importa la libreria de programacion lineal
#variables
x = pl.LpVariable('x',0,4)#crea la variable 0<=x<=4, int
y = pl.LpVariable('y',0)#crea la variable 0<=y, int
#restricciones
r1 = -1*x + 2*y <= 6
r2 = x + y <= 6
#ecuacion objetivo
a = 2 #coeficiente de x
b = 2 #coeficiente de y
c = 1 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Valor máximo={beneficio} en el punto({x.varValue},{y.varValue})")
11. Represente gráficamente el recinto definido por el siguiente sistema de inecuaciones:
𝑥 ≥ 3(𝑦 − 3); 2𝑥 + 3𝑦 ≤ 36; 𝑥 ≤ 15; 𝑥 ≥ 0; 𝑦 ≥ 0
Calcule los vértices del recinto.
Obtenga el valor máximo de la función 𝐹(𝑥, 𝑦) = 8𝑥 + 12𝑦 en este recinto e indique dónde se alcanza.
Ecuación objetivo:
𝐹(𝑥, 𝑦) = 8𝑥 + 12𝑦
Restricciones:
𝑥 ≥ 3𝑦 − 9
2𝑥 + 3𝑦 ≤ 36
0 ≤ 𝑥 ≤ 15
𝑦 ≥ 0
#variables
x = pl.LpVariable('x',0,15) #crea la variable 0<=x<=15
y = pl.LpVariable('y',0) #crea la variable y>=0
#restricciones
r1 = x >= 3*y - 9
r2 = 2*x + 3*y <= 36
#ecuacion objetivo
a = 8 #coeficiente de x
b = 12 #coeficiente de y
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Valor {nombre}={resultado} en el punto ({x.varValue},{y.varValue})")
#variables
x = pl.LpVariable('x',0,cat="Integer") #crea la variable x>=0
y = pl.LpVariable('y',0,cat="Integer") #crea la variable y>=0
#restricciones
r1 = x + y >= 6
r2 = x + y <= 18
r3 = x <= 2*y
#ecuacion objetivo
a = 1 #coeficiente de x
b = 0 #coeficiente de y
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Valor máximo en ({int(x.varValue)},{int(y.varValue)})\n"
f"puede haber como máximo {int(resultado)} hombres")
#variables
d = pl.LpVariable('d',0,cat="Integer")#crea la variable 0<=d, int
t = pl.LpVariable('t',0,cat="Integer")#crea la variable 0<=t, int
#restricciones
r1 = 2.5*d + 2*t <= 1750 #metros cuadrados de cristal
r2 = 0.3*d + 0.2*t <= 260 #tiempo de corte
r3 = d >= 2*t #siempre se fabrica el doble
#ecuacion objetivo
a = 1 #coeficiente de d
b = 1 #coeficiente de t
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Número total de lunas máximo={int(beneficio)}, fabricando semanalmente:\n"
f"{int(d.varValue)} lunas delanteras\n"
f"{int(t.varValue)} lunas traseras")
14. Un Ayuntamiento concede licencia para la construcción de una urbanización de a lo sumo 120 viviendas, de dos tipos
A y B. Para ello la empresa constructora dispone de un capital máximo de 15 millones de euros, siendo el coste de
construcción de la vivienda de tipo A de 100,000 euros y la de tipo B 300,000 euros. Si el beneficio obtenido por la
venta de una vivienda de tipo A asciende a 20,000 euros y por una de tipo B a 40,000 euros, ¿cuántas viviendas de
cada tipo deben construirse para obtener un beneficio máximo?
Ecuación objetivo:
𝐹(𝐴, 𝐵) = 20,000𝐴 + 40,000𝐵
Restricciones:
𝐴 + 𝐵 ≤ 120
100,000𝐴 + 300,000𝐵 ≤ 15,000,000
𝐴≥0
𝐵≥0
import pulp as pl #importa la libreria de programacion lineal
#variables
A = pl.LpVariable('A',0,cat="Integer")#crea la variable 0<=A, int
B = pl.LpVariable('B',0,cat="Integer")#crea la variable 0<=B, int
#restricciones
r1 = A + B <= 120 #maximo número de viviendas
r2 = 100_000*A + 300_000*B <= 15_000_000 #costo y límite de presupuesto
#resolver
problema.solve()
#mostrar resultado
print(f"Beneficio máximo = {int(beneficio)} euros, construyendo:\n"
f"{int(A.varValue)} viviendas tipo A\n"
f"{int(B.varValue)} viviendas tipo B")
15. Consideramos el recinto del plano limitado por las siguientes inecuaciones:
𝑦 − 𝑥 ≤ 4; 𝑦 + 2𝑥 ≥ 7; −2𝑥 − 𝑦 + 13 ≥ 0; 𝑥 ≥ 0; 𝑦 ≥ 0
a) Represente el recinto y calcule sus vértices.
b) Halle en qué puntos de ese recinto alcanza los valores máximo y mínimo la función 𝐹(𝑥, 𝑦) = 4𝑥 + 2𝑦 − 1.
Ecuación objetivo:
𝐹(𝑥, 𝑦) = 4𝑥 + 2𝑦 − 1
Restricciones:
𝑦−𝑥 ≤4
𝑦 + 2𝑥 ≥ 7
2𝑥 + 𝑦 ≤ 13
𝑥≥0
𝑦≥0
#variables
x = pl.LpVariable('x',0) #crea la variable x>=0
y = pl.LpVariable('y',0) #crea la variable y>=0
#restricciones
r1 = y - x <= 4
r2 = y + 2*x >= 7
r3 = 2*x + y <= 13
#ecuacion objetivo
a = 4 #coeficiente de x
b = 2 #coeficiente de y
c = -1 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Valor {nombre} = {resultado} en el punto ({x.varValue},{y.varValue})")
#variables
e = pl.LpVariable('e',0,cat="Integer")#leche entera 0<=e, int
d = pl.LpVariable('d',0,cat="Integer")#leche desnatada 0<=d, int
#restricciones
r1 = e + d <= 6_000 #capacidad de producción al día
r2 = d >= e*1/5 #al menos la quinta parte de las de leche entera
r3 = d <= 3*e #maximo el triple de la misma
#resolver
problema.solve()
#mostrar resultado
print(f"Beneficio máximo = {beneficio} euros, produciendo diariamente:\n"
f"{int(e.varValue)} botellas de leche entera\n"
f"{int(d.varValue)} botellas de leche desnatada")
17. De un problema de programación lineal se deducen las siguientes restricciones:
10 + 𝑦
4𝑥 + 3𝑦 ≥ 60; 𝑦 ≤ 30; 𝑥 ≤ ; 𝑥 ≥ 0; 𝑦 ≥ 0
2
a) Represente gráficamente la región factible del problema y calcule sus vértices.
b) Maximice en esa región la función objetivo 𝐹(𝑥, 𝑦) = 𝑥 + 3𝑦
c) ¿Pertenece el punto (11,10) a la región factible?
Ecuación objetivo:
𝐹(𝑥, 𝑦) = 𝑥 + 3𝑦
Restricciones:
4𝑥 + 3𝑦 ≥ 60
𝑥 ≤ 5 + 𝑦/2
0 ≤ 𝑦 ≤ 30
𝑥≥0
import pulp as pl #importa la libreria de programacion lineal
#variables
x = pl.LpVariable('x',0) #crea la variable 0<=x
y = pl.LpVariable('y',0,30) #crea la variable 0<=y<=30
#restricciones
r1 = 4*x + 3*y >= 60
r2 = x <= 5 + (1/2)*y
#ecuacion objetivo
a = 1 #coeficiente de x
b = 3 #coeficiente de y
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Valor máximo = {resultado} en el punto ({x.varValue},{y.varValue})")
18. De las restricciones que deben cumplir las variables x e y en un problema de programación lineal se deduce el siguiente
conjunto de inecuaciones:
2𝑦 − 𝑥 ≤ 8; 𝑥 + 𝑦 ≥ 13; 𝑦 + 4𝑥 ≤ 49; 𝑥 ≥ 0; 𝑦 ≥ 0
Represente gráficamente el recinto determinado por estas inecuaciones, determine los vértices del recinto y obtenga
los valores extremos de la función 𝐹(𝑥, 𝑦) = 3𝑥 − 4𝑦 + 12 en ese recinto e indique en qué punto o puntos se alcanza
cada extremo.
Ecuación objetivo:
𝐹(𝑥, 𝑦) = 3𝑥 − 4𝑦 + 12
Restricciones:
2𝑦 − 𝑥 ≤ 8
𝑥 + 𝑦 ≥ 13
4𝑥 + 𝑦 ≤ 49
𝑥≥0
𝑦≥0
import pulp as pl #importa la libreria de programacion lineal
#variables
x = pl.LpVariable('x',0) #crea la variable x>=0
y = pl.LpVariable('y',0) #crea la variable y>=0
#restricciones
r1 = 2*y -x <= 8
r2 = x + y >= 13
r3 = 4*x + y <= 49
#ecuacion objetivo
a = 3 #coeficiente de x
b = -4 #coeficiente de y
c = 12 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"{nombre} = {resultado} en el punto ({x.varValue},{y.varValue})")
problema("Máximo",pl.LpMaximize)#resuelve para valor maximo
problema("Mínimo",pl.LpMinimize)#resuelve para valor minimo
19. Un joyero fabrica dos modelos de anillos. El modelo A se hace con 1 gramo de oro y 1.5 gramos de plata. El modelo B
lleva 1.5 gramos de oro y 1 gramo de plata. El joyero sólo dispone de 750 gramos de cada metal y piensa fabricar, al
menos, 150 anillos del tipo B que ya tiene encargados. Sabiendo que el beneficio de un anillo del tipo A es de 50 € y
del tipo B es de 70 €, ¿cuántos anillos ha de fabricar de cada tipo para obtener el beneficio máximo y cuál será éste?
#variables
A = pl.LpVariable('A',0,cat="Integer")#anilloA 0<=A, int
B = pl.LpVariable('B',150,cat="Integer")#anilloB 150<=B, int
#restricciones
r1 = A + 1.5*B <= 750 #consumo de gramos de oro y disponibilidad
r2 = 1.5*A + B <= 750 #consumo de gramos de plata y disponibilidad
#resolver
problema.solve()
#mostrar resultado
print(f"Beneficio máximo = {int(beneficio)} euros, fabricando:\n"
f"{int(A.varValue)} anillos modelo A\n"
f"{int(B.varValue)} anillos modelo B")
20. a) Represente gráficamente a región determinada por las siguientes restricciones:
2𝑥 + 𝑦 ≤ 6; 4𝑥 + 𝑦 ≤ 10; − 𝑥 + 𝑦 ≤ 3; 𝑥 ≥ 0; 𝑦 ≥ 0
y determine sus vértices
b) Calcule el máximo y el mínimo de la función 𝐹(𝑥, 𝑦) = 4𝑥 + 2𝑦 − 3 en el recinto anterior e indique dónde se
alcanzan.
Ecuación objetivo:
𝐹(𝑥, 𝑦) = 4𝑥 + 2𝑦 − 3
Restricciones:
2𝑥 + 𝑦 ≤ 6
4𝑥 + 𝑦 ≤ 10
−𝑥 + 𝑦 ≤ 3
𝑥 ≥ 0
𝑦 ≥ 0
import pulp as pl #importa la libreria de programacion lineal
#variables
x = pl.LpVariable('x',0) #crea la variable x>=0
y = pl.LpVariable('y',0) #crea la variable y>=0
#restricciones
r1 = 2*x + y <= 6
r2 = 4*x + y <= 10
r3 = -1*x + y <= 3
#ecuacion objetivo
a = 4 #coeficiente de x
b = 2 #coeficiente de y
c = -3 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Valor {nombre}={resultado} en el punto ({x.varValue},{y.varValue})")