Untitled

 avatar
unknown
plain_text
22 days ago
1.8 kB
0
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")
Leave a Comment