Dynamic Programming
Dynamic Programming
RISET OPERASI
Oleh
IRWANSYAH
G1D007018
UNIVERSITAS MATARAM
2009
Program Dinamik 2
PROGRAM DINAMIK
A. Pendahuluan
a. Masalah yang akan diselesaikan, dapat dibagi ke dalam beberapa tahap ( stage )
penyelesaian dan dalam setiap tahap hanya diambil satu keputusan terbaik ( policy
decision ).
Di dalam penyelesaiannya, program dinamik membutuhkan serangkaian
keputusan yang saling berkaitan, dimana setiap keputusan berkorespondensi dengan
sebuah stage dari masalah.
b. Masing – masing stage terdiri dari sejumlah state ( status ) yang berkaitan dengan
permulaan ( beginning ) dari stage tersebut.
Secara umum, state dari suatu stage merupakan berbagai macam kemungkinan
input yang ada pada stage tersebut. State menggambarkan rpautan ( link ) antara
Program Dinamik 3
beberapa stage yang ada. Sehingga ketika stage tersebut dioptimasi secara terpisah,
maka keputusan terbaik yang diambil dari stage tadi otomatis layak ( feasibel ) untuk
masalah secara keseluruhan.
e. Keputusan optimal terbaik yang diambil pada semua stage berikutnya tidak
bergantung pada keputusan optimal yang telah diambil pada stage sebelumnya. Oleh
karena itu, keputusan optimal terbaik yang diambil hanya bergantung pada state yang
berkorespondensi dengan stage tersebut. Prinsip ini disebut sebagai prinsip
optimalitas dari program dinamik.
Secara umum, pengetahuan tentang state yang berkorespondensi dengan stage
yang sedang berjalan ( current stage ) dapat memberikan semua informasi tentang
stage sebelumnya yang nantinya sangat dibutuhkan untuk pengambilan keputusan
terbaik berikutnya. Persoalan yang tidak memiliki sifat yang seperti ini tidak dapat
diformulasikan ke dalam program dinamik.
g. Jika keputusan optimal untuk stage n + 1 diketahui, maka terdapat hubungan rekursif
antara keputusan optimal yang diketahui tadi dengan keputusan optimal pada stage
ke- n.
Notasi – notasi yang digunakan dalam program dinamik adalah sebagai
berikut ;
N = Banyaknya stage.
n = Label untuk stage yang sedang berjalan.
𝑠𝑠𝑛𝑛 = State yang sedang berlaku pada stage ke n.
𝑥𝑥𝑛𝑛 = Variabel keputusan untuk stage ke n.
𝑥𝑥𝑛𝑛∗ = Nilai optimal untuk 𝑥𝑥𝑛𝑛 ( pada state 𝑠𝑠𝑛𝑛 yang diberikan ).
𝑓𝑓𝑛𝑛 (𝑠𝑠𝑛𝑛 , 𝑥𝑥𝑛𝑛 ) = Kontribusi dari stage n, n+1, ... ,N pada fungsi objektif apabila
sistem penyelesaian dimulai dari state 𝑠𝑠𝑛𝑛 pada stage ke n,
keputusan 𝑥𝑥𝑛𝑛 untuk kemudian keputusan terbaik yang optimal
dapat dibuat.
𝑓𝑓𝑛𝑛 ∗ (𝑠𝑠𝑛𝑛 ) = 𝑓𝑓𝑛𝑛 (𝑠𝑠𝑛𝑛 , 𝑥𝑥𝑛𝑛 ∗ )
Program Dinamik 5
Atau
𝑓𝑓𝑛𝑛 ∗ (𝑠𝑠𝑛𝑛 ) = min{𝑓𝑓𝑛𝑛 (𝑠𝑠𝑛𝑛 , 𝑥𝑥𝑛𝑛 )}
𝑥𝑥 𝑛𝑛
Misalkan S merupakan banyaknya kemungkinan state pada stage ke- n + 1. Jika pada
p ke n diberikan state sn dan keputusan xn , maka sistem akan bergerak ke state i dengan
peluang pi ( i = 1, 2, ... , S ). Dan apabila sistem bergerak ke state i, maka Ci menunjukkan
kontribusi langsung dari tahap ke n terhadap fungsi objektif dari masalah.
Ketika ilusrasi di atas dilengkapi dengan semua kemungkinan state dan keputusan (
Decission ) yang akan diambil untuk setiap tahap penyelesaian, maka ilustasi tersebut
sering kali disebut dengan pohon keputusan.
Program Dinamik 7
𝑆𝑆
Dengan
∗ (𝑖𝑖)
𝑓𝑓𝑛𝑛+1 = min 𝑓𝑓𝑛𝑛 +1 (𝑖𝑖, 𝑥𝑥𝑛𝑛+1 )
𝑥𝑥 𝑛𝑛 +1
Dimana peminimuman diperoleh melalui pemilihan nilai – nilai yang feasible ( layak )
dari 𝑥𝑥𝑛𝑛+1 .
Contoh
Perusahaan tersebut memprediksi bahwa setiap item yang mereka produksi dengan
tipe sesuai pesanan tadi memiliki peluang memenuhi syarat pemesan sebesar 1/2 , dan
akan rusak ( tanpa kemungkinan untuk diperbaiki ) dengan peluang sebesar 1/2. Dengan
demikian, total item produk yang memenuhi syarat pemesan dari keseluruhan total item
Program Dinamik 8
yang diproduksi sebanyak L akan mengikuti Distribusi peluang berbentuk Binomial ; i.e.
peluang untuk gagal memproduksi item yang memenuhi syarat pemesan dari total
1
produksi sebanyak L adalah (2)𝐿𝐿 .
Biaya marjinal untuk produksi item tersebut diprediksi sebesar $100 per item (
termasuk juga yang rusak ), dan kelebihan item produksi tidak berharga. Kemudian,
karena produk yang dipesan memiliki spesifikasi tertentu sehingga membutuhkan biaya
untuk pengaturan (set up ) produksi sebesar $300. Dan set up dengan biaya yang sama
akan terus dilakukan pada proses produksi berikutnya apabila dari proses sebelumnya
belum dapat diproduksi item produk yang memenuhi syarat pemesan.
Yang menjadi permasalahan adalah kebijakan seperti apa yang akan diambil oleh
pimpinan pabrik yang menyangkut ukuran produksi item ( 1 + reject allowance ) untuk
batasan kesempatan produksi yang diberikan sehingga dapat meminimumkan biaya
produksi.
Perumusan masalah
Tahap ke – n = Produksi ke – n ( n = 1, 2, 3 )
state sn = Banyaknya item produk yang memenuhi syarat pemesan yang masih
dibutuhkan ( 1 atau 0 ) pada awal dari tahap ke – n.
Dengan demikian, pada tahap 1, state s1 = 1. Jika paling sedikit 1 item produk yang
memenuhi syarat pemesan diperoleh pada tahap produksi berikutnya, maka state berubah
menjadi sn = 0, sehingga setelah itu tidak ada lagi biaya tambahan yang harus dikeluarkan.
Program Dinamik 9
fn( sn , xn ) = Biaya total yang diharapkan untuk tahap ke – n, ... , 3 apabila sistem dimulai
dari state sn pada tahap ke – n, dengan keputusan xn , dan keputusan optimal
diambil setelah itu.
Dimana 𝑓𝑓𝑛𝑛∗ (0) = 0 . Dengan menggunakan $100 sebagai satuan uang, biaya dari tahap ke
– n adalah [𝐾𝐾(𝑥𝑥𝑛𝑛 ) + 𝑥𝑥𝑛𝑛 ] tanpa memperhatikan tahap produksi berikutnya, dimana K(xn)
adalah fungsi dalam xn sedemikian hingga :
0, 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎 𝑥𝑥𝑛𝑛 = 0
𝐾𝐾(𝑥𝑥𝑛𝑛 ) = �
3 , 𝑎𝑎𝑎𝑎𝑎𝑎𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 𝑥𝑥𝑛𝑛 > 0
1 𝑥𝑥 𝑛𝑛 1 𝑥𝑥 𝑛𝑛
𝑓𝑓𝑛𝑛 (1, 𝑥𝑥𝑛𝑛 ) = 𝐾𝐾(𝑥𝑥𝑛𝑛 ) + 𝑥𝑥𝑛𝑛 + �2� 𝑓𝑓𝑛𝑛∗+1 (1) + �1 − �2� � 𝑓𝑓𝑛𝑛∗+1 (0)
1 𝑥𝑥 𝑛𝑛 ∗ (1)
= 𝐾𝐾(𝑥𝑥𝑛𝑛 ) + 𝑥𝑥𝑛𝑛 + �2� 𝑓𝑓𝑛𝑛+1
[ dimana 𝑓𝑓4∗ (1) didefinisikan bernilai 16, biaya akhir apabila tidak diperoleh item produk
yang memenuhi syarat pemesan ]. Ilustrasi dasar dari hubungan di atas, terlihat pada
gambar berikut :
Program Dinamik 10
1 𝑥𝑥 𝑛𝑛
𝑓𝑓𝑛𝑛∗ (1) = min𝑥𝑥 𝑛𝑛 =0,1 ,… �𝐾𝐾(𝑥𝑥𝑛𝑛 ) + 𝑥𝑥𝑛𝑛 + �2� 𝑓𝑓𝑛𝑛∗+1 (1)�
Untuk n = 1, 2, 3.
Prosedur penyelesaian
Hasil perhitungan menggunakan hubungan rekursif di atas, dapat dilihat pada tabel berikut
;
𝟏𝟏 𝒙𝒙𝟑𝟑
𝒇𝒇𝟑𝟑 (𝟏𝟏, 𝒙𝒙𝟑𝟑 ) = 𝑲𝑲(𝒙𝒙𝟑𝟑 ) + 𝒙𝒙𝟑𝟑 + 𝟏𝟏𝟏𝟏 � �
x3 𝟐𝟐
𝒇𝒇𝟑𝟑∗ (𝒔𝒔𝟑𝟑 ) 𝒙𝒙∗𝟑𝟑
s3 0 1 2 3 4 5
n=3
0 0 0 0
1
1 16 12 9 8 8 8 8 3 atau 4
2
𝟏𝟏 𝒙𝒙𝟐𝟐 ∗
𝒇𝒇𝟐𝟐 𝒙𝒙𝟐𝟐 = 𝑲𝑲(𝒙𝒙𝟐𝟐 + 𝒙𝒙𝟐𝟐 + � � 𝒇𝒇𝟑𝟑 (𝟏𝟏)
(𝟏𝟏, ) )
x2 𝟐𝟐
𝒇𝒇𝟐𝟐∗ (𝒔𝒔𝟐𝟐 ) 𝒙𝒙∗𝟐𝟐
s2 0 1 2 3 4 -
n=2
0 0 - 0 0
1
1 8 8 7 7 7 - 7 2 atau 3
2
𝟏𝟏 𝒙𝒙𝟏𝟏
𝒇𝒇𝟏𝟏 (𝟏𝟏, 𝒙𝒙𝟏𝟏 ) = 𝑲𝑲(𝒙𝒙𝟏𝟏 ) + 𝒙𝒙𝟏𝟏 + � � 𝒇𝒇∗𝟐𝟐 (𝟏𝟏)
x1 𝟐𝟐
𝒇𝒇𝟏𝟏∗ (𝒔𝒔𝟏𝟏 ) 𝒙𝒙∗𝟏𝟏
n=1 s1 0 1 2 3 4 -
1 3 7 7 3
1 7 7 6 6 7 - 6 2
2 4 8 16 4
“ Diberikan sekumpulan atau serangkaian matriks yang akan dihitung hasil kali
titiknya ( Dot Product ), rangkaian matriks diatur sedemikian hingga proses perkalian
titik dapat berlangsung dalam serangkaian operasi perkalian skalar yang minimum “.
Motivasi. Jumlah total dari berapa kali perkalian skalar yang dilakukan di dalam proses
perkalian matriks akan sangat bergantung pada bagaimana pengaturan rangkaian
matriks yang akan dikalikan atau dengan kata lain, pengaturan rangkaian yang berbeda
dapat memberikan jumlah operasi kali skalar yang berbeda pula. Sebagai contoh, akan
dilakukan perkalian matriks berantai b1 dengan ordo 300 x 10, b2 berordo 10 x 300 dan
b3 yang berordo 300 x 10 seperti terlihat dalam sintaks mathematica berikut :
Program Dinamik 12
Hasil terakhir 30 kali lebih sedikit daripada pengaturan yang pertama. Sehingga jelas
terlihat perbedaan yang terjadi dengan pengaturan rangkaian perkalian yang berbeda.
Kemudian, fungsi Built-in Dot ternyata bukanlah pilihan yang tepat untuk
melakukan pekalian berantai matriks untuk mendapatkan urutan perkalian yang
optimal. Berikut adalah berapa besar waktu yang diperlukan untuk menyelesaikan
perkalian berantai pada contoh di atas ;
Tetapi apabila dilakukan pemanggilan fungsi Dot secara eksplisit, akan memberikan
Masalah. Misalkan rangkaian ( rantai ) matriks yang akan dikalikan adalah A1, A2, . . . ,
An. Dimana Ai berukuran pi x pi+1 . Masalah yang akan diselesaikan adalah menentukan
ongkos ( cost ) perkalian matriks berantai dengan menggunakan pengaturan rangkaian
yang optimum apabila diberikan daftar ukuran matriks 𝑝𝑝 = { 𝑝𝑝1 , … , 𝑝𝑝𝑛𝑛+1 } . Pada
contoh di atas, daftar ukuran matriksnya adalah { 300, 10, 300, 10 }, ongkos dari
evaluasi optimalnya adalah 60000, dan pengaturan rangkaian optimalnya adalah {1,
{2,3}}.
Penghampiran kasar dari masalah ini, yaitu dengan cara menghitung ongkos
untuk setiap kemungkinan pegaturan rangkaian matriks, akan memakan waktu yang
berbentuk fungsi berpangkat n = panjang rantai matriks ( tepatnya, paling sedikit
sebesar 4𝑛𝑛 /𝑛𝑛3/2 ). Pendekatan dengan cara seperti ini sangatlah tidak layak secara
komputasi kecuali jika n nya kecil.
Langkah awal dalam pencarian solusi adalah, harus dipastikan bahwa masalah
perkalian berantai dari matriks memenuhi sifat memiliki substruktur atau subproblem
yang optimal. Substruktur optimal berarti bahwa solusi optimal dari masalah dibangun
dari solusi optimum dari masalah yang lebih sederhana tetapi memiliki struktur yang
sama dengan struktur masalah aslinya. Contohnya, untuk mencari urutan perkalian
yang optimum dari rantai matriks A1A2A3A4A5 haruslah dipandang empat cara
alternatif dalam split masalah awal menjadi : 𝐴𝐴1 (𝐴𝐴2 𝐴𝐴3 𝐴𝐴4 𝐴𝐴5 ), (𝐴𝐴1 𝐴𝐴2 )(𝐴𝐴3 𝐴𝐴4 𝐴𝐴5 ) ,
(𝐴𝐴1 𝐴𝐴2 𝐴𝐴3 )(𝐴𝐴4 𝐴𝐴5 ), dan (𝐴𝐴1 𝐴𝐴2 𝐴𝐴3 𝐴𝐴4 )𝐴𝐴5 . ( Hanya terdapat n-1 buah pecahan dari
masalah awal yang memiliki panjang rangkaian sebanyak n atau dalam contoh adalah
5, sebagai akibat dari tidak berlakunya sifat komutatif pada perkalian matriks ). Jika
diberikan split tertentu dari masalah awal ( salah satu dari alternatif di atas ), Solusi
optimal yang diperoleh ternyata dibangun oleh solusi optimal dari dua subproblem
lainnya. Oleh karena itu, subproblem memiliki struktur yang sama dengan masalah
aslinya yaitu solusi optimumnya dibangun oleh solusi optimum dari subproblem , tetapi
dalam skala yang lebih sederhana.
Program Dinamik 14
Pengamatan ini memberikan suatu rumusan rekursif untuk masalah yang akan
diselesaikan. Misalkan m(i,j) adalah ongkos untuk perkalian matriks berantai Ai ,...,Aj
dengan urutan yang optimal, maka definisi secara rekursif dari m(i,j) adalah
0 𝑗𝑗𝑗𝑗𝑗𝑗𝑗𝑗 𝑖𝑖 = 𝑗𝑗
𝑚𝑚(𝑖𝑖, 𝑗𝑗) = � (1)
min𝑖𝑖≤𝑘𝑘<𝑗𝑗 [𝑚𝑚(𝑖𝑖, 𝑘𝑘) + 𝑚𝑚(𝑘𝑘 + 1, 𝑗𝑗) + 𝑝𝑝𝑖𝑖 𝑝𝑝𝑘𝑘+1 𝑝𝑝𝑗𝑗 +1 ] 𝑗𝑗𝑗𝑗𝑗𝑗𝑗𝑗 𝑖𝑖 < 𝑗𝑗
Total banyaknya jalur dari puncak ke suatu simpul lainnya pada graf
menunjukkan berapa kali solusi dari subproblem itu akan diperlukan. [ Cormen, et all,
1990 ] telah menunjukkan bahwa kompleksitas waktu dari proses ini adalah 2𝑛𝑛 .
Gambar. Pola keputusan optimum yang diperoleh dari masalah perkalian matriks
berantai.
Program Dinamik 16
Contoh
Diberikan daftar ukuran matriks berantai yang akan dikalikan sebagai berikut ;
Pemanggilan m[1,6] memberikan jumlah minimum dari proses perkalian skalar yang
dilakukan pada perkalian berantai matriks pada kasus ini. Yaitu
Berikut adalah daftar semua hasil perhitungan dari contoh kasus di atas ;
Dimana tabel dari ongkos alternatif disimpan dalam suatu variabel lokal bernama
choices , dan indeks matriks dengan ongkos minimum ( dari bagian masalah awal )
yang pada bagian awal tadi dinamakan k, disimpan dalam suatu variabel global
bernama s[i,j] . Apabila bentuk modifikasi ini dijalankan, diperoleh ;
Tabel di atas menunjukkan bahwa optimal split untuk masalah utama ( awal ) berada
antara matriks ke-3 dan ke-4 atau k = 3 dan k = 4 ( s[1,6]=3 ). Optimal split untuk
subproblem 𝐴𝐴1 𝐴𝐴2 𝐴𝐴3 berada antara matriks ke 1 dan 2 ( s[1,3]=1 ), dan optimal split
untuk subproblem 𝐴𝐴4 𝐴𝐴5 𝐴𝐴6 berada antara matriks ke 5 dan 6 ( s[4,6]=5 ).
Program Dinamik 18
Dengan demikian telah diperoleh keputusan yang optimal untuk persoalan perkalian
matriks-berantai di atas.
Metode penyelesaian perkalian matrik berantai dengan panjang rantai dan ukuran
berbeda adalah sama dengan penyelesaian contoh di atas, tinggal dilakukan beberapa
penyesuaian.
Model Knapsack pada dasarnya sejalan dengan situasi dimana seorang prajurit
( atau seorang pejalan kaki ) harus memutuskan barang – barang apa saja yang harus ia
masukkan dalam ranselnya. Masalah ini pada umumnya menjelaskan tentang model
alokasi sumber daya dimana suatu sumber daya terbatas yang harus digunakan untuk
sejumlah alternatif tertentu ( misalnya, dana yang terbatas dalam pelaksanaan suatu
proyek ) dengan tujuan untuk memaksimumkan pencapaian target yang telah
ditentukan.
Terhadap
Stage, state dan alternatif keputusan pada model di atas adalah sebagai berikut :
𝑊𝑊
merupakan bilangan bulat terbesar yang kurang dari atau sama dengan 𝑤𝑤 𝑖𝑖
. Dengan
𝑊𝑊
demikian, mi = 0, 1, 2, ... , �𝑤𝑤 �.
𝑖𝑖
3. State pada stage ke – i dilambangkan dengan xi , berat total yang ditentukan untuk
item ( stage ) ke – i, i+1, ... , n.
Definisikan
𝑓𝑓𝑖𝑖 (𝑥𝑥𝑖𝑖 ) = Manfaat maksimum ( maksimum return ) dari stage ke – i, i+1 dan n ,
apabila diberikan state xi .
1. Tulis ,
𝑓𝑓𝑖𝑖 (𝑥𝑥𝑖𝑖 ) = min {𝑟𝑟𝑖𝑖 𝑚𝑚𝑖𝑖 + 𝑓𝑓𝑖𝑖+1 (𝑥𝑥𝑖𝑖+1 )} , 𝑖𝑖 = 1,2, … , 𝑛𝑛
𝑊𝑊
𝑚𝑚 𝑖𝑖 =0,1,…,� �
𝑤𝑤 𝑖𝑖
𝑥𝑥 𝑖𝑖 ≤𝑊𝑊
𝑓𝑓𝑛𝑛 +1 (𝑥𝑥𝑛𝑛+1 ) ≡ 0
2. Tulis xi+1 sebagai suatu fungsi dalam xi, agar persamaan untuk 𝑓𝑓𝑖𝑖 (𝑥𝑥𝑖𝑖 ) pada langkah
1 hanya merupakan fungsi dalam xi . Berdasarkan definisi, 𝑥𝑥𝑖𝑖 − 𝑥𝑥𝑖𝑖+1 = 𝑤𝑤𝑖𝑖 𝑚𝑚𝑖𝑖
menyatakan besarnya massa barang yang digunakan pada stage ke – i. Sehingga,
Program Dinamik 20
𝑥𝑥𝑖𝑖+1 = 𝑤𝑤𝑖𝑖 𝑚𝑚𝑖𝑖 − 𝑥𝑥𝑖𝑖 , dan diperoleh bentuk persamaan rekursif untuk masalah
knapsack :
𝑓𝑓𝑖𝑖 (𝑥𝑥𝑖𝑖 ) = min {𝑟𝑟𝑖𝑖 𝑚𝑚𝑖𝑖 + 𝑓𝑓𝑖𝑖+1 (𝑤𝑤𝑖𝑖 𝑚𝑚𝑖𝑖 − 𝑥𝑥𝑖𝑖 )} , 𝑖𝑖 = 1,2, … , 𝑛𝑛
𝑊𝑊
𝑚𝑚 𝑖𝑖 =0,1,…,� �
𝑤𝑤 𝑖𝑖
𝑥𝑥 𝑖𝑖 ≤𝑊𝑊
Contoh kasus
Suatu kapal dengan kapasitas muatan 4 ton, dapat memuat 1 atau lebih item dari 3 jenis
item barang yang ada. Berikut daftar massa wi ( dalam Ton ) dan besarnya bayaran
muatan ri dalam ( dalam ribuan dolar ) untuk item barang ke – i.
Stage 3
Berikut adalah persamaan yang menjadi dasar dalam membandingkan alternatif –
alternatif keputusan pada stage 3,
𝑓𝑓3 (𝑥𝑥3 ) = max {14𝑚𝑚3 }
𝑚𝑚 3 =0,1,…,4
Kolom – kolom yang tidak terisi merupakan nilai yang tak-feasibel ( 𝑤𝑤3 𝑚𝑚3 > 𝑥𝑥3 ).
Stage 2
4
𝑚𝑚𝑚𝑚𝑚𝑚{𝑚𝑚2 } = �3� = 1 atau 𝑚𝑚2 = 0,1
Stage 1
4
max{𝑚𝑚1 } = �2� = 2 atau 𝑚𝑚1 = 0,1,2
4
𝑓𝑓1 (𝑥𝑥1 ) = max {31𝑚𝑚1 + 𝑓𝑓2 (𝑥𝑥1 − 2𝑚𝑚1 )} max{𝑚𝑚1 } = � � = 2
𝑚𝑚 1 =0,1,2 2
Solusi
𝟑𝟑𝟑𝟑𝒎𝒎𝟏𝟏 + 𝒇𝒇𝟐𝟐 (𝒙𝒙𝟏𝟏 − 𝟐𝟐𝒎𝒎𝟏𝟏 )
optimal
𝒙𝒙𝟏𝟏
𝒎𝒎𝟏𝟏 = 𝟎𝟎 𝒎𝒎𝟏𝟏 = 𝟏𝟏 𝒎𝒎𝟏𝟏 = 𝟐𝟐 𝒇𝒇𝟏𝟏 𝒎𝒎∗𝟏𝟏
0 0+0=0 - - 0 0
0 + 14 = 1
1 - - 0
14 4
0 + 28 = 31 + 0 = 3
2 - 1
28 31 1
0 + 47 = 31 + 14 4
3 - 0
47 = 45 7
0 + 61 = 31 + 28 62 + 0 = 6
4 2
61 = 59 62 2
Semakin lama mesin digunakan, maka akan memerlukan biaya perawatan yang
semakin besar dan produktivitasnya akan semakin menurun. Ketika mesin mencapai
umur tertentu, akan lebih ekonomis apabila mesin tersebut diganti dengan yang baru.
Permasalahan yang kemudian muncul adalah berapa umur paling ekonomis dari mesin
yang digunakan ?
Elemen – elemen program dinamik untuk program dinamik dari masalah ini
adalah :
1. Stage ke i diwakili oleh tahun ke i, diaman i = 1, 2, …, n.
2. Alternatif pada stage ke i adalah salah satu dari pilihan : untuk tetap
menggunakan mesin yang lama atau mengganti dengan mesin yang baru
pada awal tahun ke – i.
3. State pada stage ke i adalah umur dari mesin pada awal tahun ke i.
𝑓𝑓𝑖𝑖 (𝑡𝑡) = 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏ℎ 𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎 𝑡𝑡𝑡𝑡ℎ𝑢𝑢𝑢𝑢 𝑖𝑖, 𝑖𝑖 + 1, … , 𝑛𝑛.
𝑓𝑓𝑖𝑖 (𝑡𝑡) ≡
𝑟𝑟(𝑡𝑡) − 𝑐𝑐(𝑡𝑡) + 𝑓𝑓𝑖𝑖+1 (𝑡𝑡 + 1), 𝑗𝑗𝑗𝑗𝑗𝑗𝑗𝑗 𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑
𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚 �
𝑟𝑟(0) + 𝑠𝑠(𝑡𝑡) − 𝐼𝐼 − 𝑐𝑐(0) + 𝑓𝑓𝑖𝑖+1 (1), 𝑗𝑗𝑗𝑗𝑗𝑗𝑗𝑗 𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚 𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑 𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑 𝑦𝑦𝑦𝑦𝑦𝑦𝑦𝑦 𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏
𝑓𝑓𝑛𝑛 +1 (. ) ≡ 0
Program Dinamik 24
Contoh
Bentuk network dari masalah di atas dapat dilihat pada gambar berikut :
Program Dinamik 25
Solusi dari masalah adalah ekuivalen dengan menemukan rute terpanjang pada
network ( yaitu maksimum revenue ) dari awal tahun ke 1 sampai akhir tahun ke 4.
Berikut adalah penyelesaian dari masalah di atas. Namun, sebelumnya perlu dicatat
bahwa apabila penggantian mesin dilakukan pada tahun ke 4, maka revenue akan
termasuk juga nilai simpan mesin ( salvage value ) s(t) dari mesin yang telah diganti
dan nilai simpan untuk penggantian mesin ( s(1) ).
Program Dinamik 26
Stage 4
K R Solusi Optimum
t Kepu
r(t)+ s(t+1) – c(t) r(0) + s(t) + s(1) – c(0) - I f4(t)
tusan
1 19 + 60 – 0.6 = 20 + 80 + 80 – 0.2 – 100 = 79. R
78.4 79.8 8
2 18.5 + 50 – 1.2 = 20 + 60 + 80 – 0.2 – 100 = 67. K
67.3 59.8 3
3 17.2 + 30 – 1.5 = 20 + 50 + 80 – 0.2 – 100 = 49. R
45.7 49.8 8
4 ( mesin harus 20 + 5 + 80 – 0.2 – 100 = 4.8 R
diganti ) 4.8
Stage 3
K R Solusi Optimum
t r(t)+ s(t+1) – f3(t Kepu
r(0) + s(t) – c(0) – I + f4(1)
f4(t+1) ) tusan
1 19 – 0.6 + 67.3 20 + 80 – 0.2 – 100 + 79.8 = 85. K
= 85.7 79.6 7
2 18.5 - 1.2 + 49.8 20 + 60 – 0.2 – 100 + 79.8 = 67. K
= 67.1 59.6 1
5 14 – 1.8 + 4.8 = 20 + 10 – 0.2 – 100 + 79.8 = 19. R
17 19.6 6
Program Dinamik 27
Stage 2
K R Solusi Optimum
t r(t) - c(t) – f2(t Kepu
r(0) + s(t) – c(0) – I + f3(1)
f3(t+1) ) tusan
1 19 – 0.6 + 67.1 20 + 80 – 0.2 – 100 + 85.7 = 85. K
= 85.5 85.5 5 atau
R
4 15.5 – 1.7 + 19.6 20 + 10 – 0.2 – 100 + 85.7 = 35. R
= 33.4 35.5 5
Stage 1
K R Solusi Optimum
t r(t) - c(t) – f1(t Kepu
r(0) + s(t) – c(0) – I + f2(1)
f2(t+1) ) tusan
3 17.2 – 1.5 + 35.5 20 + 50 – 0.2 – 100 + 85.5 = 55. R
= 51.2 55.3 3
Solusi optimum dari masalah di atas dapat dilihat pada gambar berikut :
Program Dinamik 28
Referensi
Hillier, Frederick S., Lieberman, Gerald J.. 2001. Introductions to Operation Research,
Seventh Edition. New York : McGraw Hill Company Inc.
Taha, Hamdy A.. 2007. Operation Research : An Introduction , 8th Edition. Upper Sadle
River : Pearson Education Inc.
Wagner, David B.. 1995. Dynamic Programming. Miller Freeman Publications.
Yulianti, Diah Eka, dan kawan – kawan. Penerapan Algoritma Pogram Dinamis Pada
Penyelesaian Persoalan Partisi. Sumber :
http://www.informatika.org/~rinaldi/Stmik/2005-
2006/Makalah2006/MakalahStmik2006-16.pdf. Download : tanggal 02 – 01 – 2010,
pukul 21:53.