Documentos de Académico
Documentos de Profesional
Documentos de Cultura
21. Un nutricionista informa a un individuo que, en cualquier tratamiento que siga, no debe ingerir diariamente más de
240 mg de hierro ni más de 200 mg de vitamina B. Para ello están disponibles píldoras de dos marcas, P y Q. Cada
píldora de la marca P contiene 40 mg de hierro y 10 mg de vitamina B, y cuesta 6 céntimos de euro; cada píldora de la
marca Q contiene 10 mg de hierro y 20 mg de vitamina B, y cuesta 8 céntimos de euro. Entre los distintos tratamientos,
¿cuál sería el de máximo coste diario?
Marca P Marca Q Limite
Hierro 40 10 240
Vitamina B 10 20 200
Costo 0.06 0.08
Ecuación objetivo:
#variables
P = pl.LpVariable('P',0,cat="Integer")#crea la variable 0<=P, int
Q = pl.LpVariable('Q',0,cat="Integer")#crea la variable 0<=Q, int
#restricciones
r1 = 40*P + 10*Q <= 240 #dosis maxima de hierro
r2 = 10*P + 20*Q <= 200 #dosis maxima de vitamina B
#ecuacion objetivo
a = 0.06 #coeficiente de P
b = 0.08 #coeficiente de Q
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Costo máximo = {beneficio} euros al dia, comprando:\n"
f"{int(P.varValue)} pildoras P\n"
f"{int(Q.varValue)} pildoras Q")
22. Un pastelero dispone de 150 kg de harina, 22 kg de azúcar y 26 kg de mantequilla para hacer dos tipos de tartas, A y
B. Para hacer una hornada de tartas del tipo A, necesita 3 kg de harina, 1 de azúcar y 1 de mantequilla, mientras que
para hacer una hornada de tartas del tipo B 6 kg de harina, 0.5 kg de azúcar y 1 kg de mantequilla. Sabiendo que el
beneficio que se obtiene al vender una hornada del tipo A es de 20 € y de 30 € al vender una hornada del tipo B,
determine cuántas hornadas de cada tipo debe hacer y vender para maximizar sus beneficios.
3𝐴 + 6𝐵 ≤ 150
𝐴 + 0.5𝐵 ≤ 22
𝐴 + 𝐵 ≤ 26
import pulp as pl #importa la libreria de programacion lineal
#variables
A = pl.LpVariable('A',0,cat="Integer")#tartaA 0<=A, int
B = pl.LpVariable('B',0,cat="Integer")#tartaB 0<=B, int
#restricciones
r1 = 3*A + 6*B <= 150
r2 = A + 0.5*B <= 22
r3 = A + B <= 26
#ecuacion objetivo
a = 20 #coeficiente de A
b = 30 #coeficiente de B
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Beneficio máximo = {beneficio} euros al dia, horneando:\n"
f"{int(A.varValue)} tartas A\n"
f"{int(B.varValue)} tartas B")
23. Un agricultor posee 10 ha y decide dedicarlas al cultivo de cereales y hortalizas. Por las limitaciones de agua no puede
destinar más de 5 ha a hortalizas. El cultivo de cereales tiene un coste de 1000 €/ha y el de hortalizas de 3000 €/ha,
no pudiendo superar el coste total la cantidad de 16.000 €. El beneficio neto por ha de cereales asciende a 2000 € y el
de hortalizas a 8000 €. Halle la distribución de cultivos que maximiza el beneficio y calcule dicho máximo.
ℎ → ℎ𝑜𝑟𝑡𝑎𝑙𝑖𝑧𝑎𝑠
𝑐 → 𝑐𝑒𝑟𝑒𝑎𝑙𝑒𝑠
Ecuación objetivo:
𝐹(ℎ, 𝑐) = 8,000ℎ + 2,000𝑐
Restricciones:
Las hectáreas dedicadas a hortalizas deben ser como mínimo 0 y máximo 5
0≤ℎ≤5
𝑐≥0
3,000ℎ + 1,000𝑐 ≤ 16,000
#variables
h = pl.LpVariable('h',0,5,cat="Integer")#hortalizas 0<=h<=5, int
C = pl.LpVariable('C',0,cat="Integer")#cereales 0<=C, int
#restricciones
r1 = 3_000*h + 1_000*C <= 16_000
#ecuacion objetivo
a = 8_000 #coeficiente de h
b = 2_000 #coeficiente de C
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Beneficio máximo = {beneficio} euros, cultivando:\n"
f"{int(h.varValue)} ha de hortalizas\n"
f"{int(C.varValue)} ha de cereales")
24. Dibuje el recinto definido por:
𝑥 + 𝑦 ≥ 2; 𝑥 − 𝑦 ≤ 0; 𝑦 ≤ 4; 𝑥 ≥ 0
a) Determine el máximo y el mínimo de la función 𝐹(𝑥, 𝑦) = 𝑥 + 𝑦 en el recinto anterior
1 4
b) ¿Pertenece el punto (3 , 3) al recinto anterior?
Ecuación objetivo:
𝐹(𝑥, 𝑦) = 𝑥 + 𝑦
Restricciones:
𝑥+𝑦 ≥2
𝑥−𝑦 ≤0
𝑦≤4
𝑥≥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',upBound=4) #crea la variable y<=4
#restricciones
r1 = x + y >= 2
r2 = x - y <= 0
#ecuacion objetivo
a = 1 #coeficiente de x
b = 1 #coeficiente de y
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Valor {nombre}={resultado} en el punto ({x.varValue},{y.varValue})")
Ecuación objetivo:
𝐹(𝑥, 𝑦) = 5𝑥 + 15𝑦
Restricciones:
𝑥 + 3𝑦 ≤ 12
𝑥 𝑦
+ ≥1
3 5
𝑦≥1
𝑥≥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',1) #crea la variable y>=1
#restricciones
r1 = x + 3*y <= 12
r2 = (1/3)*x + (1/5)*y >= 1
#ecuacion objetivo
a = 5 #coeficiente de x
b = 15 #coeficiente de y
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Valor {nombre}={resultado} en el punto ({x.varValue},{y.varValue})")
110 ≤ 𝐿 ≤ 165
Para cubrirlo se tiene una combinación de envases A y B con capacidades de 1/3 y 1/4 L, respectivamente
1 1
𝐿= 𝐴+ 𝐵
3 4
Por lo tanto
1 1
110 ≤ 𝐴 + 𝐵 ≤ 165
3 4
Restricciones:
𝐴 𝐵
+ ≥ 110
3 4
𝐴 𝐵
+ ≤ 165
3 4
𝐴 ≥ 2𝐵
𝐵≥0
Ecuación objetivo:
𝐹(𝐴, 𝐵) = 1𝐴 + 0.9𝐵
Donde:
𝐹 → 𝐵𝑒𝑛𝑒𝑓𝑖𝑐𝑖𝑜 𝑚𝑎𝑥𝑖𝑚𝑜
𝐴 → 𝑛𝑢𝑚𝑒𝑟𝑜 𝑑𝑒 𝑒𝑛𝑣𝑎𝑠𝑒𝑠 𝑡𝑖𝑝𝑜 𝐴 𝑟𝑒𝑞𝑢𝑒𝑟𝑖𝑑𝑜𝑠
𝐵 → 𝑛𝑢𝑚𝑒𝑟𝑜 𝑑𝑒 𝑒𝑛𝑣𝑎𝑠𝑒𝑠 𝑡𝑖𝑝𝑜 𝐵 𝑟𝑒𝑞𝑢𝑒𝑟𝑖𝑑𝑜𝑠
import pulp as pl #importa la libreria de programacion lineal
#variables
A = pl.LpVariable('A',cat="Integer")#envaseA 0<=A, int
B = pl.LpVariable('B',0,cat="Integer")#envaseB 0<=B, int
#restricciones
r1 = (1/3)*A + (1/4)*B >= 110
r2 = (1/3)*A + (1/4)*B <= 165
r3 = A >= 2*B
#ecuacion objetivo
a = 1 #coeficiente de A
b = 0.9 #coeficiente de B
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Beneficio máximo = {beneficio} euros al dia, produciendo:\n"
f"{int(A.varValue)} envases A\n"
f"{int(B.varValue)} envases B")
27. Una empresa elabora dos productos, A y B. Cada unidad de A requiere 2 horas en una máquina y 5 horas en una
segunda máquina. Cada unidad de B necesita 4 horas en la primera máquina y 3 horas en la segunda máquina.
Semanalmente se dispone de 100 horas en la primera máquina y de 110 horas en la segunda. Si la empresa obtiene
un beneficio de 70 euros por cada unidad de A, y de 50 euros por cada unidad de B, ¿qué cantidad semanal de cada
producto debe producir con objeto de maximizar el beneficio total? ¿Cuál es ese beneficio?
2𝐴 + 4𝐵 ≤ 100
5𝐴 + 3𝐵 ≤ 110
𝐴≥0
𝐵≥0
import pulp as pl #importa la libreria de programacion lineal
#variables
A = pl.LpVariable('A',0,cat="Integer")#productoA 0<=A, int
B = pl.LpVariable('B',0,cat="Integer")#productoB 0<=B, int
#restricciones
r1 = 2*A + 4*B <= 100
r2 = 5*A + 3*B <= 110
#ecuacion objetivo
a = 70 #coeficiente de A
b = 50 #coeficiente de B
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Beneficio máximo = {beneficio} euros a la semana, produciendo:\n"
f"{int(A.varValue)} productos A\n"
f"{int(B.varValue)} productos B")
28. En un examen de matemáticas se propone el siguiente problema: “Indique dónde se alcanza el mínimo de la función
𝐹(𝑥, 𝑦) = 6𝑥 + 3𝑦 − 2 en la región determinada por las restricciones 2𝑥 + 𝑦 ≥ 6; 2𝑥 + 5𝑦 ≤ 30; 2𝑥 − 𝑦 ≤ 6
a) Resuelva el problema.
b) Si Ana responde que se alcanza en el (1,4), y Benito que lo hace en el (3,0), ¿Cuál de ellos tiene razón, si es que
alguno de ellos la tiene?
Ecuación objetivo:
𝐹(𝑥, 𝑦) = 6𝑥 + 3𝑦 − 2
Restricciones:
2𝑥 + 𝑦 ≥ 6
2𝑥 + 5𝑦 ≤ 30
2𝑥 − 𝑦 ≤ 6
import pulp as pl #importa la libreria de programacion lineal
#variables
x = pl.LpVariable('x') #crea la variable x>=0
y = pl.LpVariable('y') #crea la variable y<=5
#restricciones
r1 = 2*x + y >= 6
r2 = 2*x + 5*y <= 30
r3 = 2*x - y <= 6
#ecuacion objetivo
a = 6 #coeficiente de x
b = 3 #coeficiente de y
c = -2 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Valor {nombre}={resultado} en el punto ({x.varValue},{y.varValue})")
Ecuación objetivo:
𝐹(𝑥, 𝑦) = −2𝑥 − 𝑦
Restricciones:
𝑥+𝑦 ≤3
−𝑥 + 𝑦 ≤ 3
𝑥≤2
𝑦≥0
import pulp as pl #importa la libreria de programacion lineal
#variables
x = pl.LpVariable('x',upBound=2) #crea la variable x>=0
y = pl.LpVariable('y',0) #crea la variable y<=5
#restricciones
r1 = x + y <= 3
r2 = -1*x + y <= 3
#ecuacion objetivo
a = -2 #coeficiente de x
b = -1 #coeficiente de y
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Valor {nombre}={resultado} en el punto ({x.varValue},{y.varValue})")
2𝐴 + 3𝐵 ≤ 400
2𝐴 + 1𝐵 ≤ 300
𝐴 + 4𝐵 ≤ 400
import pulp as pl #importa la libreria de programacion lineal
#variables
A = pl.LpVariable('A',0,cat="Integer")#loteA 0<=A, int
B = pl.LpVariable('B',0,cat="Integer")#loteB 0<=B, int
#restricciones
r1 = 3*A + 3*B <= 400
r2 = 2*A + B <= 300
r3 = A + 4*B <= 400
#ecuacion objetivo
a = 20 #coeficiente de A
b = 40 #coeficiente de B
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Beneficio máximo = {beneficio} euros vendiendo:\n"
f"{int(A.varValue)} lotes A\n"
f"{int(B.varValue)} lotes B")
31. Se considera el recinto del plano determinado por los siguientes semiplanos:
4𝑥 − 𝑦 ≥ 4; 2𝑥 + 𝑦 ≤ 15; 3𝑦 − 𝑥 ≤ 10; 𝑦 ≥ 0
a) Represente el recinto y calcule sus vértices.
b) Calcule los puntos del recinto donde la función objetivo 𝐹(𝑥, 𝑦) = 4𝑥 − 7𝑦 alcanza el máximo y el mínimo.
c) ¿Entre qué valores varía la función en el recinto?
Ecuación objetivo:
𝐹(𝑥, 𝑦) = 4𝑥 − 7𝑦
Restricciones:
4𝑥 − 𝑦 ≥ 4
2𝑥 + 𝑦 ≤ 15
3𝑦 − 𝑥 ≤ 10
𝑦≥0
import pulp as pl #importa la libreria de programacion lineal
#variables
x = pl.LpVariable('x') #crea la variable x
y = pl.LpVariable('y',0) #crea la variable y>=0
#restricciones
r1 = 4*x - y >= 4
r2 = 2*x + y <= 15
r3 = 3*y - x <= 10
#ecuacion objetivo
a = 4 #coeficiente de x
b = 7 #coeficiente de y
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Valor {nombre}={resultado} en el punto ({x.varValue},{y.varValue})")
Ecuación objetivo:
𝐹(𝑥, 𝑦) = 8𝑥 + 12𝑦
Restricciones:
4𝑥 + 𝑦 ≤ 15
0 ≤ 𝑥 ≤ 2𝑦
0≤𝑦≤6
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,6) #crea la variable 0<=y<=6
#restricciones
r1 = 4*x + y <= 15
r2 = x <= 2*y
#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})")
Máximo almacenamiento
50 contenedores
Minimizar costos
Ecuación objetivo:
𝐹(𝐴, 𝐵) = 350𝐴 + 550𝐵
Restricciones:
2𝐴 + 𝐵 ≥ 50
3𝐴 + 5𝐵 ≥ 180
𝐴≥0
𝐵≥0
import pulp as pl #importa la libreria de programacion lineal
#variables
A = pl.LpVariable('A',0,cat="Integer")#contenedorA 0<=A, int
B = pl.LpVariable('B',0,cat="Integer")#contenedorB 0<=B, int
#restricciones
r1 = 2*A + B >= 50
r2 = 3*A + 5*B >= 180
#ecuacion objetivo
a = 350 #coeficiente de A
b = 550 #coeficiente de B
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Coste mínimo = {coste} euros, pidiendo:\n"
f"{int(A.varValue)} contenedores A\n"
f"{int(B.varValue)} contenedores B")
34. Dibuje el recinto del plano definido por las siguientes inecuaciones:
𝑦 ≥ 200 − 2𝑥; 𝑥 − 100 ≤ 3𝑦; 𝑥 + 2𝑦 ≤ 600; 𝑧 ≥ 0
Sabiendo que A(0,2), B(1,4), C(3,4), D(4,2) y E(2,1) son los vértices de una región factible, determine en ella el mínimo
y el máximo de la función 𝐹(𝑥, 𝑦) = 10𝑥 + 5𝑦 + 21 , e indique los puntos donde se alcanzan.
Restricciones:
𝑦 ≤ 2𝑥 + 2
1
𝑥 ≤− 𝑦+5
2
1
𝑦≥ 𝑥
2
1
𝑦 ≥− 𝑥+2
2
𝑦≤4
Ecuación objetivo:
𝐹(𝑥, 𝑦) = 10𝑥 + 5𝑦 + 21
import pulp as pl #importa la libreria de programacion lineal
#variables
x = pl.LpVariable('x') #crea la variable x
y = pl.LpVariable('y',upBound=4) #crea la variable y<=4
#restricciones
r1 = y <= 2*x +2
r2 = x <= -(1/2)*y + 5
r3 = y >= (1/2)*x
r4 = y >= -(1/2)*x + 2
#ecuacion objetivo
a = 10 #coeficiente de x
b = 5 #coeficiente de y
c = 21 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Valor {nombre}={resultado} en el punto ({x.varValue},{y.varValue})")
Ecuación objetivo:
𝐹(𝑐, 𝑝) = 30𝑐 + 50𝑝
Restricciones:
2𝑐 + 3𝑝 ≤ 1050
0 ≤ 𝑐 ≤ 250
0 ≤ 𝑝 ≤ 300
#variables
C = pl.LpVariable('C',0,250,cat="Integer")#camisas 0<=C<=250, int
P = pl.LpVariable('P',0,300,cat="Integer")#pantalones 0<=P<=300, int
#restricciones
r1 = 2*C + 3*P <= 1050
#ecuacion objetivo
a = 30 #coeficiente de C
b = 50 #coeficiente de P
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Beneficio máximo = {beneficio} euros vendiendo:\n"
f"{int(C.varValue)} camisas\n"
f"{int(P.varValue)} pantalones")
36. Un comerciante dispone de 1,200 euros para comprar dos tipos de manzanas A y B. Las del tipo A, las compra a 0.60
euros/kg y las vende a 0.90 euros/kg, mientras que las del tipo B, las compra a 1 euro/kg y las vende a 1.35 euros/kg.
Sabiendo que su vehículo a lo sumo puede transportar 1,500 kg de manzanas, ¿cuántos kilogramos de cada tipo
deberá adquirir para que el beneficio que obtenga sea máximo? ¿Cuál sería ese beneficio?
Ecuación objetivo:
𝐹(𝐴, 𝐵) = 0.30𝐴 + 0.35𝐵
Restricciones:
0.60𝐴 + 𝐵 ≤ 1,200
𝐴 + 𝐵 ≤ 1,500
𝐴≥0
𝐵≥0
import pulp as pl #importa la libreria de programacion lineal
#variables
A = pl.LpVariable('A',0,cat="Integer")#manzanaA 0<=A, int
B = pl.LpVariable('B',0,cat="Integer")#manzanaB 0<=B, int
#restricciones
r1 = 0.60*A + B <= 1200
r2 = A + B <= 1500
#ecuacion objetivo
a = 0.30 #coeficiente de A
b = 0.35 #coeficiente de B
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Beneficio máximo = {beneficio} euros comprando:\n"
f"{int(A.varValue)} manzanas A\n"
f"{int(B.varValue)} manzanas B")
37. Una fábrica de mesas está especializada en dos modelos: ovalado y octogonal. Para la fabricación de una mesa del
primer tipo se necesita 1 hora de trabajo y 2 kilos de material plástico. Para la fabricación de una mesa del segundo
tipo se necesitan 3 horas de trabajo y 3 kilos de material plástico. Diariamente la fábrica dispone de obreros para
realizar como máximo 36 horas de trabajo y un máximo de 60 kilos de material plástico. Además, el número de mesas
ovaladas no puede ser menor de 9 unidades. Por la venta de una mesa del primer tipo se obtienen 19 euros y por una
del segundo tipo, 30 euros.
a) Representa la región factible.
b) Halla cuántas mesas de cada tipo deben fabricarse diariamente para que con su venta se obtenga un beneficio
máximo.
c) Calcula ese beneficio máximo.
𝑥 + 3𝑦 ≤ 36
2𝑥 + 3𝑦 ≤ 60
𝑥≥9
𝑦≥0
import pulp as pl #importa la libreria de programacion lineal
#variables
x = pl.LpVariable('x',9,cat="Integer")#Ovalada 9<=x, int
y = pl.LpVariable('y',0,cat="Integer")#Octogonal 0<=y, int
#restricciones
r1 = x + 3*y <= 36
r2 = 2*x + 3*y <= 60
#ecuacion objetivo
a = 19 #coeficiente de x
b = 30 #coeficiente de y
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Beneficio máximo = {beneficio} euros a la semana, produciendo:\n"
f"{int(x.varValue)} mesas ovaladas\n"
f"{int(y.varValue)} mesas octogonales")
38. En una carpintería se construyen dos tipos de estanterías: grandes y pequeñas, y se tienen para ello 60 m2 de tableros
de madera. Las grandes necesitan 4m2 de tablero y las pequeñas 3m2. El carpintero debe hacer como mínimo 3
estanterías grandes, y el número de pequeñas que haga debe ser, al menos, el doble del número de las grandes. Si la
ganancia por cada estantería grande es de 60 euros y por cada una de las pequeñas es de 40 euros, ¿cuántas debe
fabricar de cada tipo para obtener el máximo beneficio?
𝑔 = grandes; 𝑝 = pequeñas
Ecuación objetivo:
4𝑔 + 3𝑝 ≤ 60
𝑝 ≥ 2𝑔
𝑔≥3
#variables
G = pl.LpVariable('G',3,cat="Integer")#tartaA 3<=G, int
P = pl.LpVariable('P',0,cat="Integer")#tartaB 0<=P, int
#restricciones
r1 = 4*G + 3*P <= 60
r2 = P >= 2*G
#ecuacion objetivo
a = 60 #coeficiente de G
b = 40 #coeficiente de P
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Beneficio máximo = {beneficio} euros fabricando:\n"
f"{int(G.varValue)} estanterias grandes\n"
f"{int(P.varValue)} estanterias pequeñas")
39. Un fabricante elabora dos tipos de anillos a base de oro y plata. Cada anillo del primer tipo precisa 4 g de oro y 2 de
plata, mientras que cada uno del segundo necesita 3 g de oro y 1 de plata. Sabiendo que dispone de 48 g de oro y 20
de plata y que los precios de venta de cada tipo de anillo son 150 euros el primero y 100 euros el segundo, ¿cuántos
anillos de cada tipo tendría que producir para obtener los ingresos máximos? ¿A cuánto ascenderían estos ingresos?
#variables
A = pl.LpVariable('A',0,cat="Integer")#modeloA 0<=A, int
B = pl.LpVariable('B',0,cat="Integer")#modeloB 0<=B, int
#restricciones
r1 = 4*A + 3*B <= 48
r2 = 2*A + B <= 20
#ecuacion objetivo
a = 150 #coeficiente de A
b = 100 #coeficiente de B
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Ingreso máximo = {beneficio} euros fabricando:\n"
f"{int(A.varValue)} anillos A\n"
f"{int(B.varValue)} anillos B")
40. En un problema de programación lineal, la región factible es la región acotada cuyos vértices son A(2,-1), B(-1,2), C(1,4)
y D(5,0). La función objetivo es la función 𝐹(𝑥, 𝑦) = 2𝑥 − 3𝑦 + 𝑘 , cuyo valor máximo, en dicha región, es igual a 19.
Calcule el valor de k e indique dónde se alcanza el máximo y dónde el mínimo.
𝐴(𝑥1 , 𝑦1 ); 𝐵(𝑥2 , 𝑦2 )
𝛥𝑦 𝑦2 − 𝑦1
𝑚= =
𝛥𝑥 𝑥2 − 𝑥1
𝑏 = (𝑦𝑛 ) − 𝑚(𝑥𝑛 )
𝑦 = 𝑚𝑥 + 𝑏
Recta AB
𝑦 = −𝑥 + 1
Recta BC
𝑦 =𝑥+3
Recta CD
𝑦 = −𝑥 + 5
Recta DA
1 5
𝑦= 𝑥−
3 3
Restricciones:
𝑦+𝑥 ≥1
𝑦−𝑥 ≤3
𝑥+𝑦 ≤5
1 5
𝑥−𝑦 ≤
3 3
Ecuación objetivo:
𝐹(𝑥, 𝑦) = 2𝑥 − 3𝑦 + 𝑘
import pulp as pl #importa la libreria de programacion lineal
F(2,-1)#punto A
F(-1,2)#punto B
F(1,4)#punto C
F(5,0)#punto D
#variables
x = pl.LpVariable('x') #crea la variable x
y = pl.LpVariable('y') #crea la variable y
#restricciones
r1 = y + x >= 1
r2 = y - x <= 3
r3 = x + y <= 5
r4 = (1/3)*x - y <= 5/3
#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} = {int(resultado)} + k en el punto "
f"({int(x.varValue)},{int(y.varValue)})")
Sustituyendo:
𝑥 ≥ 3𝑦
(4.5) ≥ 3(1.55)
4.5 ≥ 4.65 → 𝐹𝑎𝑙𝑠𝑜
Función objetivo:
F(x, y) = 2x − 3y
Restricciones:
𝑥 ≥ 3𝑦
𝑥≤5
𝑦≥1
import pulp as pl #importa la libreria de programacion lineal
#variables
x = pl.LpVariable('x',upBound=5) #crea la variable x<=5
y = pl.LpVariable('y',1) #crea la variable y>=1
#restricciones
r1 = x >= 3*y
#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
({int(x.varValue)},{int(y.varValue)})")
Ecuación objetivo:
𝐹(𝑥, 𝑦) = 2𝑥 + 12𝑦
Restricciones:
5𝑥 − 4𝑦 ≤ 20
𝑥 + 8𝑦 ≤ 48
𝑥≥2
𝑦≥0
import pulp as pl #importa la libreria de programacion lineal
#variables
x = pl.LpVariable('x',2) #crea la variable x>=2
y = pl.LpVariable('y',0) #crea la variable y>=0
#restricciones
r1 = 5*x - 4*y <= 20
r2 = x + 8*y <= 48
#ecuacion objetivo
a = 2 #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})")
Ecuación objetivo:
𝐹(𝐴, 𝐵) = 2000𝐴 + 3000𝐵
Restricciones:
𝐴 + 2𝐵 ≤ 500
2𝐴 + 𝐵 ≤ 400
0 ≤ 𝐵 ≤ 225
𝐴≥0
#variables
A = pl.LpVariable('A',0,cat="Integer")#tapizA 0<=A, int
B = pl.LpVariable('B',0,225,cat="Integer")#tapizB 0<=B<=225, int
#restricciones
r1 = A + 2*B <= 500
r2 = 2*A + B <= 400
#ecuacion objetivo
a = 2000 #coeficiente de A
b = 3000 #coeficiente de B
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Beneficio máximo = {beneficio} euros, fabricando:\n"
f"{int(A.varValue)} tapices A\n"
f"{int(B.varValue)} tapices B")
De seda queda
500 − (𝐴 + 2𝐵) =
500 − (100) + 2(200) = 0𝑘𝑔
De plata queda
400 − (2𝐴 + 𝐵) =
400 − 2(100) + (200) = 0𝑘𝑔
De oro queda
225 − 𝐵 =
225 − (200) = 25𝑘𝑔
44. Se desea maximizar la función F(x, y) = 14x + 8y en el dado por:
4
𝑦 + 3𝑥 ≥ 9; 𝑦 ≤ − 𝑥 + 14; 5𝑥 − 2𝑦 ≤ 15; 𝑥 ≥ 0
7
a) Represente la región factible del problema.
b) ¿Cuál es el valor máximo de F y la solución óptima del problema?
c) Obtenga un punto de la región factible que no sea el óptimo.
Ecuación objetivo:
F(x, y) = 14x + 8y
Restricciones:
𝑦 + 3𝑥 ≥ 9
4
𝑦 ≤ − 𝑥 + 14
7
5𝑥 − 2𝑦 ≤ 15
𝑥≥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 = y + 3*x >= 9
r2 = y <= -(4/7)*x + 14
r3 = 5*x -2*y <= 15
#ecuacion objetivo
a = 14 #coeficiente de x
b = 8 #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
A = pl.LpVariable('A',0,cat="Integer")#Caaper 0<=A, int
B = pl.LpVariable('B',0,cat="Integer")#Ena 0<=B, int
#restricciones
r1 = 3*A + 4*B <= 96
r2 = 7.5*A + 7*B <= 195
#ecuacion objetivo
a = 5600 #coeficiente de A
b = 5250 #coeficiente de B
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Beneficio máximo = {beneficio} euros, fabricando:\n"
f"{int(A.varValue)} Modelo Caaper\n"
f"{int(B.varValue)} Modelo Ena")
46. Un taller pirotécnico fabrica cohetes sencillos que luego vende a 2.70 euros el paquete de 10 y cohetes de colores que
vende a 3.60 el paquete de 10. Por problemas de mecanización no pueden fabricar al día más de 400 sencillos ni más
de 300 cohetes de colores, ni más de 500 cohetes en total. Se suponemos que lo vende todo.
a) Representa la región factible
b) ¿Cuántos cohetes de cada clase convendrá fabricar para que el beneficio sea máximo?
c) Calcula ese beneficio máximo.
𝐴 = sencillo; 𝐵 = colores
Ecuación objetivo:
𝐹(𝐴, 𝐵) = 2.70𝐴 + 3.60𝐵
Restricciones:
0 ≤ 𝐴 ≤ 400
0 ≤ 𝐵 ≤ 300
𝐴 + 𝐵 ≤ 500
import pulp as pl #importa la libreria de programacion lineal
#variables
A = pl.LpVariable('A',0,400,cat="Integer")#sencillo 0<=A<=400, int
B = pl.LpVariable('B',0,300,cat="Integer")#colores 0<=B<=300, int
#restricciones
r1 = A + B <= 500
#ecuacion objetivo
a = 2.70 #coeficiente de A
b = 3.60 #coeficiente de B
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Beneficio máximo = {beneficio} euros, fabricando:\n"
f"{int(A.varValue)} cohetes sencillos\n"
f"{int(B.varValue)} cohetes de colores")
47. Dadas las inecuaciones.
𝑦 ≤ 𝑥 + 5; 2𝑥 + 𝑦 ≥ −4; 4𝑥 ≤ 10 − 𝑦; 𝑦 ≥ 0
a) Represente el recinto que limitan
1
b) Obtenga el máximo y el mínimo de la función objetivo 𝐹(𝑥, 𝑦) = 𝑥 + 2 𝑦 en el recinto anterior, así como los
puntos donde se alcanzan.
Ecuación objetivo:
1
𝐹(𝑥, 𝑦) = 𝑥 + 𝑦
2
Restricciones:
𝑦 ≤𝑥+5
2𝑥 + 𝑦 ≥ −4
4𝑥 ≤ 10 − 𝑦
𝑦≥0
import pulp as pl #importa la libreria de programacion lineal
#variables
x = pl.LpVariable('x') #crea la variable x
y = pl.LpVariable('y',0) #crea la variable y<=0
#restricciones
r1 = y <= x + 5
r2 = 2*x + y >= -4
r3 = 4*x <= 10 - y
#ecuacion objetivo
a = 1 #coeficiente de x
b = 0.5 #coeficiente de y
c = 0 #coeficiente independiente
#resolver
problema.solve()
#mostrar resultado
print(f"Valor {nombre}={resultado} en el punto ({x.varValue},{y.varValue})")