Pengenalan dan Instalasi
SCIP adalah AML yang cukup mudah digunakan dan free, support linear programming dan non linear programming, kekurangannya adalah kita tidak bisa memilih solver.
Download SCIP di https://www.scipopt.org/ kemudian install.
Pada environment variables, tambahkan:
- SCIPOPTDIR Varabile, isi path dengan lokasi instalasi SCIP, contoh: C:\SCIPOptSuite
- Path Variable, isi path dengan lokasi instalasi SCIP/bin, contoh: C:\SCIPOptSuite\bin
Kemudian install package pyscipopt untuk dapat menggunakan SCIP dari Python.
Perhatian: Urutan instalasi jangan terbalik, karena bisa terjadi error jika environment variables tidak diset dahulu.
pip install pyscipopt
Linear Programming Menggunakan SCIP
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 dibutuhkan
from pyscipopt import Model
#definisikan model, isi parameter sesuai kebutuhan Anda.
model = Model('latihan')
#definisikan variable
x = model.addVar('x',lb=0,ub=10)
y = model.addVar('y',lb=0,ub=10)
#definisikan objective function
model.setObjective(x+y, sense='maximize')
#definisikan constraint
model.addCons(-x+2*y<=8)
model.addCons(2*x+y<=14)
model.addCons(2*x-y<=10)
model.optimize()
sol = model.getBestSol()
print('x=',sol[x])
print('y=',sol[y])
$ python linear_scipopt.py
feasible solution found by trivial heuristic after 0.0 seconds, objective value 0.000000e+00
presolving:
......
......
......
presolved problem has 2 variables (0 bin, 0 int, 0 impl, 2 cont) and 3 constraints
3 constraints of type <linear>
......
......
SCIP Status : problem is solved [optimal solution found]
Solving Time (sec) : 0.00
Solving Nodes : 1
Primal Bound : +1.00000000000000e+01 (3 solutions)
Dual Bound : +1.00000000000000e+01
Gap : 0.00 %
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 SCIP adalah, support linear dan non-linear problem.
Contoh kita ganti salah satu constrain agar menjadi non linear problem, lihat code berikut:
model.addCons(-x+2*y<=8)
# menjadi
model.addCons(-x+2*x*y<=8)
Tanpa mengubah bagian program lainnya, Jika program dijalankan, SCIP akan otomatis melakukan solving untuk non linear problem diatas.
Lihat log dibawah, bagian: 2 constraint of type <linear> dan 1 constraint of type <quadratic>. SCIP otomatis dapat mendeteksi dan melakukan optimisasi.
feasible solution found by trivial heuristic after 0.0 seconds, objective value 5.000000e+00
presolving:
.....
.....
.....
presolved problem has 2 variables (0 bin, 0 int, 0 impl, 2 cont) and 3 constraints
2 constraints of type <linear>
1 constraints of type <quadratic>
Presolving Time: 0.00
.....
.....
.....
SCIP Status : problem is solved [optimal solution found]
Solving Time (sec) : 0.00
Solving Nodes : 1
Primal Bound : +1.04210526315789e+01 (3 solutions)
Dual Bound : +1.04210526315789e+01
Gap : 0.00 %
x= 0.42105263157894735
y= 10.0
TIPS: jika Anda menemui kendala, dan hendak mencari informasi di internet, gunakan kata kunci pyscipopt, jangan SCIPOPT.