PuLP modelleme temelleri

Python ile Tedarik Zinciri Analitiği

Aaren Stubberfield

Supply Chain Analytics Mgr.

PuLP nedir

  • PuLP, Python ile yazılmış Doğrusal (LP) ve Tamsayılı Programlama (IP) problemleri için bir modelleme çatısıdır

  • COIN-OR Foundation (Operations Research için Hesaplama Altyapısı) tarafından sürdürülür

  • PuLP, çözücülerle arayüz sağlar

    • CPLEX
    • COIN
    • Gurobi
    • vb.
Python ile Tedarik Zinciri Analitiği

PuLP örneği – kaynak çizelgeleme

  • 2 tür pasta satan butik bir pastane için danışmansın
  • Ay 30 gün
  • Varlıklar:
    • 1 fırın
    • 2 usta
    • 1 paketleyici – sadece 22 gün çalışıyor
Python ile Tedarik Zinciri Analitiği

PuLP örneği – kaynak çizelgeleme

  • 2 pasta türü için farklı kaynak ihtiyaçları:
Pasta A Pasta B
Fırın 0,5 gün 1 gün
Ustalar 1 gün 2,5 gün
Paket 1 gün 2 gün

.

Pasta A Pasta B
Kâr $20,00 $40,00
Python ile Tedarik Zinciri Analitiği

PuLP örneği – kaynak çizelgeleme

  • Amaç: Kârı Maksimize Et
    • Kâr = 20*A + 40*B
  • Koşullar:
    • A ≥ 0
    • B ≥ 0
    • 0,5A + 1B ≤ 30
    • 1A + 2,5B ≤ 60
    • 1A + 2B ≤ 22
Python ile Tedarik Zinciri Analitiği

PuLP için ortak modelleme süreci

  1. Modeli Başlat
  2. Karar Değişkenlerini Tanımla
  3. Amaç Fonksiyonunu Tanımla
  4. Kısıtları Tanımla
  5. Modeli Çöz
Python ile Tedarik Zinciri Analitiği

Modeli başlatma - LpProblem()

LpProblem(name='NoName', sense=LpMinimize)
  • name = çıktı .lp dosyasında kullanılan problem adı, ör. "My LP Problem"
  • sense = Amaç fonksiyonunu maksimize mi minimize mi edeceğin
    • Minimize = LpMinimize (varsayılan)
    • Maximize = LpMaximize
Python ile Tedarik Zinciri Analitiği

PuLP örneği – kaynak çizelgeleme

  1. Modeli Başlat
from pulp import *

# Initialize Class
model = LpProblem("Maximize Bakery Profits", LpMaximize)
Python ile Tedarik Zinciri Analitiği

Karar değişkenlerini tanımla - LpVariable()

LpVariable(name, lowBound=None, upBound=None, cat='Continuous', e=None)
  • name = çıktı .lp dosyasında kullanılan değişken adı
  • lowBound = Alt sınır
  • upBound = Üst sınır
  • cat = Değişken türü
    • Integer
    • Binary
    • Continuous (varsayılan)
  • e = Sütun tabanlı modelleme için kullanılır
Python ile Tedarik Zinciri Analitiği

PuLP örneği – kaynak çizelgeleme

  1. Sınıfı Başlat
  2. Değişkenleri Tanımla
# Define Decision Variables
A = LpVariable('A', lowBound=0, cat='Integer')
B = LpVariable('B', lowBound=0, cat='Integer')
Python ile Tedarik Zinciri Analitiği

PuLP örneği – kaynak çizelgeleme

  1. Sınıfı Başlat
  2. Değişkenleri Tanımla
  3. Amaç Fonksiyonunu Tanımla
# Define Objective Function
model += 20 * A + 40 * B
Python ile Tedarik Zinciri Analitiği

PuLP örneği – kaynak çizelgeleme

  1. Sınıfı Başlat
  2. Değişkenleri Tanımla
  3. Amaç Fonksiyonunu Tanımla
  4. Kısıtları Tanımla
# Define Constraints
model += 0.5 * A + 1 * B <= 30
model += 1 * A + 2.5 * B <= 60
model += 1 * A + 2 * B <= 22
Python ile Tedarik Zinciri Analitiği

PuLP örneği – kaynak çizelgeleme

  1. Sınıfı Başlat
  2. Değişkenleri Tanımla
  3. Amaç Fonksiyonunu Tanımla
  4. Kısıtları Tanımla
  5. Modeli Çöz
# Solve Model
model.solve()
print("Produce {} Cake A".format(A.varValue))
print("Produce {} Cake B".format(B.varValue))
Python ile Tedarik Zinciri Analitiği

PuLP örneği – kaynak çizelgeleme

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))
Python ile Tedarik Zinciri Analitiği

Özet

  • PuLP, Python için bir LP / IP modelleyicisidir
  • PuLP modelleme sürecinin 5 Adımını gözden geçirdik

    1. Modeli Başlat
    2. Karar Değişkenlerini Tanımla
    3. Amaç Fonksiyonunu Tanımla
    4. Kısıtları Tanımla
    5. Modeli Çöz
  • Kaynak Çizelgeleme Örneğini tamamladık

Python ile Tedarik Zinciri Analitiği

Hadi pratik yapalım!

Python ile Tedarik Zinciri Analitiği

Preparing Video For Download...