OR Project 21L6074
OR Project 21L6074
x1 = LpVariable("x1", lowBound=0)
x2 = LpVariable("x2", lowBound=0)
x3 = LpVariable("x3", lowBound=0)
x4 = LpVariable("x4", lowBound=0)
I1 = LpVariable("I1", lowBound=0)
I2 = LpVariable("I2", lowBound=0)
I3 = LpVariable("I3", lowBound=0)
model += 10 * x1 == 400 + I1
model += I1 + 10 * x2 == 600 + I2
model += I2 + 10 * x3 == 400 + I3
model += I3 + 10 * x4 == 500
Output:
Optimal Solution:
Objective Value (Z): $19,500.00
I1: 100.0, I2: 0.0, I3: 50.0
S1_minus: 50.0, S1_plus: 0.0
S2_minus: 0.0, S2_plus: 0.0
S3_minus: 0.0, S3_plus: 5.0
S4_minus: 0.0, S4_plus: 0.0
x1: 50.0, x2: 50.0, x3: 45.0, x4: 45.0
2) Example 2.4-5 (Bus Scheduling Model) Using Python Pulp
Code:
from pulp import LpProblem, LpMinimize, LpVariable, lpSum, LpStatus
model.solve()
print(f"Status: {LpStatus[model.status]}")
print(f"Total Buses: {model.objective.value()}")
print("Optimal Schedule:")
print(f"x1 = {x1.value()}, buses starting at 12:01 a.m.")
print(f"x2 = {x2.value()}, buses starting at 4:01 a.m.")
print(f"x3 = {x3.value()}, buses starting at 8:01 a.m.")
print(f"x4 = {x4.value()}, buses starting at 12:01 p.m.")
print(f"x5 = {x5.value()}, buses starting at 4:01 p.m.")
print(f"x6 = {x6.value()}, buses starting at 8:01 p.m.")
Output:
Status: Optimal
Total Buses: 26.0
Optimal Schedule:
x1 = 0.0, buses starting at 12:01 a.m.
x2 = 10.0, buses starting at 4:01 a.m.
x3 = 0.0, buses starting at 8:01 a.m.
x4 = 12.0, buses starting at 12:01 p.m.
x5 = 0.0, buses starting at 4:01 p.m.
x6 = 4.0, buses starting at 8:01 p.m.
3) Example 5.3-1 (SunRay Transport) Using Python Pulp
Code:
from pulp import LpProblem, LpMinimize, LpVariable, lpSum, value
costs = [
[10, 2, 20, 11],
[12, 7, 9, 20],
[4, 14, 16, 18]
]
num_sources = len(supply)
num_destinations = len(demand)
x = [[LpVariable(f"x{i + 1}{j + 1}", lowBound=0) for j in
range(num_destinations)] for i in range(num_sources)]
for i in range(num_sources):
model += lpSum(x[i][j] for j in range(num_destinations)) ==
supply[i]
for j in range(num_destinations):
model += lpSum(x[i][j] for i in range(num_sources)) == demand[j]
for i in range(num_sources):
for j in range(num_destinations):
quantity = min(supply[i], demand[j])
model += x[i][j] == quantity
supply[i] -= quantity
demand[j] -= quantity
model.solve()
print("Status:", pulp.LpStatus[model.status])
print("Objective Value (Total Cost):", value(model.objective))
for i in range(num_sources):
for j in range(num_destinations):
if value(x[i][j]) != 0:
print(f"Ship {x[i][j].name} = {value(x[i][j])}")
Output:
Status: Optimal
Objective Value (Total Cost): 520.0
Ship x11 = 5.0
Ship x12 = 10.0
Ship x22 = 5.0
Ship x23 = 15.0
Ship x24 = 5.0
Ship x34 = 10.0
model = pulp.LpProblem("Minimize_Telephones_Installation",
pulp.LpMinimize)
model.solve()
print("Status:", pulp.LpStatus[model.status])
print("Optimal Solution:")
for j in range(1, 9):
installation_status = "1.0 (Telephone Installed)" if
pulp.value(x[j]) == 1.0 else f"{pulp.value(x[j]):.1f}"
print(f"Intersection {j}: {installation_status}")
y1 = LpVariable("y1", cat="Binary")
y2 = LpVariable("y2", cat="Binary")
y3 = LpVariable("y3", cat="Binary")
prob.solve()
print("Status:", LpStatus[prob.status])
print("Optimal Solution:")
print("x1 =", value(x1))
print("x2 =", value(x2))
print("x3 =", value(x3))
print("y1 =", value(y1))
print("y2 =", value(y2))
print("y3 =", value(y3))
print("Total Cost =", value(prob.objective))
Output:
Status: Optimal
Optimal Solution:
x1 = 0.0
x2 = 0.0
x3 = 200.0
y1 = 0.0
y2 = 0.0
y3 = 1.0
Total Cost = 62.0
Using Excel Solver:
Answer Report:
Sensitivity Report: