7 BAB 2 LANDASAN TEORI
2.1
Perencanaan Produksi Perencanaan produksi merupakan perencanaan tentang produk dan berapa jumlah
yang akan diproduksi oleh perusahaan dalam satu periode yang akan datang. Perencanaan produksi merupakan bagian dari perencanaan operasional di dalam perusahaan. Dalam penyusunan perencanaan produksi, hal yang perlu dipertimbangkan adalah adanya optimasi produksi sehingga dapat tercapai biaya yang paling rendah untuk pelaksanaan proses produksi tersebut. Perencanaan produksi juga dapat didefinisikan sebagai proses untuk memproduksi barang-barang pada suatu periode tertentu sesuai dengan yang diramalkan atau dijadwalkan melalui pengorganisasian sumber daya seperti tenaga kerja, bahan baku, mesin dan peralatan lainnya. Perencanaan produksi memberikan taksiran/ramalan atas permintaan produk dan jasa yang diharapkan, yang akan disediakan perusahaan di masa yang akan datang. Dengan demikain, peramalan merupakan bagian integral dari perencanaan produksi. (Buffa & Sarin, 1996).
2.2
Pemrograman Matematis Dalam masalah optimalisasi hal yang biasanya dilakukan adalah memaksimumkan
atau meminimumkan sebuah besaran tertentu, yang disebut dengan tujuan objektif yang bergantung pada beberapa peubah masukan (input variables). Peubah-peubah ini dapat tidak saling bergantungan atau saling bergantungan melalui satu atau lebih kendala (constraints). Maka dalam pemrograman matematis ini terdapat dua macam fungsi yang
8 ditetapkan, yaitu fungsi tujuan (objective function) dan fungsi batasan/kendala (constraints), di mana tujuan dan kendala-kendalanya diberikan dalam bentuk fungsifungsi matematis dan hubungan fungsional. Fungsi tujuan adalah fungsi yang menggambarkan tujuan dalam permasalahan. Fungsi kendala adalah bentuk matematis dari
kendala-kendala/
batasan-batasan
yang
tersedia
dalam
mencapai
tujuan
permasalahan. Program matematis yang digunakan sebagai berikut: optimalisasikan : z = f ( x1 , x2 ,..., xn )
g1 ( x1 , x2 ,..., xn ) ⎫ ⎧b1 ≤ ⎪ ⎪ g 2 ( x1 , x2 ,..., xn ) ⎪ ⎪b2 dengan kendala : ⎬ = ⎨ ... ........................ ⎪ ≥ ⎪ ⎪⎩bm g m ( x1 , x2 ,..., xn )⎪⎭
(1)
Setiap hubungan kendala ke-m dalam persamaan (1) melibatkan salah satu dari ketiga tanda yaitu ≤ , = atau ≥ . Program matematis dikatakan tak berkendala dalam rumusan (1) jika setiap fungsi gi dipilih nol dan setiap konstanta bi dipilih nol. Bentuk dari pemrograman matematis ini bisa berupa program linier, program bilangan bulat dan program kuadratis. Contoh 2.1: Sebuah perusahaan pabrik plastik mempunyai persediaan pembungkus transparan sebanyak 1200 buah kotak di pabriknya yang satu dan 1000 buah kotak di pabrik yang lainnya. Perusahaan ini menerima pesanan produknya dari tiga pengecer yang berbeda-beda, masing-masing sejumlah 1000, 700 dan 500 buah kotak. Biaya pengiriman unit (dalam sen per kotak) dari kedua pabrik kepada para pengecer adalah sebagai berikut:
9 Pengecer 1 Pengecer 2 Pengecer 3 Pabrik 1 14 13 11 Pabrik 2 13 13 12 Tentukan suatu skedul pengiriman dengan biaya minimum untuk memenuhi semua permintaan dari inventaris yang sekarang ini. Penyelesaian: Dengan menuliskan xij (i = 1,2; j = 1,2 ,3 ) untuk jumlah kotak yang akan dikirim dari pabrik i ke pengecer j, maka kita peroleh sebagai tujuannya Minimumkan : Z = 14 x11 + 13 x12 + 11 x13 +13 x 21 +13 x 22 +12 x 23 Karena jumlah yang dikirimkan masing-masing pabrik tidak dapat melebihi persediaannya maka
x11 + x12 + x13 ≤ 1200 (pengiriman dari pabrik 1) x 21 + x 22 + x 23 ≤ 1000 (pengiriman dari pabrik 2) Di samping itu, jumlah total yang dikirimkan kepada para pengecer harus memenuhi permintaan mereka, karena itu
x11 + x 21 ≥ 1000 (pengiriman ke pengecer 1) x12 + x 22 ≥ 700 (pengiriman ke pengecer 2) x13 + x 23 ≥ 500 (pengiriman ke pengecer 3) Karena persediaan totalnya, 1200 + 1000, sama dengan permintaan total, 1000+700+500, maka tiap-tiap pertidaksamaan kendala dapat dijadikan suatu kesamaan. Dengan melakukannya, dan kemudian mengikutsertakan kendalakendala tersembunyi bahwa tak ada pengiriman yang negatif dan bahwa pengiriman kotaknya dalam keadaan utuh, maka kita peroleh program matematis berikut:
10 Minimumkan : Z = 14 x11 + 13 x12 + 11 x13 +13 x 21 +13 x 22 +12 x 23 Dengan kendala : x11 + x12 + x13
= 1200
x 21 + x 22 + x 23 + x 21
x11 x12
+ x 22
x13 dan semua peubah positif dan bulat.
+ x 23
= 1000 = 1000 = 700 = 500
(Teori dan Soal-soal Operation Research, Nomor 1.12, p.13).
2.3 Linear Programming
Goal Programming merupakan perluasan dari model linear programming. Oleh karena itu terlebih dahulu dijelaskan tentang linear programming . Linear programming merupakan suatu model umum yang dapat digunakan dalam pemecahan masalah pengalokasian sumber-sumber yang terbatas secara optimal, yaitu mendapatkan hasil yang menggambarkan tercapainya sasaran yang paling baik di antara pilihan-pilihan yang mungkin. Dalam memecahkan masalah linear programming menggunakan model matematis, dimana fungsi matematis yang digunakan adalah fungsi linier. Model matematis dikatakan linier jika f ( x1 , x2 ,..., xn ) dan setiap g i ( x1 , x2 ,..., xn ) (i = 1,2,..., m ) adalah linier terhadap argumen-argumennya. Bentuk matematis program linier ini yaitu f ( x1 , x2 ,..., xn ) = c1 x1 + c2 x2 + ... + cn xn
(2)
g i ( x1 , x2 ,..., xn ) = ai1 x1 + a12 x2 + ... + ain xn
(3)
dan
di mana c j dan aij dengan (i = 1,2,..., m; j = 1,2,..., n) adalah konstanta-konstanta yang diketahui.
11 2.3.1
Kondisi Tak Negatif
Semua peubah yang belum dikendala agar tidak negatif, akan digantikan dengan selisih dari dua peubah baru yang telah terkendala. Kendala-kendala linier memiliki bentuk: n
∑a x j =1
ij
j
~ bi
(4)
di mana ~ adalah salah satu dari relasi ≤ , = atau ≥ (tidak perlu sama untuk setiap i). Konstanta bi selalu dianggap tidak negatif. Contoh 2.2: Kendala 4 x1 + 5 x2 − 7 x3 ≤ −25 dikalikan dengan -1 maka kendala menjadi − 4 x1 − 5 x2 + 7 x3 ≥ 25 , di mana sekarang ruas kanannya menjadi tidak negatif.
2.3.2
Peubah Kurang dan Surplus n
Sebuah kendala linier yang berbentuk
∑a x j =1
ij
j
≤ bi dapat diubah menjadi suatu
persamaan dengan menambahkan sebuah peubah tak-negatif pada ruas kirinya. Peubah ini sama dengan selisih antara ruas kanan dan ruas kiri pertidaksamaan yang dikenal dengan peubah kurang (slack variable). Peubah ini merupakan peubah waste dalam tingkat sistem yang dimodelkan oleh kendala. n
Sebuah kendala linear yang berbentuk
∑a x j =1
ij
j
≥ bi dapat diubah menjadi suatu
persamaan dengan mengurangkan ruas kirinya dengan sebuah peubah baru yang taknegatif. Peubah ini secara numerik sama dengan selisih antara ruas kiri dan ruas kanan
12 pertidaksamaan, yang dikenal dengan peubah surplus (surplus variable). Peubah ini menyatakan kelebihan masukan dalam tingkat sistem yang dimodelkan oleh kendala. Setelah
semua
kendala
linier
(dengan
ruas
kanan
yang
tak-negatif)
ditransformasikan menjadi persamaan dengan memperkenalkan peubah-peubah slack dan surplus yang diperlukan, maka tambahkan lagi sebuah peubah baru, yang disebut peubah buatan (artificial variable), pada ruas kiri dari setiap persamaan kendala yang tidak mengandung peubah kurang/slack. Dengan demikian tiap persamaan kendala akan mengandung peubah slack atau peubah buatan. Pemecahan awal yang tak-negatif bagi himpunan kendala yang baru ini diperoleh dengan menetapkan setiap peubah kurang/slack dan peubah buatan sama dengan ruas kanannya, dan menetapkan semua peubah termasuk peubah surplus, sama dengan nol. Contoh 2.3: x1 + 2 x2 ≤ 3 Himpunan kendala :
4 x1 + 5 x2 ≥ 6 7 x1 + 8 x2 = 15
Ditransformasikan menjadi sebuah sistem persamaan dengan menambahkan sebuah peubah kurang, x3 , pada ruas kiri kendala pertama dan mengurangkan sebuah varuabel surplus, x4 , dari ruas kiri kendala kedua. Sistem yang baru adalah x1 + 2 x2 + x3 = 3 4 x1 + 5 x2 − x4 = 6 7 x1 + 8 x2 = 15 Bila sekarang peubah-peubah buatan x5 dan x6 berturur-turut ditambahkan pada ruas kiri dari kedua kendala yang terakhir, yakni kendala-kendala tanpa sebuah peubah kurang, maka hasilnya adalah
13 x1 + 2 x2 + x3 = 3 4 x1 + 5 x2 − x4 + x5 = 6 7 x1 + 8 x2 + x6 = 15 (Teori dan Soal-soal Operation Research, Contoh 2.4, p.21).
2.3.3
Penalty Cost
Penambahan peubah kurang/slack dan surplus pada pertidaksamaan tidak mengubah sifat kendala maupun tujuan. Oleh karena itu, peubah-peubah tersebut dapat diikutsertakan dalam fungsi tujuan tetapi dengan koefisien-koefisiennya nol. Sedangkan peubah buatan mengubah sifat kendala. Oleh karena itu peubah buatan hanya ditambahkan pada salah satu ruas persamaan, maka sistem yang baru ekuivalen dengan sistem kendala yang lama jika dan hanya jika peubah-peubah buatannya nol. Untuk menjamin penetapan seperti ini dalam pemecahan optimal, maka peubah-peubah buatan diturutsertakan dalam fungsi tujuan objektif tetapi dengan koefisien-koefisien positif yang besar sekali untuk tujuan meminimumkan dan koefisien-koefisien negatif yang besar sekali untuk tujuan memaksimumkan. Koefisien-koefisien ini dinyatakan dengan M atau − M , di mana M dipandang sebagai bilangan positif yang besar sekali,
menyatakan hukuman yang dikenakan dalam membuat suatu penetapan satuan pada peubah-peubah buatan. Dalam perhitungan manual nilai M ini dibiarkan saja sebagai ± M . Tetapi dalam perhitungan komputer, harus ditetapkan sebuah nilai bagi M ,
biasanya sebuah bilangan yang tiga atau empat kali lebih besar daripada semua bilangan yang terdapat dalam program itu.
14 2.4 Bentuk Standar
Sebuah program linier berada dalam bentuk standar jika semua kendalanya dimodelkan sebagai persamaan dan salah satu pemecahan layaknya diketahui. Dalam notasi matriks bentuk standarnya adalah optimumkan
: z = CT X
dengan kendala
: AX = B
dan
: X ≥0
(5)
di mana X adalah vektor kolom dari peubah-peubah yang tidak diketahui, termasuk peubah-peubah kurang, surplus dan buatan; C T adalah vektor baris dan biaya bersangkutan; A adalah matriks koefisien persamaan kendala; dan B adalah matriks kolom dari ruas kanan persamaan kendala. Jika X 0 hanya menunjukkan vektor dari peubah-peubah kurang/slack dan buatan, maka pemecahan layak awalnya diberikan oleh X 0 = B di mana dipahami bahwa semua peubah dalam X yang tidak terkandung dalam X 0 diberikan nilai nol. Contoh 2.4: Rumuskan program berikut dalam bentuk standar: Maksimumkan : z = 80 x1 + 60 x2 dengan kendala :
0,20 x1 + 0,32 x2 ≤ 0,25 x1 + x2 = 1
Untuk mengubah kendala pertama menjadi suatu persamaan, tambahkan sebuah peubah kurang x3 pada ruas kiri. Karena kendala kedua adalah suatu persamaan yang tidak mengandung peubah kurang, tambahkan sebuah peubah
15 buatan x4 pada ruas kirinya. Kedua peubah yang baru ini terdapat dalam fungsi tujuan, peubah kurang dengan koefisien biaya nol dan peubah buatan dengan koefisien biaya negatif yang besar sekali, sehingga kita peroleh sebagai berikut: Maksimumkan: z = 80 x1 + 60 x2 + 0 x3 + Mx4 dengan kendala :
0,20 x1 + 0,32 x2 + x3 = 0,25 x1 + x2 + x4 = 1
dan semua peubah tak-negatif (Teori dan Soal-soal Operation Research, Nomor 2.2, p.23).
2.5 Goal Programming 2.5.1
Perkembangan Goal Programming
Setelah membahas Linear Programming maka akan dibahas mengenai metode Goal Programming. Di mana metode ini merupakan perluasan dari Linear Programming dengan tujuan ganda. Formulasi Goal Programming pada dasarnya mirip dengan Linear Programming. Karakteristik yang membedakan yaitu tujuan-tujuan diperingkat oleh pembuat keputusan. Jadi pada Goal Programming terdapat lebih dari satu tujuan yang ingin dicapai dan dari beberapa tujuan itu terdapat peringkat/ tingkatan kepentingan dilihat dari mata pembuat keputusan.
Goal Programming telah cukup banyak
diterapkan dalam penelitian sebagai solusi pemecahan masalah dalam pengambilan masalah multi sasaran. Konsep pemrograman tujuan (Goal Programming) awalnya dilakukan oleh Charnes dan Cooper. Charnes dan Cooper mengembangkan pendekatan program tujuan untuk memperoleh solusi yang memuaskan, yang tidak dapat diperoleh dengan Linear Programming, karena adanya konflik antar tujuan. Kedua orang ini hanya
16 mengembangkan model tujuan ganda linier, kemudian ditransformasikan ke dalam model Linear Programming konvensional dengan menggunakan peubah-peubah penyimpanan tujuan yang dibobotkan. Pendekatan model ini seringkali dipandang sebagai Goal Programming linier dengan bobot (weighted linear goal programming). Salah satu keuntungan utama dari pendekatan ini adalah efisiensi komputasi, karena weighted linear goal programming dapat diselesaikan dengan prosedur Linear Programming biasa. Kelemahannya adalah dalam praktek sesungguhnya, ada kesulitan dalam memberikan bobot kepada setiap tujuan yang harus diraih, khususnya pada tujuan-tujuan yang saling konflik. Ijiri dan Jaaskelainen melakukan pemurnian terhadap teknik Goal Programming. Lee memberikan kontribusinya yang besar melalui pengembangan ide preemptive priority goal programming. Dalam kerangka kerjanya, pencapaian serangkaian tujuan dengan peringkat utama (P1) selalu lebih dipentingkan untuk dicapai dibanding serangkaian tujuan dengan peringkat di bawahnya (P2). Juga ditambahkan oleh Lee bahwa bisa menyisipkan beberapa tujuan yang berbobot pada setiap peringkat kepentingan jika tujuan-tujuan dalam sebuah peringkat tertentu memiliki satuan ukuran yang sama (commensurable). Ini yang disebut sebagai lexicographic weighted goal programming. Selanjutnya
Ignizio
memperluas
Goal
Programming
pengembangan menjadi algoritma exact integer goal programming.
dengan
melakukan
17 2.5.2
Konsep Goal Programming
Dasar Goal Programming melibatkan seluruh fungsi tujuan (objective function) ke dalam formulasi Goal Programming. Sebuah tujuan adalah menyatakan keinginan pembuat keputusan, seperti : “meminimalisasikan biaya produksi” atau “menghemat penggunaan listrik”. Untuk setiap tujuan, pembuat keputusan membuat spesifikasi tingkat kepentingannya dalam bentuk numerik yang lebih pasti, misalnya : “menghemat penggunaan listrik sampai 15% ”. Tetapi tingkat kepentingan tidak selalu dapat tercapai, maka dari itu ada penyimpangan (deviation) yang terjadi terhadap tujuan. Selanjutnya, pembuat keputusan mencari solusi untuk meminimumkan total penyimpangan terhadap tujuan-tujuan tersebut dari target-targetnya. Secara matematis dapat dituliskan sebagai berikut: x1 , x2 ,..., xn = peubah keputusan K = banyaknya tujuan yang dipertimbangkan c jk = koefisien x j ( j = 1,2,..., n ) pada fungsi objektif dalam setiap tujuan-
k ( k = 1,2,..., K ) g k = target tujuan-k. Solusi untuk persoalan Goal Programming adalah bagaimana mendekati target-target yang menjadi tujuan itu sedekat mungkin dan jika terjadi penyimpangan maka penyimpangan-penyimpangan itu diminimumkan.
18 n
∑c j =1
j1
x j = g1
n
∑c j =1
j2
x j = g2 (6)
. . . n
∑c j =1
jk
x j = gk
Karena tidak mungkin dapat mencapai seluruh target, maka perlu didefinisikan sebuah fungsi objektif menyeluruh untuk Goal Programming yang sesuai dengan tujuan untuk mencapai berbagai target. Dengan asumsi bahwa penyimpangan itu bisa bernilai negatif dan positif, maka fungsi objektif menyeluruh untuk persoalan Goal Programming dapat dituliskan sebagai berikut: K
n
k =1
j =1
Z min = ∑ (∑ c jk x j − g k )
(7)
Dengan demikian, fungsi objektif Goal Programming diekspresikan sebagai fungsi preferensi (preference function) atau fungsi pencapaian (achievement function) terbatas pada penyimpangan dari target. Fungsi objektif menyeluruh itu sangat rumit untuk diselesaikan. Maka dengan transformasi format Linear Programming kepada fungsi objektif menyeluruh tersebut, dapat dilakukan solusi yang lebih sederhana. Langkah awal dari proses transformasi ini adalah membuat peubah baru yang terdefinisi sebagai: n
d k = ∑ c jk x j − g k , untuk k = 1,2, ... , K
(8)
j =1
Dengan demikian, fungsi objektif Goal Programming menjadi : K
Z min = ∑ d k k =1
(9)
19 Karena d k bisa bernilai positif dan negatif, maka peubah ini dapat diganti dengan dua +
−
+
−
peubah non negatif baru, sehingga d k = d k − d k , di mana d k dan d k ≥ 0 . Peubah d k ini merupakan peubah deviasi (deviational variable). +
−
+
dk = dk − dk = dk + dk
dk
+
dan
dk
−
−
(10)
merupakan peubah penyimpangan (deviational variables) yang
merepresentasikan tingkat pencapaian kelebihan target (over achievement) dan pencapaian di bawah target (under achievement). Secara bersamaan, tidak mungkin terjadi over achievement +
dan under achievement, maka berlaku hubungan sebagai
−
berikut : d k × d k = 0 . Simbol k
yang menggantung (subscript) mengindikasikan
bahwa peubah deviasi ini berkaitan dengan goal constraint. Tanda “-” dan “+” pada superscript mengindikasikan under achievement
dan over achievement +
secara
−
berurutan. Secara umum notasi untuk peubah deviasi adalah d k dan d k . Formula umum Goal Programming kemudian dapat dituliskan secara lengkap sebagai: K
Z min = ∑ (d k +d k ) +
−
k =1
s/t
(11)
n
∑c j =1
+
jk
−
x j − (d k − d k ) = g k
∀x j , d k
+/−
≥0
Dalam formulasi Goal Programming ini, setiap target dimasukkan dalam kendalakendala persamaan. Fungsi kendala semacam ini disebut sebagai kendala tujuan (goal constraint), di mana dalam persamaannya telah melibatkan peubah penyimpangan,
20 +
−
d k dan d k . Selanjutnya, dapat mengaplikasikan metode Simplex untuk memperoleh solusi persoalan Goal Programming tersebut. Pada beberapa situasi, penyimpangan suatu target tertentu menjadi lebih penting bagi pembuat keputusan dibanding penyimpangan target lainnya. Demikian pula, pada sebuah target tertentu, bisa saja penyimpangannya jauh lebih penting dari penyimpangan target lainnya dengan arah yang berlawanan. Pada situasi seperti ini, maka bisa dimasukkan bobot yang berbeda (differential weight), wk
+
dan wk
−
pada setiap
penyimpangannya: K
Z min = ∑ ( wk d k + wk d k ) +
+
−
−
k =1
s/t.
(12)
n
∑c j =1
+
jk
−
x j − (d k − d k ) = g k
∀x j , d k
+/−
≥0 +
−
Pada banyak kasus, sebuah Goal Programming mengandung d k dan d k , walaupun kedua peubah penyimpangannya ini tidak muncul pada fungsi objektif. Dengan demikian, sangat mungkin untuk menuliskan fungsi kendala target seperti: n
∑c j =1
n
x j +d k = g k ⇒ ∑ c jk x j ≤ g k −
jk
(13)
j =1
+
Untuk kasus ini, fakta d k tidak muncul dalam kendala target mengindikasikan bahwa
dk
+
pada target itu tidak mungkin ada. Ini merupakan contoh dari sebuah batas atas
target (upper bound goal) dan hal itu mirip dengan ketidaksamaan ≤ dalam Linear
21 Programming. d k
+
tidak dimungkinkan pada target tersebut, tetapi d k
−
masih
−
diperkenankan. d k akan muncul pada fungsi objektif Goal Programming. Hal lain mungkin juga, kendala target berbentuk : n
n
∑ c jk x j −d k = g k ⇒ ∑ c jk x j ≥ g k +
j =1
(14)
j =1
−
Untuk kasus ini, fakta d k tidak muncul dalam kendala target mengindikasikan bahwa −
d k pada target itu tidak mungkin ada. Ini merupakan contoh dari sebuah batas bawah target (lower bound goal) dan hal itu mirip dengan ketidaksamaan ≥ dalam Linear Programming. d k
−
+
tidak dimungkinkan pada target tersebut, tetapi d k masih
+
diperkenankan. d k akan muncul pada fungsi objektif Goal Programming. Untuk memudahkan pemahaman formulasi GP, maka akan dicontohkan etrlebih dahulu GP dengan tujuan tunggal, yang dikembangkan dari sebuah persoalan Linear Programming. Contoh 2.5: The Sonic Company memproduksi dua jenis oven microwave, yaitu dial setting ( X 1 ) dan touch setting ( X 2 ). Keuntungan/unit dari X 1 = $ 100.00 dan dari X 2 = $ 150.00. Kapasitas jam proses setiap unit oven microwave adalah:
Jenis Oven
X1 X2 Kapasitas jam proses/hari
Jam Proses/Unit Sub assembling Kabel Assembling Penyelesaian dan Komponen (W&C) dan Pengujian (F&T) 4 2 2 2 80 60
22 Jika perusahaan ini mengharapkan total profit maksimal dari kedua produk itu saja, maka persoalan ini dianggap sebagai persoalan Linear Programming. Formulasi Linear Programming adalah: Fungsi Tujuan
: Z max = 100 X 1 + 150 X 2
Fungsi Kendala
: 4 X 1 + 2 X 2 ≤ 80 Æ kendala jam proses bagian W&C
2 X 1 + 2 X 2 ≤ 60 Æ kendala jam proses bagian F&T ∀X j ≥ 0 (j = 1,2) Æ kendala logis
Jika pihak manajemen perusahaan kemudian memutuskan bahwa target total profit yang bisa diterima dengan memuaskan, minimal $5,000.00/hari karena alasan pengelolaan financial. Persoalan menjadi GP dengan tujuan tunggal yaitu: Fungsi Tujuan :
Z min = d −
Fungsi Kendala :
4 X 1 + 2 X 2 ≤ 80
Æ kendala jam proses bagian W&C
2 X 1 + 2 X 2 ≤ 60 Æ kendala jam proses bagian F&T 100 X 1 + 150 X 2 + d − − d + = 5000
∀X j , d − , d + ≥ 0 (j=1,2) Æ kendala logis Pihak
manajemen
perusahaan
selanjutnya
menginginkan
total
keuntungan/hari paling sedikit $ 2,400.00. Dengan pencapaian target profit sebesar itu tidak mungkin dihasikan jika tidak ditunjang penjualan X 2 minimal 15 unit/hari dan menginginkan penjualan X 1 minimal 5 unit/hari, maka persoalan menjadi Goal Programming. Tujuan yang ingin dicapai sebagai berikut:
23 No. 1
Target Prioritas Menghasilkan total 1 keuntungan/hari paling sedikit $ 2,400 2 2 Penjualan X 2 /hari minimal 15 unit 3 3 Penjualan X 1 /hari minimal 5 unit Formulasi di atas menjadi formulasi Goal Programming tujuan ganda yaitu:
Fungsi Tujuan :
−
−
Z min = P1d1 + P2 d 2 + P3d 3
−
Fungsi Kendala : 4 X 1 + 2 X 2 ≤ 80
2 X 1 + 2 X 2 ≤ 60 −
+
100 X 1 + 150 X 2 + d1 − d1 = 2400 −
+
X 2 + d 2 − d 2 = 15 −
+
X 1 + d3 − d3 = 5 −
+
∀X j , d k , d k ≥ 0 (j = 1,2 dan k = 1,2,3) Asumsikan P1 >>>> P2 >>>> P3 Jika
kemudian
serikat
buruh
memiliki
kekuatan
untuk
menekan
perusahaan,bahwa tidak diperbolehkan adanya penggunaan jam kerja buruh yang berlebihan, misal bagian W&C paling banyak 45 jam proses/hari dan bagian F&T paling banyak 35 jam proses/hari, maka kasus menjadi konflik tujuan: No. 1
2 3 4
Target Pengunaan jam proses W&C paling banyak 45 jam/hari dan bagian F&T paling banyak 35 jam/hari Menghasilkan total keuntungan/hari paling sedikit $ 2,400 Penjualan X 2 /hari minimal 15 unit Penjualan X 1 /hari minimal 5 unit
Prioritas 1
2 3 4
24 Formulasi GP menjadi: Fungsi Tujuan :
+
+
−
−
Z min = P1 (d 4 + d 5 ) + P2 d1 + P2 d 2 + P3d 3
−
Fungsi Kendala : −
+
−
+
4 X 1 + 2 X 2 + d 4 − d 4 = 45 2 X 1 + 2 X 2 + d 5 − d 5 = 35 −
+
100 X 1 + 150 X 2 + d1 − d1 = 2400 −
+
X 2 + d 2 − d 2 = 15 −
+
X 1 + d3 − d3 = 5 −
+
∀X j , d k , d k ≥ 0 (j = 1,2 dan k = 1,2,3) (Kamarul Iman, p6) Perumusan persoalan / Algoritma goal programming hampir sama dengan linear programming , dengan langkah awal sebagai berikut: a. Rumuskan target apa saja yang ada dalam permasalahan dengan benar dan dengan linier b. Fungsi kendala tujuan (goal constraint) harus didefinisikan secara jelas dan dinyatakan sebagai fungsi kendala tujuan yang linier dengan pembatasanpembatasan / nilai target yang diinginkan pada ruas kanan c. Harus ada alternatif pemecahan untuk dipilih salah satu yang terbaik d. Sumber-sumber dan aktifitas mempunyai sifat dapat ditambahkan (additivity), dapat dibagi (divisibility) dan mempunyai jumlah yang terbatas (finiteness) e. Tambahkan penyimpangan ke bawah ( d − ) dan kurangkan penyimpangan ke atas ( d + ) ke dalam fungsi kendala tujuan sesuai target yang diinginkan f. Semua fungsi kendala tujuan berbentuk persamaan bukan pertidaksamaan
25 g. Fungsi objektif GP yaitu penyimpangan-penyimpangan yang diminimumkan. Jika target
tidak
menginginkan
penyimpangan
ke
bawah
maka
tambahkan
penyimpangan ke bawah dalam fungsi objektif GP. Jika target tidak menginginkan penyimpangan ke atas maka tambahkan penyimpangan ke atas dalam fungsi objektif h. Untuk kasus yang memiliki prioritas antar tujuan/target, maka pada fungsi objektif dikalikan masing-masing prioritas dengan penyimpangan yang ada dalam fungsi objektif i. Peubah keputusan dan penyimpangan harus positif, tidak boleh negatif −
+
( ∀X j , d k , d k ≥ 0 untuk semua j dan k) j.
Kemudian diselesaikan dengan metode penyelesaian linier salah satunya dengan metode simpleks.
2.6 Metode Simpleks 2.6.1
Tabel Simpleks
Metode simpleks ialah suatu metode yang secara sistematis dimulai dari suatu pemecahan dasar yang fisibl ke pemecahan dasar yang fisibel (feasible) lainnya dan ini dilakukan berulang-ulang (dengan jumlah pengulagan terbatas) sehingga akhirnya tercapai suatu pemecahan dasar yang optimum dan pada setiap step menghasilkan suatu nilai dari fungsi tujuan yang selalu lebih besar (lebih kecil) atau sama dari step-step sebelumnya (Johanes Supranto,p100).
26 Metode simpleks adalah suatu metode matriks untuk memecahkan programprogram linier, dalam bentuk standar yakni : optimasikan : z = C T X dengan kendala : AX = B : X ≥0
dan
di mana B ≥ 0 dan suatu pemecahan dasar yang layak, katakan X 0 , diketahui. Metode simpleks menggunakan proses iterasi (perhitungan berulang), dengan X 0 sebagai pemecahan awal, untuk menentukan pemecahan-pemecahan layak dasar lainnya yang memiliki nilai-nilai objektif yang lebih baik, sehingga pada akhirnya diperoleh pemecahan optimal. Untuk program minimisasi, maka metode simpleks menggunakan Tabel 2.1, di mana C0 adalah vektor biayanya (cost vector) yang berkaitan dengan peubah-peubah dalam X 0 . Tabel 2.1 Table Umum Simpleks XT CT A
X 0 C0
B
− C0 B
T
T
C T ...C0 A
Untuk program maksimasi, maka Tabel 2.1 dapat digunakan jika tanda aljabar dari elemen-elemen dari baris terbawah dibalik.
2.6.2
Penyederhanaan dengan Tabel
Untuk setiap j ( j = 1,2,..., n) , definisikan z j = C0 A j , yang merupakan hasilkali T
titik dari C0 dengan kolom ke-j dari A. Elemen ke-j dari baris terakhir Tabel 2.1 adalah
27 c j − z j , di mana c j adalah biaya dalam baris kedua tabel, langsung di atas A j . Begitu
baris terakhir ini diperoleh, maka baris kedua dan kolom kedua dari tabel, yang berturutturut berhubungan dengan C T dan C0 , menjadi berkelebihan dan dapat dieliminasikan.
2.6.3
Metode Simpleks
Langkah 1
: Tentukan letak bilangan paling negatif dalam baris terbawah dari Tabel Simpleks, dengan mengabaikan kolom terakhir. Namakan kolom yang mana terdapat bilangan ini, kolom kerja (work kolom). Jika terdapat lebih daripada satu bilangan yang paling negatif, maka pilihlah salah satunya.
Langkah 2
: Bentuklah nilai-nilai banding dengan membagi setiap bilangan positif dalam kolom kerja, dengan elemen dalam baris yang sama dalam kolom terakhir, di mana baris terakhirnya diabaikan. Namakan elemen dalam kolom kerja ini yang menghasilkan nilai-banding terkecil sebagai elemen pasak (pivot element). Jika terdapat lebih daripada satu elemen yang menghasilkan rasio (nilai banding) terkecil yang sama, maka pilihlah salah satunya. Jika tidak ada elemen dalam kolom kerja ini yang positif, maka programnya tidak memiliki pemecahan.
Langkah 3
: Gunakan operasi-operasi baris elementer untuk mengubah elemen pivot menjadi 1 dan kemudian reduksikan semua elemen lainnya dalam kolom kerja ini menjadi 0.
Langkah 4
: Gantikan peubah-x dalam baris pivot dan kolom pertama dengan peubah-x dalam baris pertama dan kolom pivot. Kolom pertama yang baru ini adalah himpunan peubah-peubah dasar yang baru.
28 Langkah 5
: Ulangi Langkah 1 sampai dengan 4 hingga tidak terdapat lagi elemen negatif dalam baris terakhir, dengan tidak memasukkan kolom terakhir.
Langkah 6
: Pemecahan optimal diperoleh dengan menetapkan untuk tiap-tiap peubah dalam kolom pertama nilai dalam baris dan kolom terakhir yang bersangkutan. Semua peubah yang lainnya ditetapkan bernilai nol. Nilai optimal dari fungsi objektif, yakni x*, adalah bilangan yang terdapat dalam baris terakhir dan kolom terakhir untuk program maksimisasi, sedangkan negatif dari bilangan ini adalah untuk program minimisasi.
2.6.4
Modifikasi untuk Berbagai Program dengan Peubah Buatan
Apabila peubah-peubah buatan (artificial variables) adalah bagian dari pemecahan awal X 0 , maka baris terakhir Tabel 2.1 akan mengandung biaya hukuman (penalty cost) M. Untuk minimisasi kesalahan pembulatan, maka modifikasi-modifikasi berikut diikutsertakan ke dalam metode simpleks. Algoritma yang dihasilkannya adalah metode dua-fasa (two phase method). Perubahan 1
: Baris dalam Tabel 2.1 diuraikan ke dalam dua baris, di mana yang pertama mengandung suku-suku yang tidak mengandung M, sedangkan yang kedua mengandung koefisien-koefisien M dalam suku-suku sisanya.
Perubahan 2
: Langkah 1 dari metode simpleks diterapkan pada baris terakhir yang dibentuk dalam Perubahan 1 (yang kemudian diikuti dengan Langkahlangkah 2,3 dan 4), hingga baris ini tidak mengandung elemen-elemen negatif. Kemudian Langkah 1 diterapkan lagi pada elemen-elemen dalam
29 baris kedua dari bawah, yang terletak di atas angka-angka nol dalam baris terakhir. Perubahan 3
: Setiap saat sebuah peubah buatan bukan merupakan suatu peubah dasar yakni, ia dihilangkan dari kolom pertama dari tabel sebagai hasil dari Langkah 4, maka ia dicoret dari baris teratas tabel, dan begitu pula seluruh kolom di bawahnya. (Perubahan ini memudahkan perhitunganperhitungan yang dilakukan dengan tangan tetapi tidak diterapkan dalam kebanyakan program komputer).
Perubahan 4
: Baris terakhir dapat dicoret dari tabel apabila semua elemennya nol.
Perubahan 5
: Jika peubah-peubah buatan yang tak nol terdapat dalam himpunan elemen dasar yang terakhir, maka programnya tidak memiliki pemecahan. (Sebaliknya, peubah-peubah buatan yang berharga nol dapat muncul sebagai peubah-peubah dasar dalam pemecahan akhir apabila salah satu atau lebih dari persamaan-persamaan kendala semula adalah mubazir).
2.7
System Development Cycle (SDLC)
Dalam membuat sebuah program aplikasi terdapat beberapa model proses yang digunakan, lima diantaranya adalah Classic Life Cycle atau yang biasa dikenal dengan Waterfall Model, Prototyping Model, Fourth Generation Techniques (4GT), Spiral Model dan Combine Model. Dalam pengembangan program aplikasi optimasi perencanaan produksi ini, model proses yang digunakan adalah Prototyping Model. Prototyping Model digunakan untuk merancang program aplikasi, yang mana client hanya memberikan beberapa kebutuhan umum software tanpa detil input, proses
30 atau detil output. Kondisi lainnya yaitu tim pembangun (developer) tidak yakin terhadap efisiensi dari algoritma yang digunakan, tingkat adaptasi terhadap sistem operasi atau rancangan form user interface. Ketika situasi seperti ini maka prototyping model sangat membantu proses pembangunan software.
Gambar 2.1 Prototype Model sebagai Sistem Pengembangan Program Proses yang ada dalam prototyping model yaitu: a. Pengumpulan kebutuhan: developer dan client bertemu dan menentukan tujuan umum, kebutuhan yang diketahui dan gambaran bagian-bagian yang akan dibutuhkan berikutnya. Detil kebutuhan mungkin tidak dibicarakan disini, pada awal pengumpulan kebutuhan b. Perancangan : perancangan dilakukan cepat dan rancangan mewakili semua aspek software yang diketahui, dan rancangan ini menjadi dasar pembuatan prototype. c. Evaluasi prototype: client mengevaluasi prototype yang dibuat dan digunakan untuk memperjelas kebutuhan software.
31 Prototype dibuat untuk memuaskan kebutuhan client dan memahami kebutuhan client lebih baik, memudahkan komunikasi antar developer dan client, membuat client mendapat gambaran awal dari prototype dan membantu mendapatkan kebutuhan detil lebih baik. Prototype yang telah dibuat dapat dimanfaatkan kembali untuk membangun yang lebih cepat.
2.8
Pengenalan Borland Delphi 7.0
Borland Delphi merupakan sarana pemrograman aplikasi visual. Bahasa pemrograman yang digunakan adalah Pascal. Delphi merupakan generasi penerus Turbo Pascal. Turbo Pascal yang diluncurkan tahun 1983 dirancang untuk dijalankan pada sistem operasi Disk Operating System /DOS (yang merupakan sistem operasi yang paling banyak digunakan pada saat itu). Sedangkan Delphi diluncurkan tahun 1995 dirancang untuk beroperasi di bawah sistem operasi Windows. Delphi memiliki sarana yang tangguh untuk pembuatan aplikasi, mulai dari sarana untuk pembuatan form,menu, dan toolbar sehingga memiliki kemampuan untuk menangani pengelolaan basis data yang besar. Kelebihan-kelebihan yang dimiliki Delphi: •
form dan komponen-komponennya dapat dipakai ulang dan dikembangkan
•
mampu mengakses VBX
•
tersedia template aplikasi dan template form
•
memiliki lingkungan pengembangan visual yang dapat diatur sesuai kebutuhan
•
menghasilkan file terkompilasi yang berjalan lebih cepat
•
kemampuan mengakses data dari bermacam-macam format
32 Delphi menerapkan konsep aplikasi yang digerakkan oleh event (event driven). Pemrograman event driven mencoba melengkapi kekurangan pemrograman prosedural dengan kerangka yang membedakan antara antarmuka pemakai dengan proses tertentu dalam aplikasi. Dengan adanya sarana pemrograman visual yang event driven, para pembuat aplikasi sangat terbantu ketika menyediakan sarana antarmuka bagi pemakai. Dengan demikian, harapannya akan lebih terkonsentrasi pada penanganan masalah aplikasinya bukan antarmukanya (Wahana Komputer, 2003, p1-3).
2.9
Shneiderman’s “Eight Golden Rules of Interface Design”
Menurut Shneiderman (1993,p72), prinsip atau aturan dari delapan Golden Rules ini adalah sebagai berikut: a. Strive for consistency Interface dari sutau aplikasi dijaga agar tetap konsisten, dimulai dari menu-menu yang ada dalam setiap layar tetap sama, dengan ukuran, resolusi yang berbeda dengan tampilan dari interface tetap sama. b. Enable frequent user to use shortcuts Semakin sering user menggunakan suatu aplikasi, user dapat dimudahkan dengan adanya shortcuts yang berupa special keys, hidden commands dan lain sebagainya. c. Offer informative feedback Aplikasi yang digunakan dapat memberikan informasi yang berguna untuk memudahkan user dalam menggunakannya.
33 d. Design dialog to yield closure Aplikasi yang dibuat didesain untuk memberikan kemudahan bagi user dengan memberikan suatu informasi untuk melengkapi suatu action yang dilakukan oleh user. e. Offer simple error handling Sebisa mungkin aplikasi yang dibuat, membuat user untuk tidak melakukan suatu kesalahan yang fatal. Jika ada suatu kesalahan yang dibuat maka aplikasi yang dibuat haruslah dapat menunjukkan di mana terjadi kesalahan dan menawarkan suatu cara yang mudah untuk menangani kesalahan tersebut. f. Permit easy reversal of actions Aplikasi yang dibuat dapat melakukan suatu action untuk kembali ke action yang sebelumnya jika terjadi suatu kesalahan. g. Support internal locus of control Mendukung user yang berpengalaman untuk menjadi suatu initiators dari suatu kegiatan bukan sebagai responders. h. Reduce short-term memory load Aplikasi dibuat sederhana untuk mengurangi waktu proses, training dan lain sebagainya dikarenakan keterbatasan manusia untuk memroses informasi.