Mixed Integer Linear Programming Menggunakan Google OR-Tools

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')

Sharing is caring:

Leave a Comment