fork download
  1. import pulp
  2.  
  3. # Data biaya
  4. costs = [
  5. [45, 50, 55, 60, 65],
  6. [52, 48, 47, 55, 58],
  7. [50, 46, 54, 57, 56],
  8. [47, 53, 51, 49, 59],
  9. [55, 52, 50, 48, 46]
  10. ]
  11.  
  12. # Nama divisi dan proyek
  13. divisions = ['D1', 'D2', 'D3', 'D4', 'D5']
  14. projects = ['P1', 'P2', 'P3', 'P4', 'P5']
  15.  
  16. # Problem
  17. prob = pulp.LpProblem("Assignment_Problem", pulp.LpMinimize)
  18.  
  19. # Variabel
  20. x = pulp.LpVariable.dicts("x",
  21. ((i, j) for i in range(5) for j in range(5)),
  22. cat='Binary')
  23.  
  24. # Fungsi objektif
  25. prob += pulp.lpSum(costs[i][j] * x[i, j] for i in range(5) for j in range(5))
  26.  
  27. # Kendala: setiap divisi hanya satu proyek
  28. for i in range(5):
  29. prob += pulp.lpSum(x[i, j] for j in range(5)) == 1
  30.  
  31. # Kendala: setiap proyek hanya satu divisi
  32. for j in range(5):
  33. prob += pulp.lpSum(x[i, j] for i in range(5)) == 1
  34.  
  35. # Solve
  36. prob.solve()
  37.  
  38. # Output
  39. print("Status:", pulp.LpStatus[prob.status])
  40. print("Total Biaya Minimum =", pulp.value(prob.objective), "juta\n")
  41.  
  42. print("Penugasan Optimal:")
  43. for i in range(5):
  44. for j in range(5):
  45. if pulp.value(x[i, j]) == 1:
  46. print(f"{divisions[i]} -> {projects[j]} (Biaya: {costs[i][j]})")
Success #stdin #stdout 0.04s 25936KB
stdin
Standard input is empty
stdout
import pulp

# Data biaya
costs = [
    [45, 50, 55, 60, 65],
    [52, 48, 47, 55, 58],
    [50, 46, 54, 57, 56],
    [47, 53, 51, 49, 59],
    [55, 52, 50, 48, 46]
]

# Nama divisi dan proyek
divisions = ['D1', 'D2', 'D3', 'D4', 'D5']
projects = ['P1', 'P2', 'P3', 'P4', 'P5']

# Problem
prob = pulp.LpProblem("Assignment_Problem", pulp.LpMinimize)

# Variabel
x = pulp.LpVariable.dicts("x", 
                          ((i, j) for i in range(5) for j in range(5)),
                          cat='Binary')

# Fungsi objektif
prob += pulp.lpSum(costs[i][j] * x[i, j] for i in range(5) for j in range(5))

# Kendala: setiap divisi hanya satu proyek
for i in range(5):
    prob += pulp.lpSum(x[i, j] for j in range(5)) == 1

# Kendala: setiap proyek hanya satu divisi
for j in range(5):
    prob += pulp.lpSum(x[i, j] for i in range(5)) == 1

# Solve
prob.solve()

# Output
print("Status:", pulp.LpStatus[prob.status])
print("Total Biaya Minimum =", pulp.value(prob.objective), "juta\n")

print("Penugasan Optimal:")
for i in range(5):
    for j in range(5):
        if pulp.value(x[i, j]) == 1:
            print(f"{divisions[i]} -> {projects[j]} (Biaya: {costs[i][j]})")