Simulasi Sistem Antrian Pada Statistical Time Division Multiplexing Dengan Bahasa Pemrograman Visual C++ 6.0

(1)

TUGAS AKHIR

SIMULASI SISTEM ANTRIAN PADA

STATISTICAL TIME DIVISION MULTIPLEXING

DENGAN BAHASA PEMROGRAMAN VISUAL C++ 6.0

Diajukan untuk memenuhi salah satu persyaratan dalam menyelesaikan pendidikan sarjana (S-1)

pada Departemen Teknik Elektro

Oleh

IPENGADOHAR EZRA PANGARIBUAN 020402048

DEPARTEMEN TEKNIK ELEKTRO

FAKULTAS TEKNIK

UNIVERSITAS SUMATERA UTARA

MEDAN


(2)

SIMULASI SISTEM ANTRIAN PADA

STATISTICAL TIME DIVISION MULTIPLEXING

DENGAN BAHASA PEMROGRAMAN VISUAL C++ 6.0

Oleh :

IPENGADOHAR EZRA PANGARIBUAN 020402048

Tugas Akhir ini diajukan untuk melengkapi salah satu syarat untuk memperoleh gelar sarjana Teknik Elektro

Disetujui Oleh : Pembimbing,

MAKSUM PINEM, ST, MT NIP. 132282135

Disetujui Oleh :

Ketua Departemen Teknik Elektro FT USU,

Prof. Dr. Ir. USMAN BAAFAI NIP. 130365322

DEPARTEMEN TEKNIK ELEKTRO

FAKULTAS TEKNIK


(3)

ABSTRAK

Teknologi komunikasi merupakan teknologi yang paling pesat perkembangannya pada beberapa tahun terakhir ini. Seiring dengan itu, teknologi multiplexing memiliki peranan yang sangat penting dalam meningkatkan efisiensi penggunaan perangkat komunikasi. Dari beberapa teknik multiplexing,

statistical TDM memiliki suatu kelebihan yaitu kemampuannya mengalokasikan time slot secara dinamis sesuai dengan kebutuhan. Sebab pada kenyataannya tidak semua perangkat yang terpasang melakukan transmisi sepanjang waktu, sehingga dengan mengalokasikan time slot secara dinamis, maka tidak akan terjadi pemborosan bandwith. Adapun permasalahan yang dihadapi adalah ketika trafik mencapai kondisi saat laju data input melebihi kapasitas saluran. Salah satu metoda yang dipakai adalah dengan memandang multiplexer sebagai sebuah sistem antrian dengan server tunggal dengan pola kedatangan acak dan pola pelayanan deterministik. Pada Tugas Akhir ini dirancang sebuah perangkat lunak untuk mensimulasikan proses antrian yang terjadi pada statistical TDM. Dari hasil simulasi ini diperoleh kinerja dari sistem seperti delay rata-rata, panjang antrian rata-rata, dan utilisasi sistem.


(4)

KATA PENGANTAR

Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Esa atas segala rahmat dan karunianya sehingga penulis akhirnya dapat menyelesaikan Tugas Akhir ini dengan judul ”Simulasi Sistem Antrian Pada Statistical Time Division

Multiplexing (TDM) Dengan Bahasa Pemrograman Visual C++ 6.0”. Adapun Tugas

Akhir ini dibuat untuk memenuhi syarat kesarjanaan di Departemen Teknik Elektro Fakultas Teknik Universitas Sumatera Utara.

Dalam proses pembuatan Tugas Akhir ini penulis banyak menemukan hambatan dan kesulitan. Namun berkat bantuan dan bantuan dari berbagai pihak, penulis akhirnya dapat menyelesaikan Tugas Akhir ini. Untuk itu penulis ingin mengucapkan terima kasih yang sebesar-besarnya kepada :

1. Ayah dan Ibu tercinta yang telah banyak memberikan dukungan moril, materil dan doa serta limpahan kasih sayang yang tiada terkira dan tiada mungkin terbalaskan.

2. Bapak Maksum Pinem, ST, MT, selaku dosen Pembimbing Tugas Akhir, atas segala bimbingan, solusi dan motivasi yang telah diberikan dalam menyelesaikan Tugas Akhir ini.

3. Bapak Prof. Dr. Ir. Usman Baafai selaku Ketua Departemen Teknik Elektro Fakultas Teknik Universitas Sumatera Utara.

4. Bapak Ir. Sihar P. Panjaitan, MT, selaku Penasehat Akademik penulis yang telah memberikan arahan dan bimbingannya dalam menyelesaikan


(5)

5. Seluruh Dosen dan Civitas Akademika Departemen Teknik Elektro Fakultas Teknik Universitas Sumatera Utara.

6. Abang dan adikku, Herbert Pangaribuan, SE dan Exaudi Pangaribuan, yang telah memberikan dukungan dan semangat bagi penulis selama ini.

7. Abang Rudianto, ST yang telah banyak membantu dan memberi masukan yang sangat berarti bagi penulis.

8. Rekan-rekan mahasiswa Teknik Elektro, khususnya teman-teman stambuk 2002, Pak Bos Badu, Esron, Bugi, Denny Dewa, Adhi, Rahmat Ketua, Rahmat Regar, Medison, Agus, Farid, Dodi, Yos, Junaris, Bismar, Hendra, Hamdani Handre, Ardiansyah, Iqbal, Abu, Daniel, Syafril, Sylvia, Berry, Frans, Aritta Andra, Yandi Boy, dan teman-teman 2002 lainnya.

9. Seluruh pihak yang telah banyak membantu penulis yang tidak dapat disebutkan satu persatu.

Berbagai usaha telah penulis lakukan agar Tugas Akhir ini dapat diselesaikan dengan baik, namun penulis menyadari bahwa Tugas Akhir ini masih jauh dari sempurna karena masih banyak terdapat kekurangan baik dari segi isi maupun susunannya. Oleh karena itu penulis mengharapkan saran dan kritik yang sifatnya membangun dari semua pihak demi kesempurnaan Tugas Akhir ini.


(6)

Akhir kata penulis berserah diri kepada Tuhan Yang Maha Esa, semoga Tugas Akhir ini bermanfaat bagi pembaca sekalian terutama bagi penulis sendiri.

Medan, Desember 2007

Penulis,

Ipengadohar Ezra Pangaribuan


(7)

DAFTAR ISI

ABSTRAK... i

KATA PENGANTAR... ii

DAFTAR ISI... v

DAFTAR GAMBAR... . viii

DAFTAR TABEL... x

BAB I PENDAHULUAN... 1

1.1 Latar Belakang... 1

1.2 Rumusan Masalah... 2

1.3 Tujuan Penulisan... 2

1.4 Pembatasan Masalah... 3

1.5 Metodologi Penulisan... 3

1.6 Sistematika Penulisan... 4

BAB II MULTIPLEXING... 6

2.1 Umum... 6

2.2 Frequency Division Multiplexing (FDM)... 7

2.3 Synchronous Time Division Multiplexing (TDM)... 10

2.3.1 Framing... 12

2.3.2 Pulse Stuffing... 13

2.4 Statistical Time Division Multiplexing (TDM)………...…..…….... 13


(8)

BAB III PERANCANGAN SIMULASI DENGAN VISUAL C++ 6.0... 22

3.1 Umum ... 22

3.2 Komponen Visual C++ 6.0... 22

3.3 Lingkungan Program Visual C++ 6.0... 24

3.3.1 Jendela Project Wokspace... 25

3.3.2 Jendela Editor... 26

3.3.3 Jendela Output……….. 27

3.3.4 Toolbox………. 28

3.3.5 Toolbar……….. 28

3.3.6 Menu Bar... 29

3.4 Perancangan Simulasi... 29

3.4.1 Model Sistem... 29

3.4.2 Pembangkitan Bilangan Acak... 30

3.4.3 Disiplin Antrian... 31

3.4.4 Pola Kedatangan... 32

3.4.5 Pola Pelayanan... 37

3.4.6 Algoritma dan Diagram Alir Simulasi... 38

3.4.7 Prototype Simulasi... 41

3.4.7.1 Prototype Antarmuka Program... 41


(9)

BAB IV SIMULASI PERANGKAT LUNAK... 44

4.1 Umum... 44

4.2 Pemodelan Sistem... 44

4.3 Asumsi-Asumsi Pembangun Sistem... 45

4.4 Mode Analisis... 45

4.5 Batasan-Batasan Model Sistem... 46

4.6 Performansi Sistem... 47

4.7 Hasil Akhir... 48

4.8 Tabel Hasil Akhir... 49

4.8.1 Tabel Hasil Akhir Kondisi I... 49

4.8.2 Tabel Hasil Akhir Kondisi II... 50

4.8.3 Tabel Hasil Akhir Kondisi III... 50

4.9 Grafik Hasil Simulasi... 56

4.9.1 Grafik Kondisi I... 56

4.9.2 Grafik Kondisi II... 57

4.9.3 Grafik Kondisi III... 59

BAB V PENUTUP... 61

5.1 Kesimpulan... 61

5.2 Saran... 61

DAFTAR PUSTAKA LAMPIRAN


(10)

DAFTAR GAMBAR

Gambar 2.1 Konsep Dasar Multiplexing... 6

Gambar 2.2 Konsep Dasar FDM... 7

Gambar 2.3 Skema Kinerja FDM... 9

Gambar 2.4 Skema Kinerja Synchronous TDM... 11

Gambar 2.5 Perbandingan Kinerja Synchronous TDM dan Statistical TDM... 15

Gambar 2.6 Format Frame Statistical TDM... 17

Gambar 3.1 Lingkungan Program Visual C++ 6.0... 24

Gambar 3.2 Jendela Project Workspace………... 25

Gambar 3.3 Jendela Editor………... 27

Gambar 3.4 Jendela Output……….. 27

Gambar 3.5 Toolbox………. 28

Gambar 3.6 Toolbar...... 28

Gambar 3.7 Menu Bar.... 29

Gambar 3.8 Model Sistem Antrian………... 30

Gambar 3.9 Proses Kedatangan pada Proses Poisson... 35

Gambar 3.10 Diagram Alir Simulasi……….. 40

Gambar 4.1 Model Sistem Statistical TDM... 44

Gambar 4.2 Model Sistem yang Disimulasikan... 45

Gambar 4.3 Tampilan Parameter-Parameter dalam Simulasi... 47


(11)

Gambar 4.6 Tampilan Tabel Hasil Akhir Kondisi I... 49

Gambar 4.7 Tampilan Tabel Hasil Akhir Kondisi II... 50

Gambar 4.8 Tampilan Tabel Hasil Akhir Kondisi III... 49

Gambar 4.9 Grafik Kondisi I... 57

Gambar 4.10 Grafik Kondisi II... 58


(12)

DAFTAR TABEL

Tabel 3.1 Bilangan Acak Metode LCG... 31

Tabel 3.2 Urutan Waktu Kedatangan dengan = 5 kedatangan/s... 36

Tabel 3.3 Urutan Waktu Kedatangan dengan = 10 kedatangan/s... 36

Tabel 3.4 Waktu Interval Antar Kedatangan dengan = 5 kedatangan/s... 37

Tabel 3.5 Waktu Interval Antar Kedatangan dengan = 10 kedatangan/s... 37

Tabel 4.1 Variansi pada Panjang Antrian Rata-Rata untuk = 0,1... 51

Tabel 4.2 Variansi pada Panjang Antrian Rata-Rata untuk = 0,2... 53


(13)

BAB I PENDAHULUAN

1.1 Latar Belakang

Perkembangan teknologi komunikasi yang sangat pesat belakangan ini semakin menuntut adanya peningkatan efisiensi penggunaan perangkat komunikasi. Dalam hal ini teknologi multiplexing memiliki peranan yang sangat penting.

Multiplexing memungkinkan beberapa sumber transmisi berbagi satu saluran

transmisi yang sama sehingga penggunaan perangkat komunikasi dapat dimaksimalkan.

Salah satu kelebihan dari statistical TDM dibanding synhronous TDM adalah kemampuannya mengalokasikan time slot secara dinamis sesuai dengan kebutuhan. Seperti diketahui pada synchronous TDM, sejumlah time slot telah diperuntukkan bagi masing-masing sumber selama melakukan transmisi. Jika salah satu sumber tidak menggunakan time slot yang dimilikinya, maka time slot tersebut tidak dapat juga digunakan oleh sumber lain, sehingga akan terjadi pemborosan bandwith. Sementara pada kenyataannya tidak semua perangkat yang terpasang melakukan transmisi sepanjang waktu, sehingga dengan mengalokasikan time slot secara dinamis, maka statistical TDM dapat mendukung perangkat yang lebih banyak dibandingkan dengan synchronous TDM dengan kapasitas saluran yang sama.

Adapun permasalahan yang dihadapi adalah jika trafik mencapai kondisi puncak pada saat laju data input melebihi kapasitas saluran. Untuk itu perlu diperhatikan hubungan antara ukuran penyangga yang digunakan dengan kapasitas


(14)

saluran. Salah satu metoda yang dipakai untuk menganalisa hal tersebut adalah dengan memandang multiplexer sebagai sebuah sistem antrian dengan server tunggal dengan pola kedatangan acak dan pola pelayanan deterministik.

Dalam perkembangannya kinerja dari sistem antrian tersebut dapat diperoleh dari hasil simulasi dengan sebuah perangkat lunak. Oleh karena itu, pada Tugas Akhir ini akan dirancang sebuah perangkat lunak untuk mensimulasikan proses antrian yang terjadi pada statistical TDM. Pada simulasi ini akan dianalisa kinerja sistem seperti delay rata-rata, panjang antrian rata-rata, dan utility sistem.

1.2 Rumusan Masalah

Dari latar belakang di atas dapat dirumuskan beberapa permasalahan, antara lain :

1. Apa pengertian multiplexing secara umum? 2. Bagaimana konsep statistical TDM?

3. Apa kelebihan statistical TDM dibandingkan dengan synchronous TDM? 4. Bagaimana proses antrian yang terjadi pada statistical TDM?

5. Mensimulasikan proses antrian pada statistical TDM dengan menggunakan Visual C++ 6.0.

1.3 Tujuan Penulisan

Tujuan penulisan Tugas Akhir ini adalah :


(15)

2. Mendapatkan kinerja dari sistem antrian tersebut, seperti delay (penundaan) rata-rata antrian, panjang antrian rata-rata-rata-rata, dan utility sistem.

1.4 Batasan Masalah

Untuk mendapatkan hasil yang maksimal dan menghindari pembahasan yang meluas, maka penulis perlu membatasi masalah yang akan dibahas. Adapun batasan masalah dalam Tugas Akhir ini adalah :

1. Menjelaskan konsep dasar multiplexing secara umum.

2. Simulasi yang dilakukan dibatasi hanya pada proses antrian yang terjadi saja. 3. Simulasi tidak membahas proses yang terjadi sebelum proses antrian dan

sesudahnya.

4. Pada perancangan perangkat lunak ini, pola kedatangan diasumsikan adalah acak dengan distribusi Poisson.

5. Pada perancangan perangkat lunak ini, pola pelayanan adalah deterministik. 6. Pada perancangan perangkat lunak ini, disiplin antrian yang digunakan adalah

FIFO (First In First Out).

1.5 Metodologi Penulisan

Metode penulisan yang digunakan dalam pengerjaan Tugas Akhir ini adalah sebagai berikut :

1. Studi Literatur : Berupa tinjauan pustaka dari buku-buku, jurnal ilmiah yang berkaitan dengan statistical TDM disertai dengan konsultasi dan bimbingan


(16)

dengan dosen pembimbing, dosen-dosen lain dan rekan-rekan mahasiswa mengenai masalah yang timbul dalam penulisan.

2. Simulasi : Berupa perancangan simulasi dengan menggunakan Visual C++ 6.0 yang meliputi :

a. Menentukan model sistem yang disimulasikan.

b. Menentukan parameter-parameter yang digunakan dalam simulasi.

c. Membangun simulasi sesuai dengan model dan parameter yang telah

ditetapkan.

d. Mengambil kesimpulan dari hasil simulasi.

1.6 Sistematika Penulisan

Tugas Akhir ini disusun berdasarkan sistematika penulisan sebagai berikut:

BAB I : PENDAHULUAN

Pada bab ini dijelaskan latar belakang masalah, tujuan penulisan, rumusan masalah, batasan masalah, metode penulisan dan sistematika penulisan sebagai gambaran umum dari pembahasan keseluruhan.

BAB II : MULTIPLEXING

Pada bab ini dijelaskan tentang teori-teori yang mendukung dan melandasi penulisan Tugas Akhir ini yang memberikan gambaran tentang multiplexing secara umum.


(17)

BAB III : PERANCANGAN SIMULASI DENGAN VISUAL C++ 6.0

Pada bab ini dijelaskan tentang alasan penggunaan Visual C++ 6.0 sebagai salah satu bahasa pemrograman pembuat perangkat lunak beserta komponen-komponennya serta penjelasan perancangan perangkat lunak beserta prinsip kerjanya.

BAB IV : SIMULASI PERANGKAT LUNAK

Pada bab ini berisi tentang proses dan hasil simulasi perangkat lunak yang telah dirancang secara utuh.

BAB V : PENUTUP

Bab ini berisikan kesimpulan dari simulasi yang telah dilakukan serta rekomendasi atau saran untuk perbaikan dan pengembangan lebih lanjut.


(18)

BAB II

MULTIPLEXING

2.1 Umum

Komunikasi jarak jauh merupakan suatu jaringan yang mahal. Seringkali terminal-terminal dipergunakan secara maksimum untuk berkomunikasi, sehingga diperlukan suatu cara untuk mengefektifkan pengguanaan jaringan. Salah satu cara untuk mengatasi permasalahan ini adalah dengan multiplexing.

Multiplexing adalah proses untuk mengkombinasikan aliran-aliran data dari

sejumlah kanal untuk ditransmisikan pada satu jalur transmisi yang sama[3]. Konsep dasar multiplexing diilustrasikan pada Gambar 2.1[7]. Terdapat sejumlah n buah kanal data yang berbeda dihubungkan ke sebuah multiplexer. Multiplexer akan mengkombinasikan data dari n kanal dan mengirimkannya melalui satu saluran transmisi yang sama. Pada sisi penerima, demultiplexer akan memisahkan data yang diterima sesuai dengan kanal pengirimnya dan mengirimkannya ke kanal yang sesuai.


(19)

Pada bab ini hanya akan dibahas tiga teknik multiplexing, yaitu frequency

division multiplexing (FDM) dan time division multiplexing (TDM), yang terbagi

menjadi synchronous TDM dan statistical TDM.

2.2 Frequency Division Multiplexing

Pada sistem FDM sejumlah sinyal secara simultan dibawa menuju media yang sama dengan cara mengalokasikan band frekwensi yang berbeda ke masing-masing sinyal[7]. FDM dimungkinkan bila bandwith dari media transmisi yang digunakan lebih besar dari bandwith kombinasi sinyal-sinyal yang ditransmisikan.

Kasus umum dari FDM ditunjukkan pada Gambar 2.2 dimana enam sumber sinyal dimasukkan ke dalam multiplexer yang memodulasi setiap sinyal ke dalam frekwensi yang berbeda (f1, f2, f3, f4, f5, f6)[7].


(20)

Masing-masing sinyal yang dimodulasi memerlukan lebar pita tertentu yang dipusatkan di sekitar frekwensi pembawa, yang disebut channel. Untuk mencegah munculnya interferensi, channel dipisahkan oleh band pelindung (guard band), yang merupakan bagian dari spektrum yang tidak digunakan.

Gambaran umum dari kinerja sistem FDM ditunjukkan pada Gambar 2.3[7]. Sejumlah sinyal dimultiplex ke satu media transmisi yang sama. Masing-masing sinyal mn(t) dimodulasi ke frekwensi subpembawa fn. Sinyal-sinyal analog

termodulasi yang dihasilkan kemudian ditambahkan sehingga menghasilkan sinyal

baseband campuran mb(t). Istilah baseband dipergunakan untuk menunjukkan band

frekwensi dari sinyal yang dikirim oleh sumber dan potensial untuk dipergunakan sebagai sinyal pemodulasi[7]. Gambar 2.3.b menunjukkan hasilnya. Biasanya spektrum sinyal baseband berada pada band yang terjangkau. Spektrum sinyal mn(t)

kemudian digeser ke tengah dari frekwensi fn. Agar proses ini bekerja, harga fi harus

dipilih sehingga lebar pita dari sinyal-sinyal yang lain tidak saling tumpang tindih secara signifikan.

Sinyal FDM s(t) memiliki total bandwith B, dimana i n

1 i

B

B

=

> [7]

. Pada ujung

penerima, sinyal FDM kemudian didemodulasi sehingga memperoleh kembali mb(t),

yang kemudian disalurkan melalui bandpass filter n, dimana masing-masing filter dipusatkan di fn dan memiliki bandwith Bi, dimana 1≤i≤n. Dengan cara ini, maka

sinyal dapat dipisahkan kembali menjadi komponen-komponen. Setiap komponen ini kemudian didemodulasi lagi untuk memperoleh sinyal yang asli sesuai dengan kanal


(21)

.

.

.

.

.

.


(22)

2.3 Synchronous Time Division Multiplexing

Sistem synchronous TDM adalah teknik digital yang melakukan proses

interleaving data yang datang dari sejumlah terminal dan mengrimkan sekelompok

aliran data secara serial melalui jalur berkecepatan tinggi[7]. Interleaving dapat dilakukan pada level bit atau pada level karakter.

Gambaran umum mengenai sistem synchronous TDM disajikan pada Gambar 2.4[7]. Sejumlah sinyal dimultiplex pada media transmisi yang sama. Data yang dibangkitkan dari setiap terminal sumber segera disangga. Setiap penyangga biasanya memiliki panjang satu bit atau satu karakter. Penyangga kemudian secara berturut-turut di-scan sehingga membentuk deretan data digital campuran mc(t).

Operasi scan ini berlangsung begitu cepat sehingga setiap penyangga sudah dikosongkan sebelum lebih banyak data yang tiba. Sinyal digital mc(t) yang telah

terbentuk kemudian dapat langsung ditransmisikan.

Data yang ditransmisikan dapat memiliki format seperti yang ditunjukkan pada Gambar 2.4.b. Data tersebut disusun ke dalam sebuah bingkai. Masing-masing bingkai berisikan siklus dari time slot. Pada setiap bingkai, satu slot atau lebih ditujukan untuk masing-masing terminal sumber. Rangkaian time slot yang ditujukan untuk satu sumber dari bingkai ke bingkai disebut dengan channel. Panjang time slot setara dengan panjang dari penyangga, umumnya satu bit atau satu karakter.


(23)

Gambar 2.4 Skema Kinerja Synchronous TDM

Pada receiver, data yang diterima di-demultiplex dan diarahkan ke penyangga tujuan yang sesuai. Untuk setiap terminal sumber mn(t), terdapat terminal tujuan


(24)

Synchronous TDM disebut synchronous karena time slot sudah ditetapkan terlebih dahulu untuk sumber. Time slot untuk setiap sumber tetap dtransmisikan, baik sumber tersebut memiliki data untuk ditransmisikan atau tidak. Sebagai konsekwensinya, kapasitas saluran kerap terbuang agar implementasinya tidak terlalu rumit.

2.3.1 Framing

Adalah sangat penting untuk mempertahankan sinkronisasi bingkai, sebab bila clock dari sumber dan tujuan tidak sama maka data pada semua channel bisa hilang. Terdapat aturan beberapa aturan dasar dalam hal framing. Karena tidak disediakannya flag atau kararakter SYNC untuk menyusun suatu bingkai, maka diperlukan suatu cara untuk memastikan sinkronisasi bingkai.

Adapun mekanisme yang paling umum dalam hal framing adalah yang disebut dengan added-digit framing. Pada skema ini biasanya satu bit kontrol ditambahkan ke setiap bingkai. Sebuah pola bit yang telah diidentifikasi dari bingkai ke bingkai digunakan pada “channel kontrol” ini[7].

Untuk melakukan sinkronisasi, receiver membandingkan pola bit yang diterima dari satu posisi bingkai dengan pola yang diinginkan. Bila polanya tidak sesuai, maka posisi bit yang berurutan tersebut dicari sampai polanya sama sepanjang bingkai. Sekali sinkronisasi bingkai ditetapkan, maka receiver akan terus memonitor channel framing bit. Bila polanya terganggu, maka receiver harus masuk lagi ke mode pencarian bingkai.


(25)

2.3.2 Pulse Stuffing

Masalah tersulit adalah dalam merancang synchronous TDM adalah saat mensinkronkan berbagai sumber data. Dengan adanya perbedaan clock di antara masing-masing sumber akan dapat menyebabkan hilangnya sinkronisasi. Di samping itu, pada beberapa kasus tertentu, laju dari deretan data input tidak dihubungkan dengan angka rasional sederhana.

Pemecahan untuk kedua masalah tersebut adalah dengan menggunakan metoda yang disebut dengan pulse stuffing. Dengan pulse stuffing, laju data yang keluar dari multiplexer menjadi lebih tinggi dibanding jumlah maksimum laju instan yang datang. Kapasitas tambahan dipergunakan dengan cara mengisikan bit tambahan palsu atau pulsa-pulsa ke dalam sinyal yang datang untuk mensinkronkan

clock dari multiplexer pengirim dengan demultiplexer tujuan. Pulsa-pulsa yang

diisikan tersebut diselipkan ke lokasi tertentu dalam format bingkai multiplexer sehingga bisa dikenali dan dibuang oleh demultiplexer[7].

2.4 Statistical Time Division Multiplexing

Pada synchronous TDM, sering sekali time slot dalam sebuah bingkai terbuang. Salah satu aplikasi khusus pada synchronous TDM melibatkan penyaluran sejumlah terminal menuju port komputer yang sudah terbagi-bagi. Sehingga meskipun semua terminal sedang aktif digunakan, sesungguhnya sering kali tidak ada transfer data yang terjadi pada salah satu terminal.

Salah satu cara untuk mengatasi masalah ini adalah dengan menggunakan


(26)

slot secara dinamis sesuai dengan permintaan[7]. Sebagaimana halnya dengan synchronous TDM, statisticalmultiplexer memiliki sejumlah I/O pada salah satu sisi serta saluran multiplexing pada sisi yang lain. Masing-masing saluran I/O memiliki sebuah penyangga. Bagi input, fungsi multiplexer adalah untuk men-scan penyangga input, mengumpulkan data sampai bingkai menjadi penuh, dan kemudian mengirimkan bingkai tersebut. Bagi output, fungsi multiplexer adalah menerima bingkai dan mendistribusikan slot data ke penyangga output yang tepat.

Karena kelebihan yang dimiliki statistical TDM yaitu perangkat yang terpasang tidak semuanya melakukan transmisi sepanjang waktu, maka laju data pada saluran multiplex menjadi lebih kecil dibandingkan dengan jumlah laju data dari perangkat yang terpasang. Sehingga, multiplexer statistical dapat menggunakan laju data yang lebih rendah untuk mendukung perangkat dalam jumlah yang sama dengan multiplexer synchronous.

Gambar 2.5 menunjukkan contoh kinerja synchronous TDM dan statistical TDM[7]. Gambar tersebut memperlihatkan empat sumber data serta menunjukkan data yang dihasilkan dalam empat interval waktu (t0, t1, t2, t3).


(27)

Gambar 2.5 Perbandingan Kinerja Synchronous TDM dan Statistcal TDM

Pada synchronous TDM, multiplexer memiliki laju dataoutput efektif sebesar empat kali laju data dari masing-masing input. Pada setiap interval waktu, semua data dikumpulkan dari semua sumber dan kemudian mengirimkannya. Misalkan pada interval waktu pertama sumber C dan D tidak memiliki data untuk dikirimkan, maka dua dari empat time slot yang dikirimkan oleh multiplexer adalah time slot kosong.


(28)

Sebaliknya, statistical multiplexer tidak akan mengirimkan time slot yang kosong bila ada data yang dikirim. Dimana pada peluang waktu pertama, hanya slot A dan B saja yang dikirim. Akan tetapi, posisi penting dari slot menjadi hilang dalam skema seperti ini. Tidak diketahui sebelumnya data dari sumber mana yang ada pada suatu slot tertentu. Karena suatu data yang diterima tidak dapat diperkirakan berasal dari sumber yang mana serta didistribusikan ke saluran I/O yang mana, maka diperlukan informasi pengalamatan untuk memastikan bahwa pengiriman yang dilakukan tepat. Sehingga ada lebih banyak bit overhead pada TDM statistik karena setiap slot itu selain membawa data juga membawa informasi pengalamatan.

Struktur bingkai yang digunakan oleh TDM statistik akan sangat mempengaruhi kinerjanya. Tujuannya adalah untuk meminimumkan jumlah bit

overhead untuk meningkatkan proses transmisi. Gambar 2.6 menunjukkan dua

struktur yang mungkin[7]. Pada Gambar 2.6.b hanya satu sumber data dimasukkan per bingkainya. Sumber tersebut diidentifikasi melalui alamatnya. Panjang bidang data ini bervariasi, dimana ujungnya ditandai dengan akhir dari sebuah bingkai. Skema ini dapat bekerja dengan baik pada beban yang ringan, tetapi kurang efisien dengan beban yang berat.


(29)

Flag Alamat Kontrol Subbingkai Statistical TDM FCS Flag

(a) Keseluruhan bingkai

Alamat Data

(b) Subbingkai dengan satu sumber per bingkai

Alamat Panjang Data Alamat Panjang Data

(c) Subbingkai dengan banyak sumber per bingkai

. . .

Gambar 2.6 Format Bingkai Statistical TDM

Salah satu cara untuk meningkatkan efisiensi adalah dengan memungkinkan beberapa sumber data dipaketkan ke dalam sebuah bingkai. Untuk itu perlu ditentukan panjang data dari setiap sumber. Dengan demikian, subbingkai TDM statistik terdiri dari beberapa rangkaian data, yang masing-masing diberi label alamat dan panjangnya[7]. Usaha-usaha untuk meningkatkan efisiensi pengiriman ini masih perlu ditingkatkan.

2.4.1 Kinerja Statistical TDM

Seperti diketahui laju data output dari statistical multiplexer lebih kecil dari

jumlah keseluruhan laju data input. Hal ini dimungkinkan karena telah

diperhitungkan bahwa jumlah rata-rata input lebih kecil dari kapasitas saluran

multiplexing. Adapun masalah yang ditemui dengan pendekatan ini adalah sementara

rata-rata input lebih kecil dari kapasitas saluran mutiplexing, akan muncul periode dimana rata-rata input tersebut melebihi kapasitas.


(30)

Pemecahan untuk masalah ini adalah dengan memasukkan sebuah penyangga ke dalam multiplexer untuk menahan kelebihan input sementara. Terdapat kaitan yang sangat erat antara ukuran dari penyangga yang digunakan dengan laju datadari saluran, pengurangan dalam satu hal dapat menyebabkan peningkatan dalam hal yang lain. Pada bagian ini akan dijelaskan beberapa ukuran perkiraan dalam menganalisa suatu statistical TDM.

Berikut ini adalah parameter-parameter yang digunakan[7] : I = Jumlah sumber input

R = Laju data setiap sumber (bps)

M = Kapasitas efektif dari saluran yang dimultiplex (bps)

α = Pecahan rata-rata dari waktu, saat setiap sumber melakukakan transmisi K = Rasio kapasitas saluran yang dimultiplex terhadap total input maksimum

Sebelumnya besar kapasitas kanal telah ditentukan terlebih dahulu dengan mempertimbangkan bit-bit overhead yang dimiliki multiplexer, sehingga laju maksimum transmisi dapat diketahui.

Parameter K adalah ukuran pemadatan yang dapat dicapai oleh multiplexer. Misalkan, untuk suatu kapasitas kanal tertentu, bila K = 0,25, multiplexer dapat menangani perangkat empat kali lebih banyak dari synchronous TDM pada kapasitas saluran yang sama. Nilai dapat dibatasi menjadi :

α< K < 1 (2.1)

Nilai K = 1 berkaitan dengan synchronous TDM, dimana sistem memiliki kapasitas untuk melayani semua input pada saat yang bersamaan. Sedangkan bila α > K,


(31)

Multiplexer dapat juga dipandang sebagai sebuah antrian dengan server tunggal. Kondisi antri akan meningkat bila pelanggan yang datang ke dalam sistem menemukan server dalam kondisi sibuk, sehingga pelanggan harus menunggu. Penundaan yang dilakukan oleh pelanggan adalah waktu yang dihabiskan untuk menunggu antrian ditambah waktu untuk pelayanan. Persamaan (2.2), (2.3) dan (2.4) meringkas hasil-hasil yang terjadi dan digunakan untuk kasus kedatangan acak dan menggunakan distribusi Poisson dan waktu pelayanan konstan[7].

s T

λ

ρ= (2.2)

Dengan,

= Utilisasi server

= Jumlah rata-rata kedatangan per detik [bps] Ts = Waktu layanan untuk setiap kedatangan [s]

( )

1ρ-ρ ρ

2 N

2

+

= (2.3)

Dengan,

N = Jumlah rata-rata pelanggan di dalam sistem (yang menunggu dan sedang dilayani)

= Utilisasi server

( )

( )

1-ρρ

2 -2 T

Tr = s (2.4)

Dengan,

Tr = Waktu rata-rata yang dihabiskan pelanggan di dalam sistem [s]


(32)

Model ini dapat dihubungkan dengan mudah dengan statistical multiplexer. Untuk menentukan rata-rata laju kedatangan yang terjadi dapat digunakan rumus[7] :

R I

α

λ= (2.5)

Dengan,

λ = Rata-rata laju kedatangan [bps] I = Jumlah sumber input

α = Pecahan rata-rata dari waktu, saat setiap sumber melakukan transmisi R = Laju data setiap sumber [bps]

Sedangkan untuk mencari waktu layanan, yaitu waktu untuk mentransmisikan satu bit dapat digunakan rumus[7] :

M 1

Ts = (2.6)

Dengan,

Ts = Waktu pelayanan [s]

M = Kapasitas efektif saluran multiplexing [bps]

Selanjutnya, kinerja dari server atau multiplexer akan dapat dicari dengan menggunakan rumus[7] :

M M R I Ts λ α λ

ρ= = = (2.7)

Dengan,

ρ = Kinerja dari server atau multiplexer


(33)

R = Laju data setiap sumber [bps]

Perlu diingat bahwa akan lebih sedikit jumlah penyangga per sumber yang diperlukan oleh multiplexer yang menangani sumber dalam jumlah yang besar dan rata-rata penundaan akan semakin kecil bila kapasitas jalur meningkat untuk penggunaan yang konstan.


(34)

BAB III

PERANCANGAN SIMULASI DENGAN VISUAL C++ 6.0

3.1 Umum

Simulasi adalah suatu proses untuk meniru suatu kejadian nyata dengan suatu model dan serangkaian persamaan[5]. Perancangan simulasi pada Tugas Akhir ini akan menampilkan proses perhitungan sistem antrian yang terjadi dan menampilkan hasil akhirnya dalam bentuk sebuah grafik.

Bahasa pemrograman yang digunakan untuk merancang perangkat lunak ini adalah Visual C++ 6.0. Visual C++ merupakan perangkat pengembangan aplikasi yang menggunakan C++ sebagai bahasa pemrograman dan dapat digunakan untuk membuat aplikasi berbasis Windows maupun berbasis teks (console application).

Perangkat ini menyediakan lingkungan yang dinamakan IDE (integrated

development environment) yang memungkinkan pengguna membuat,

mengkompilasi, dan menguji program dengan baik.

3.2 Komponen Visual C++ 6.0

Ada beberapa komponen penting yang terdapat pada program Visual C++ 6.0 yang berperan penting dalam pembangunan suatu aplikasi. Beberapa komponen penting itu adalah :

1. Editor


(35)

memberi warna tersendiri terhadap kata-kata seperti itu. Keuntungannya program akan menjadi lebih mudah dibaca dan sekiranya terjadi kesalahan, maka kesalahan akan lebih cepat terdeteksi.

2. Compiler

Ciompiler adalah perangkat lunak yang berfungsi untuk menterjemahkan kode sumber (source code) ke dalam bentuk bahasa mesin. Peranti ini akan dapat memberikan pesan-pesan kesalahan jika terjadi kesalahan kaidah penulisan program yang terdeteksi pada tahap proses kompilasi.

3. Linker

Linker adalah perangkat lunak yang berfungsi untuk menggabungkan

berbagai modul yang dihasilkan oleh compiler dan modul kode dari berbagai library C++, serta membentuk menjadi kode yang dapat dieksekusi. Sebagaimana compiler,

linker juga dapat mendeteksi kesalahan. Kesalahan yang terjadi pada waktu proses

linking bisa disebabkan karena ada bagian library atau bagian program yang tidak

ditemukan. 4. Library

Visual C++ menyediakan berbagai pustaka (library) yang memudahkan

pemrogram dalam melakukan berbagai operasi seperti menghitung akar kuadrat hingga mengakses database. Pustaka-pustaka yang tersedia antara lain berupa :

a. Standard C++ library, berisi semua rutin yang tersedia pada kebanyakan

compiler C++.

b. Microsoft Foundation Classes and Templates (MFC&T), yang berkaitan


(36)

5. AppWizard

Perangkat ini bermanfaat untuk membangkitkan suatu kerangka dasar

aplikasi Windows yang sangat memudahkan pemrogram untuk membuat aplikasi Windows.

6. ClassWizard

Perangkat ini bermanfaat untuk mengedit kelas-kelas yang dibangkitkan oleh

AppWizard.

3.3 Lingkungan Program Visual C++ 6.0

Lingkungan program Visual C++ 6.0 berisi sarana program yang sangat membantu dalam membangun suatu program Visual C++. Pada Gambar 3.1 dapat dilihat sarana-sarana yang disediakan dalam lingkungan program Visual C++ 6.0.


(37)

3.3.1 Jendela Project Wokspace

Program Visual C++ terdiri dari banyak file dan modul yang digabungkan dan dicompile ketika program tersebut telah rampung dan dieksekusi. Untuk

mempermudah pemrogram, Visual C++ telah menyediakan jendela Project

Workspace yang berisi semua file yang digunakan selama proses pemrograman. Pada

Gambar 3.2 dapat kita lihat contoh tampilan sebuah jendela Project Workspace.

Gambar 3.2 Jendela Project Workspace

Jendela Project Workspace tersebut berisi tiga buah tab, yaitu :

1. Tab ClassView, yang berguna untuk melihat maupun menyunting kelas-kelas dalam proyek.


(38)

2. Tab ResourceView, yang berguna untuk melihat ataupun menyunting resource yang berada dalam aplikasi, yang antara lain meliputi kotak dialog, menu, ikon dan sebagainya.

3. Tab FileView, yang memungkinkan untuk melihat dan menyunting berkas-berkas proyek.

3.3.2 Jendela Editor

Jendela Editor adalah jendela yang berfungsi sebagai tempat merancang antarmuka program yang akan dibuat. Pada saat program yang dirancang tersebut dieksekusi, maka tampilan yang terlihat itu adalah tampilan dari jendela Editor. Selain tampilan antarmuka program yang disebut dialog box, jendela Editor juga dapat menampilkan source code dari program yang dirancang. Jendela Editor dapat dilihat pada Gambar 3.3.


(39)

Gambar 3.3 Jendela Editor

3.3.3 Jendela Output

Jendela Output berfungsi untuk memberikan pesan-pesan kesalahan jika terjadi kesalahan, baik pada saat proses kompilasi maupun sewaktu proses linking. Dengan adanya pesan-pesan kesalahan pada jendela Output, maka kesalahan yang terjadi akan lebih cepat terdeteksi dan diperbaiki. Jendela Output dapat dilihat pada Gambar 3.4.


(40)

3.3.4 Toolbox

Toolbox berfungsi untuk membangun tampilan antarmuka program dengan

menggunakan tool atau kontrol yang telah tersedia. Toolbox dapat dilihat pada Gambar 3.5.

Gambar 3.5Toolbox

3.3.5 Toolbar

Pada Toolbar terdapat tombol-tombol sebagai sarana yang sangat membantu pemrogram dalam dalam merancang suatu aplikasi. Tombol-tombol yang terdapat pada Toolbar ini dapat dikurangi atau ditambah melalui menu Customize sesuai dengan kebutuhan dari perancang program. Toolbar dapat dilihat pada Gambar 3.6.


(41)

3.3.6 Menu Bar

Menu Bar menyediakan akses untuk perintah-perintah yang mengendalikan

program secara umum. Secara umum, fungsi dari menu yang tersedia sama dengan program-program lain yang berbasis Windows. Menu Bar dapat dilihat pada Gambar 3.7.

Gambar 3.7Menu Bar

3.4 Perancangan Simulasi

Model antrian sering digunakan untuk mengukur kinerja dari suatu jaringan komunikasi. Dalam model antrian, “pelanggan” berarti semua hal yang dianggap menghendaki layanan dari sistem. Sedangkan ”server” adalah suatu mekanisme yang memberikan layanan yang dibutuhkan oleh pelanggan. Antrian merupakan proses yang terjadi bila permintaan terhadap pelayanan dari suatu sistem melebihi kapasitas sistem sehingga permintaan tersebut diantrikan.

3.4.1 Model Sistem

Model sistem antrian yang digunakan dalam simulasi ini adalah sistem antrian M/D/1, dimana proses kedatangan menggunakan distribusi Poisson, distribusi waktu pelayanannya adalah determinisitik dengan asumsi kapasitas buffer (penyangga) tidak terbatas. Model sistem ditunjukkan pada Gambar 3.8.


(42)

λ

λ

Gambar 3.8 Model Sistem Antrian

3.4.2 Pembangkitan Bilangan Acak

Pembangkitan bilangan acak digunakan untuk menghasilkan deretan angka-angka sebagai hasil perhitungan yang diketahui distribusinya sehingga angka-angka-angka-angka tersebut muncul secara acak. Salah satu metode pembangkitan bilangan acak adalah

Linear Congruential Generator (LCG).

LCG digunakan untuk membangkitkan bilangan acak Z1, Z2, …Zn yang

bernilai [0,m], dengan memanfaatkan nilai sebelumnya untuk membangkitkan bilangan acak ke n+1 (Zn+1). Hal ini dapat ditulis dalam Persamaan 3.1.

(3.1) )

)(mod

(aZ c m

Zi= i1+

Dengan, 1

0≤Zim

m = modulus


(43)

Z0 = nilai awal (bilangan bulat positif)

Untuk mendapatkan bilangan acak Ui (i = 1, 2,…) pada interval [0,1], maka

(3.2)

m Z Ui = i/ dimana:

,

0<m a<m, c<m, dan Z0 <m

Bilangan acak yang dihasilkan dengan menggunakan metode LCG ini dapat dilihat pada Tabel 3.1.

Tabel 3.1 Bilangan Acak Metode LCG

i Zi Ui

0 2147483647 --

1 139646976 0.065028190612793

2 82952360 0.038627702742815

3 146355436 0.0681520607322454

4 1700390088 0.7918058373034

5 533626304 0.248489111661911

6 1901565280 0.885485336184502

7 294768512 0.137262284755707

8 539969056 0.251442685723305

9 1188739904 0.553550153970718

10 2013477120 0.937598347663879

Pada Tabel 3.1, bilangan acak Ui yang dihasikan berada pada interval [0,1] dengan distribusi uniform. Distribusi ini dilambangkan dengan U(0,1).

3.4.3 Disiplin Antrian

Disiplin antrian yang digunakan dalam simulasi ini adalah disiplin antrian

First In First Out (FIFO), di mana pelanggan yang datang akan diterima di


(44)

dalam kondisi idle, maka pelanggan akan langsung dilayani oleh server. Akan tetapi jika pelanggan yang datang menemui kondisi server dalam keadaan sibuk (busy), maka pelanggan akan mengantri di dalam penyangga sampai semua pelanggan yang duluan datang selesai dilayani.

Selain disiplin antrian FIFO, ada beberapa disiplin antrian lain yang lazim digunakan, yaitu[6] :

1. Last In, First Out (LIFO)

Paket yang lebih dahulu tiba, belakangan dilayani.

2. Random service

Paket yang akan dilayani dipilih secara acak. 3. Service sharing

Setiap paket yang menunggu di dalam antrian akan mendapat porsi pelayanan yang sama meskipun belum lengkap, sehingga dalam hal ini sebenarnya tidak ada antrian yang menunggu.

4. Preemptive priority

Jika pelanggan yang memiliki prioritas lebih tinggi datang, maka pelanggan dengan prioritas lebih rendah yang sedang dalam pelayanan akan diinterupsi dan dilanjutkan kembali jika pelanggan dengan prioritas lebih tinggi selesai dilayani.

3.4.4 Pola Kedatangan

Pola kedatangan merupakan salah satu komponen utama dalam sistem antrian yang akan sangat mempengaruhi simulasi. Kondisi yang paling realistis adalah pola


(45)

tergantung pada kedatangan sebelumnya. Pembangkitan pola kedatangan yang acak dalam penyusunan Tugas Akhir ini menggunakan distribusi Poisson.

Kejadian pembangkitan pola kedatangan acak ini dapat dijelaskan dengan suatu fungsi penghitung N(t) yang dibatasi untuk t ≥ 0. Fungsi penghitung ini akan mewakili jumlah kedatangan yang muncul selama interval [0,t]. Proses penghitung {N(t), t ≥ 0} disebut dengan proses Poisson dengan rata-rata kedatangan λ bila memenuhi asumsi berikut ini[1] :

1. Kedatangan yang terjadi hanya satu pada setiap saat.

2. {N(t), t ≥ 0} memiliki pertambahan yang tetap. Distribusi jumlah kedatangan antara t hingga t + s hanya tergantung pada interval kedatangan s, dan tidak tergantung pada waktu awal t.

3. {N(t), t ≥ 0} memiliki pertambahan yang bebas. Jumlah kedatangan pada interval waktu yang tidak bersamaan adalah variabel acak yang bebas. Sehingga besar kecilnya jumlah kedatangan pada suatu interval waktu tertentu tidak mempengaruhi jumlah kedatangan pada interval waktu berikutnya, dengan demikian kedatangan yang berikut benar-benar acak.

Jika distribusi kedatangan sesuai dengan proses Poisson dan memenuhi tiga kondisi di atas, maka peluang bahwa N(t) sama dengan t dapat diperoleh dengan rumus[1] :

n! t) ( e n] P[N(t) n t -λ λ

=

= untuk t ≥ 0 dan n = 0, 1, 2, ... (3.3)

Dengan,


(46)

n = Jumlah kedatangan dalam interval waktu tertentu t = Perioda waktu

Sedangkan mean dan variance pada proses Poisson adalah[1] :

E[N(t)] = V[N(t)] = λt (3.4)

Dengan,

E[N(t)] = Mean V[N(t)] = Variance

Untuk sembarang waktu s dan t dimana s < t, maka asumsi pertambahan tetap menunjukkan bahwa variabel acak N(t) - N(s) mewakili jumlah kedatangan pada interval waktu antara s hingga t, sehingga diperoleh[1] :

n! s)] -(t [ e N(s)] -P[N(t) n s) -(t

-λ λ

= untuk n = 0, 1, 2, ... (3.5)

dan

E[N(t) – N(s)] = V[N(t) - N(s)] = λ(t – s) (3.6)

Jika A adalah waktu antar kedatangan, maka kedatangan pertama terjadi pada saat A1, kemudian kedatangan kedua terjadi pada waktu A1 + A2, demikian seterusnya seperti pada Gambar 3.1. Karena kedatangan pertama terjadi setelah waktu t jika dan hanya jika tidak ada kedatangan selama interval [0,t], maka dapat dituliskan :

{ A1 > t } = { N(t) = 0 } (3.7)

sehingga,


(47)

Maka, peluang terjadinya kedatangan pada interval waktu [0,t] pada proses Poisson adalah[1] :

P(A<t)=1-e-λt (3.9)

Yang merupakan cdf (cumulative distribution function) dari distribusi eksponensial. Maka, A1 adalah terdistribusi secara eksponensial dengan rata-rata E(A1) = 1/λ. Ini

juga menunjukkan bahwa waktu antar kedatangan A1, A1, . . . , adalah terdistribusi

eksponensial dan tidak memiliki ketergantungan satu sama lain[1].

0 t A1 A1 + A2

. . . .

A1 A2

Gambar 3.9 Proses Kedatangan pada Proses Poisson

Proses pembangkitan waktu antar kedatangan yang berdistribusi Poisson berdasar Persamaan 3.10. dengan rata-rata waktu antar kedatangan disimbolkan dengan . Dengan algoritma, bangkitkan bilangan acak Ui, lalu dapatkan nilai ti dari

Persamaan 3.10.

i 1

-i

i =t - lnU

t 1 (3.10)

Pada Tabel 3.2 dan 3.3 dapat dilihat waktu kedatangan yang dihasilkan dengan mengikuti distribusi Poisson untuk beberapa nilai .


(48)

Tabel 3.2 Urutan Waktu Kedatangan dengan = 5 kedatangan/s

Kedatangan

ke - i Waktu Kedatangan

0 0,0 1 0,186441 2 0,245196 3 0,263828 4 0,606247 5 0,782175 6 0,845165 7 0,908419 8 1,00867 9 1,33441 10 1,42009

Tabel 3.3 Urutan Waktu Kedatangan dengan = 10 kedatangan/s

Kedatangan

ke - i Waktu Kedatangan

0 0,0

1 0,0155119 2 0,0420377 3 0,107401 4 0,238285 5 0,264539 6 0,343687 7 0,375621 8 0,437341 9 0,616148 10 0,640373

Sedangkan waktu antarkedatangan pelanggan di atas dapat dilihat pada Tabel 3.4 dan Tabel 3.5.


(49)

Tabel 3.4 Waktu Interval Antar Kedatangan dengan = 5 kedatangan/s

i ∆ ti (detik)

1 0,186441 2 0,058755 3 0,018362 4 0,342419 5 0,175928 6 0,06299 7 0,063254 8 0,100251 9 0,35274 10 0,08568

Tabel 3.5 Waktu Interval Antar Kedatangan dengan = 2 kedatangan/s

i ∆ ti (detik)

1 0,0155119 2 0,0265258 3 0,0653633 4 0,130884 5 0,026254 6 0,079148 7 0,031934 8 0,06172 9 0,178807 10 0,024225

3.4.5 Pola Pelayanan

Salah satu komponen penting dalam sistem antrian adalah karakteristik pelayanan yang dibutuhkan oleh setiap pelanggan. Pada simulasi ini diasumsikan bahwa pelanggan bersifat homogen, sehingga permintaan pelayanan (service


(50)

demand) terdistribusi secara identik dan dikenal sebagai distribusi pelayanan. Kecepatan pelayanan menyatakan seberapa cepat elemen pelayanan menyelesaikan pekerjaannya, yang diperoleh dari persamaan (3.11).

M 1

Ts = (3.11)

Dengan,

Ts = Waktu pelayanan [s]

M = Kapasitas efektif saluran multiplexing [bps]

Dalam hal ini elemen pelayanannya merupakan suatu kanal saluran transmisi, maka kecepatannya dihitung dalam bps atau kbps yang menyatakan kecepatan transmisi.

3.4.6 Algoritma dan Diagram Alir Simulasi

Diagram alir dari proses simulasi sistem antrian pada statistical time division

multiplexing dapat dapat dilihat pada Gambar 3.10. Sedangkan algoritma dari proses

simulasi yang terjadi adalah sebagai berikut :

1. Dilakukan proses inisialisasi variabel yaitu kapasitas kanal, rata-rata transmisi input, dan jumlah sumber input dengan cara memilih nilainya dari pilihan yang telah tersedia.

2. Setelah nilai-nilai ditentukan, maka dibangkitkan waktu kedatangan secara acak dengan distribusi Poisson.


(51)

5. Proses simulasi akan berhenti ketika waktu mencapai nilai yang telah ditentukan yaitu 20 detik.

6. Diperoleh hasil akhir berupa utilisasi server, panjang antrian rata-rata, dan penundaan rata-rata.

7. Data hasil akhir yang diperoleh disimpan di tabel kondisi I, II, dan III.

8. Data masukan untuk kondisi I adalah utilisasi server, panjang antrian rata-rata, dan penundaan rata-rata dengan jumlah input yang berubah.

9. Data masukan untuk kondisi II adalah utilisasi server, panjang antrian rata-rata, dan penundaan rata-rata dengan rata-rata transmisi yang berubah.

10. Data masukan untuk kondisi III adalah utilisasi server, panjang antrian rata-rata, dan penundaan rata-rata dengan kapasitas kanal yang berubah.

11. Setelah data untuk masing-masing kondisi lengkap, hasil akhir dapat ditampilkan dalam bentuk grafik untuk masing-masing kondisi.


(52)

(53)

3.4.7 Prototype Simulasi

Secara garis besar, simulasi ini terdiri dari dua bagian utama, yaitu bagian tampilan antarmuka program dan source code program.

3.4.7.1 Prototype Antarmuka Program

Antarmuka program yang disebut dengan dialog box merupakan tempat perancangan program secara visual seperti tabel, tombol, dan grafik. Dalam simulasi terdapat tujuh buah dialog box, yaitu :

1. Dialog box Utama

Dialog box ini merupakan tampilan utama yang menampilkan proses simulasi

yang sedang berjalan.

2. Dialog box Grafik A Kondisi I

Dialog box ini menampilkan grafik A hasil simulasi dengan kondisi I. 3. Dialog box Grafik B Kondisi I

Dialog box ini menampilkan grafik B hasil simulasi dengan kondisi I. 4. Dialog box Grafik A Kondisi II

Dialog box ini menampilkan grafik A hasil simulasi dengan kondisi II. 5. Dialog box Grafik B Kondisi II

Dialog box ini menampilkan grafik B hasil simulasi dengan kondisi II. 6. Dialog box Grafik A Kondisi III

Dialog box ini menampilkan grafik A hasil simulasi dengan kondisi III. 7. Dialog box Grafik B Kondisi III


(54)

3.4.7.2 Prototype Source Code Program

Prototype source code program berisi file-file dan fungsi-fungsi utama yang digunakan untuk menjalankan program. Berikut adalah file-file utama yang digunakan dalam perancangan program :

1. LayoutDlg.h

File ini merupakan sebuah header file, yang berfungsi sebagai tempat pendeklarasian variabel-variabel yang digunakan dalam perancangan tampilan program.

2. LayoutDlg.cpp

File ini merupakan sebuah implementation file yang berisi kode C++ yang berfungsi agar tampilan yang telah dirancang sebelumnya dapat melakukan tindakan seperti yang diinginkan.

Berikut ini adalah fungsi-fungsi utama yang digunakan dalam perancangan program : 1. Fungsi yang menginisialisasi sistem

BOOL CLayoutDlg::OnInitDialog() { };

2. Fungsi yang menjalankan timer

void CLayoutDlg::OnTimer(UINT nIDEvent)

{ };


(55)

4. Fungsi yang menjalankan tombol Simpan (sesuai dengan kondisinya).

void CLayoutDlg::OnSimpankondisi1()

{ };

5. Fungsi yang menjalankan tombol Grafik (sesuai dengan kondisinya).

void CLayoutDlg::OnBtngrafik1()

{ };

6. Fungsi yang menjalankan tombol Clear.

void CLayoutDlg::OnBersih()

{ };

7. Fungsi untuk menjalankan tombol Exit.

void CLayoutDlg::OnKeluar()


(56)

BAB IV

SIMULASI PERANGKAT LUNAK

4.1 Umum

Pada bab ini akan diuraikan parameter-parameter dan batasan-batasan yang digunakan untuk pengukur kinerja sistem. Kinerja sistem yang dianalisis adalah delay rata-rata, panjang antrian rata-rata dan utilisasi sistem.

4.2 Pemodelan Sistem

Model sistem berguna sebagai tiruan dari sistem yang akan dianalisis. Adapun model dari sistem antrian pada statistical TDM yang disimulasikan dapat dilihat pada Gambar 4.1.

Gambar 4.1 Model Sistem Statistical TDM

Dengan mengasumsikan bahwa waktu kedatangan dari masing-masing sumber adalah acak dengan distribusi Poisson, maka model di atas dapat


(57)

λ

Gambar 4.2 Model Sistem yang Disimulasikan

4.3 Asumsi-Asumsi Pembangun Sistem

Ada beberapa asumsi yang digunakan di dalam membangun sistem, yaitu : 1. Pola kedatangan pelanggan.

Pola kedatangan adalah acak dengan menggunakan distribusi Poisson. 2. Disiplin antrian.

Disiplin antrian pelanggan yang digunakan pada simulasi ini adalah FIFO (First In Firs Out).

3. Pola pelayanan.

Pada simulasi ini diasumsikan bahwa pelanggan bersifat homogen, sehingga waktu pelayanan untuk setiap pelanggan adalah identik.

4. Kapasitas buffer.

Pada simulasi ini diasumsikan bahwa kapasitas buffer tidak terhingga.

4.4 Mode Analisis

Pada simulasi ini, ada tiga kondisi yang digunakan untuk menganalisi delay rata-rata, panjang antrian rata-rata, dan utilisasi server.

1. Kondisi I.


(58)

2. Kondisi II.

Dimana kapasitas kanal dan jumlah sumber tetap, sedangkan rata-rata transmisi berubah.

3. Kondisi III.

Dimana jumlah sumber dan rata-rata transmisi tetap, sedangkan kapasitas kanal berubah.

4.5 Batasan-Batasan Model Sistem

Beberapa batasan yang merupakan nilai konstanta dan data masukan sebagai nilai variabel yang digunakan dalam analisis kinerja sistem ini, yaitu :

1. Nilai konstanta yang ditetapkan dalam simulasi ini adalah : Laju data untuk setiap sumber = 1000 bps.

2. Data masukan yang ditetapkan dalam simulasi ini adalah :

a. Jumlah sumber.

Jumlah sumber yang digunakan naik secara bertahap dari 1 s/d 10 dengan

interval kenaikan 1.

b. Rata-rata transmisi dari masing-masing sumber.

Rata-rata transmisi yang digunakan naik secara bertahap dari 0,1 s/d 0,9

dengan interval kenaikan 0,1. c. Kapasitas saluran transmisi.

Kapasitas saluran transmisi yang digunakan naik secara bertahap dari 1000 bps s/d 10000 bps dengan interval kenaikan 1000 bps.


(59)

Data masukan ini dapat dimasukkan ke dalam program yang dibuat melalui pilihan seperti pada Gambar 4.3.

Gambar 4.3 Tampilan Parameter-Parameter dalam Simulasi

4.6 Performansi Sistem

Performansi sistem menunjukkan kejadian-kejadian yang berlangsung selama simulasi berjalan. Ada beberapa hal yang diukur selama proses simulasi berjalan, yaitu :

1. Jumlah pelanggan yang telah memasuki sistem [n]. 2. Jumlah antrian di dalam sistem [Antrian].

3. Panjang antrian pada waktu t [L(t)]. 4. Penundaan pada waktu t [W(t)]. 5. Perkiraan kedatangan pelanggan. 6. Perkiraan selesai pelanggan.

Contoh proses perhitungan performansi sistem dengan salah satu kondisi dapat dilihat pada Gambar 4.4.


(60)

Gambar 4.4 Tampilan Performansi Sistem

4.7 Hasil Akhir

Ketika telah mencapai waktu yang telah ditentukan, yaitu 20 detik, maka simulasi akan berhenti dan menampilkan hasil akhir proses simulasi sesuai dengan parameter yang dimasukkan. Hasil akhir yang dihitung dalam simulasi adalah : 1. Utilisasi server.

2. Panjang antrian rata-rata [L]. 3. Penundaan rata-rata [W].

Salah satu contoh tampilan hasil akhir yang diperoleh dapat dilihat pada Gambar 4.5


(61)

. 4.8 Tabel Hasil Akhir

Hasil akhir yang telah diperoleh sebelumnya kemudian akan disimpan pada tabel hasil akhir sesuai dengan kondisinya masing-masing.

4.8.1 Tabel Hasil Akhir Kondisi I

Tujuan dari proses simulasi ini adalah untuk melihat kinerja sistem antrian yang terjadi pada multiplexer. Dari tabel akhir kondisi I ini dapat dilihat pengaruh dari parameter jumlah sumber terhadap kinerja sistem antrian. Pada Gambar 4.6 dapat dilihat tabel hasil akhir kondisi I.

Gambar 4.6 Tampilan Tabel Hasil Akhir Kondisi I


(62)

4.8.2 Tabel Hasil Akhir Kondisi II

Dari tabel akhir kondisi ini dapat dilihat pengaruh dari parameter rate transmisi terhadap kinerja sistem. Tabel hasil akhir untuk kondisi II dapat dilihat pada Gambar 4.7.

Gambar 4.7 Tampilan Tabel Hasil Akhir Kondisi II

4.8.3 Tabel Hasil Akhir Kondisi III

Dari tabel akhir kondisi ini dapat dilihat pengaruh dari parameter kapasitas kanal terhadap kinerja sistem. Tabel hasil akhir untuk kondisi II dapat dilihat pada Gambar 4.8.


(63)

Gambar 4.8 Tampilan Tabel Hasil Akhir Kondisi III

Selang kepercayaan dari hasil perhitungan panjang antrian rata-rata untuk beberapa harga utilisasi server disajikan sebagai berikut :

1. Untuk = 0,1.

Tabel 4.1 Variansi pada Panjang Antrian Rata-Rata untuk = 0,1


(64)

Rata - rata (mean) = n Xi X n i

= = 1 ___ = 3,26 30 = 0,10866

Variansi (X) =

n X Xi X Var n i

= = 1 2 ___ ) -( ) ( = 0,002529 30 = 0,0000843

= Var(X)

= 0,0000843

= 0,009811

Dengan menggunakan derajat keyakinan 95 % (0,95) maka diperoleh z = 1,96 pada tabel normal. Jadi selang kepercayaan berada pada :

0,10866 ± 1,96 . 0,009811

0,10866 ± 0,019229

atau antara


(65)

2. Untuk = 0,2

Tabel 4.2 Variansi pada Panjang Antrian Rata-Rata untuk = 0,2

Rata - rata (mean) =

n Xi X n i

= = 1 ___ = 6,645 30 = 0,22366

Variansi (X) =

n X Xi X Var n i

= = 1 2 ___ ) -( ) ( = 0,002028 30 = 0,0000676


(66)

= Var(X)

= 0,0000676

= 0,008222

Dengan menggunakan derajat keyakinan 95 % (0,95) maka diperoleh z = 1,96 pada tabel normal. Jadi selang kepercayaan berada pada :

0,22366 ± 1,96 . 0,008222

0,22366 ± 0,016115

atau antara

0,207545 s/d 0,239775

Sedangkan selang kepercayaan dari hasil perhitungan delay rata-rata disajikan sebagai berikut :

Tabel 4.3 Variansi pada Delay Antrian Rata-Rata untuk = 0,3


(67)

Rata - rata (mean) = n Xi X n i

= = 1 ___ = 6,49416 30 = 0,216472

Variansi (X) =

n X Xi X Var n i

= = 1 2 ___ ) -( ) ( = 0,000057 30 = 0,000019

= Var(X)

= 0,000019

= 0,004358

Dengan menggunakan derajat keyakinan 95 % (0,95) maka diperoleh z = 1,96 pada tabel normal. Jadi selang kepercayaan berada pada :

0,216472 ± 1,96 . 0,004358 0,216472 ± 0,008541

atau antara


(68)

4.9 Grafik Hasil Simulasi

Hasil akhir dari perhitungan antrian dengan kondisi-kondisi di atas dapat dilihat melalui grafik yang terdapat pada perangkat lunak tersebut. Tujuan dari grafik ini yaitu untuk mengetahui perbedaan hasil akhir dari seluruh kondisi yang digunakan.

4.9.1 Grafik Kondisi I

Grafik hasil akhir perhitungan antrian pada kondisi I dapat dilihat pada Gambar 4.9.(a) dan 4.9.(b). Pada Gambar 4.9.(a) dapat dilihat perubahan panjang antrian rata-rata yang terjadi sesuai dengan kenaikan utitilisasi server. Sedangkan pada Gambar 4.9.(b) dapat dilihat perubahan penundaan rata-rata sesuai dengan perubahan utilisasi server.


(69)

Gambar 4.9 Grafik Kondisi I

4.9.2 Grafik Kondisi II

Grafik hasil akhir perhitungan antrian pada kondisi I dapat dilihat pada Gambar 4.10.(a) dan 4.10.(b). Pada Gambar 4.10.(a) dapat dilihat perubahan panjang antrian rata-rata yang terjadi sesuai dengan kenaikan utitilisasi server. Sedangkan pada Gambar 4.10.(b) dapat dilihat perubahan penundaan rata-rata sesuai dengan perubahan utilisasi server.


(70)

(a) Panjang Antrian vs Utilisasi Server


(71)

4.5.3 Grafik Kondisi III

Grafik hasil akhir perhitungan antrian pada kondisi I dapat dilihat pada Gambar 4.11.(a) dan 4.11.(b). Pada Gambar 4.11.(a) dapat dilihat perubahan panjang antrian rata-rata yang terjadi sesuai dengan kenaikan utitilisasi server. Sedangkan pada Gambar 4.11.(b) dapat dilihat perubahan penundaan rata-rata sesuai dengan perubahan utilisasi server.


(72)

(73)

BAB V PENUTUP

5.1 Kesimpulan

Dari hasil simulasi yang diperoleh pada Bab IV, maka didapatkan kesimpulan sebagai berikut :

1. Dengan semakin bertambahnya jumlah sumber yang melakukan transmisi, maka akan semakin bertambah pula utilisasi server dan panjang antrian rata-rata pada sistem.

2. Dengan semakin bertambahnya rate transmisi pada masing-masing sumber, maka akan semakin bertambah pula utilisasi server dan panjang antrian rata-rata pada sistem.

3. Dengan semakin besarnya kapasitas saluran transmisi, maka utilisasi server dan panjang antrian rata-rata pada sistem akan semakin kecil.

5.2 Saran

Beberapa saran yang dapat penulis berikan adalah :

1. Perangkat lunak yang telah dirancang ini dapat dikembangkan lagi dengan membahas throughput dari statistical TDM.

2. Untuk semakin mempermudah pemahaman, perangkat lunak yang telah dirancang ini dapat dilengkapi dengan animasi dari proses yang terjadi.


(74)

DAFTAR PUSTAKA

1. Banks, Jerry, John S. Carson and Barry L. Nelson, 1996, “Discrete Event System Simulation”, Second Edition, Prentice Hall International, New Jersey.

2. Balaban, Philip, Michael C. Jeruchim and K. Sam Shanmugan, 2002

“Simulation of Communication System”, Second Edition, Kluwer Academic Publisher, New York.

3. Freeman, Roger L, 2005, “Fundamentals of Telecommunications”, Fourth Edition, John Wiley and Sons, New York.

4. Kadir, Abdul, 2004, “Panduan Pemrograman Visual C++”, Penerbit Andi, Yogyakarta.

5. Law, Averil M. and W. David Kelton, 1991, “Simulation Modeling and Analysis”, Second Edition, McGraw Hill, New York.

6. Mir, Nader F, 2006, “Computer and Communication Networks”, Prentice Hall, Indiana.

7. Stallings, William, 2000, “Data and Computer Communication”, Sixth Edition, Prentice Hall, New Jersey.

8. Young, Minchael J., 1998, “Mastering Visual C++6”, Sybex Inc, San Fransisco.


(75)

LAMPIRAN A

LISTING PROGRAM PERANGKAT LUNAK

SIMULASI SISTEM ANTRIAN PADA STATISTICAL TDM DENGAN BAHASA PEMROGRAMAN VISUAL C++ 6.0


(76)

Source Code Pendeklarasian Variabel-Variabel Program Utama // LayoutDlg.h : header file

// #if !defined(AFX_LAYOUTDLG_H__50E40FD7_A3B2_4FD9_8668_6F6CB79F9015__INCL UDED_) #define AFX_LAYOUTDLG_H__50E40FD7_A3B2_4FD9_8668_6F6CB79F9015__INCLUDED_

#if _MSC_VER > 1000 #pragma once

#endif // _MSC_VER > 1000

//////////////////////////////////////////////////////////////////// /////////

// CLayoutDlg dialog

class CLayoutDlg : public CDialog {

// Construction public:

int bataswaktu;

int item;

double waktuselesai,waktujalan,waktuterakhir;

void urutdata();

double daftarselesai[2000];

int jumlah_antri;

float w_selesai;

double daftartunggu[2000];

double daftarwaktu[2000];

int jumlah;

int x;

int jmldatang;

float w_sebelum;

float w_datang;

CLayoutDlg(CWnd* pParent = NULL); // standard constructor

// Dialog Data

//{{AFX_DATA(CLayoutDlg) enum { IDD = IDD_LAYOUT_DIALOG };

CListBox m_listjumlahinput1;

CListBox m_listw3;

CListBox m_listw2;

CListBox m_listw1;

CListBox m_listutilserver2;

CListBox m_listutilserver1;

CListBox m_util2;

CListBox m_listrate;

CListBox m_listl3;


(77)

CListBox m_as; double m_waktu; double m_test;

CString m_kapasitas;

double m_ratesumber;

CString m_sinput;

CString m_alpha;

double m_test2;

int m_bil;

double m_wktlayan;

int m_antri;

double m_util;

int m_N;

double m_waktuselesai; double m_Lantrian; double m_Wantrian; double m_LT;

double m_WN;

int m_statusserver;

//}}AFX_DATA

// ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CLayoutDlg)

protected:

virtual void DoDataExchange(CDataExchange* pDX); //

DDX/DDV support

//}}AFX_VIRTUAL

// Implementation protected:

HICON m_hIcon;

// Generated message map functions //{{AFX_MSG(CLayoutDlg)

virtual BOOL OnInitDialog();

afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint();

afx_msg HCURSOR OnQueryDragIcon(); afx_msg void OnStart();

afx_msg void OnTimer(UINT nIDEvent); afx_msg void OnKeluar();

afx_msg void OnBtngrafik1(); afx_msg void OnButton9(); afx_msg void OnGrafik3();

afx_msg void OnSimpankondisi1(); afx_msg void OnBersih();

afx_msg void OnSimpankondisi2(); afx_msg void OnSimpankondisi3(); afx_msg void OnGrafik1b();

afx_msg void OnGrafik2b(); afx_msg void OnGrafik3b(); //}}AFX_MSG

DECLARE_MESSAGE_MAP() };


(78)

// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif //

!defined(AFX_LAYOUTDLG_H__50E40FD7_A3B2_4FD9_8668_6F6CB79F9015__INCL UDED_)


(79)

Source Code Program Utama

// LayoutDlg.cpp : implementation file //

#include "stdafx.h" #include "Layout.h" #include "LayoutDlg.h"

//Include file Untuk Random Metode Poison

#include <time.h> // define time()

#include "randomc.h" // define classes for random number generators

#include "mersenne.cpp" // code for random number generator

#define RANDOM_GENERATOR TRandomMersenne // define which random number generator to use

#include "stocc.h" // define random library classes

#include "stoc1.cpp" // random library source code #include "stoc2.cpp" // random library source code #include "userintf.cpp" // define system specific user interface

//Akhir Include File Untuk Random Poison

#define RANDOM_GENERATOR TRandomMersenne // define which random number generator to use

#include "Grafik1.h" #include "Grafik2.h" #include "Grafik3.h" #include "Grafik4.h" #include "Grafik5.h" #include "Grafik6.h" #ifdef _DEBUG

#define new DEBUG_NEW #undef THIS_FILE

static char THIS_FILE[] = __FILE__; #endif

//////////////////////////////////////////////////////////////////// /////////

// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog {

public:

CAboutDlg();

// Dialog Data

//{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA

// ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg)

protected:


(80)

//}}AFX_VIRTUAL

// Implementation protected:

//{{AFX_MSG(CAboutDlg)

afx_msg void OnBeforeDragOverImage1(LPDISPATCH Cancel, LPDISPATCH Data, float X, float Y, long DragState, LPDISPATCH Effect, short Shift);

DECLARE_EVENTSINK_MAP() //}}AFX_MSG

DECLARE_MESSAGE_MAP() };

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) {

//{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg)

// No message handlers //}}AFX_MSG_MAP

END_MESSAGE_MAP()

//////////////////////////////////////////////////////////////////// /////////

// CLayoutDlg dialog

CLayoutDlg::CLayoutDlg(CWnd* pParent /*=NULL*/) : CDialog(CLayoutDlg::IDD, pParent)

{

//{{AFX_DATA_INIT(CLayoutDlg) m_waktu = 0.0;

m_test = 0.0;

m_kapasitas = _T(""); m_ratesumber = 0.0; m_sinput = _T(""); m_alpha = _T(""); m_test2 = 0.0; m_bil = 0;

m_wktlayan = 0.0; m_antri = 0; m_util = 0.0; m_N = 0;


(81)

m_WN = 0.0;

m_statusserver = 0; //}}AFX_DATA_INIT

// Note that LoadIcon does not require a subsequent DestroyIcon in Win32

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); }

void CLayoutDlg::DoDataExchange(CDataExchange* pDX) {

CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CLayoutDlg)

DDX_Control(pDX, IDC_LISTJLHINPU1, m_listjumlahinput1); DDX_Control(pDX, IDC_LISTW3, m_listw3);

DDX_Control(pDX, IDC_LISTW2, m_listw2); DDX_Control(pDX, IDC_LISTW1, m_listw1);

DDX_Control(pDX, IDC_LISTUTILSERVER2, m_listutilserver2); DDX_Control(pDX, IDC_LISTUTILSERVER1, m_listutilserver1); DDX_Control(pDX, IDC_LISTUTIL2, m_util2);

DDX_Control(pDX, IDC_LISTRATE, m_listrate); DDX_Control(pDX, IDC_LISTL3, m_listl3); DDX_Control(pDX, IDC_LISTL2, m_listl2); DDX_Control(pDX, IDC_LISTL1, m_listl1);

DDX_Control(pDX, IDC_LISTKANAL, m_listkanal); DDX_Control(pDX, IDC_waktutetap, m_dwaktutetap); DDX_Control(pDX, IDC_selesai, m_dselesai);

DDX_Control(pDX, IDC_LISTtest, m_as); DDX_Text(pDX, IDC_WAKTU, m_waktu); DDX_Text(pDX, IDC_test, m_test);

DDX_CBString(pDX, IDC_kapasitas, m_kapasitas); DDX_Text(pDX, IDC_ratesumber, m_ratesumber); DDX_CBString(pDX, IDC_sinput, m_sinput); DDX_CBString(pDX, IDC_alpha, m_alpha); DDX_Text(pDX, IDC_test2, m_test2); DDX_Text(pDX, IDC_bil, m_bil);

DDX_Text(pDX, IDC_wktlayan, m_wktlayan); DDX_Text(pDX, IDC_antri, m_antri);

DDX_Text(pDX, IDC_util, m_util); DDX_Text(pDX, IDC_N, m_N);

DDX_Text(pDX, IDC_waktuselesai, m_waktuselesai); DDX_Text(pDX, IDC_Lantrian, m_Lantrian);

DDX_Text(pDX, IDC_Wantrian, m_Wantrian); DDX_Text(pDX, IDC_LT, m_LT);

DDX_Text(pDX, IDC_WN, m_WN);

DDX_Text(pDX, IDC_STATUSSERVER, m_statusserver); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CLayoutDlg, CDialog) //{{AFX_MSG_MAP(CLayoutDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_START, OnStart)

ON_WM_TIMER()


(82)

ON_BN_CLICKED(IDC_BTNGRAFIK1, OnBtngrafik1)

ON_BN_CLICKED(IDC_BUTTON9, OnButton9)

ON_BN_CLICKED(IDC_GRAFIK3, OnGrafik3)

ON_BN_CLICKED(IDC_SIMPANKONDISI1, OnSimpankondisi1)

ON_BN_CLICKED(IDC_Bersih, OnBersih)

ON_BN_CLICKED(IDC_SIMPANKONDISI2, OnSimpankondisi2)

ON_BN_CLICKED(IDC_SIMPANKONDISI3, OnSimpankondisi3)

ON_BN_CLICKED(IDC_GRAFIK1B, OnGrafik1b)

ON_BN_CLICKED(IDC_GRAFIK2B, OnGrafik2b)

ON_BN_CLICKED(IDC_GRAFIK3B, OnGrafik3b)

//}}AFX_MSG_MAP END_MESSAGE_MAP()

//////////////////////////////////////////////////////////////////// /////////

// CLayoutDlg message handlers

BOOL CLayoutDlg::OnInitDialog() {

CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL)

{

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX,

strAboutMenu); } }

// Set the icon for this dialog. The framework does this automatically

// when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

return TRUE; // return TRUE unless you set the focus to a control

}


(83)

CAboutDlg dlgAbout; dlgAbout.DoModal(); }

else {

CDialog::OnSysCommand(nID, lParam);

} }

// If you add a minimize button to your dialog, you will need the code below

// to draw the icon. For MFC applications using the document/view model,

// this is automatically done for you by the framework.

void CLayoutDlg::OnPaint() {

if (IsIconic())

{

CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(),

0);

// Center icon in client rectangle

int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon

dc.DrawIcon(x, y, m_hIcon);

} else { CDialog::OnPaint(); } }

// The system calls this to obtain the cursor to display while the user drags

// the minimized window.

HCURSOR CLayoutDlg::OnQueryDragIcon() {

return (HCURSOR) m_hIcon; }

/*void CLayoutDlg::OnFieldchangedIpaddress1(NMHDR* pNMHDR, LRESULT* pResult)

{

// TODO: Add your control notification handler code here

*pResult = 0; }*/


(84)

void CLayoutDlg::OnStart() {

float a,b,c;

int posrandom,tmp,z;

int ada,i;

char s[100];

double nilai;

srand( (unsigned) time(NULL)); x=-1;

w_datang = 0.1;

jumlah_antri =0;

int32 seed = time(0); // random seed

StochasticLib1 sto(seed); // make instance of random library ada=0; UpdateData(true); a=atof(m_alpha); b=atof(m_sinput); c=atof(m_kapasitas);

nilai =0.00;

waktuselesai=0.0; item=0;

m_ratesumber=1000;

m_test= a*b*m_ratesumber;

m_util = (a*b*m_ratesumber)/c;

jmldatang = m_test*1.0 /1000.0 * 20.0; m_bil= sto.Poisson(jmldatang);

jmldatang = m_bil;

m_wktlayan = (1/c) * 1000.0;

if (m_wktlayan*1000 >=10 && m_wktlayan*1000 <100) {

bataswaktu = 2000;

waktujalan=0.01; }

else if (m_wktlayan*1000 >=100 && m_wktlayan*1000 <1000) {

bataswaktu = 200;

waktujalan=0.1; }

for ( i=0 ;i<bataswaktu;++i) {


(85)

for(int k=0;k<jmldatang ;++k) {

daftarselesai[k]=0.0; }

for( i = 0;i<jmldatang;++i) {

posrandom =rand() % bataswaktu;

if (posrandom < bataswaktu) {

for (z=0 ;z<jmldatang;++z)

{

if (daftartunggu[z]==daftarwaktu[posrandom])

{

ada=1; }

}

if ( ada==0)

{

daftartunggu[i]= daftarwaktu[posrandom];

daftarselesai[i]=daftartunggu[i]+ m_wktlayan; } else { i=i-1; ada=0; } } else { i=i-1; ada=0; } } UpdateData(false); urutdata(); SetTimer(1,1,NULL); }

void CLayoutDlg::OnTimer(UINT nIDEvent) {

// TODO: Add your message handler code here and/or call default

int i,a=0;

UpdateData (true);

x= x + 1;

if (x<bataswaktu)


(86)

m_waktu= daftarwaktu[x];

UpdateData(false);

for (i=0;i<bataswaktu;++i)

{

if (daftarwaktu[x]==daftartunggu[i])

{

item =item +1;

m_statusserver =1;

waktuterakhir = m_waktu;

if (daftarwaktu[x] < waktuselesai)

{

jumlah_antri = jumlah_antri +1;

a=1; }

else {

if (i==0 || jumlah_antri <=0)

{

waktuselesai = daftarwaktu[x] +

m_wktlayan; } else { if(daftarwaktu[x] >=waktuselesai) {

waktuselesai =

waktuselesai+m_wktlayan;

jumlah_antri =

jumlah_antri-1; a=1; } } } m_antri=jumlah_antri;

m_waktuselesai = waktuselesai;

m_test2=daftartunggu[i];

m_N = m_N +1;

// m_Lantrian = m_Lantrian + (1*

waktujalan);

// m_Wantrian = m_Wantrian + (1*

waktujalan);

UpdateData(false); break;


(87)

UpdateData(false); }

}

if (jumlah_antri >0 && a>=1) {

m_Lantrian = m_Lantrian +

((jumlah_antri+1)*waktujalan);

m_Wantrian =m_Wantrian +

((jumlah_antri+1)*waktujalan); a=0; m_statusserver=1; } else { m_statusserver=0; }

if (m_waktu <= waktuterakhir + waktujalan ) {

m_Lantrian = m_Lantrian + (1*

waktujalan);

m_Wantrian = m_Wantrian + (1*

waktujalan); m_statusserver=1; } else { m_statusserver=0; } UpdateData(false); } else {

UpdateData (true);

m_LT = m_Lantrian/20;

m_WN = m_Wantrian/m_N;

UpdateData(false); KillTimer(1); } CDialog::OnTimer(nIDEvent); } void CLayoutDlg::OnKeluar() { CDialog::OnOK (); } void CLayoutDlg::urutdata() {

int x,y;

double ds;

char s[100];

UpdateData(true);

for (x=jmldatang - 2 ; x>=0 ;--x) {


(88)

for(y = 0 ;y<=x ;++y) {

if (daftartunggu [y] > daftartunggu [y+1]) {

ds = daftartunggu[y];

daftartunggu [y] = daftartunggu [y+1];

daftartunggu [y+1] = ds;

ds= daftarselesai[y];

daftarselesai[y] = daftarselesai[y+1];

daftarselesai[y+1] = ds;

} }

}

for (x=0;x<jmldatang;++x)

{

gcvt(daftarselesai[x],10,s);

m_dselesai.AddString (s);

gcvt(daftartunggu[x],10,s);

m_as.AddString (s);

gcvt(daftarwaktu[x],10,s);

m_dwaktutetap.AddString (s);

}

}

void CLayoutDlg::OnBtngrafik1() {

char s[100];

int p;

Grafik1 grafik1;

for(p=0;p < m_listutilserver1.GetCount();++p) {

m_listutilserver1.GetText(p,s); //MessageBox(s);

grafik1.xaxis[p]= atof(s);

}

for(p=0;p < m_listl1.GetCount();++p) {

m_listl1.GetText(p,s);

grafik1.yaxis[p]= atof(s);

}

grafik1.DoModal ();

}


(89)

Grafik2 grafik2;

for(p=0;p < m_listutilserver2.GetCount();++p)

{

m_listutilserver2.GetText(p,s); //MessageBox(s);

grafik2.xaxis[p]= atof(s);

}

for(p=0;p < m_listl2.GetCount();++p) {

m_listl2.GetText(p,s);

grafik2.yaxis[p]= atof(s);

}

grafik2.DoModal ();

}

void CLayoutDlg::OnGrafik3() {

int p;

char s[100];

Grafik3 grafik3;

for(p=0;p < m_util2.GetCount();++p) {

m_util2.GetText(p,s); //MessageBox(s);

grafik3.xaxis[p]= atof(s);

}

for(p=0;p < m_listl3.GetCount();++p) {

m_listl3.GetText(p,s);

grafik3.yaxis[p]= atof(s);

}

grafik3.DoModal ();

}

void CLayoutDlg::OnSimpankondisi1() {

char s[100];

gcvt(m_util,10,s); m_listutilserver1.AddString(s); gcvt(m_LT,10,s); m_listl1.AddString(s); gcvt(m_WN,10,s); m_listw1.AddString(s); m_listjumlahinput1.AddString(m_sinput); }


(90)

void CLayoutDlg::OnBersih() { waktuselesai=0.0; item=0; x=-1; m_ratesumber=1000; w_datang = 0.1;

jumlah_antri =0;

m_waktu =0;

m_sinput ="";

m_util=0; m_LT=0; m_WN=0; m_Lantrian=0; m_Wantrian=0; m_N=0;

m_antri =0;

m_alpha=""; m_kapasitas="";

m_wktlayan = 0;

m_statusserver =0;

UpdateData(false); }

void CLayoutDlg::OnSimpankondisi2() {

char s[100];

gcvt(m_util,10,s); m_listutilserver2.AddString(s); gcvt(m_LT,10,s); m_listl2.AddString(s); gcvt(m_WN,10,s); m_listw2.AddString(s); m_listrate.AddString(m_alpha); } void CLayoutDlg::OnSimpankondisi3() {

char s[100];

gcvt(m_util,10,s); m_util2.AddString(s); gcvt(m_LT,10,s); m_listl3.AddString(s); gcvt(m_WN,10,s); m_listw3.AddString(s); m_listkanal.AddString(m_kapasitas); } BEGIN_EVENTSINK_MAP(CAboutDlg, CDialog) //{{AFX_EVENTSINK_MAP(CAboutDlg)


(91)

//}}AFX_EVENTSINK_MAP END_EVENTSINK_MAP()

void CAboutDlg::OnBeforeDragOverImage1(LPDISPATCH Cancel, LPDISPATCH Data, float X, float Y, long DragState, LPDISPATCH Effect, short Shift)

{

// TODO: Add your control notification handler code here

}

void CLayoutDlg::OnGrafik1b() {

char s[100];

int p;

Grafik4 grafik4;

for(p=0;p < m_listutilserver1.GetCount();++p) {

m_listutilserver1.GetText(p,s); //MessageBox(s);

grafik4.xaxis[p]= atof(s);

}

for(p=0;p < m_listw1.GetCount();++p) {

m_listw1.GetText(p,s);

grafik4.yaxis[p]= atof(s);

}

grafik4.DoModal ();

}

void CLayoutDlg::OnGrafik2b() {

int p;

char s[100];

Grafik5 grafik5;

for(p=0;p < m_listutilserver2.GetCount();++p)

{

m_listutilserver2.GetText(p,s); //MessageBox(s);

grafik5.xaxis[p]= atof(s);

}

for(p=0;p < m_listw2.GetCount();++p) {

m_listw2.GetText(p,s);

grafik5.yaxis[p]= atof(s);

}

grafik5.DoModal ();


(92)

void CLayoutDlg::OnGrafik3b() {

int p;

char s[100];

Grafik6 grafik6;

for(p=0;p < m_util2.GetCount();++p) {

m_util2.GetText(p,s); //MessageBox(s);

grafik6.xaxis[p]= atof(s);

}

for(p=0;p < m_listw3.GetCount();++p) {

m_listw3.GetText(p,s);

grafik6.yaxis[p]= atof(s);

}

grafik6.DoModal ();


(93)

LAMPIRAN B

PETUNJUK PEMBUATAN USER INTERFACE SIMULASI SISTEM ANTRIAN PADA STATISTICAL TDM


(1)

void CLayoutDlg::OnGrafik3b() {

int p;

char s[100];

Grafik6 grafik6;

for(p=0;p < m_util2.GetCount();++p) {

m_util2.GetText(p,s); //MessageBox(s);

grafik6.xaxis[p]= atof(s);

}

for(p=0;p < m_listw3.GetCount();++p) {

m_listw3.GetText(p,s);

grafik6.yaxis[p]= atof(s);

}

grafik6.DoModal ();


(2)

LAMPIRAN B

PETUNJUK PEMBUATAN USER INTERFACE SIMULASI SISTEM ANTRIAN PADA STATISTICAL TDM


(3)

Pembuatan Project

Adapun langkah-langkah pembuatan project baru adalah sebagai berikut : 1. Pilih menu File, lalu pilih New.

2. Pilih MFCAppWizard (exe).

3. Atur lokasi penyimpanan program dan isi nama project yang dirancang.

4. Selanjutnya tekan tombol OK, maka proses akan memasuki tahap pertama pembuatan project baru.

5. Selanjutnya klik tombol Dialog based, karena bentuk kotak dialog yang akan dirancang.

6. Klik tombol Next>, maka proses akan memasuki tahap kedua pembuatan project baru.

7. Isi nama dari kotak dialog yang dirancang.

8. Klik tombol Next>, maka proses akan memasuki tahap ketiga pembuatan project baru.

9. Klik tombol Next>, maka proses akan memasuki tahap terakhir pembuatan project baru.

10. Klik tombol Finish, maka project baru telah tersedia.

Menambahkan Static Text

Adapun langkah-langkah menambahkan Static Text adalah sebagai berikut : 1. Klik pada kontrol Static Text yang terdapat pada Toolbox.

2. Arahkan penunjuk mouse pada ke jendela aplikasi dan klik di tempat yang kita diinginkan.

3. Klik kanan pada Static Text yang berada pada jendela aplikasi dan pilih pilihan

Properties.


(4)

Menambahkan Tombol

Adapun langkah-langkah menambahkan Tombol adalah sebagai berikut : 1. Klik pada kontrol Button yang terdapat pada Toolbox.

2. Arahkan penunjuk mouse pada ke jendela aplikasi dan klik di tempat yang kita diinginkan.

3. Klik kanan pada Button yang berada pada jendela aplikasi dan pilih pilihan

Properties.

4. Isi ID dan Caption dari Button yang dirancang sesuai dengan keinginan.

Menambahkan Edit Box

Adapun langkah-langkah menambahkan Edit Box adalah sebagai berikut : 1. Klik pada kontrol Edit Box yang terdapat pada Toolbox.

2. Arahkan penunjuk mouse pada ke jendela aplikasi dan klik di tempat yang kita diinginkan.

3. Klik kanan pada Edit Box yang berada pada jendela aplikasi dan pilih pilihan

Properties.

4. Isi ID dan Caption dari Edit Box yang dirancang sesuai dengan keinginan.

Menambahkan Group Box

Adapun langkah-langkah menambahkan Group Box adalah sebagai berikut : 1. Klik pada kontrol Group Box yang terdapat pada Toolbox.

2. Arahkan penunjuk mouse pada ke jendela aplikasi dan klik di tempat yang kita diinginkan.

3. Klik kanan pada Group Box yang berada pada jendela aplikasi dan pilih pilihan

Properties.


(5)

LAMPIRAN C


(6)