Senin, 28 September 2009

Pendekatan Modular dalam Pemrograman Terstruktur

Istilah Pemrograman Terstruktur (Structured Programming) mengacu dari suatu kumpulan tehnik yang dikemukan oleh Edsger Dijkstra. Dengan tehnik ini akan meningkatkan produktifitas programmer, dengan mengurangi waktu yang dibutuhkan dalam penulisan (write), pengujian (test), penelusuran kesalahan (debug) dan pemeliharan (maintain) suatu program.

Salah satu pendekatan yang biasa digunakan dalam pemrograman terstruktur adalah pendekatan yang dilakukan secara modular, dengan pendekatan ini suatu program akan dipilah kedalam sejumlah modul, masing-masing modul akan mempunyai fungsi khusus sesuai dengan ruang lingkup yang akan dikerjakan. Dengan adanya pemilahan tersebut, maka kesalahan akan dapat diminimalisir. Selanjutnya masing-masing modul tersebut akan dipanggil dari program utama agar menjadi sebuah program yang utuh.

Pemrograman secara modular ini dapat diimplementasikan dengan penggunaan subroutine, suatu kelompok instruksi yang menjalankan suatu pengolahan yang sifatnya terbatas seperti pencetakan, pembacaan, untuk proses input atau untuk proses penghitungan.

proses_subroutine1

Subroutine dapat dibedakan menjadi 2 yaitu:

1. Internal Subroutine, adalah subroutine yang dibuat hanya untuk digunakan oleh program tersebut. Sehingga untuk sejumlah proses yang sama dalam program tersebut akan dilakukan oleh subroutine tersebut. Program akan memanggil subroutines tersebut jika diperlukan dan apabila telah selesai, kontrol selanjutnya dikembalikan ke instruksi berikutnya. Instruksi yang mengendalikan kontrol transfer ke suatu subroutine umumnya dikenal sebagai call dan return.

2. External Subroutines, adalah subroutine yang diletakkan secara terpisah dari program yang menggunakan subroutine tersebut. Subroutine seperti ini dideklarasikan agar dapat dipakai oleh program yang lain. Untuk menggunakannya harus diketahui dimana ? , apa namanya ?, bagaimana pengiriman datanya ?, serta bagaimana hasil yang akan diperoleh ?. Subroutine ini biasanya digunakan untuk pemrosesan yang kompleks dan dibutuhkan oleh banyak user.

Tehnik Pemrograman
Agar program yang dibuat dalam program utama maupun subroutine dapat lebih mudah dimengerti, maka dalam pemrograman terstruktur diperkenalkan tiga bentuk tehnik pemrograman, yaitu:

1. Sequence Structure

Dalam sequence structure, instruksi dieksekusi berdasarkan urutannya. Dimulai dari bagian atas dan diakhiri di bagian bawahnya. Bujur sangkar dapat menggambarkan operasi :
- Input dan Output
- Operasi aritmatika
- Operasi pemindahan data dalam memori komputer
Dalam sequence structure tidak diperkenankan penggunaan kotak keputusan.

sequence_structure

2. Loop Structure

Loop (iteration) structure menggambarkan perulangan dari satu atau lebih instruksi.

loop_structure

3. Selection Structure

Dalam struktur ini terdapat sejumlah perintah yang dikerjakan tergantung dari kondisi yang dipenuhinya. Seperti juga dengan sequence dan dan loop structure, terdapat single entry point dan single exit point.

selection_structure



Paradigma Pemrograman

programmerParadigma adalah sudut pandang tertentu yang digunakan terhadap suatu problem, realitas, keadaan dan sebagainya. Paradigma membatasi dan mengkondisikan jalan berpikir seseorang, mengarahkannya terhadap beberapa atribut dan mengabaikan atribut lain, sehingga paradigma hanya memberikan pandangan yang terbatas terhadap sebuah realitas.

Dalam pemrograman dikenal beberapa paradigma, yaitu:

1. Paradigma Pemrograman Prosedural atau Imperatif

Paradigma ini didasari oleh konsep mesin Von Newman (stored program concept) sekelompok tempat penyimpanan (memori), yang dibedakan menjadi memori instruksi dan memori data, masing-masing memori tersebut dapat diberi nama dan nilai, selanjutnya instruksi akan dieksekusi satu persatu secara sekuensial oleh sebuah proses tunggal.

Program dalam paradigma ini berdasarkan pada struktur informasi di dalam memori dan manipulasi dari informasi yang disimpan tersebut. Kata kunci yang sering digunakan dalam paradigma ini adalah:

Algoritma + Struktur Data = Program

Kelebihan dari paradigma ini adalah efisiensi eksekusi karena lebih dekat dengan konsep mesin, kekurangannya adalah batasan yang sangat mengikat sehingga terkadang menyulitkan programmer yang tidak terbiasa.

Contoh bahasa pemrogaman yang menggunakan paradigma prosedural atau imperatif adalah: Algol, Pascal, Fortran, Basic, Cobol, C, dsb…

2. Paradigma Pemrograman Fungsional

Paradigma ini didasari oleh konsep pemetaan dan fungsi pada matematika, fungsi dapat berupa fungsi ”primitif”, atau komposisi dari fungsi-fungsi lain yang telah terdefinisi. Dalam paradigma ini, diasumsikan bahwa akan selalu ada fungsi-fungsi dasar yang dapat digunakan, sehingga penyelesaian masalah berdasarkan pada fungsi-fungsi yang telah tersedia tersebut. Jadi dasar pemecahan masalah adalah transformasional, semua kelakuan program adalah suatu rantai transformasi dari sebuah keadaan awal menuju ke suatu rantai keadaan akhir, yang mungkin melalui keadaan antara, melalui aplikasi fungsi.

Paradigma fungsional tidak mempermasalahkan memorisasi dan struktur data, tidak ada pemilahan antara data dan program, tidak ada lagi pengertian tentang ”variabel”. Programmer tidak perlu tahu bagaimana mesin mengeksekusi atau bagaimana informasi disimpan dalam memori, setiap fungsi seperti ”kotak hitam”, yang perlu diperhatikan hanya keadaan awal dan akhir, sebuah program besar dihasilkan dengan menggabungkan fungsi-fungsi yang telah tersedia. Program yang dihasilkan dengan bahasa pemrograman yang menggunakan paradigma ini biasanya membutuhkan waktu pemrosesan yang lebih lama dibandingkan dengan yang menggunakan paradigma prosedural karena dibutuhkan waktu lebih untuk memproses fungsi-fungsi yang digunakan dalam membuat program.

Contoh bahasa pemrograman yang menggunakan paradigma fungsional adalah LOGO, APL dan LISP.

3. Paradigma Pemrograman Deklaratif, Predikatif atau Lojik

Paradigma ini didasari atas pendefinisian relasi antar individu yang dinyatakan sebagai predikat. Sebuah program lojik adalah kumpulan aksioma (Fakta dan aturan deduksi.

Dalam paradigma ini, programmer menguraikan sekumpulan fakta dan aturan-aturan (inference rules). Ketika program dieksekusi, pemakai akan mengajukan pertanyaan, selanjutnya program akan menggunakan aturan deduksi dan mencocokkan pertanyaan dengan fakta-fakta yang ada untuk menjawab pertanyaan.

Contoh bahasa pemrograman yang menggunakan paradigma ini adalah: Prolog.

4. Paradigma Berorientasi Object (Object Oriented)

Paradigma ini menggunakan konsep class dan object, object adalah instansiasi dari class, setiap object akan mempunyai attribute dan method, masing-masing object dapat berinteraksi dengan object lainnya meskipun berasal dari class yang berbeda.

mempunyai hirarki artinya sebuah class dapat diturunkan menjadi sebuah class baru yang juga memiliki attribut dan method class diatasnya. Dengan begitu dalam paradigma ini dikenal konsep modularitas, penggunaan kembali (reuse) serta kemudahan modifikasi.

Contoh bahasa pemrograman yang menggunakan paradigma ini adalah: Smalltalk, Eifel, Delphi, Java.

5. Paradigma Konkuren

Paradigma ini didasari oleah kenyataan bahwa dalam keadaan nyata, sebuah sistem komputer harus menangani beberapa program (task) yang harus dieksekusi secara bersamaan dalam sebuah lingkungan baik mono ataupun multi processor. Dalam paradigma ini programmer tidak lagi berpikir sekuensial, melainkan harus menangani komunikasi dan sikronisasi antar task.

Masing-masing paradigma tersebut mempunyai strategi analisa yang khusus untuk memecahkan persoalan. Setiap paradigma mempunyai kekurangan dan kelebihan sehingga tidak semua persoalan dapat dipecahkan dengan satu jenis paradigma, sehingga diperlukan analisis secara menyeluruh terhadap persoalan yang akan diselesaikan sebelum menentukan paradigma pemrograman seperti apa yang akan digunakan untuk menyelesaikan persoalan tersebut.



Sejarah Pemrograman Komputer

Pada tahun 1822, Charles Babbage seorang mahasiswa di Universitas Cambridge Inggris mengembangkan sebuah mesin untuk mengelola data-data agar mudah digunakan, mesin tersebut diberi nama ‘Difference Enggine’.

difference-enggine
Difference Enggine

Setelah bekerja selama 10 tahun pada mesinnya, Charles Babbage menyadari bahwa mesin yang dia ciptakan ini merupakan sebuah mesin yang bersifat single-purpose machine artinya hanya bisa menghasilkan satu jenis keluaran (output). Selanjutnya ia mengembangkan mesin lain yang bersifat multi-purpose. Mesin ini diberi nama ‘Analytical Engine’. Pekerjaan untuk membuat ‘Analytical Engine’ ini ia lakukan sampai dengan tahun 1842.

analytical-enggine
Analytical Enggine

Pada tahun 1847, Charles Babbage kembali menyempurnakan ‘Difference Engine’ hingga pada tahun 1849 ia berhasil membuat versi keduanya. Pekerjaan menyempurnakan hasil-hasil karyanya terus ia lakukan, bahkan dilanjutkan oleh anaknya, Henry Prevost. Charles Babbage sendiri meninggal pada tahun 1871. Untuk melindungi karya-karya ayahnya, Henry Prevost membuat beberapa kopian unit perhitungan aritmatika sederhana dari mesin yang dihasilkan ayahnya dan mengirimkannya ke beberapa institusi di dunia, termasuk ke Universitas Harvard.

Perkembangan dunia komputasi berlanjut pada tahun 1854, ketika seseorang bernama Charles Boole berhasil menciptakan sebuah sistem logika simbolik yang diberinama Logika Boole. Sistem ini mencakup pula logika untuk menyatakan hubungan lebih besar, lebih kecil, sama dengan dan tidak sama dengan. Sistem logika ini masih digunakan sampai dengan saat ini.

Pada tahun 1890, Amerika Serikat ingin melakukan sensus penduduk. Namun kendala yang muncul adalah keterbatasan alat yang ada pada waktu itu, mengingat jumlah penduduk yang semakin meningkat setiap tahunnya, maka diadakanlah sebuah kompetisi komputasi untuk mencari solusinya. Kompetisi ini dimenangkan oleh Herman Hollerith, yang akhirnya ia mendirikan sebuah perusahaan Hollerith Tabulating, Co. yang akhirnya berubah nama menjadi CTR (Calculating Tabulating Recording Company) setelah 3 perusahan lain ikut bergabung. Sepuluh tahun berikutnya perusahaan ini berganti nama lagi menjadi IBM (International Business Machine) hingga saat ini.

Selanjutnya perkembangan komputasi digital mulai berjalan pelan dan jarang digunakan dalam dunia bisnis sampai dengan pertengahan tahun 1920-an. Hingga pada tahun 1925, MIT (Massachusette Institute of Technology) mengembangkan sebuah mesin yang mampu menganalisis perhitungan differensiasi dan integrasi. Mesin yang didanai oleh Yayasan Rockefeller ini dapat dikatakan sebagai komputer terbesar di dunia pada tahun 1930.

Pada tahun 1935, seorang ilmuan Jerman bernama Konrad Zuse mengembangkan komputer Z-1, komputer inilah yang menjadi awal mula diterapkannya sistem biner dalam kinerjanya. Selain itu, Zuse juga berjasa dalam komputasi komputer digital ketika ia menciptakan bahasa pemrograman komputer pertama ‘Plankalkul’.

Pada tahun 1945, terjadi pula peristiwa penting dalam sejarah perkembangan komputasi komputer digital yaitu ketika terjadi kerusakan pada mesin Mark II yang ada di Universitas Harvard. Seseorang yang bernama Grace Murray Hopper yang mengetahui hal ini langsung menyelidiki sebab kerusakannya. Akhirnya dia menemukan seekor ngengat yang terjebak dalam mesin tersebut. Dalam catatan hariannya, Hopper menuliskan: “First actual case of bug being found”. Dia menyebut ngengat ini sebagai sebuah kutu busuk (bug), selanjutnya kata ‘bug’ ini sering digunakan untuk menunjukkan adanya ketidakberesan dalam program. Dari kata ‘bug’ ini muncul pula istilah ‘debugging’ yang artinya proses pembetulan kesalahan program.

Pada tahun 1954, IBM mulai mengembangkan bahasa pemrograman FORTRAN (FORmula TRANslator). Bahasa FORTRAN merupakan bahasa pemrograman level tinggi pertama yang dikomersialkan. Pemrograman level tinggi maksudnya adalah perintah atau kodenya mudah dibaca dan dipahami oleh manusia.

Pada tahun 1958, FORTRAN II dan ALGOL dipublikasikan bersamaan dengan diluncurkannya LISP. Sedangkan pada tahun 1959, bahasa pemrograman COBOL juga diluncurkan. Sejak saat itu perkembangan bahasa pemrograman berkembang sangat cepat.

Pada tahun 1970, bahasa PASCAL mulai dipublikasikan dan hingga saat ini masih banyak digunakan untuk keperluan pendidikan. Selain itu muncul pula dua bahasa pemrograman yang dianggap sangat penting yaitu SMALLTALK dan B-Languange. SMALLTALK penting karena merupakan bahasa pemrograman berbasis obyek yang pertama. Sedangkan B-Languange dikatakan penting karena merupakan cikal bakal munculnya bahasa C. Dengan bahasa C, pemrograman akan lebih mudah, efisien, dan fleksibel.

Pada tahun 1975, Dr. Wong merilis bahasa pemrograman hasil ciptaannya bernama TinyBASIC. TinyBASIC merupakan bahasa pemrograman pertama yang bersifat free alias tidak membayar dalam penggunaannya. Pada tahun yang sama, Bill Gates dan Paul Allen juga membuat bahasa pemrograman yang diberi nama BASIC. BASIC ini selanjutnya mereka jual ke MIT.

Bahasa pemrograman terus berkembang demikian pesat hingga saat ini. Hal ini ditandai dengan semakin banyaknya bahasa pemrograman yang bermunculan.

sejarah-pemrograman

Perkembangan Bahasa Pemrograman

Setiap bahasa pemrograman memiliki kelebihan dan kekurangan, tetapi semua bahasa pemrograman berjalan atas dasar logika dan algoritma sehingga kedua hal inilah yang harus diasah lebih dulu jika ingin mempelajari bahasa pemrograman. Sebaiknya fokuslah kepada sebuah bahasa pemrograman hingga dapat menguasainya dengan baik, kemudian lanjutkan dengan mempelajari bahasa pemrograman yang lain untuk menambah wawasan.




Sistem Bilangan

Cuma mau berbagi informasi tentang Sistem Bilangan. Berikut ini uraiannya. Bahwa ada beberapa sistem bilangan yang digunakan dalam sistem digital, yaitu : Bilangan Biner (Sistem Bilangan Basis Dua), Bilangan Oktal (Sistem Bilangan Basis Delapan), Bilangan Desimal (Sistem Bilangan Basis Sepuluh) dan Bilangan Heksadesimal (Sistem Bilangan Basis Enam Belas).

Kulik sistem bilangan biner terlebih dahulu yuuukkk…….

BILANGAN BINER

binary_numeral_system

Bilangan Biner merupakan bilangan yang memiliki radiks/basis 2, dengan notasi : (n)2;

Sistem bilangan biner adalah sebuah sistem penulisan angka dengan menggunakan dua simbol yaitu 0 dan 1. Untuk simbol angka 0 (nol) maka berarti False dan untuk simbol angka 1 (satu) maka berarti True. Ternyata Sistem bilangan biner modern ini ditemukan oleh Gottfried Wilhelm Leibniz pada abad ke-17. Dan Sistem bilangan ini merupakan dasar dari semua sistem bilangan berbasis digital.

Berikut tabel yang berupa contoh nilai bilangan desimal yang dinyatakan sebagai bilangan biner :

Desimal Biner (8 bit)
0 0000 0000
1 0000 0001
2 0000 0010
3 0000 0011
4 0000 0100
5 0000 0101
6 0000 0110
7 0000 0111
8 0000 1000
9 0000 1001
10 0000 1010
11 0000 1011
12 0000 1100
13 0000 1101
14 0000 1110
15 0000 1111
16 0001 0000

Catatan:
20=1, 21=2, 22=4, 23=8, 24=16, 25=32, 26=64 dst
Pembahasan sistem bilangan biner tuh gak hanya sampai di catatan terakhir diatas ?, tapii…… bilangan biner bisa mengalami konversi kebentuk bilangan oktal, bilangan desimal, dan bilangan heksadesimal. Nah, berikut merupakan pembahasan untuk pengkonversian bilangan biner ke bilangan lainnya.

KONVERSI DARI BINER KE OKTAL

Kalo’ bilangan biner itu radiks/basis nya 2, nah… sekarang akan dibahas konversi dari bilangan biner ke bilangan oktal yang memiliki radiks/basis 8 (Notasi : (n)8 dengan bilangan 0, 1, 2, 3, 4, 5, 6, dan 7).
Misal :
Ubahlah bilangan biner 11110011001 kedalam bilangan oktal

011 110 011 001
3 6 3 1
Jadi hasil konversi bilangan biner 11110011001 adalah 3631.

Cara…nya…. A…da…lah…… (tu-wa-ga-pat :) ):

Karena biner nya 11 digit dan konversinya ke bilangan oktal, maka harus dikelompokkan masing-masing 3 digit, nah ternyata hasil pengelompokkan mengalami kekurangan digit jadii…… digit yang paling kiri ditambahkan digit 0 (nol) dan setelah dikelompokkan menjadi 3 digit, lalu perhitungannya dilakukan per kelompok dan memulai perhitungan per kelompoknya tetap dimulia dari lajur yang paling kanan ke kiri. Sehingga hasil konversinya adalah :

111100110012 = 36318;

Begitchuuu………

KONVERSI BINER KE HEXADESIMAL

Metode konversinya hampir sama dengan Biner ke Oktal. Namun pengelompokkannya sejumlah 4 bit. Empat kelompok bit paling kanan adalah posisi satuan, empat bit kedua dari kanan adalah puluhan, dan seterusnya.

Contohnya:
111000112 = …… 16

Solusi:
kelompok bit paling kanan: 0011 = 3
kelompok bit berikutnya: 1110 = E
Hasil konversinya adalah: E316.

KONVERSI DARI BINER KE DESIMAL
Misal :
0000 01012 (merupakan biner 8 digit) = …… 10
Cara menghitung:
Langkah 1 :
Let’s to know bahwa perhitungan untuk bilangan biner, harus dimulai dari lajur paling kanan ke kiri, nah perhitungannya seperti yang diuraikan dibawah ini nih…
0 0 0 0 0 1 0 1
27 26 25 24 23 22 21 20

Langkah 2 :
Yang angka biner 0 tidak dilakukan perhitungan sedangkan angka biner 1 dihitung, jadinya :
= (0×27)+(0×26)+(0×25)+(0×24)+(0×23)+(1×22)+(0×21)+(1×20)

= 0 + 0 + 0 + 0 + 0 + 4 + 0 + 1
= 510
Jadi bilangan biner dengan nilai 0000 01012 jika dikonversikan ke bilangan desimal maka nilai nya menjadi 510.
Jika bilangan biner nya 4 digit, maka konversi ke desimalnya juga menggunakan cara yang sama dengan bilangan biner 8 digit, yaitu menghitungnya dimulai dari lajur yang paling kanan ke kiri. Mudah kan…



RANCANG BANGUN PENGUKURAN TEMPERATUR JARAK JAUH VIA SMS
BERBASIS MIKROKONTROLER ATMega8535

Mustaghfiri Asror DIII Instrumentasi & Elektronika Jurusan Fisika
Fakultas MIPA Universitas Diponegoro Semarang 2007


Abstract
Telah dibuat rancang bangun pengukur temperatur jarak jauh via SMS berbasis Mikrokontroler ATMega8535. Rancang bangun ini terdiri dari stasiun pengirim yang terhubung dengan Mikrokontroler ATMega8535 yang menggunakan Handphone Siemens M35i. pada stasiun penerima terdiri dari Handphone Nokia dan seperangkat komputer dengan bahasa pemrograman Visual Basic 6.0. pada stasiun pengirim terdiri dari Sensor Suhu LM35, Pengkondisi sinyal, Timer eksternal, Mikrokontroler AVR ATMega8535 dengan konfigurasi ADC internal dan Handphone Siemens M35i.
Alat ini bekerja dengan mengukur besarnya temperatur disuatu tempat dan mengkonversi ke data digital serta ke data format PDU (Protokol Data Unit) dan mengirimkan secara serial ke Handphone Simens. Pengaturan penundaan waktu pengiriman data pengukuran temperatur dilakukan oleh Timer eksternal 555 selama 15 menit penundaan. Akusisi data pengukuran ini akan diterima oleh ponsel Penerima yang terhubung dengan komputer menggunakan ponsel Nokia 3315 dan bahasa pemrograman Visual Basic 6.0.

Keyword: SMS, AT Command, AVR ATmega8535, Temperatur

File komplit dapat didownload disini.......




TELEMETRI JARINGAN WI-FI UNTUK MONITORING PENCEMARAN AIR SUNGAI MENGGUNAKAN MIKROKONTROLER MCS51

M. Ali Muzzaki[1], Rustam Aji[2], DII Instrumentasi & Elektronika FMIPA Universitas Diponegoro Jl. Prof Sudharto SH, Tembalang, Semarang

Abstrak

Sistem telemetri pemantau pencemaran air sungai telah dibuat menggunakan Wi-Fi berbasis TCP/IP berbantuan Borland Delphi 7.0. Sistem ini dibuat untuk pemantauan pencemaran air sungai jarak jauh. Tingkat pencemaran air sungai dipantau berdasarkan kadar keasaman/kebasaan air sungai. Struktur sistem pemantau pencemaran air sungai ini disusun dari sensor pH elektroda PE03 dan sensor suhu LM35 yang berturut-turut digunakan untuk mengukur pH dan suhu air sungai. Hasil pengukuran pH dan suhu dari sensor dilewatkan ke rangkaian buffer dan ADC084 yang kemudian diterjemahkan oleh mikrokontroler. Data pembacaan mikrokontroler dikonversikan ke TCP/IP oleh konverter serial. Selanjutnya data dikirim melalui Wi-Fi dengan frekuensi 2,4 GHz dan hasilnya ditampilkan oleh komputer. Pengujian sistem pemantau pencemaran air sungai ini menunjukkan bahwa sistem secara keseluruhan dapat bekerja dengan baik. Tingkat keasaman sensor pH sebesar 0,1 dan resolusi sensor suhu 1oC.

Kata kunci : Mikrokontroler MC-51, elektroda, sensor suhu, TCP-IP, Delphi

File komplit dapat didownload disini.......




LINIER PROGRAMING

Linier programming adalah suatu teknik optimasi untuk memecahkan persoalan dimana fungsi obyektif maupun fungsi kendala dinyatakan sebagai fungsi linier dari variabel desain. Metode yang sangat populer untuk menyelasaikan persoalan linier programming adalah “Metode Simpleks-”.
Karakteristik dari persoalan linier programing adalah:
1. Tipe Optimasi adalah minimisasi fungsi obyektif
2. Semua fungsi kendala mempunyai jenis “Equality”
3. Semua variabel desain adalah non negatif.

1 Model Linier Programing
Dalam Linier Programing dikenal dua macam fungsi yaitu fungsi obyektif dan fungsi kendala. Fungsi obyektif yang sering juga disebut dengan fungsi tujuan adalah fungsi yang menggambarkan tujuan atau sasaran didalam permasalahan LP yang berkaitan dengan pengaturan secara optimal untuk memperoleh keuntungan secara maksimal atau biaya secara minimal. Fungsi kendala merupakan batasan-batasan kapasitas yang tersedia atau kemampuan yang ada yang akan dialokasikan secara optimal ke dalam berbagai kegiatan.
Persoalan LP dapat dinyatakan dalam bentuk standar seperti pada tabel berikut:

Tabel 3.1 Data untuk model linear programming

Dengan mengunakan Tabel diatas dapat disusun suatu model matematis yang digunakan untuk menyatakan permasalahan LP yaitu:

Fungsi tujuan:
Maksimumkan Z=C1X1 + C2X2 + C3X3 + …. + CnXn
Dengan Fungsi kendala
1). a11X1 + a12X2 +a13X3 + … + a1nXn ≤ b1
2). a21X1 + a22X2 +a23X3 + … + a2nXn ≤ b2
.
.
.
m). am1X1 + am2X2 +am3X3 + … + amnXn≤ bm
dan X1,X2, …, Xn ≤ 0

2 Pemecahan Persoalan Linier Programing dengan Metode Grafik
Persoalan linier programing dengan dua variabel dapat dipecahkan dengan menggunakan metode geometri atau metode grafik. Langkah-langkah penyelesaian dalam metode grafik adalah:
1. Menentukan fungsi tujuan dan memformulasikannya dalam bentuk persamaan matematis
2. Mengidentifikasi batasan-batasan yang berlaku dan memformulasikanya dalam bentuk matematis
3. Menggambarkan masing-masing garis fungsi batasan dalam satu sistem sumbu x-y
4. Mencari titik yang paling menguntungkan (optimal) dihubungkan dengan fungsi tujuan.
Contoh.
Sebuah perusahaan sepatu membuat 2 jenis sepatu. Jenis pertama dengan merek I1, dengan sol dari karet dan jenis yang kedua dengan merek I2, dengan sol dari kulit. Untuk membuat sepatu-sepatu itu perusahaan memiliki 3 macam mesin. Mesin 1 khusus membuat sol dari karet, mesin 2 khusus memuat sol dari kulit, dan mesin 3 membuat bagian atas sepatu dan melakukan assembling bagian atas dengan sol. Setiap lusin sepatu merek I1 mula-mula dikerjakan dimesin 1 selama 2 jam, kemudian tanpa melalui mesin 2 terus dikerjakan di mesin 3 selama 6 jam. Sedang untuk sepatu merek I2 tidak diproses di mesin 1, tetapi pertama kali dikerjakan pada mesin 2 selama 3 jam kemudiandi mesin 3 selama 5 jam. Jam kerja maksimum setiap hari untuk mesin 1 adalah 8 jam, mesin 2 = 15 jam, dan mesin 3 = 30 jam. Sumbangan terhadap laba untuk setiap lusin sepatu merek I1 = Rp. 30.000,- dan untuk sepatu merek I2 sebesar Rp. 50.000,-. Berapa lusin sebaiknya diproduksi untuk masing-masing merek agar diperoleh laba yang maksimum.
Solusi:
Data tersebut diatas dapat disusun kedalam tabel diatas sebagai berikut:
Tabel 3.2 Data dari perusahaaan sepatu ideal


Untuk menentukan formulasi masalah pertama kali dilakukan adalah menentukan desain variabel yaitu:
X1 = Jumlah sepatu merek I1 yang akan dibuat tiap hari
X2 = Jumlah sepatu merek I2 yang akan dibuat tiap hari
Z = Jumlah laba seluruh sepatu merek I1 dan merek I2 yang akan diperoleh.
Kemudian ditentukan fungsi obyektif yaitu dengan melihat tujuan dari permasalahan. Dari soal tujuannya adalah mencari laba maksimum dimana diperoleh dari sepatu merek I1 = Rp. 30.000,- dan Merek I2 = Rp. 50.000,- sehingga dapat ditulis dalam bentuk matematis.
Maksimumkan Z = 3X1 + 5X2 ( dalam puluhan ribu rupiah)
Selanjutnya ditentukan fungsi kendalanya. Kendala muncul dengan adanya batasan kapasitas mesin 1, mesin 2 dan mesin 3 yaitu 8 jam, 15 jam dan 30 jam, sehingga dapat ditulis
1. 2 X1 ≤ 8
2. 3X2 ≤ 15
3. 6X1 + 5X2 ≤ 30

Setelah fungsi obyektif dan fungsi kendala sudah didapatkan langkah selanjutnya adalah melakukan penggambaran dalam bentuk grafik untuk masing-masing fungsi kendala.

Gambar 3.1. Grafik fungsi-fungsi batasan perusahaan sepatu “IDEAL”

Dari grafik dapat diketahui perpotongan antara dua persamaan garis dan dapat diketahui daerah feasible. Selanjutnya mencari perpotongan titik yang akan memaksimumkan fungsi obyektif. Ada dua cara untuk mencari titik yang memaksimumkan fungsi obyektif yaitu dengan menggambarkan fungsi tujuan dan dengan membandingkannya untuk masing-masing titik yang terletak di daerah feasible.
Untuk cara yang pertama, dibuat garis dengan menggunakan persamaan fungsi obyektif dengan memisalkan pada suatu harga (Z=10=3X1+5X2), kemudian garis ini digeser-geser sehingga didapatkan suatu titik didaerah feasible yang terletak paling akhir (untuk arah pergeseran ke kanan-atas)

Gambar 3.2. Grafik fungsi tujuan dan batasan-batasan perusahaan sepatu “IDEAL”

Dari hasil perrgeseran garis didapatkan suatu titik yang terakhir yaitu titik (5/6,5). Dari hasil tersebut dapat diketahuai besarnya X1 = 5/6 dan X2 = 5 dengan besarnya Z=27,5.
Cara kedua dengan membandingkan besarrnya Z untuk masing-masing titik, untuk mendapatkan nilai Z yang terbesar.
Tabel 3.3. Nilai Z pada alternative nilai X untuk memilih titik yang optimal
Z = 3X1 + 5X2

Di antara kelima alternatif tersebut yang paling besar adalah Z = 27,5 dengan X1=5/6 dan X2=5.
Dengan demikian untuk mendapatkan laba maksimum haruslah diproduksi untuk merek I1 sebesar 5/6 dosin dan merek I2 sebesar 5 dosin tiap hari, dengan laba sebesar Rp. 275.000,-.
4.3 Metode Simpleks
Apabila suatu masalah dalam LP hanya mengandung 2 variabel saja, maka akan dapat diselesaikan dengan metode grafik. Tetapi bila melibatkan lebih dari dua variabel akan sulit diselesaikan dengan metode grafik, sehingga perlu suatu metode baru untuk menyelesaikan permasalahan tersebut. Metode baru ini disebut dengan “Metode Simpleks” yang lazim digunakan untuk menyelesaikan permasalahan dalam LP dengan 3 variabel atau lebih.
Pada bagian ini akan dijelaskan mengenai langkah-langkah dalam menyelesaikan permasalahan dengan menggunakan metode simpleks dengan meggunakan tabel.

file complete dapat didownload disini dan untuk mendapatkan software simulasi metode simplex dapat didownload disini, Semoga bermanfaat.

Twitter Delicious Facebook Digg Stumbleupon Favorites More