Senin, 25 Mei 2015

Komputasi Modern Permodelan Dunia Nyata Dengan Aplikasi Simulasi


         OMNeT++ adalah simulator kejadian diskrit berorientasi objek. Simulator dapat digunakan untuk pemodelan: protokol komunikasi, jarignan komputer dan pemodelan lalu lintas, multi-processors dan sistem terdistribusi, dan lain-lain.OMNeT++ mendukung animasi dan penjalanan.  

          OMNet++ juga menyediakan infrastruktur dan tools untuk memrogram simulasi sendiri. Pemrograman OMNet++ bersifat object-oriented dan bersifat hirarki. Objek-objek yang besar dibuat dengan cara menyusun objek-objek yang lebih kecil. Objek yang paling kecil disebut simple module, akan memutuskan algoritma yang akan digunakan dalam simulasi tersebut.

Berbagai tipe objek pada OMNet++ adalah :
  1. Module (Simple Module dan Compound Module) adalah objek yang kita buat, kita program dan kita susun. Compound Module adalah sebuah modul yang dibuat dengan cara menggabungkan beberapa Simple Module.
  2. Gate adalah pintu keluar/masuk message. Setiap modul hanya bisa berinteraksi dengan modul lainnya melalui gate.
  3. Message adalah komunikasi yang dilakukan antar modul. Message adalah konsep inti dari simulasi OMNet++. Sebuah modul bisa mengirimkan message pada modul lain atau dirinya sendiri (self message).
  4. Connection adalah jalur tempat dimana message mengalir. Disini kita bisa mendefinisikan parameter/variabel yang berkaitan dengan koneksi, misalnya hambatan udara, datarate dan lain sebagainya.
      
    kelebihan Omnet++ dibandingkan dengan software simulasi lainnya:

    1.Pemrograman Omnet++ lebih mudah karena menggunakan eclipse yang memudahkan penggunaan secara tekstual maupun grafis.

    2.Omnet++ juga menggunakan bahasa pemrograman NED, yaitu bahasa tingkat tinggi yang digunakan untuk topologi jaringan.


    3.Tool simulasi Omnet++ yang non-komersial dapat bersaing dengan beberapa versi komersial seperti opnet yang memiliki cukup banyak model protokol yang ready-mode


    4.Omnet++ mendukung dua programming model yaitu thread/corountine-based programming dan FSM


    kekurangan Omnet++

    1.Omnet++ membutuhkan memori yang besar dan waktu yang lama pada saat instalasi danpenambahan modul.

    2.Omnet++ hanya menyediakan modul dan tidak mempunyai library seperti software simulasiNS2.
         Instalasi OMNet++ dapat dilihat http://omnetpp.org/documentation dan anda bisa mendownload OMNet++ secara gratis di http://www.omnetpp.org/omnetpp/cat_view/17-downloads/1-omnet-releases. Setelah instalasi, maka tampilan OMNet++ kira-kira akan menjadi seperti ini:
  
                                                         Tampilan IDE OMNet++


Di Project Explorer sudah terdapat beberapa project yang bisa anda buka dan pelajari. Tapi, bagi yang ingin memulai konsep dari awal, mari kita mulai!

Pertama, buat dulu project baru. Klik pada File – New – OMNet++ Project. Masukkan nama project baru anda, misalnya ‘Tes”. Klik Finish dan project baru anda akan terpampang di Project Explorer.

                                                               Membuat Project Baru

Sebelum bergerak lebih jauh, kita harus mengerti konsep bahasa NED. NED (Network Description) adalah bahasa yang digunakan untuk merancang simulasi dan menyusun objek-objek yang akan digunakan. Ingat, bahasa NED hanya digunakan untuk merancang simulasi di bagian fisiknya saja! Algoritma simulasi akan diprogram pada C++ Class yang akan dibahas nanti.


Pertama, tentu kita harus membuat sebuah Simple Module, karena bagian ini adalah bagian atomik (paling kecil) dari simulasi kita. Bagian ini memegang peranan terpenting karena algoritma simulasi akan diprogram pada C++ Class dari Simple Module. Klik kanan pada project Tes dan pilih New – Simple Module.


Beri nama “Node”, pilih Next dan pilih A Simple Module. Klik Finish dan akan muncul sebuah pointer tipe objek bernama Node.

                                                       Membuat Simple Module “Node”

Bagi yang sudah terbiasa dengan pemrograman visual, tentu senang dengan adanya 2 tab, yaitu Design dan Source. Bagian Design adalah bentuk visual dari objek kita, sedangkan Source adalah bentuk kodenya.

Sekarang mari kita ubah lambang Node kita. Klik kanan pada gambar Node, lalu pilih Properties. Di bagian Image, silakan pilih gambar yang akan kita gunakan. Saya akan menggunakan gambar Tux (Penguin Linux).

Sekarang buka tab Source dan lihat. Akan bertambah sebuah kode sesuai dengan gambar yang kita pilih. Saya mendapatkan “@display(“i=abstract/penguin”);”. Kode “@display” akan mengatur tampilan objek Node kita tadi.

Berikutnya, kita akan menambahkan gate. Buka tab source dan tambahkan kode berikut setelah kode @display :

gates :
input gerbangmasuk;
output gerbangkeluar;

Kita telah membuat sebuah gerbang input bernama “gerbangmasuk” dan sebuah gerbang output bernama “gerbangkeluar”. Dengan ini, kita hampir selesai memrogram berkas NED dari Node. Apa yang berikutnya kita lakukan? Kita akan menambahkan connection!

Sebelum masuk ke pengenalan connection, kita akan sedikit membahas Network. Network adalah tempat dimana seluruh simulasi kita akan berjalan. Tempat semua modul, koneksi dan algoritma beroperasi. Network sendiri termasuk sebuah Compund Module, karena diciptakan dari gabungan-gabungan rangkaian Simple Module (atau Compound Module lainnya).

Kita akan membuat network untuk menaruh simulasi kita. Klik kanan pada project Tes kita, pilih New – Network. Masukkan namanya, klik Next, pilih Empty Network dan Finish. Anda bisa mengubah tampilan dengan cara yang sama seperti Simple Module.

Membuat Network

Untuk menambahkan Node kita ke network tadi, pilih dan klik Node kita di tab submodules (sebelah kanan) dan klik pada network kita. Tambahkan 2 Node pada network kita. Lalu pilih Connection pada tab Pallete. Klik dan gabungkan kedua network sebanyak 2 kali, yaitu dari gerbangkeluar node ke gerbangmasuk node1 dan gerbangkeluar node1 ke gerbangmasuk node. Tampilannya akan menjadi seperti berikut  

Menambahkan Simple Module dan Connection 
ke dalam Network


Buka tab source pada Network.ned dan lihat bahwa apa yang kita tambahkan tadi telah di-generate juga kodenya :
@display(“bgb=602,135″);
submodules:
node: Node {
@display(“p=46,53;b=56,59″);
}
node1: Node {
@display(“p=540,53;b=61,59″);
}
connections:
node.gerbangkeluar –> node1.gerbangmasuk;
node1.gerbangkeluar –> node.gerbangmasuk;

Kita telah selesai merancang simulasi pertama kita! Tapi sekali lagi ingat, kita baru selesai merancang bentuk fisiknya saja. Simulasi ini belum bisa berjalan karena belum ada event yang akan dijalankannya. Event akan kita program dalam C++ Class dari Simple Module kita.

Untuk sekarang, saya tidak akan menjelaskan arti kode C++ Class untuk simulasi ini. Kita baru hanya akan berkenalan dengan bahasa NED. C++ Class akan saya jelaskan di postingan berikutnya tentang Message Passing. Buka berkas Node.cc dari Project Explorer dan tambahkan kode berikut :

#include“Node.h”
Define_Module(Node);
voidNode::initialize()
{
scheduleAt(simTime(), newcMessage(Mulai));
}
voidNode::handleMessage(cMessage *msg)
{
if(msg->isSelfMessage()){
cMessage *pkt = newcMessage;
send(pkt,gerbangkeluar);
scheduleAt(simTime() + 0.1,msg);
}
elsedelete(msg);
}

Untuk melakukan compile dan build, klik kanan pada folder utama project di Project Explorer. Untuk menjalankan, klik kanan di folder yang sama dan pilih Run As – OMNet++ Simulations. Hasilnya akan seperti di bawah ini :

                                                Tampilan Simulasi Sederhana


Cukup sampai disini dulu penjelasan tentang OMNet++, di postingan berikutnya akan saya bahas lebih mendalam lagi tentang pemrograman simulasi discrete-event ini. Semoga apa yang saya tulis bermanfaat bagi anda semua



sumber:
http://id.scribd.com/doc/175952726/Omnet#scribd 
http://en.wikipedia.org/wiki/OMNeT%2B%2B