Está en la página 1de 9

24/5/2020 Guia_01_SAGEMATH

Resolución Guía 1 con solver de SAGE MATH

Por: Juan José E. López


Fecha: 24-05-2020

Problema 1

Variables de Decisión:

X0 : cantidad de peras.
X1 : cantidad de uvas.

Función Objetivo:

M AX : Z = 20X0 + 30X1 ; Con Z el nivel de ingresos a maximizar

Restricciones:

X0 ≤ 60

X1 ≤ 50

X0 + 2X1 ≤ 120

X0 , X1 ≤ 0

localhost:8888/nbconvert/html/Desktop/UST-2-1/Modelos Deterministicos/Guia_01_SAGEMATH.ipynb?download=false 1/9


24/5/2020 Guia_01_SAGEMATH

In [54]: #Defino el objeto y le otorgo un nombre


pl1 = MixedIntegerLinearProgram(maximization=True)

#Defino las variables de decisión del PL


x0,x1 = pl1['x0'], pl1['x1']

#Defino la función objetivo


pl1.set_objective(20*x0+30*x1)

#Declaro las restricciones


pl1.add_constraint(x0<=60)
pl1.add_constraint(x1<=50)
pl1.add_constraint(x0+2*x1<=120)

#Vemos el objeto
pl1.show()

Maximization:
20.0 x_0 + 30.0 x_1

Constraints:
x_0 <= 60.0
x_1 <= 50.0
x_0 + 2.0 x_1 <= 120.0
Variables:
x_0 is a continuous variable (min=-oo, max=+oo)
x_1 is a continuous variable (min=-oo, max=+oo)

In [55]: #Aplicar el solver de SageMath


resultado_pl1 = pl1.solve()

#Obtengo los valores optimos de X_0 y X_1


x0_op= pl1.get_values(x0)
x1_op= pl1.get_values(x1)

#Guardo los resultados en un arreglo


#[Valor Z óptimo, X_0 Óptimo, X_1 Óptimo]
pl1_resultado = [resultado_pl1, x0_op, x1_op]

print(pl1_resultado)

[2100.0, 60.0, 30.0]

Problema 2

localhost:8888/nbconvert/html/Desktop/UST-2-1/Modelos Deterministicos/Guia_01_SAGEMATH.ipynb?download=false 2/9


24/5/2020 Guia_01_SAGEMATH

Variables de Decisión:

Xm b : número de micro-buses.
Yb a : número de autobuses articulados.

Función Objetivo:

M I N : Z = Xmb + 6Y ba ; Con Z el nivel de congestión vehicular a minimizar

Restricciones:

Xmb + 2Y ba ≤ 140

4Xmb + 16Y ba ≥ 640

Xmb + Y ba ≥ 100

Xmb , Y ba ≥ 0

In [56]: #Defino el objeto y le otorgo un nombre


pl2 = MixedIntegerLinearProgram(maximization=False)

x_mb,y_ba = pl2['x_mb'], pl2['y_ba']

#Defino la función objetivo


pl2.set_objective(x_mb+6*y_ba)

#Declaro las restricciones


pl2.add_constraint(x_mb+2*y_ba<=140)
pl2.add_constraint(4*x_mb+16*y_ba>=640)
pl2.add_constraint(x_mb+y_ba<=100)
pl2.add_constraint(x_mb>=0)
pl2.add_constraint(y_ba>=0)

#Vemos el objeto
pl2.show()

Minimization:
x_0 + 6.0 x_1

Constraints:
x_0 + 2.0 x_1 <= 140.0
-4.0 x_0 - 16.0 x_1 <= -640.0
x_0 + x_1 <= 100.0
- x_0 <= 0.0
- x_1 <= 0.0
Variables:
x_0 is a continuous variable (min=-oo, max=+oo)
x_1 is a continuous variable (min=-oo, max=+oo)

localhost:8888/nbconvert/html/Desktop/UST-2-1/Modelos Deterministicos/Guia_01_SAGEMATH.ipynb?download=false 3/9


24/5/2020 Guia_01_SAGEMATH

In [57]: #Aplicar el solver de SageMath


resultado_pl2 = pl2.solve()

#Obtengo los valores optimos de X_0 y X_1


x_mb_op= pl2.get_values(x_mb)
y_ba_op= pl2.get_values(y_ba)

#Guardo los resultados en un arreglo


#[Valor Z óptimo, X Óptimo, Y Óptimo]
pl2_resultado = [resultado_pl2, x_mb_op, y_ba_op]

print(pl2_resultado)

[200.0, 80.0, 20.0]

Problema 3

Variables de Decisión:

C : cantidad producida por Maule Sur.


S : cantidad producida por Maule Norte.

Función Objetivo:

M AX : Z = 3600C + 3600S ; Con Z el margen de venta a maximizar

Restricciones:

C + S ≥ 100

0.97C + 0.92S ≥ 0.94 ∗ (C + S )

11C + 15S ≤ 13(c + s)

C + S ≤ 220

C ≤ 150

S ≤ 180

C ≥ 30

S ≥ 40

localhost:8888/nbconvert/html/Desktop/UST-2-1/Modelos Deterministicos/Guia_01_SAGEMATH.ipynb?download=false 4/9


24/5/2020 Guia_01_SAGEMATH

In [65]: #Defino el objeto y le otorgo un nombre


pl3 = MixedIntegerLinearProgram(maximization=True)

c,s = pl3['c'], pl3['s']

#Defino la función objetivo


pl3.set_objective(3600*c+3600*s)

#Declaro las restricciones


pl3.add_constraint(c+s>=100)
pl3.add_constraint(0.97*c+0.92*s>=0.94*(c+s))
pl3.add_constraint(11*c+15*s<=13*(c+s))
pl3.add_constraint(5*c+15*s<=1500)
pl3.add_constraint(c+s<=220)
pl3.add_constraint(c<=150)
pl3.add_constraint(s<=180)
pl3.add_constraint(c>=30)
pl3.add_constraint(s>=40)

#Vemos el objeto
pl3.show()

Maximization:
3600.0 x_0 + 3600.0 x_1

Constraints:
- x_0 - x_1 <= -100.0
-0.030000000000000027 x_0 + 0.019999999999999907 x_1 <= 0.0
-2.0 x_0 + 2.0 x_1 <= 0.0
5.0 x_0 + 15.0 x_1 <= 1500.0
x_0 + x_1 <= 220.0
x_0 <= 150.0
x_1 <= 180.0
- x_0 <= -30.0
- x_1 <= -40.0
Variables:
x_0 is a continuous variable (min=-oo, max=+oo)
x_1 is a continuous variable (min=-oo, max=+oo)

In [66]: #Aplicar el solver de SageMath


resultado_pl3 = pl3.solve()

#Obtengo los valores optimos de C y S_


c_op= pl3.get_values(c)
s_op= pl3.get_values(s)

#Guardo los resultados en un arreglo


#[Valor Z óptimo, C Óptimo, S Óptimo]
pl3_resultado = [resultado_pl3, c_op, s_op]

print(pl3_resultado)

[720000.0, 150.0, 50.0]

localhost:8888/nbconvert/html/Desktop/UST-2-1/Modelos Deterministicos/Guia_01_SAGEMATH.ipynb?download=false 5/9


24/5/2020 Guia_01_SAGEMATH

Problema 4

Variables de Decisión:

XA : Participación en proyecto A.
XB : Participación en proyecto B.

Función Objetivo:

M AX : Z = 9000XA + 7500XB ; Con Z el nivel de ingresos a maximizar

Restricciones:

XA ≤ 1

XB ≤ 1

10000XA ≤ 11000

10000XB ≤ 6000 + 8000XA

8XA ≤ 14

5XA + 12XB ≤ 14

2XB ≤ 14

2 ∗ 10000XB ≤ 10000XA

XA , XB ≥ 0

localhost:8888/nbconvert/html/Desktop/UST-2-1/Modelos Deterministicos/Guia_01_SAGEMATH.ipynb?download=false 6/9


24/5/2020 Guia_01_SAGEMATH

In [70]: pl4 = MixedIntegerLinearProgram(maximization=True)

x_a, x_b = pl4['x_a'], pl4['x_b']

pl4.set_objective(9000*x_a+7500*x_b)

pl4.add_constraint(x_a<=1)
pl4.add_constraint(x_b<=1)
pl4.add_constraint(10000*x_a<=11000)
pl4.add_constraint(10000*x_b<=6000+8000*x_a)
pl4.add_constraint(8*x_a<=14)
pl4.add_constraint(5*x_a+12*x_b<=14)
pl4.add_constraint(2*x_b<=14)
pl4.add_constraint(2*10000*x_b<=10000*x_a)
pl4.add_constraint(x_a>=0)
pl4.add_constraint(x_b>=0)

pl4.show()

Maximization:
9000.0 x_0 + 7500.0 x_1

Constraints:
x_0 <= 1.0
x_1 <= 1.0
10000.0 x_0 <= 11000.0
-8000.0 x_0 + 10000.0 x_1 <= 6000.0
8.0 x_0 <= 14.0
5.0 x_0 + 12.0 x_1 <= 14.0
2.0 x_1 <= 14.0
-10000.0 x_0 + 20000.0 x_1 <= 0.0
- x_0 <= 0.0
- x_1 <= 0.0
Variables:
x_0 is a continuous variable (min=-oo, max=+oo)
x_1 is a continuous variable (min=-oo, max=+oo)

In [75]: #Aplicar el solver de SageMath


resultado_pl4 = pl4.solve()

#Obtengo los valores optimos de Xa y Xb


x_a_op= pl4.get_values(x_a)
x_b_op= pl4.get_values(x_b)

#Guardo los resultados en un arreglo


#[Valor Z óptimo, Xa Óptimo, Xb Óptimo]
pl4_resultado = [resultado_pl4, x_a_op, x_b_op]

print(pl4_resultado)

[12750.0, 1.0, 0.5]

Problema 5

localhost:8888/nbconvert/html/Desktop/UST-2-1/Modelos Deterministicos/Guia_01_SAGEMATH.ipynb?download=false 7/9


24/5/2020 Guia_01_SAGEMATH

Variables de Decisión:

W : Invesión en Recursos Humanos.


T : Inversión en Tecnología.

Función Objetivo:

M AX : Z = 1.5W + L ; Con Z la rentabilidad a maximizar

Restricciones:

40W + 20T ≤ 800

2W + 2T ≤ 50

100W + 200T ≤ 4500

T − 4W ≤ 0

T, W ≥ 0

In [78]: pl5 = MixedIntegerLinearProgram(maximization=True)

w, t = pl5['w'], pl5['t']

pl5.set_objective(1.5*w+t)

pl5.add_constraint(40*w+20*t<=800)
pl5.add_constraint(2*w+2*t<=50)
pl5.add_constraint(100*w+200*t<=4500)
pl5.add_constraint(t-4*w<=0)
pl5.add_constraint(w>=0)
pl5.add_constraint(t>=0)

pl5.show()

Maximization:
1.5 x_0 + x_1

Constraints:
40.0 x_0 + 20.0 x_1 <= 800.0
2.0 x_0 + 2.0 x_1 <= 50.0
100.0 x_0 + 200.0 x_1 <= 4500.0
-4.0 x_0 + x_1 <= 0.0
- x_0 <= 0.0
- x_1 <= 0.0
Variables:
x_0 is a continuous variable (min=-oo, max=+oo)
x_1 is a continuous variable (min=-oo, max=+oo)

localhost:8888/nbconvert/html/Desktop/UST-2-1/Modelos Deterministicos/Guia_01_SAGEMATH.ipynb?download=false 8/9


24/5/2020 Guia_01_SAGEMATH

In [79]: resultado_pl5 = pl5.solve()

w_op = pl5.get_values(w)
t_op = pl5.get_values(t)

pl5_resultado = [resultado_pl5, w_op, t_op]

print(pl5_resultado)

[32.5, 15.0, 10.0]

localhost:8888/nbconvert/html/Desktop/UST-2-1/Modelos Deterministicos/Guia_01_SAGEMATH.ipynb?download=false 9/9

También podría gustarte