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.