Základy modelování v PuLP

Supply Chain Analytics v Pythonu

Aaren Stubberfield

Supply Chain Analytics Mgr.

Co je PuLP

  • PuLP je modelovací framework pro problémy lineárního (LP) a celočíselného programování (IP) napsaný v Pythonu

  • Spravován nadací COIN-OR (Computational Infrastructure for Operations Research)

  • PuLP spolupracuje se solvery

    • CPLEX
    • COIN
    • Gurobi
    • atd.
Supply Chain Analytics v Pythonu

Příklad PuLP – plánování zdrojů

  • Poradce pro pekárnu dortu prodávající 2 druhy dortů
  • 30denní měsíc
  • K dispozici:
    • 1 trouba
    • 2 pekaři
    • 1 balič – pracuje pouze 22 dní
Supply Chain Analytics v Pythonu

Příklad PuLP – plánování zdrojů

  • Různé nároky na zdroje pro 2 druhy dortů:
Dort A Dort B
Trouba 0,5 dne 1 den
Pekaři 1 den 2,5 dne
Balič 1 den 2 dny

.

Dort A Dort B
Zisk 20,00 $ 40,00 $
Supply Chain Analytics v Pythonu

Příklad PuLP – plánování zdrojů

  • Cílem je maximalizovat zisk
    • Zisk = 20*A + 40*B
  • Za podmínek:
    • A ≥ 0
    • B ≥ 0
    • 0,5A + 1B ≤ 30
    • 1A + 2,5B ≤ 60
    • 1A + 2B ≤ 22
Supply Chain Analytics v Pythonu

Typický proces modelování v PuLP

  1. Inicializace modelu
  2. Definice rozhodovacích proměnných
  3. Definice účelové funkce
  4. Definice omezení
  5. Řešení modelu
Supply Chain Analytics v Pythonu

Inicializace modelu – LpProblem()

LpProblem(name='NoName', sense=LpMinimize)
  • name = Název problému použitý ve výstupním souboru .lp, tj. "My LP Problem"
  • sense = Maximalizace nebo minimalizace účelové funkce
    • Minimalizace = LpMinimize (výchozí)
    • Maximalizace = LpMaximize
Supply Chain Analytics v Pythonu

Příklad PuLP – plánování zdrojů

  1. Inicializace modelu
from pulp import *

# Initialize Class
model = LpProblem("Maximize Bakery Profits", LpMaximize)
Supply Chain Analytics v Pythonu

Definice rozhodovacích proměnných – LpVariable()

LpVariable(name, lowBound=None, upBound=None, cat='Continuous', e=None)
  • name = Název proměnné použitý ve výstupním souboru .lp
  • lowBound = Dolní mez
  • upBound = Horní mez
  • cat = Typ proměnné
    • Integer
    • Binary
    • Continuous (výchozí)
  • e = Používá se pro sloupcové modelování
Supply Chain Analytics v Pythonu

Příklad PuLP – plánování zdrojů

  1. Inicializace modelu
  2. Definice proměnných
# Define Decision Variables
A = LpVariable('A', lowBound=0, cat='Integer')
B = LpVariable('B', lowBound=0, cat='Integer')
Supply Chain Analytics v Pythonu

Příklad PuLP – plánování zdrojů

  1. Inicializace modelu
  2. Definice proměnných
  3. Definice účelové funkce
# Define Objective Function
model += 20 * A + 40 * B
Supply Chain Analytics v Pythonu

Příklad PuLP – plánování zdrojů

  1. Inicializace modelu
  2. Definice proměnných
  3. Definice účelové funkce
  4. Definice omezení
# Define Constraints
model += 0.5 * A + 1 * B <= 30
model += 1 * A + 2.5 * B <= 60
model += 1 * A + 2 * B <= 22
Supply Chain Analytics v Pythonu

Příklad PuLP – plánování zdrojů

  1. Inicializace modelu
  2. Definice proměnných
  3. Definice účelové funkce
  4. Definice omezení
  5. Řešení modelu
# Solve Model
model.solve()
print("Produce {} Cake A".format(A.varValue))
print("Produce {} Cake B".format(B.varValue))
Supply Chain Analytics v Pythonu

Příklad PuLP – plánování zdrojů

from pulp import *

# Initialize Class
model = LpProblem("Maximize Bakery Profits",
                   LpMaximize)

# Define Decision Variables
A = LpVariable('A', lowBound=0,
                cat='Integer')
B = LpVariable('B', lowBound=0, 
                cat='Integer')

# Define Objective Function
model += 20 * A + 40 * B
# Define Constraints
model += 0.5 * A + 1 * B <= 30
model += 1 * A + 2.5 * B <= 60
model += 1 * A + 2 * B <= 22

# Solve Model
model.solve()
print("Produce {} Cake A".format(A.varValue))
print("Produce {} Cake B".format(B.varValue))
Supply Chain Analytics v Pythonu

Shrnutí

  • PuLP je LP / IP modelovací nástroj v Pythonu
  • Popsáno 5 kroků procesu modelování v PuLP

    1. Inicializace modelu
    2. Definice rozhodovacích proměnných
    3. Definice účelové funkce
    4. Definice omezení
    5. Řešení modelu
  • Dokončen příklad plánování zdrojů

Supply Chain Analytics v Pythonu

Pojďme si procvičit!

Supply Chain Analytics v Pythonu

Preparing Video For Download...