ÎncepețiÎncepe gratuit

Exercițiu de combinare a constrângerilor

Lucrezi la un plan de distribuție pentru o rețea de depozite. Rețeaua are două depozite (W1 și W2), fiecare putând expedia trei tipuri diferite de produse (A, B și C). W1 este mic și poate expedia fie 10 produse A pe săptămână, fie 15 produse B pe săptămână, fie 20 de produse C pe săptămână. Obiectivul tău este să minimizezi costurile totale.

Un DataFrame Pandas numit demand este afișat în consolă și conține cererea lunară pentru fiecare produs. În plus, codul modelului PuLP este deja scris pentru inițializare, definirea variabilelor de decizie, a funcției obiectiv și a constrângerii care asigură că expedierea totală a fiecărui produs este egală cu cererea sa.

Acest exercițiu face parte din cursul

Analitică în lanțul de aprovizionare cu Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Completează codul pentru constrângerea care modelează limitările de expediere ale depozitului W1 pentru 4 săptămâni.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# Initialize, Define Decision Vars., Objective Function, and Constraints
model = LpProblem("Distribution Planning", LpMinimize)
wh = ['W1','W2']
prod = ['A', 'B', 'C']
X = LpVariable.dicts("ship", [(w, p, c) for c in cust for p in prod for w in wh], 
                     lowBound=0, cat="Integer")
model += lpSum([X[(w, p, c)]*costs.loc[(w, p), c]  for c in cust for p in prod for w in wh])
for c in cust:
    for p in prod:
        model += lpSum([X[(w, p, c)] for w in wh]) == demand.loc[p, c]

# Define Dependent Demand Constraints
model += ((1/10) * lpSum([X[('W1', 'A', c)] for c in cust]) 
          + ____ * lpSum([X[(____, ____, c)] for c in cust])
          + ____ * lpSum([X[(____, ____, ____)] for c in cust])) <= ____
Editează și rulează codul