Upload
trinhquynh
View
219
Download
0
Embed Size (px)
Citation preview
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 fungsi-
fungsi 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 : ),...,,( 21 nxxxfz =
dengan kendala :
⎪⎪⎭
⎪⎪⎬
⎫
),...,,(........................
),...,,(),...,,(
21
212
211
nm
n
n
xxxg
xxxgxxxg
≥=≤
⎪⎪⎩
⎪⎪⎨
⎧
mb
bb
...2
1
(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 ig dipilih nol dan setiap konstanta ib 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 ijx (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 11x + 13 12x + 11 13x +13 21x +13 22x +12 23x
Karena jumlah yang dikirimkan masing-masing pabrik tidak dapat melebihi
persediaannya maka
11x + 12x + 13x ≤ 1200 (pengiriman dari pabrik 1)
21x + 22x + 23x ≤ 1000 (pengiriman dari pabrik 2)
Di samping itu, jumlah total yang dikirimkan kepada para pengecer harus
memenuhi permintaan mereka, karena itu
11x + 21x ≥ 1000 (pengiriman ke pengecer 1)
12x + 22x ≥ 700 (pengiriman ke pengecer 2)
13x + 23x ≥ 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 kendala-
kendala tersembunyi bahwa tak ada pengiriman yang negatif dan bahwa
pengiriman kotaknya dalam keadaan utuh, maka kita peroleh program matematis
berikut:
10
Minimumkan : Z = 14 11x + 13 12x + 11 13x +13 21x +13 22x +12 23x
Dengan kendala : 11x + 12x + 13x = 1200 21x + 22x + 23x = 1000 11x + 21x = 1000 12x + 22x = 700 13x + 23x = 500
dan semua peubah positif dan bulat.
(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 ),...,,( 21 nxxxf dan setiap ),...,,( 21 ni xxxg ),...,2,1( mi =
adalah linier terhadap argumen-argumennya.
Bentuk matematis program linier ini yaitu
nnn xcxcxcxxxf +++= ...),...,,( 221121 (2)
dan
ninini xaxaxaxxxg +++= ...),...,,( 2121121 (3)
di mana jc dan ija dengan ),...,2,1;,...,2,1( njmi == 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:
i
n
jjij bxa ~
1∑=
(4)
di mana ~ adalah salah satu dari relasi ≤ ,= atau ≥ (tidak perlu sama untuk setiap i).
Konstanta ib selalu dianggap tidak negatif.
Contoh 2.2:
Kendala 25754 321 −≤−+ xxx dikalikan dengan -1 maka kendala menjadi
25754 321 ≥+−− xxx , di mana sekarang ruas kanannya menjadi tidak negatif.
2.3.2 Peubah Kurang dan Surplus
Sebuah kendala linier yang berbentuk i
n
jjij bxa ≤∑
=1dapat 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.
Sebuah kendala linear yang berbentuk i
n
jjij bxa ≥∑
=1 dapat diubah menjadi suatu
persamaan dengan mengurangkan ruas kirinya dengan sebuah peubah baru yang tak-
negatif. 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:
Himpunan kendala : 1587654
32
21
21
21
=+≥+≤+
xxxx
xx
Ditransformasikan menjadi sebuah sistem persamaan dengan menambahkan
sebuah peubah kurang, 3x , pada ruas kiri kendala pertama dan mengurangkan
sebuah varuabel surplus, 4x , dari ruas kiri kendala kedua. Sistem yang baru adalah
1587654
32
21
421
321
=+=−+=++
xxxxx
xxx
Bila sekarang peubah-peubah buatan 5x dan 6x berturur-turut ditambahkan pada
ruas kiri dari kedua kendala yang terakhir, yakni kendala-kendala tanpa sebuah
peubah kurang, maka hasilnya adalah
13
1587654
32
621
5421
321
=++=+−+
=++
xxxxxxx
xxx
(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 : XCz T=
dengan kendala : BAX = (5)
dan : 0≥X
di mana X adalah vektor kolom dari peubah-peubah yang tidak diketahui, termasuk
peubah-peubah kurang, surplus dan buatan; TC adalah vektor baris dan biaya
bersangkutan; A adalah matriks koefisien persamaan kendala; dan B adalah matriks
kolom dari ruas kanan persamaan kendala. Jika 0X hanya menunjukkan vektor dari
peubah-peubah kurang/slack dan buatan, maka pemecahan layak awalnya diberikan oleh
BX =0 di mana dipahami bahwa semua peubah dalam X yang tidak terkandung dalam
0X diberikan nilai nol.
Contoh 2.4:
Rumuskan program berikut dalam bentuk standar:
Maksimumkan : 21 6080 xxz +=
dengan kendala : 1
25,032,020,0
21
21
=+≤+
xxxx
Untuk mengubah kendala pertama menjadi suatu persamaan, tambahkan
sebuah peubah kurang 3x pada ruas kiri. Karena kendala kedua adalah suatu
persamaan yang tidak mengandung peubah kurang, tambahkan sebuah peubah
15
buatan 4x 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: 4321 06080 Mxxxxz +++=
dengan kendala : 1
25,032,020,0
421
321
=++=++
xxxxxx
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 dengan melakukan
pengembangan menjadi algoritma exact integer goal programming.
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:
nxxx ,...,, 21 = peubah keputusan
K = banyaknya tujuan yang dipertimbangkan
jkc = koefisien jx ( nj ,...,2,1= ) pada fungsi objektif dalam setiap tujuan-
k ( Kk ,...,2,1= )
kg = 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
jkjjk
n
jjj
n
jjj
gxc
gxc
gxc
1
122
111
.
.
. (6)
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
k
n
jkjjk gxcZ
1 1min )( (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
jkjjkk gxcd
1, untuk k = 1,2, ... , K (8)
Dengan demikian, fungsi objektif Goal Programming menjadi :
∑=
=K
kkdZ
1min (9)
19
Karena kd bisa bernilai positif dan negatif, maka peubah ini dapat diganti dengan dua
peubah non negatif baru, sehingga −+ −= kkk ddd , di mana +kd dan −
kd 0≥ . Peubah kd
ini merupakan peubah deviasi (deviational variable).
−+−+ +=−= kkkkk ddddd (10)
+kd dan −
kd 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 : 0=× −+kk dd . 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 +kd dan −
kd .
Formula umum Goal Programming kemudian dapat dituliskan secara lengkap sebagai:
)(1
min−
=
+∑ += k
K
kk ddZ
s/t (11)
k
n
jkkjjk gddxc =−−∑
=
−+
1
)(
0, / ≥∀ −+kj dx
Dalam formulasi Goal Programming ini, setiap target dimasukkan dalam kendala-
kendala persamaan. Fungsi kendala semacam ini disebut sebagai kendala tujuan (goal
constraint), di mana dalam persamaannya telah melibatkan peubah penyimpangan,
20
+kd dan −
kd . 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), +kw dan −
kw pada setiap
penyimpangannya:
∑=
−−++ +=K
kkkkk dwdwZ
1min )(
s/t. (12)
∑=
−+ =−−n
jkkkjjk gddxc
1
)(
0, / ≥∀ −+kj dx
Pada banyak kasus, sebuah Goal Programming mengandung +kd dan −
kd , walaupun
kedua peubah penyimpangannya ini tidak muncul pada fungsi objektif. Dengan
demikian, sangat mungkin untuk menuliskan fungsi kendala target seperti:
∑∑=
−
=
≤⇒=+n
jkjjkkk
n
jjjk gxcgdxc
11 (13)
Untuk kasus ini, fakta +kd tidak muncul dalam kendala target mengindikasikan bahwa
+kd 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. +kd tidak dimungkinkan pada target tersebut, tetapi −
kd masih
diperkenankan. −kd akan muncul pada fungsi objektif Goal Programming.
Hal lain mungkin juga, kendala target berbentuk :
∑∑=
+
=
≥⇒=−n
jkjjkkk
n
jjjk gxcgdxc
11 (14)
Untuk kasus ini, fakta −kd tidak muncul dalam kendala target mengindikasikan bahwa
−kd 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. −kd tidak dimungkinkan pada target tersebut, tetapi +
kd masih
diperkenankan. +kd 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
( 1X ) dan touch setting ( 2X ). Keuntungan/unit dari 1X = $ 100.00 dan dari 2X =
$ 150.00. Kapasitas jam proses setiap unit oven microwave adalah:
Jam Proses/Unit Jenis Oven Sub assembling Kabel
dan Komponen (W&C) Assembling Penyelesaian
dan Pengujian (F&T) 1X 4 2
2X 2 2 Kapasitas jam
proses/hari 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 : 21max 150100 XXZ +=
Fungsi Kendala : 8024 21 ≤+ XX kendala jam proses bagian W&C
6022 21 ≤+ XX kendala jam proses bagian F&T
0≥∀ jX (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 : −= dZmin
Fungsi Kendala : 8024 21 ≤+ XX kendala jam proses bagian W&C
6022 21 ≤+ XX kendala jam proses bagian F&T
5000150100 21 =−++ +− ddXX
0,, ≥∀ +− ddX j (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 2X minimal 15
unit/hari dan menginginkan penjualan 1X minimal 5 unit/hari, maka persoalan
menjadi Goal Programming. Tujuan yang ingin dicapai sebagai berikut:
23
No. Target Prioritas 1 Menghasilkan total
keuntungan/hari paling sedikit $ 2,400
1
2 Penjualan 2X /hari minimal 15 unit
2
3 Penjualan 1X /hari minimal 5 unit
3
Formulasi di atas menjadi formulasi Goal Programming tujuan ganda yaitu:
Fungsi Tujuan : −−− ++= 332211min dPdPdPZ
Fungsi Kendala : 8024 21 ≤+ XX
6022 21 ≤+ XX
5
15
2400150100
331
222
1121
=−+
=−+
=−++
+−
+−
+−
ddX
ddX
ddXX
0,, ≥∀ +−kkj ddX (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. Target Prioritas 1 Pengunaan jam proses W&C paling
banyak 45 jam/hari dan bagian F&T paling banyak 35 jam/hari
1
2 Menghasilkan total keuntungan/hari paling sedikit $ 2,400
2
3 Penjualan 2X /hari minimal 15 unit 3 4 Penjualan 1X /hari minimal 5 unit 4
24
Formulasi GP menjadi:
Fungsi Tujuan : −−−++ ++++= 332212541min )( dPdPdPddPZ
Fungsi Kendala :
5
15
2400150100
3522
4524
331
222
1121
5521
4421
=−+
=−+
=−++
=−++
=−++
+−
+−
+−
+−
+−
ddX
ddX
ddXX
ddXX
ddXX
0,, ≥∀ +−kkj ddX (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 pembatasan-
pembatasan / 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
( 0,, ≥∀ +−kkj ddX 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 program-
program linier, dalam bentuk standar yakni :
optimasikan : XCz T=
dengan kendala : BAX =
dan : 0≥X
di mana 0≥B dan suatu pemecahan dasar yang layak, katakan 0X , diketahui. Metode
simpleks menggunakan proses iterasi (perhitungan berulang), dengan 0X 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 0C adalah vektor biayanya (cost vector) yang berkaitan dengan
peubah-peubah dalam 0X .
Tabel 2.1 Table Umum Simpleks
TX TC
0X 0C A B ACC TT
0... BC T0−
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 ),...,2,1( nj = , definisikan jT
j ACz 0= , yang merupakan hasilkali
titik dari 0C dengan kolom ke-j dari A. Elemen ke-j dari baris terakhir Tabel 2.1 adalah
27
jj zc − , di mana jc adalah biaya dalam baris kedua tabel, langsung di atas jA . Begitu
baris terakhir ini diperoleh, maka baris kedua dan kolom kedua dari tabel, yang berturut-
turut berhubungan dengan TC dan 0C , 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 0X , 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 Langkah-
langkah 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 perhitungan-
perhitungan 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.