Untitled
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