solution_140a.py

#!/usr/bin/python3
# ====================================================================
# Truck transportation problem
# ---- x = number of type A trucks
# ----     refrigerated capacity     of 20 cubic meters
# ----     non-refrigerated capacity of 40 cubic meters
# ----     cost per kilometer is 30
# ---- y = number of type B trucks
# ----     refrigerated capacity     of 30 cubic meters
# ----     non-refrigerated capacity of 30 cubic meters
# ----     cost per kilometer is 40
# ----
# ---- ship refrigerated     3000 cubic meters
# ---- ship non-refrigerated 4000 cubic meters
# minimize cost
# -------------------------------------------------------------------
# Problem From : www.superprof.co.uk/resources/academic/maths/
#                linear-algebra/linear-programming/
#                linear-programming-problems-and-solutions.html
# ====================================================================

import pulp as pl

# ---- define variables

x = pl.LpVariable('x',0,None,cat='integer')

y = pl.LpVariable('y',0,None,cat='integer')

# ---- define problem

prob = pl.LpProblem('TransportationCompanyProblem', pl.LpMinimize)

# ---- add objective function (minimum cost per kilometer)

prob += 30*x + 40*y

# ---- add constraint refrigerated capacity required

prob += 20*x + 30*y >= 3000

# ---- add constraint non-refrigerated capacity required

prob += 40*x + 30*y >= 4000

# ---- solve problem (using default solver)

status = prob.solve()

print(f'status = {pl.LpStatus[status]}')

# ---- describe solution

x = pl.value(x)
y = pl.value(y)

print('solution from web site:')
print('    type A   = 51 trucks')
print('    type B   = 66 trucks')
print('    min cost = 4170 per kilometer')
print(f'{x} type A trucks')
print(f'{y} type B trucks')
print(f'min cost = {30*x + 40*y} per kilometer')