Menyelesaikan Masalah Pemrograman Linear Menggunakan Library PuLP di Python

Pembukaan :

    Permasalahan Pemrograman linear dalam kehidupan sehari-hari kerap kita ketemui baik disadari ataupun tidak disadari. Dalam perhitungan untuk menyelesaikan masalah pemrograman linear kerap memakan waktu yang sangat banyak. Semisal penggunaan metode simpleks, banyak tabel digunakan dalam perhitungannya. Semisal lagi ketika menggunakan grafik banyak gambar yang digunakan untuk membuat grafik yang dituju. Hadirnya komputer membuat perhitungan-perhitungan tadi bisa dilakukan dengan cepat. Oleh karena itu pada kesempatan kali ini saya mencoba berbagi pengalaman penggunaan komputer sebagai alat dalam menyelesaikan perhitungan pemrograman linear.

Pemrograman Linear

     Sebelum kita membahas dari segi komputerasasi, alangkah baiknya kita terlebih dahulu mencoba memahami apa itu pemrograman linear sendiri. Pemrograman Linier disingkat PL merupakan metode matematik dalam mengalokasikan sumber daya yang terbatas untuk mencapai suatu tujuan seperti memaksimumkan keuntungan dan meminimumkan biaya. PL banyak diterapkan dalam masalah ekonomi, industri, militer, sosial dan lain-lain. PL berkaitan dengan penjelasan suatu kasus dalam dunia nyata sebagai suatu model matematik yang terdiri dari sebuah fungsi tujuan linier dengan beberapa kendala linier. (wikipedia). Jika masih bingung apa itu pemrograman linear. anda bisa mempelajari dari penjelasan dari Media Anugrah Ayu bahwa linear programming atau pemrograman linier berasal dari kata pemrograman dan linear. Pemograman artinya perencanaan, dan linear berarti bahwa fungsi-fungsi yang digunakan merupakan fungsi linier. Jadi secara umum linear programming adalah suatu teknik perencanaan yang bersifat analitis yang analisisnya memakai model matematika, dengan tujuan menemukan beberapa kombinasi alternatif pemecahan masalah, yang kemudian dipilih yang terbaik yang diantaranya dalam rangka menyusun langkah-langkah kebijaksanaan lebih lanjut tentang alokasi sumber daya dan dana yang terbatas guna mencapai tujuan dan sasaran yang diinginkan secara optimal.

Library PuLP

setelah membaca apa itu pemrograman linear diharapkan ada tambahan info baru bagi yang belum tentang apa itu pemrograman linear. Selanjutnya saya akan membahas tentang Library PuLP. Penjelasan diambil berdasarkan dari situs resmi PuLP (https://pypi.python.org/pypi/PuLP-py3). PuLP sendiri merupakan sebuah package yang terdapat di bahasa pemrograman python. Fokus package ini untuk memodelkan LP (Linear Programming) di bahasa pemrograman python. Syarat untuk menginstall package ini python yang digunakan minimal versi 2.5/3.5 (python 2.5 atau python 3.5). Terus bagaimana cara menginstallnya ?
  • Windows (Python murni bukan Anaconda) 
    • Buka command prompt 
    • Pastikan anda sudah menginstall pip di Python anda.
    • Pastikan anda memiliki koneksi internet yang cukup baik.
    • Ketikkan pip install pulp
    • Tunggu beberapa saat 
    • Jika proses selesai uji coba apakah library telah terpasang dengan cara di cmd ketikkan
    • python<enter>
    • import pulp<enter>
      contoh yang berhasil
  • Anaconda
    • Buka virtual environment command prompt anda
    • Pastikan anda telah terkoneksi dengan internet
    • Ketikkan conda install -c conda-forge pulp
  • Linux
    • Buka terminal anda
    • Pastikan anda telah terkoneksi dengan internet
    • ketikkan sudo pip install pulp
    • <Masukkan password sudo anda bila diminta>
    • Lalu ketikkan sudo pulptest, untuk mengecheck

Contoh Soal dan Program

Soal :

Seorang pembuat kue mempunyai 8 kg tepung dan 2 kg gula pasir. ia ingin membuat dua macam kue yaitu kue  dadar dan kue apem. Untuk membuat kue dadar dibutuhkan 10 gram gula pasir dan 20 gram tepung, sedangkan untuk membuat sebuah kue apem dibutuhkan 5 gram gula pasir dan 50 gram tepung. Jika kue dadar dijual dengan harga Rp.300/buah dan kue apem dijual dengan harga RP.500/buah, tentukanlah pendapat maksimum yang dapat diperoleh pembuat kue tersebut.

Penjelasan :

Kita bisa membuat soal tersebut kedalam bentuk matematika terlebih dahulu.
misal kue dadar adalah x1 dan kue apem adalah x2. Maka:
  • 10x1+5x2<=2000, didapat dari total penggunaan gula pasir tidak boleh lebih dari 2000 gram (2 Kg), atau bisa disederhanakan menjadi 2x1+x2<=400.
  • 20x1+50x2<=8000, didapat dari total penggunaan gula pasir tidak boleh lebih dari 2000 gram (2 Kg), atau bisa disederhanakan menjadi 2x1+5x2<=800.
  • Fungsi tujuan adalah f(x) = 300x1+500x2, didasari dari harga jual masing-masing kue.
  • x1>0, x2>0, tentunya tidak ada istilah negatif dalam keadaan barang.

Code :

##code by : sufyan saori (xsufyan@gmail.com)
##max = 300x1+500x2
##s.t 2x1+x2<=400
##    2x1+5x2<=800
##    x1,x2<=0 Integer
from pulp import *
#definisikan variable
#x1 maupun x2 tidak boleh bernilai negatif
x1 = LpVariable("x1",lowBound=0,cat='Integer')
x2 = LpVariable("x2",lowBound=0,cat='Integer')
#definisikan mode maksimal
prob = LpProblem("myProblem", LpMaximize)
#definisikan constrain
prob +=2*x1+x2<=400
prob +=2*x1+5*x2<=800
#definisikan solusi
prob +=300*x1+500*x2
#run
status = prob.solve()
rsltX1 = int(value(x1))
rsltX2 = int(value(x2))
rsltZ = int(300*rsltX1+500*rsltX2)
print('hasil Maksimal dari LP adalah ','300*',rsltX1,'+ 500*',rsltX2,' = ',rsltZ)
print('-> Kue Dadar yang diproduksi sebaiknya berjumlah ',rsltX1)
print('-> Kue Apem yang diproduksi sebaiknya berjumlah ',rsltX2)
print('-> Dengan keuntungan maksimal yang didapat berjumlah Rp.',rsltZ)

Hasil :



Jika ada yang perlu penjelasan codenya silahkan email saya saja untuk respon yang lebih cepat.

Sumber 

gambar : https://www.linkedin.com/pulse/modeling-linear-programming-cplex-manmeet-walia/
https://anaconda.org/conda-forge/pulp
http://www.edutafsi.com/2014/10/contoh-soal-cerita-program-linear-dan-pembahasan.html
https://pythonhosted.org/PuLP/main/installing_pulp_at_home.html
https://pypi.python.org/pypi/PuLP-py3
http://lagaknya.blogspot.co.id/2010/09/linear-programming.html

1 komentar untuk "Menyelesaikan Masalah Pemrograman Linear Menggunakan Library PuLP di Python"

  1. kalau yang minimum bagaimana kak, bedanya dengan maksimum diatas

    BalasHapus

Berilah komentar, saran, dan kritik dengan bijak