Untitled
unknown
plain_text
9 months ago
1.8 kB
2
Indexable
from pulp import LpProblem, LpMinimize, LpVariable, lpSum
# Podaci
LDC = ["Budimpešta", "Rijeka", "Zagreb"]
Gradovi = ["Beograd", "Ljubljana", "Maribor", "Osijek", "Rijeka", "Sarajevo", "Split", "Šibenik", "Zadar", "Zagreb"]
# Troškovi transporta (EUR/paleta)
troskovi = {
"Budimpešta": [10, 80, 70, 70, 55, 90, 100, 96, 94, 90],
"Rijeka": [90, 100, 34, 42, 64, 10, 90, 42, 40, 38],
"Zagreb": [60, 70, 32, 35, 45, 30, 60, 38, 35, 34],
}
# Kapaciteti LDC-a (palete)
kapaciteti = {
"Budimpešta": 1400,
"Rijeka": 1600,
"Zagreb": 2800,
}
# Potražnja po gradovima (palete)
potraznja = {
"Beograd": 940,
"Ljubljana": 600,
"Maribor": 500,
"Osijek": 300,
"Rijeka": 300,
"Sarajevo": 480,
"Split": 500,
"Šibenik": 500,
"Zadar": 300,
"Zagreb": 820,
}
# Definicija problema
problem = LpProblem("Transportni_problem", LpMinimize)
# Varijable: broj paleta transportiranih iz LDC-a u gradove
x = {
(ldc, grad): LpVariable(f"x_{ldc}_{grad}", lowBound=0, cat="Continuous")
for ldc in LDC
for grad in Gradovi
}
# Ciljna funkcija: minimizacija troškova
problem += lpSum(troskovi[ldc][i] * x[(ldc, grad)] for ldc in LDC for i, grad in enumerate(Gradovi))
# Ograničenja: potražnja gradova mora biti zadovoljena
for grad in Gradovi:
problem += lpSum(x[(ldc, grad)] for ldc in LDC) == potraznja[grad]
# Ograničenja: kapaciteti LDC-a
for ldc in LDC:
problem += lpSum(x[(ldc, grad)] for grad in Gradovi) <= kapaciteti[ldc]
# Rješavanje problema
problem.solve()
# Ispis rezultata
print("Status:", problem.status)
print("Ukupni minimalni trošak:", problem.objective.value())
for ldc in LDC:
for grad in Gradovi:
if x[(ldc, grad)].value() > 0:
print(f"Iz {ldc} u {grad}: {x[(ldc, grad)].value()} paleta")
Editor is loading...
Leave a Comment