Pada modul ini kita akan membahas penggunaan Google OR-Tools untuk menyelesaiakan Mixed integer problem.
Model matematik yang digunakan masih sama dengan modul sebelumnya.
#objective function
max x + y
#constraint
-x + 2y <= 7
2x + y <= 14
2x - y <= 10
0 <= x <= 10
0 <= y <= 10
x integer

#import library yang diperlukan
from ortools.linear_solver import pywraplp
#definisikan solver, kita gunakan SCIP
solver = pywraplp.Solver.CreateSolver('SCIP')
#definisikan variable, perhatikan karena x integer, digunakan solver.IntVar
x = solver.IntVar(0,10,'x')
y = solver.NumVar(0,10,'y')
#definisikan constraint
solver.Add(-x+2*y<=7)
solver.Add(2*x+y<=14)
solver.Add(2*x-y<=10)
#definisikan objective function
solver.Maximize(x+y)
results = solver.Solve()
if results==pywraplp.Solver.OPTIMAL: print('Optimal Found')
print('x:', x.solution_value())
print('y:', y.solution_value())
Optimal Found
x: 4.0
y: 5.5
Pembahasan Code
Silakan lihat komentar pada code diatas untuk melihat penjelasan program. Dapat Anda perhatikan, proses dan logika coding tidak ada yang berubah dengan linear programming sebelumnya.
Perbadaanya saat mendefinisikan solver dan variable x.
#digunakan solver scip untuk solve mixed integer.
solver = pywraplp.Solver.CreateSolver('SCIP')
#mendefinisikan variable x sebagai integer.
x = solver.IntVar(0,10,'x')