5 bab ii tinjauan pustaka

advertisement
BAB II
TINJAUAN PUSTAKA
Pada bab ini akan diuraikan mengenai dasar-dasar teori yang
digunakan dalam pengerjaan tugas akhir ini. Teori-teori yang
dibahas meliputi stochastic programming, stochastic integer
programming, dekomposisi Benders, disjunctive decomposition,
dan ILOG OPL.
2.1 Stochastic Programming
Seringkali pada suatu pengambilan keputusan terdapat unsurunsur ketidakpastian dalam pertimbangannya. Hal ini merupakan
konsekuensi dari keputusan itu sendiri, model keputusan yang
optimal seringkali menempatkan ketidakpastian dengan rataan
atau estimasi yang terbaik. Kemajuan komputasional dalam
pemrograman matematika telah membantu pembuatan keputusan
dalam berbagai macam area, salah satu pengaruh kuat adalah
pembuatan keputusan dengan ketidakpastian menggunakan
stochastic programming, cabang dari optimasi dengan
memperhatikan model yang mengandung parameter acak
(random). Keperluan untuk memasukkan ketidakpastian dalam
model keputusan yang kompleks muncul di awal sejarah
pemrograman matematika. Bentuk model pertama, terdiri dari
sebuah aksi yang diikuti dengan observasi dan reaksi atau
recourse. Sedangkan model yang kedua disebut chance atau
probabilistically constrained programming. Kedua bentuk
tersebut memiliki pangkal dalam teori keputusan statistikal,
perbedaannya adalah bahwa stochastic programming menekankan
pada metode solusi dan solusi analitikal melalui prosedur untuk
membangun fungsi tujuan dan meng-update probabilitas. Ukuran
dari stochastic programming berkembang secara proporsional
dengan jumlah realisasi dari kemungkinan parameter yang tidak
pasti. Jumlah ini secara umum akan meningkat secara
eksponensial dalam beberapa periode waktu dan parameter. Jadi
5
6
semakin panjang periode waktu dan parameter tidak pasti yang
akan dipakai, maka ukuran dari stochastic programming ini juga
akan semakin besar.
2.1.1 Space Probabiltas dan Variabel Acak
Beberapa parameter permasalahan dapat dianggap tidak pasti
dan direpresentasikan sebagai variabel acak. Ketidakpastian
direpresentasikan dalam percobaan acak dengan keluaran
(skenario) yang ditunjukkan dengan ω. Himpunan dari seluruh
keluaran direpresentasikan dengan Ω. Keluaran tersebut dapat
dikombinasikan kedalam subset Ω yang disebut event. Kumpulan
dari event acak ditunjukkan dengan A. Untuk setiap event A ∈ A
dihubungkan dengan dengan nilai P(A), yang disebut probabilitas,
seperti
0 ≤
P(A)
≤
1,
dan
P (φ ) = 0, P (Ω ) = 1
P( A1 ∪ A2 ) = P ( A1 ) + P( A2 ) jika A1 ∩ A2 = φ . Triplet (Ω, A, P)
disebut dengan space probabilitas yang harus memenuhi sejumlah
kondisi.
Untuk variabel acak tertentu ξ , didefinisikan distribusi
kumulatifnya adalah sebagai Fξ ( x) = P (ξ ≤ x) atau lebih tepatnya
Fξ ( x ) = P ({ω | ξ ≤ x}) . Sehingga ada dua kasus utama yang
harus dipertimbangkan. Suatu variabel acak diskrit menggunakan
nilai yang berbeda dalam jumlah yang dapat dihitung atau finit.
Hal ini dideskripsikan oleh distribusi probabilitasnya, dimana
daftar nilai yang mungkin, ξ k , k ∈ K , dengan probabilitas
f (ξ k ) = P (ξ = ξ k ) s.t. ∑ f (ξ k ) = 1
k ∈K
Varibel acak kontinyu sering dideskripsikan melalui fungsi
so-called density f( ξ ). Probabilitas ξ pada interval [a,b]
didefinisikan dengan
b
P (a ≤ ξ ≤ b) = ∫ f (ξ )dξ
a
atau sama dengan
7
b
P(a ≤ ξ ≤ b) = ∫ dF (ξ )
a
dimana F(.) adalah distribusi kumulatif. Berbeda dengan kasus
diskrit, probabilities dari nilai tunggal P (ξ = a ) adalah selalu nol
untuk variable acak kontinyu. Distribusi F(.) harus memenuhi
∫
∞
−∞
dF (ξ ) = 1
Ekspektasi
dari
variable
acak
didefinisikan
dengan
∞
µ = ∑k∈K ξ f (ξ ) atau µ = ∫ dF (ξ ) untuk kasus diskrit
k
k
−∞
dan kontinyu. Varian dari random acak adalah E [(ξ − µ ) 2 ] .
Ekspektasi dari ξ r disebut dengan momen ke-r dan dinyatakan
ξ ( r ) = Ε[ξ r ] . Titik η disebut α -quantile dari ξ jika dan hanya
jika untuk 0 < α < 1, η = min{x | F ( x) ≥ α } .
2.1.2 Keputusan dan Stage
Stochastic linear program adalah liner program dimana
beberapa data permasalahan mengandung ketidakpastian.
Recourse program adalah program di atas yang beberapa aksi
keputusan atau recourse dapat diambil setelah ketidakpastian
diperlihatkan. Untuk lebih tepatnya, ketidakpastian data berarti
beberapa data permasalahan dapat direpresentasikan sebagai
variabel acak. Suatu deskripsi probabilistik yang akurat dari
variabel acak diasumsikan ada, menurut bentuk distribusi
probabilitas, densiti, atau lebih umumnya ukuran probabilistik.
Sebagaimana biasanya, nilai dari bermacam-macam variabel acak
yang akan diambil hanya dapat diketahui setelah percobaan acak,
yaitu vektor ξ = ξ (ω ) hanya dapat diketahui setelah percobaan.
Kumpulan keputusan dibagi menjadi dua kelompok:
o Sejumlah keputusan harus diambil sebelum percobaan.
Semua keputusan ini disebut first-stage decisions dan periode
ketika keputusan tersebut diambil disebut stage pertama.
8
Sejumlah keputusan dapat diambil setelah percobaan.
Keputusan tersebut disebut second-stage decisions dan
periodenya disebut stage ke-dua.
Keputusan stage pertama direpresentasikan dengan vektor x,
sedangkan keputusan stage kedua direpresentasikan dengan
vektor y atau y(ω) atau bahkan y(ω,x) jika ingin ditekankan
bahwa keputusan stage kedua merupakan suatu fungsi dari
keluaran percobaan acak dan keputusan stage pertama. Urutan
event dan keputusan dapat disimpulkan sebagai berikut:
o
x → ξ (ω ) → y (ω , x )
2.1.3 Program Dua Stage dengan Recourse Tetap
Stochastic linear program dua stage dengan recourse tetap
adalah permasalahan dalam hal pencarian:
[
min
z = c T x + Eξ min q(ω ) T y (ω )
s.t.
Ax = b,
T (ω ) x + Wy (ω ) = r (ω ),
x ≥ 0, y (ω ) ≥ 0
]
(2.1)
Suatu perbedaan dibuat di antara stage pertama dan stage kedua.
Keputusan stage pertama direpresentasikan oleh n1 × 1 vektor x.
Sesuai dengan x, juga direpresentasikan vektor stage pertama dan
matriks c, b, dan A, dengan ukuran n1 ×1 , m1 × 1, dan m1 × n1 secara
berurutan. Pada stage kedua, sejumlah event acak ω ∈ Ω mungkin
akan didapat. Untuk realisasi ω yang diberikan, data
permasalahan stage kedua q(ω), r(ω) dan T(ω) menjadi diketahui,
dimana q(ω) adalah n2 × 1 , r(ω) adalah m2 × 1 , dan T(ω) adalah
m2 × n1 .
Tiap komponen q, T, dan r merupakan suatu variabel acak
yang mungkin. Ti(ω) adalah baris ke-i dari T(ω). Dengan
menggabungkan komponen stochastic dari data stage kedua,
didapatkan sebuah vektor ξ T (ω ) = (q(ω ) T , r (ω ) T , T1 (ω ),..., Tm (ω )) ,
2
9
dengan kemungkinan besar mencapai N = n2 + m2 + (m2 × n1 )
komponen. Event acak tunggal ω mempengaruhi beberapa
variabel acak, di sini, semua komponen dari ξ . Ξ ⊂ ℜ N
merupakan pendukung dari ξ , yaitu subset tertutup yang paling
kecil dalam ℜ N seperti P (Ξ) = 1 . Ketika didapat event acak ω,
data permasalahan stage kedua, q, r, dan T, menjadi diketahui.
Kemudian keputusan stage kedua y (ω ) atau ( y (ω , x)) harus
diambil. Ketergantungan y pada ω merupakan sesuatu yang sama
sekali berbeda sifatnya dari ketergantungan q atau parameter
lainnya pada ω, karena keputusan keputusan y secara khusus tidak
sama untuk realisasi ω yang berbeda.
Fungsi obyektif berisi sebuah deterministik cTx dan obyektif
stage kedua q (ω ) T y (ω ) mengambil alih seluruh realisasi event
acak ω. Stage kedua ini jauh lebih sulit karena untuk tiap ω, nilai
y(ω) merupakan solusi dari linear program. Untuk menekan
permasalahan tersebut, terkadang digunakan dugaan deterministic
equivalent program, dimana untuk setiap realisasi ω yang
diberikan
T
Q ( x, ξ (ω )) = min q (ω ) y | Wy = h(ω ) − T (ω )x, y ≥ 0
y
{
}
merupakan fungsi nilai stage kedua. Kemudian, didefinisikan
fungsi nilai ekspektasi stage kedua
Q(x) = Eξ Q (x, ξ (ω ))
dan deterministic equivalent program (DEP)
min z = c T x + Q(x)
s.t. Ax = b,
(2.2)
x≥0
Representasi stochastic program di atas secara jelas
menggambarkan bahwa perbedaan utama dari perumusan
deterministik adalah pada fungsi nilai stage kedua. Apabila fungsi
tersebut diberikan, maka stochastic program hanya merupakan
program nonlinear biasa.
10
Perumusan (2.1) merupakan bentuk stochastic program dua
stage paling sederhana. Perluasan dari perumusan tersebut bisa
saja dilakukan. Sebagai contoh, jika keputusan stage pertama atau
stage kedua adalah integer, maka batasan paling akhir dari
perumusan (2.1) dapat diganti dengan bentuk yang lebih umum
seperti berikut
x ∈ X , y (ω ) ∈ Y
Dimana X = Ζ n+ dan Y = Z +n2 . Demikian pula dengan stage
pertama nonlinear dan obyektif atau batasan stage kedua dapat
dengan mudah digabungkan.
1
2.2 Stochastic Integer Programming
Perumusan umum integer program dua stage mirip dengan
permasalahan linier pada umumnya dimana beberapa variabel
yang ada baik pada stage pertama atau stage kedua merupakan
integer. Pada banyak situasi penerapan, dalam suatu batasan
variabel harus berupa biner, yaitu nilai satu atau nol. Secara
umum, dapat ditulis seperti berikut:
(SIP) min z = c T x + Eξ min q(ω )T y | Wy = r (ω ) − T (ω )x, y ∈ Y
x∈ X
{
}
s.t. Ax = b,
X dan/atau Y berisi beberapa integralitas atau batasan biner pada x
dan/atau y. Bentuk DEP dari definisi tersebut adalah
(DEP)
min z = c T x + Q(x)
x∈ X
s.t. Ax = b,
dengan Q(x) adalah nilai yang diharapkan dari stage kedua.
2.3 Dekomposisi Benders
Dekomposisi Benders atau Nested L-Shaped merupakan
suatu metode yang pada dasarnya adalah untuk memperkirakan
hubungan non-linear dalam fungsi obyektif dari permasalahan.
Prinsip umum metode ini adalah membangun sebuah master
11
problem x dan mengevaluasi fungsi recourse sebagai sub
problem.
Pada metrode ini, diasumsikan bahwa vektor acak ξ
memiliki dukungan yang terbatas. Didefinisikan indeks k = 1, ...,
K untuk kemungkinan realisasi dan pk sebagai realisasinya.
Berdasarkan asumsi tersebut, dituliskan kembali DEP dalam
bentuk perluasan. Bentuk ini dibuat dengan sekumpulan
keputusan stage kedua, yaitu yk, untuk setiap realisasi ξ , yaitu qk,
rk, dan Tk. Berikut ini adalah bentuk perluasan dari DEP, yang
disebut EF (Extensive Form):
K
min
z = c T x + ∑ p k q kT y k
k =1
Ax = b,
s.t.
Tk (ω ) x + Wy k (ω ) = rk (ω ),
k = 1, ..., K
y k (ω ) ≥ 0
k = 1, ..., K
x ≥ 0,
Struktur dari permasalahan EF dapat digambarkan dengan
Gambar 2.1 berikut ini:
Master problem
A
T1
T2
Tk
Sub Problem1
W
W
Sub Problem 2
W
Sub Problem k
Gambar 2.1 Struktur blok dari EF dua stage
Dari gambar di atas, dapat dilihat bahwa struktur bentuknya
menyerupai huruf L, karena dari itu metode ini disebut metode LShaped.
12
Metode nested L-Shaped menyelesaikan permasalahan
dengan membaginya menjadi master problem dan sub problem
kecil-kecil, dan permasalahan yang diselesaikan sudah dalam
bentuk EF, sehingga master problem dapat ditulis seperti berikut
ini:
min z = cT x + EsQ( x, s)
s.t
Ax = b
Di x ≥ di
(2.3)
l = 1,..., r
E j x +θ ≥ ej
j = 1,..., t
x ≥ 0, θ ∈ ℜ
Sedangkan bentuk sub problem dapat ditulis seperti di bawah ini:
Q( x * , s) = min
qs ys
W s y s ≥ rs − Ts x *
Q( x* ) = ∑s =1Q( x* , s)
S
s = 1,....S
(2.4)
(2.5)
Master problem akan menjadi node root dari pohon skenario,
sedangkan sub problem akan menjadi node-node child sesuai
dengan stage dan urutan nodenya. Secara garis besar, metode
penyelesaian ini dapat dituliskan seperti berikut ini:
o Forward Pass : Dimulai dengan menyelesaikan master
problem terlebih dahulu, dengan x* sebagai solusi optimal
dari master problem tersebut. Kemudian nilai dari solusi
tersebut dimasukkan ke dalam sub problem – sub problem
sesuai dengan urutan pada pohon skenario. Pada tahap ini
terdapat kemungkinan dimana timbul permasalahan yang
tidak layak. Pada tahap ini didapat feasibility cut seperti yang
ada pada persamaan (2.3), tepatnya pada batasan yang kedua.
Langkah forward digambarkan dengan garis putus-putus
berwarna biru pada gambar (2.2).
o Backward Pass : Kebalikan dari forward pass, langkah ini
dimulai dari node skenario terakhir, lalu bergerak menuju
node root. Apabila permasalahan sudah layak, maka
optimality cut yang didapat, di-generate untuk memastikan
bahwa solusi yang didapatkan sudah optimal. Optimality cut
dituliskan sesuai dengan batasan ketiga dari persamaan (2.3).
13
Langkah backward digambarkan dengan garis putus-putus
berwarna merah pada gambar (2.2).
Kedua langkah di atas dilakukan berkali-kali (iterasi) sampai
didapatkan cut yang konvergen.
Gambar 2.2 Ilustrasi forward pass dan backward pass
2.3.1 Feasibility Cut
Nilai x* yang dihasilkan dari perhitungan master problem
dapat menjadikan permasalahan pada sub problem menjadi tidak
layak. Oleh karena itu, diperlukan kondisi kelayakan, dengan cara
mendefinisikan Cone(Ws ) = {W s y s y ≥ 0} dan x* adalah layak, jika
rs − Ts x * ∈ Cone(Ws )∀s .
Diasumsikan
∃s ′
dimana
rs ' − Ts ' x ∉ Cone(W s ' )∀s . Diasumsikan pula, terdapat ∃σ
dimana σ T t > 0 ∀t ∈ Cone(W s ' ) dan σ T ( rs ' − T s ' x * ) ≤ 0 . Nilai
σ didapat dengan menggunakan weak duality pada sub problem
bersangkutan.
Primal dari sub-problem dapat dituliskan sebagai berikut:
*
Min
eT v + + eT v −
Ws ys + Iv + − Iv − ≥ rs − Ts x*
(2.6)
ys ≥ 0, v + ≥ 0, v − ≥ 0
Setelah itu dilanjutkan dengan pendefinisian dual seperti berikut
ini:
Max
ρ (rs − Ts x* )
ρ T Ws ≤ 0
(2.7)
14
Sehingga weak duality dapat didefiniskan seperti nerikut ini:
e T v + + e T v − ≥ ρ ( rs − Ts x * )
Dimana ρ ( rs − Ts x * ) ≥ 0 adalah feasibility cut. Misalkan r adalah
indeks feasibility cut, maka r = r + 1 , Dr = ρTs , dan d r = ρrs .
Nilai-nilai tersebut digunakan untuk merubah master problem
menjadi seperti di bawah ini:
min z = c T x
s.t Ax = b
(2.8)
Di x ≥ d i
l = 1,..., r
x ≥ 0, θ ∈ ℜ
2.3.2 Optimality Cut
Pada tiap sub problem yang sudah dinyatakan layak,
diperlukan kondisi optimal yang harus dicapai. Untuk
mendapatkan kondisi optimal tersebut, digunakan optimality cut.
Untuk mendapatkan optimality cut ini dibutuhkan nilai weak
duality.
Berikut ini adalah bentuk primal dari sub problem yang
feasible:
Q(x*, s) = Min ρ(rs −Ts x*)
(2.9)
Ws ys ≥ rs − Ts x*
Sedangkan bentuk dari dualnya adalah sebagai berikut:
Max π (rs − Ts x * )
(2.10)
πWs ≤ q s
Sehingga weak duality dapat didefinisikan seperti berikut ini:
(2.11)
Q ( x * , s ) ≥ π ( rs − Ts x * )
Pada langkah berikutnya nilai kemungkinan dimasukkan
pada kedua ruas kanan dan kiri, dimana pertidaksamaannya dapat
dituliskan seperti berikut ini:
S
∑ p Q( x
s =1
s
S
*
, s ) ≥ ∑ p s π (rs − Ts x * )
s =1
(2.12)
15
Dengan men-substitusikan persamaan (2.5), didapat hasil seperti
berikut ini:
S
 S

Q( x * ) ≥ ∑ p s π rs −  ∑ p s πTs  x *
s =1
 s =1

Dengan demikian
 S

p
π
r
−
 ∑ p s πTs  x * .
∑
s
s
s =1
 s =1

bentuk
optimality
cut
adalah
S
Misalkan t adalah indeks dari
S
S
s =1
s =1
optimality cut, maka t = t + 1 , E t = ∑ p s πTs , dan et = ∑ p s πrs .
Nilai tersebut kemudian akan merubah bentuk master problem
menjadi seperti di bawah ini:
min z = c T x
s.t Ax = b
Di x ≥ d i
i = 1,..., r
θ ≥ ej − Ejx
j = 1,..., t
(2.13)
x ≥ 0, θ ∈ ℜ
2.4 Disjunctive Decomposition
Pada algoritma disjunctive decomposition (D2) ini, dilakukan
aproksimasi terhadap bentuk skenario sub problem. Untuk xk yang
diberikan pada k iterasi, bentuknya adalah sebagai berikut:
f ck ( x k , ω ) = Min q T y
s.t. W k y ≥ r k (ω ) − T k (ω ) x k
y ∈ℜ
(2.14)
n2
+
problem ini diinisialisasikan dengan W 1 = W ,
r 1 (ω ) = r (ω ) , dan T 1 (ω ) = T (ω ) . Elemen-elemen tersebut di-
Sub
update sebagaimana progress iterasi. Apabila z k (ω ) , nilai yang
diberikan pada variabel integer y k (ω ) adalah integer untuk
16
semua ω , maka update tidak diperlukan, dan k + 1 = k untuk
iterasi selanjutnya.
Sebaliknya, apabila subproblem tidak menghasilkan solusi
optimal integer, maka ditetapkan j(k) sebagai indeks, dimana
untuk z kj (ω ) adalah non-integer untuk beberapa ω ∈ Ω . z j ( k )
menujukkan salah satu nilai non-integer {z kj (ω )}ω∈Ω . j(k) disebut
sebagai variabel disjungsi untuk k iterasi. Karena disjungsi
berdasarkan pada kondisi either-or, digunakan H = {0, 1}.
Untuk men-generate cut coefficient pada iterasi k, digunakan
LP/SLP berikut ini:
Max
[
]
T
E [π 0 (ω~ )] − E y k (ω~ ) π
s.t.
(2.15.1)
π j ≥ λ W − I λ0, 2 ∀j
(2.15.2)
π j ≥ λ1T,1W jk + I kj λ1, 2 ∀j
(2.15.3)
T
0 ,1
k
j
k
j
π 0 (ω ) ≤ λT0,1 ρ ck (x k , ω ) − λ0, 2 z j ( k )  ∀ω ∈ Ω (2.15.4)
π 0 (ω ) ≤ λ1T,1 ρ ck (x k , ω ) + λ1, 2 z j ( k )  ∀ω ∈ Ω (2.15.5)
− 1 ≤ π j ≤ 1, ∀j , − 1 ≤ π 0 (ω ) ≤ 1, ∀ω ∈ Ω
(2.15.6)
λ0,1 , λ0, 2 , λ1,1 , λ1, 2 ≥ 0
(2.15.7)
Variabel π dan λ adalah konstan dengan mengacu pada ω , suatu
karakteristik yang diketahui sebagai non-antisipativitas.
Untuk mengupdate fungsi rk+1 dan Tk+1, dibutuhkan koefisien
v k (ω ) dan γ k (ω ) , yaitu untuk menspesifikasikan
r k +1 (ω ) = [r k (ω ), v k (ω )] , dan T k +1 (ω ) = [T k (ω ) T ; γ k (ω )]T .
Karena disjungsi yang digunakan untuk informasi cut
memiliki H = {0,1}, epigraf dari π 0 ( x, ω ) merupakan union dari
dua set polihedral. Dimana untuk semua ω ∈ Ω :
v0k = λT0,1 r k (ω ) − λ0, 2 z j ( k ) ,
v1k = λ1T,1r k (ω ) + λ1, 2 z j ( k ) 
dan
17
[γ hk (ω )]T = λTh ,1T k (ω ), h ∈ H
Sedangkan untuk mendefinisikan π ck ( x, ω )
untuk tiap
ω ∈ Ω , digunakan LP berikut ini:
( ) σ (ω )
(δ (ω ), σ (ω ), σ (ω )) ∈ (∏ (ω ))
Max δ (ω ) − σ 0 (ω ) − x k
T
+
0
(2.16)
k
X
Dimana Π (ω ) yang merupakan epi-reverse polar (yaitu
+
X
kumpulan permukaan convex hull epigraf) dari π 0k ( x, ω ) dapat
dituliskan seperti berikut ini:
∏ +X (ω ) = {σ 0 (ω ) ∈ ℜ, σ (ω ) ∈ ℜ n1 , δ (ω ) ∈ ℜ | ∀h ∈ H , ∃τ h ∈ ℜ m1 ,τ 0 h ∈ ℜ m1
s.t.
σ 0 (ω ) ≥ τ 0 h
∑τ
0h
=1
∀h ∈ H
(2.17)
h
σ j (ω ) ≥ τ hT A j + τ 0 h γ hj (ω ) ∀h ∈ H , j = 1,......., n1
δ (ω ) ≤ τ hT b + τ 0 h vh (ω ) ∀h ∈ H
τ h ≥ 0, τ 0 h ≥ 0 ∀h ∈ H }
Dimana σ 0k (ω ), σ k (ω ) , dan δ k (ω ) merupakan solusi optimal
dari (2.17). Dengan demikian, untuk ω ∈ Ω , didapatkan:
v k (ω ) =
σ k (ω )
σ 0k (ω )
(2.18)
γ k (ω ) =
δ k (ω )
σ 0k (ω )
(2.19)
dan
2.5 Mixed Integer Program (MIP)
Mixed integer program (MIP) merupakan minimasi atau
maksimasi dari fungsi subyek linear terhadap konstrain linear.
Permasalahan MIP dihasilkan ketika beberapa variabel pada
model adalah nilai real dan beberapa variabel lainnya adalah
integer. Dengan kata lain, pada mixed integer programming
18
(MIP), hanya beberapa keputusan dan variabel slack yang dibatasi
oleh nilai integer.
Karena dari itu, bentuk dari model permasalahan adalah mixed.
Ketika fungsi obyektif dan dan konstrain semuanya dalam bentuk
linear, maka bentuk tersebut disebut dengan mixed integer linear
program(MILP). Bentuk umum dari MIP dapat dituliskan
sebagai:
max c T x
s.t.
Ax ≤ b
x ∈ ℜn × Z q
Dimana variabel x adalah variabel dengan nilai real atau
integer.
2.6 ILOG OPL
ILOG OPL Development Studio IDE merupakan suatu solver
yang powerfull dalam hal penyelesaian permasalahan optimasi.
ILOG OPL Development, atau biasa disebut ILOG terdiri dari
beberapa bagian:
o Optimization Programming Language (OPL) yang
digunakan untuk menghasilkan model optimasi.
o Integrated Development Evironment (IDE) yang
digunakan untuk menjalankan dan menguji model
optimasi.
o Command line tool (oplrun) yang digunakan untuk
mengeksekusi model comment line.
o Application Programming Interfaces (APIs) yang
digunakan untuk menyimpan model ke dalam aplikasi
standalone.
o Optimization Decision Manager (ODM) yang digunakan
untuk me-manage keputusan dalam suatu optimasi.
Permasalahan mathematic programming, seperti linear
programming, integer programming, quadratic programming,
serta optimasi kombinatorial berkembang dalam berbagai variasi
area aplikasi, termasuk perencanaan, penjadwalan, pengurutan,
alokasi sumber, desain, serta konfigurasi.
19
OPL merupakan sebuah bahasa pemrograman permodelan
untuk kombinasi optimasi yang bertujuan menyederhanakan
penyelesaian dari permasalahan optimasi ini. OPL menyediakan
dukungan dalam suatu bentuk computer equivalent untuk
pemodelan linear, quadratic, dan pemrograman integer juga
menyediakan akses untuk algoritma state-of-the-art untuk linear
programming, mathematical integer programming, dan quadratic
programming. Gambar (2.3) merupakan layar pembuka untuk
ILOG OPL.
Gambar 2.3 Layar pembuka ILOG OPL
2.6.1 Model
Blok-blok dasar pada OPL adalah integer, floating-point
number, identifier, string, dan kata kunci. Identifier pada OPL
dapat menerima huruf, digit, dan karakter underscore (_), huruf
dalam OPL bersifat case sensitif. Integer bersifat urutan dari digit,
dimungkinkan untuk pemberian tanda minus (-). Float dapat
dijelaskan dalam notasi desimal (misal, 2.6 atau -1.2) atau dapat
juga dalam notasi scientific (misal, 2.6e-2 atau -1.2e7). Berikut
ini adalah contoh sederhana model optimasi menggunakan ILOG:
dvar float+ A;
dvar float+ B;
maximize 40*A + 50*B;
subject to {
ct1:
A + B <= 50;
20
ct2:
3*A + 4*B <= 180;
ct3:
B <= 40;}
2.6.2 Tipe Data
Tipe data pada ILOG terdiri dari dua tipe, yaitu:
o Basic data, yaitu integer, float, dan string.
o Data structure, yaitu tipe data yang menggunakan tipe
data basic untuk dikombinasikan dengan arrays, tuples,
dan sets untuk menghasilkan struktur data yang
kompleks.
2.6.3 Sumber Data
Data yang dipakai pada permodelan di ILOG dapat ditulis
secara langsung pada file .dat, dapat pula dari spreadsheet (ms.
excel) atau dapat pula diambil dari database (ms. access).
2.6.4 Tipe Keputusan
Variabel keputusan, yaitu variabel yang dicari pada model
optimasi, secara default pada ILOG OPL adalah dvar (decision
variable). Selain itu dapat pula digunakan dexpr, yaitu ekspresi
yang memungkinkan kita untuk menggunakan ulang variabel
keputusan (belum diketahui nilainya).
2.6.5 Batasan
Untuk menginisialisasi batasan pada model optimasi, maka
digunakan instruksi constraint atau subject to, seperti yang terlihat
pada contoh di bawah ini:
subject to {
forall(r in Resources)
sum(p in Products) consumption[p,r] * inside[p]
<= capacity[r];
forall(p in Products)
inside[p] + outside[p] >= demand[p];}
Download