Dasar pemodelan PuLP

Analitik Rantai Pasok dengan Python

Aaren Stubberfield

Supply Chain Analytics Mgr.

Apa itu PuLP

  • PuLP adalah kerangka pemodelan untuk masalah Linear (LP) dan Integer Programming (IP) dalam Python

  • Dikelola oleh COIN-OR Foundation (Computational Infrastructure for Operations Research)

  • PuLP terhubung ke Solver

    • CPLEX
    • COIN
    • Gurobi
    • dll.
Analitik Rantai Pasok dengan Python

Contoh PuLP – penjadwalan sumber daya

  • Konsultan untuk toko kue butik yang menjual 2 jenis kue
  • Bulan 30 hari
  • Tersedia:
    • 1 oven
    • 2 pembuat kue
    • 1 pengemas – hanya bekerja 22 hari
Analitik Rantai Pasok dengan Python

Contoh PuLP – penjadwalan sumber daya

  • Kebutuhan sumber daya berbeda untuk 2 jenis kue:
Kue A Kue B
Oven 0,5 hari 1 hari
Pembuat 1 hari 2,5 hari
Pengemas 1 hari 2 hari

.

Kue A Kue B
Laba $20,00 $40,00
Analitik Rantai Pasok dengan Python

Contoh PuLP – penjadwalan sumber daya

  • Tujuan: Memaksimalkan laba
    • Laba = 20*A + 40*B
  • Dengan syarat:
    • A ≥ 0
    • B ≥ 0
    • 0,5A + 1B ≤ 30
    • 1A + 2,5B ≤ 60
    • 1A + 2B ≤ 22
Analitik Rantai Pasok dengan Python

Proses pemodelan umum untuk PuLP

  1. Inisialisasi Model
  2. Definisikan Variabel Keputusan
  3. Definisikan Fungsi Objektif
  4. Definisikan Kendala
  5. Selesaikan Model
Analitik Rantai Pasok dengan Python

Inisialisasi model - LpProblem()

LpProblem(name='NoName', sense=LpMinimize)
  • name = Nama masalah untuk keluaran file .lp, mis. "My LP Problem"
  • sense = Maksimalkan atau minimalkan fungsi objektif
    • Minimalkan = LpMinimize (default)
    • Maksimalkan = LpMaximize
Analitik Rantai Pasok dengan Python

Contoh PuLP – penjadwalan sumber daya

  1. Inisialisasi Model
from pulp import *

# Initialize Class
model = LpProblem("Maximize Bakery Profits", LpMaximize)
Analitik Rantai Pasok dengan Python

Definisikan variabel keputusan - LpVariable()

LpVariable(name, lowBound=None, upBound=None, cat='Continuous', e=None)
  • name = Nama variabel untuk keluaran file .lp
  • lowBound = Batas bawah
  • upBound = Batas atas
  • cat = Jenis variabel
    • Integer
    • Binary
    • Continuous (default)
  • e = Untuk pemodelan berbasis kolom
Analitik Rantai Pasok dengan Python

Contoh PuLP – penjadwalan sumber daya

  1. Inisialisasi Kelas
  2. Definisikan Variabel
# Define Decision Variables
A = LpVariable('A', lowBound=0, cat='Integer')
B = LpVariable('B', lowBound=0, cat='Integer')
Analitik Rantai Pasok dengan Python

Contoh PuLP – penjadwalan sumber daya

  1. Inisialisasi Kelas
  2. Definisikan Variabel
  3. Definisikan Fungsi Objektif
# Define Objective Function
model += 20 * A + 40 * B
Analitik Rantai Pasok dengan Python

Contoh PuLP – penjadwalan sumber daya

  1. Inisialisasi Kelas
  2. Definisikan Variabel
  3. Definisikan Fungsi Objektif
  4. Definisikan Kendala
# Define Constraints
model += 0.5 * A + 1 * B <= 30
model += 1 * A + 2.5 * B <= 60
model += 1 * A + 2 * B <= 22
Analitik Rantai Pasok dengan Python

Contoh PuLP – penjadwalan sumber daya

  1. Inisialisasi Kelas
  2. Definisikan Variabel
  3. Definisikan Fungsi Objektif
  4. Definisikan Kendala
  5. Selesaikan Model
# Solve Model
model.solve()
print("Produce {} Cake A".format(A.varValue))
print("Produce {} Cake B".format(B.varValue))
Analitik Rantai Pasok dengan Python

Contoh PuLP – penjadwalan sumber daya

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))
Analitik Rantai Pasok dengan Python

Ringkasan

  • PuLP adalah pemodel LP/IP di Python
  • Meninjau 5 langkah proses pemodelan PuLP

    1. Inisialisasi Model
    2. Definisikan Variabel Keputusan
    3. Definisikan Fungsi Objektif
    4. Definisikan Kendala
    5. Selesaikan Model
  • Menyelesaikan contoh Penjadwalan Sumber Daya

Analitik Rantai Pasok dengan Python

Ayo berlatih!

Analitik Rantai Pasok dengan Python

Preparing Video For Download...