Narzędzia użytkownika

Narzędzia witryny


notatki:programowanie_liniowe

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Poprzednia rewizja po obu stronachPoprzednia wersja
notatki:programowanie_liniowe [2025/05/16 19:26] administratornotatki:programowanie_liniowe [2025/05/23 19:12] (aktualna) – [Rozwiązanie w Pythonie (biblioteka `PuLP`)] administrator
Linia 898: Linia 898:
 x(2,4) = 250.0 t x(2,4) = 250.0 t
 </code> </code>
 +
 +=== Kod bez dynamicznego generowania ograniczeń i transportów ===
 +
 +<code python>
 +import pulp
 +
 +# Tworzymy problem minimalizacji kosztów
 +problem = pulp.LpProblem("Transport_soli_i_piasku", pulp.LpMinimize)
 +
 +# Koszty transportu
 +koszty = {
 +    (1, 1): 2.00, (1, 2): 3.00, (1, 3): 1.50, (1, 4): 2.50,
 +    (2, 1): 4.00, (2, 2): 3.50, (2, 3): 2.50, (2, 4): 3.00
 +}
 +
 +# Zapotrzebowanie i pojemności
 +zapotrzebowanie_1 = 300
 +zapotrzebowanie_2 = 450
 +zapotrzebowanie_3 = 500
 +zapotrzebowanie_4 = 350
 +
 +pojemnosc_1 = 900
 +pojemnosc_2 = 750
 +
 +# Zmienne decyzyjne
 +x_11 = pulp.LpVariable("x_11", lowBound=0, cat='Continuous')
 +x_12 = pulp.LpVariable("x_12", lowBound=0, cat='Continuous')
 +x_13 = pulp.LpVariable("x_13", lowBound=0, cat='Continuous')
 +x_14 = pulp.LpVariable("x_14", lowBound=0, cat='Continuous')
 +x_21 = pulp.LpVariable("x_21", lowBound=0, cat='Continuous')
 +x_22 = pulp.LpVariable("x_22", lowBound=0, cat='Continuous')
 +x_23 = pulp.LpVariable("x_23", lowBound=0, cat='Continuous')
 +x_24 = pulp.LpVariable("x_24", lowBound=0, cat='Continuous')
 +
 +# Funkcja celu
 +problem += (
 +    2.00 * x_11 + 3.00 * x_12 + 1.50 * x_13 + 2.50 * x_14 +
 +    4.00 * x_21 + 3.50 * x_22 + 2.50 * x_23 + 3.00 * x_24
 +), "Koszt_calkowity"
 +
 +# Ograniczenia pojemności składnic
 +problem += x_11 + x_12 + x_13 + x_14 <= pojemnosc_1, "Pojemnosc_skladnicy_1"
 +problem += x_21 + x_22 + x_23 + x_24 <= pojemnosc_2, "Pojemnosc_skladnicy_2"
 +
 +# Ograniczenia zapotrzebowania dzielnic
 +problem += x_11 + x_21 == zapotrzebowanie_1, "Zapotrzebowanie_dzielnicy_1"
 +problem += x_12 + x_22 == zapotrzebowanie_2, "Zapotrzebowanie_dzielnicy_2"
 +problem += x_13 + x_23 == zapotrzebowanie_3, "Zapotrzebowanie_dzielnicy_3"
 +problem += x_14 + x_24 == zapotrzebowanie_4, "Zapotrzebowanie_dzielnicy_4"
 +
 +# Rozwiązanie problemu
 +problem.solve()
 +
 +# Wyniki
 +print("Status:", pulp.LpStatus[problem.status])
 +print("Minimalny koszt transportu:", pulp.value(problem.objective), "zł")
 +
 +print("x(1,1) =", x_11.varValue, "t")
 +print("x(1,2) =", x_12.varValue, "t")
 +print("x(1,3) =", x_13.varValue, "t")
 +print("x(1,4) =", x_14.varValue, "t")
 +print("x(2,1) =", x_21.varValue, "t")
 +print("x(2,2) =", x_22.varValue, "t")
 +print("x(2,3) =", x_23.varValue, "t")
 +print("x(2,4) =", x_24.varValue, "t")
 +
 +</code>
 +
 +
 ====== Transport truskawek ====== ====== Transport truskawek ======
  
notatki/programowanie_liniowe.1747416368.txt.gz · ostatnio zmienione: przez administrator