Linear Programming Menggunakan Pyomo

Pengenalan dan Instalasi Pyomo

Seperti yang sudah dibahas pada modul sebelumnya, Pyomo adalah framework yang memudahkan kita mempresentasikan optimization problem. Untuk dapat melakukan solving problem, package solver harus diinstall terpisah.

Untuk instalasi pyomo gunakan perintah berikut

pip install pyomo

Linear Programming Menggunakan Pyomo

Setelah proses instalasi selesai, mari kita gunakan model matematika pada modul sebelumnya untuk kebutuhan tutorial ini.

#objective function

  max x + y

#constraint

  -x + 2y <= 8
  2x + y <= 14
  2x - y <= 10
  0 <= x <= 10
  0 <= y <= 10
#import library yang digunakan
import pyomo.environ as pyo
from pyomo.environ import *
from pyomo.opt import SolverFactory

model = pyo.ConcreteModel()

#mendefinisikan variable, lihat persamaan diatas untuk melihat batas atas dan bawah.
#dari variable x dan y.
model.x = pyo.Var(bounds=(0,10))
model.y = pyo.Var(bounds=(0,10))
x = model.x
y = model.y

#constraint (lihat persamaan constraint diatas).
model.C1 = pyo.Constraint(expr= -x+2*y<=8)
model.C2 = pyo.Constraint(expr= 2*x+y<=14)
model.C3 = pyo.Constraint(expr= 2*x-y<=10)

#objective function
model.obj = pyo.Objective(expr= x+y, sense=maximize)

#tentukan solver dan lakukan solving
opt = SolverFactory('glpk')
opt.solve(model)

model.pprint()

print('x:', pyo.value(x))
print('y:', pyo.value(y))
2 Var Declarations
    x : Size=1, Index=None
        Key  : Lower : Value : Upper : Fixed : Stale : Domain
        None :     0 :   4.0 :    10 : False : False :  Reals
    y : Size=1, Index=None
        Key  : Lower : Value : Upper : Fixed : Stale : Domain
        None :     0 :   6.0 :    10 : False : False :  Reals

1 Objective Declarations
    obj : Size=1, Index=None, Active=True
        Key  : Active : Sense    : Expression
        None :   True : maximize : x + y

3 Constraint Declarations
    C1 : Size=1, Index=None, Active=True
        Key  : Lower : Body      : Upper : Active
        None :  -Inf : - x + 2*y :   8.0 :   True
    C2 : Size=1, Index=None, Active=True
        Key  : Lower : Body    : Upper : Active
        None :  -Inf : 2*x + y :  14.0 :   True
    C3 : Size=1, Index=None, Active=True
        Key  : Lower : Body    : Upper : Active
        None :  -Inf : 2*x - y :  10.0 :   True

6 Declarations: x y C1 C2 C3 obj
x: 4.0
y: 6.0

Pembahasan Code

Silakan lihat komentar pada code diatas untuk melihat penjelasan program. Dapat Anda perhatikan, proses dan logika coding mirip dengan Google OR-Tools.

Kelebihan penggunaan Pyomo adalah, memudahkan kita dalam mengganti solver. Cukup mengganti parameter pada perintah SolverFactory() dengan solver yang akan digunakan. Contoh:

opt = SolverFactory('gurobi')

##atau

opt = SolverFactory('cplex')

Karena kami tidak memiliki licensed, penggunaan gurobi atau cplex, tidak akan dibahas secara mendetail.

Sharing is caring:

Leave a Comment