Recent Updates RSS Toggle Comment Threads | Tombol Pintas

  • abrari 11:24 pm pada 26 January 2012 Permalink | Balas  

    Pembuatan database dan repository kode 

    Update pekerjaan skripsi. Telah dibuat skema database untuk keperluan sistem. Skema relasi tabel yang dibuat sebagai berikut:

    Sederhana, hanya untuk menyimpan informasi tentang dokumen dan untuk indeks nantinya. Skema ini diimplementasikan pada DBMS MySQL.

    Sejauh ini yang sudah dilakukan adalah mengisi tabel surah dan sebagian tabel doc. Tabel doc baru diisi pada field id, surat, ayat, dan teks, sedangkan kode fonetiknya belum diisikan karena prosedur pengodeannya belum diimplementasikan. Sedangkan tabel index dan trigram akan diisi pada saat proses pengindeksan nantinya.

    Selain itu, telah dibuat repository kode program di Google Project Hosting + SVN. Belum banyak kode yang dibuat. Repository dapat dilihat pada alamat http://code.google.com/p/pencarian-fonetik-quran/.

     
  • abrari 4:15 am pada 26 January 2012 Permalink | Balas  

    Pengodean fonetik dari teks Al-Quran 

    Salah satu bagian penting dalam penelitian untuk skripsi, yaitu mengodekan teks Al-Quran (teks bahasa Arab) ke dalam kode fonetik tertentu. Untuk itu saya merancang prosedur pengodeannya berdasarkan:

    • Cara membaca Al-Quran (tajwid)
    • Kesalahan umum cara pelafalan Al-Quran

    Berikut langkah-langkahnya yang harus dilakukan secara berurutan.

    1. Penghilangan seluruh spasi

    Seluruh spasi dihilangkan karena tidak berpengaruh terhadap pelafalan.

    2. Penghilangan seluruh tanda tasydid

    Aturan:

    • ــَّـ diganti ــَـ (begitu pula fathatain)
    • ــِّـ diganti ــِـ (begitu pula kasratain)
    • ــُّـ diganti ــُـ (begitu pula dhammatain)

    3. Penggabungan huruf mati

    Huruf mati bertemu dengan huruf yang sama, maka huruf mati dihapus (idgham mutamatsilain).

    4. Perubahan pada akhir ayat

    Untuk huruf yang berada pada akhir ayat, diterapkan aturan:

    • ة diganti menjadi ه
    • Seluruh tanwin diganti dengan harakat tunggal

    5. Substitusi tanwin

    Seluruh tanwin (fathatain, kasratain, dhammatain) diganti dengan nun mati untuk penyeragaman.

    Aturan:

    • ــًـ diganti menjadi ــَـنْ
    • ــٍـ diganti menjadi ــِـنْ
    • ــٌـ diganti menjadi ــُـنْ

    6. Pemendekan vokal panjang

    Seluruh vokal panjang (mad) diganti dengan vokal pendek. Khusus bilaا ي و tidak bertanda.

    Aturan:

    • ــَـا atau ــَـى diganti dengan ــَـ
    • ــِـي diganti dengan ــِـ
    • ــُـو diganti dengan ــُـ
    • آ diganti denganأَ

    7. Penghilangan huruf-huruf yang tidak dibaca

    Huruf-huruf yang tidak dibaca dihilangkan:

    • Alif tanpa harakat
    • Lam tanpa harakat (pada alif-lam syamsiyyah)
    • Alif maqsura (ى)
    • Huruf-huruf lain tanpa harakat

    8. Substitusi huruf iqlab

    Aturan:

    • نْب diganti dengan مْب

    9. Peleburan huruf idgham

    Aturan:

    • نْي diganti dengan ي kecuali pada kata دُنْيَ dan بُنْيَن
    • نْن diganti dengan ن
    • نْم diganti dengan م
    • نْو diganti dengan و kecuali pada kata صِنْوَن dan قِنْوَن
    • نْل diganti dengan ل
    • نْر diganti dengan ر

    10. Penghilangan seluruh tanda vokal

    11. Substitusi fonetik

    Seluruh huruf dan huruf-huruf yang serupa pelafalannya disubstitusi dengan kode tertentu.

    Huruf Kode
    ز ج Z
    ح خ ه H
    ع ء ؤ ئ ا أ إ X
    س ش ث ص S
    د ذ ض ظ D
    ت ط ة T
    ك ق K
    غ G
    ف F
    م M
    ن N
    ل L
    ب B
    ي Y
    و W
    ر R

    Dengan prosedur di atas, misalkan untuk ayat Al-Quran berikut (Surah Al-Qadr ayat 4) :

    تَنَزَّلُ الْمَلَائِكَةُ وَالرُّوحُ فِيهَا بِإِذْنِ رَبِّهِم مِّن كُلِّ أَمْرٍ

    Maka akan diubah menjadi kode berikut :

    TNZLLMLXKTWRHFHBXDNRBHMNKLXMR

    Namun prosedur ini masih memiliki kekurangan, di antaranya karena tidak memperhitungkan tanda waqaf sehingga beberapa hukum bacaan saat waqaf tidak dapat ditangani. Kelemahan lain adalah tidak semua hukum tajwid tingkat lanjut dapat ditangani, di antaranya idgham mutaqarribain, dan idgham mutajanisain.

    Dengan demikian, langkah selanjutnya adalah implementasi prosedur ini dalam bahasa pemrograman. Semoga dimudahkan. Bila ada masukan silakan mengisikan pada kolom komentar.

     
  • abrari 11:19 pm pada 22 January 2012 Permalink | Balas  

    Trigram matching works very well indeed for omission and insertion errors, adequately for substitution errors, better than might have been expected for multiple errors, but very poorly for transposition errors.

    Angell et al. 1983
     
  • abrari 10:59 pm pada 21 January 2012 Permalink | Balas  

    Operasi string Arabic dengan PHP 

    Sedikit latihan untuk implementasi topik skripsi nanti. Saya perlu prosedur untuk memecah sebuah string menjadi array dari karakter.

    Pengolahan string untuk teks non-ASCII seperti tulisan Arab tidak dapat dilakukan seperti biasa di PHP. String demikian (karakter Unicode) termasuk multybite string, sehingga perlu penanganan khusus. Bila menggunakan fungsi string biasa di PHP, maka hasilnya akan muncul karakter-karakter aneh.

    Untungnya di PHP ada pustaka fungsi untuk string multibyte. Misalnya fungsi mb_strlen sebagai pengganti fungsi strlen. Langsung saja, berikut potongan kode untuk memecah string Arabic menjadi array dari karakter-karakternya. Harap diketahui bahwa tanda harakat juga dihitung satu karakter. Ini terkait posting saya sebelumnya.

    <?php
    
    $ar_string = "صِرَاطَ الَّذِينَ أَنْعَمْتَ عَلَيْهِمْ غَيْرِ الْمَغْضُوبِ عَلَيْهِمْ وَلَا الضَّالِّينَ";
    
    $ar_array = array();
    $len = mb_strlen($ar_string, 'UTF-8');
    
    for($i = 0; $i < $len; $i++){
        $ar_array[] = mb_substr($ar_string, $i, 1, 'UTF-8');
    }
    
    print_r($ar_array);
    
    ?>
    

    Dan bila dijalankan, maka akan sesuai harapan, yaitu string dipecah menjadi array dari karakter-karakternya.

    Array
    (
        [0] => ص
        [1] => ِ
        [2] => ر
        [3] => َ
        [4] => ا
        [5] => ط
        [6] => َ
        [7] =>
        [8] => ا
        [9] => ل
        [10] => ّ
        [11] => َ
        [12] => ذ
        [13] => ِ
        [14] => ي
        [15] => ن
        [16] => َ
        [17] =>
        [18] => أ
        [19] => َ
        [20] => ن
        [21] => ْ
        [22] => ع
        [23] => َ
        [24] => م
        [25] => ْ
        [26] => ت
        [27] => َ
        [28] =>
        [29] => ع
        [30] => َ
        [31] => ل
        [32] => َ
        [33] => ي
        [34] => ْ
        [35] => ه
        [36] => ِ
        [37] => م
        [38] => ْ
        [39] =>
        [40] => غ
        [41] => َ
        [42] => ي
        [43] => ْ
        [44] => ر
        [45] => ِ
        [46] =>
        [47] => ا
        [48] => ل
        [49] => ْ
        [50] => م
        [51] => َ
        [52] => غ
        [53] => ْ
        [54] => ض
        [55] => ُ
        [56] => و
        [57] => ب
        [58] => ِ
        [59] =>
        [60] => ع
        [61] => َ
        [62] => ل
        [63] => َ
        [64] => ي
        [65] => ْ
        [66] => ه
        [67] => ِ
        [68] => م
        [69] => ْ
        [70] =>
        [71] => و
        [72] => َ
        [73] => ل
        [74] => َ
        [75] => ا
        [76] =>
        [77] => ا
        [78] => ل
        [79] => ض
        [80] => ّ
        [81] => َ
        [82] => ا
        [83] => ل
        [84] => ّ
        [85] => ِ
        [86] => ي
        [87] => ن
        [88] => َ
    )
    

     
  • abrari 9:26 am pada 21 January 2012 Permalink | Balas  

    Bagaimana huruf Arab ditampilkan di komputer? 

    Sedikit berkaitan dengan yang dilakukan untuk topik skripsi. Kita mungkin sering melihat huruf Arab di komputer yang ditampilkan sedemikian rupa (bersambung) sehingga mudah untuk dibaca. Bagaimana sebenarnya bisa seperti itu?

    Sedikit pengantar saja, setiap huruf Arab terdiri dari 4 posisi (case) untuk menentukan bagaimana penulisannya. Ibarat pada alfabet di mana setiap hurufnya terdiri dari 2 case, yaitu uppercase dan lowercase (huruf kapital dan huruf kecil). Maka pada huruf Arab ada 4 keadaan:

    • Huruf berdiri sendiri
    • Huruf di awal kata
    • Huruf di tengah kata
    • Huruf di akhir kata

    Pada saat kita mengetik dengan keyboard yang dapat mengetik huruf Arab, kita tidak perlu menentukan keempat posisi tersebut. Kita cukup menuliskan saja per huruf (disertai tanda vokal atau harakat bila perlu) dan secara otomatis komputer akan “menggambar”  posisi huruf yang sesuai.

    Misalnya kita mengetik pada keyboard urutan berikut:

    ا ل ل ه ُ أ َ ك ْ ب َ ر

    Maka secara otomatis komputer akan menggabungkannya menjadi:

    اللهُ أَكْبَرُ

    Bagaimana komputer melakukannya?

    Sebenarnya, yang disimpan di komputer tetap urutan huruf seperti yang kita ketikkan, bukan huruf dengan posisi di awal, tengah, atau akhir. Jadi yang menyambungkan seluruh huruf itu adalah pada saat display saja oleh sistem operasi, bukan pada penyimpanannya. Prosedur display seperti ini disebut complex text layout.

    Ilustrasi dari Wikipedia:

    Bagian atas adalah representasi huruf pada penyimpanan. Bagian tengah adalah huruf yang disusun sesuai urutan yang seharusnya dalam tulisan Arab. Bagian ketiga adalah proses display akhir, di mana seluruh huruf sudah disambung sesuai aturan penulisannya.

    Hal yang lebih rumit ada pada saat display tanda vokal atau harakat. Di mana satu huruf bisa memiliki lebih dari satu tanda vokal, misalnya fathah sekaligus tasydid. Maka display harus bisa menyusun tanda vokal ini agar nyaman dilihat. Ilustrasinya bisa dilihat pada artikel ini.

     
  • abrari 7:35 am pada 17 January 2012 Permalink | Balas  

    Presentasi Kolokium 

    Alhamdulillah hari ini telah dilaksanakan presentasi usulan penelitian atau kolokium. Meskipun sempat diundur beberapa jam dan pindah tempat karena di tempat yang seharusnya listrik mati.

    Langkah selanjutnya adalah penelitian itu sendiri. Kalau saya berarti mulai merancang aplikasinya. Semoga dimudahkan.

     
  • abrari 10:35 pm pada 15 January 2012 Permalink | Balas  

    Model LINGO untuk mixed fleet VRP dengan time windows 

    Saya sedang ditugasi membuat model VRP dalam LINGO untuk suatu kasus. Model adalah VRP biasa dengan beberapa ketentuan:

    • Depot tunggal (single depot)
    • Kendaraan bervariasi (mixed fleet)
    • Time windows jenis hard

    Berikut modelnya. Dicoba dengan LINGO versi 11. Model ini hanya untuk 6 customer. Jika lebih atau kurang, harus diubah pada kendala penghilangan subtour.

    ! referensi :
    	[1] Dell'Amico et al. 2007. Heuristic Approaches for the FSMVRP with Time Windows. Transportation Science 41(4), pp. 516-526, © 2007 INFORMS.
    	[2] Suthikarnnarunai. 2008. A Sweep Algorithm for the Mix Fleet Vehicle Routing Problem. Proceedings of the International MultiConference of Engineers and Computer Scientists 2008 Vol III MECS 2008, 19-21 March, 2008, Hong Kong.
    ;
    
    ! waktu running dengan data hipotetik ini : sekitar 10 detik ;
    ! contoh hasil rute dengan data ini :
    
          X( 1, 3, 2)        1.000000
          X( 1, 4, 1)        1.000000
          X( 2, 7, 2)        1.000000
          X( 3, 6, 2)        1.000000
          X( 4, 5, 1)        1.000000
          X( 5, 1, 1)        1.000000
          X( 6, 2, 2)        1.000000
          X( 7, 1, 2)        1.000000
    
    ! jadi rutenya: 
          kendaraan 2 : 1 - 3 - 6 - 2 - 7 - 1 
          kendaraan 1 : 1 - 4 - 5 - 1
    
    ;
    
    DATA:
    	JUMLAH_KENDARAAN = 3;
    	JUMLAH_NODE = 7; ! 6 + depot ;
    	M = 1000000000;
    ENDDATA
    
    SETS:
    	KENDARAAN /1..JUMLAH_KENDARAAN/: Z, KAPASITAS, FIXED_COST, V, PHI;
    	CUSTOMER /1..JUMLAH_NODE/: DEMAND, A, B, TAU, S;
    
    	PELAYANAN(CUSTOMER, KENDARAAN) : Y;
    	RUTE(CUSTOMER, CUSTOMER, KENDARAAN) : X;
    	ARRIVAL(CUSTOMER, KENDARAAN) : T;
    
    	BIAYA(CUSTOMER, CUSTOMER, KENDARAAN): COST;
    	JARAK(CUSTOMER, CUSTOMER): D;
    	DURASI(CUSTOMER, CUSTOMER, KENDARAAN): DUR;
    ENDSETS
    
    ! parameter input :
    	KAPASITAS(K)	= kapasitas maksimum kendaraan K		[2]
    	FIXED_COST(K)	= fixed cost kendaraan K				[1]
    	V(K)			= kecepatan kendaraan K
    	DEMAND(I)		= demand customer I						[2]
    	A(I)			= waktu buka customer I					[1]
    	B(I)			= waktu tutup customer I				[1]
    	S(I)			= waktu pelayanan di customer I			[1]
    	D(I, J)			= jarak customer I ke customer J		[1]
    	COST(I, J, K)	= cost dari customer I ke customer J dengan kendaraan K
    	DUR(I, J, K)	= lama perjalanan dari customer I ke customer J dengan kendaraan K
    
    ! variabel yang dicari :
    	X(I, J, K)	= 1 jika pelanggan J dikunjungi setelah I oleh K 	[2]
    	Y(I, K)		= 1 jika pelanggan I dilayani oleh K 				[2]
    	Z(K)		= 1 jika kendaraan K digunakan 					[1]
    	T(I, K)		= waktu minimum kendaraan K untuk customer I 		[1]
    	PHI(K)		= waktu berangkat kendaraan K						[1]
    	TAU(I)		= waktu pelayanan customer I 						[1]
    ;
    
    DATA:
    	KAPASITAS  = 150 200 300;
    	FIXED_COST = 400 250 500;
    	V          =  60  60  50;
    
    	D =   ! antara depot dengan depot (diagonal matriks) diberi nilai bilangan besar (misal 999) ;
    		999	8.9	4.2	4.7	7.7	9.3	6.7
    		8.9	999	5.9	2.9	2.6	2.3	4.7
    		4.2	5.9	999	6.3	5.9	3.7	2.9
    		4.7	2.9	6.3	999	2.3	3	5.6
    		7.7	2.6	5.9	2.3	999	6.2	6.7
    		9.3	2.3	3.7	3	6.2	999	5.4
    		6.7	4.7	2.9	5.6	6.7	5.4	999;
    
    	! depot diset 0 ;
    	DEMAND =  0	 30 70 90 60 56 36;
    	A      =  0	  8  8 10  8 12 10;
    	B      =  0	 15 13 16 17 18 17;
    	S      =  0	  1  2  2  1  2  3;
    
    ENDDATA
    
    ! fungsi objektif ;
    
    MIN = 
    	@SUM(KENDARAAN(K) : FIXED_COST(K) * Z(K) + T(1, K) - PHI(K))
    	+
    	@SUM(CUSTOMER(I) :
    		@SUM(CUSTOMER(J) :
    			@SUM(KENDARAAN(K) : COST(I, J, K) * X(I, J, K));
    		);
    	);
    
    ! setiap customer dikunjungi sekali ;
    ! kendala (2) dalam [2] ;
    
    @FOR(CUSTOMER(I) | I #NE# 1 :
    	@SUM(KENDARAAN(K) : Y(I, K)) = 1;
    );			
    
    ! jumlah keluar masuk depot harus sama ;
    ! kendala (3) dalam [2] ;
    
    @SUM(KENDARAAN(K) : Y(1, K)) <= JUMLAH_KENDARAAN;
    
    ! kendaraan yang sama harus masuk dan keluar node kecuali depot ;
    ! kendala (4) dan (5) dalam [2] ;
    
    @FOR(CUSTOMER(I) : 
    	@FOR(KENDARAAN(K) :
    		@SUM(CUSTOMER(J) | J #NE# I : X(I, J, K)) = Y(I, K);
    		@SUM(CUSTOMER(J) | J #NE# I : X(J, I, K)) = Y(I, K);
    	);
    );
    
    ! demand tidak boleh melebihi kapasitas ;
    ! kendala (5) dalam [1] ;
    
    @FOR(KENDARAAN(K) :
    	@SUM(CUSTOMER(I) | I #NE# 1 : DEMAND(I) * Y(I, K)) <= KAPASITAS(K) * Z(K);
    );	
    
    ! waktu pelayanan harus di antara jam buka dan jam tutup ;
    ! kendala (11) dalam [1] ;
    
    @FOR(CUSTOMER(I) :
    	TAU(I) >= A(I);
    	TAU(I) <= B(I);
    );
    
    ! pengaturan time windows ;
    ! kendala (7) sampai (10) dalam [1] ;
    
    @FOR(KENDARAAN(K) :
    	T(1, K) >= PHI(K);	
    );
    
    @FOR(KENDARAAN(K) :
    	@FOR(CUSTOMER(I) | I #NE# 1 :
    		TAU(I) >= T(I, K);
    	);
    );
    
    @FOR(KENDARAAN(K) :
    	@FOR(CUSTOMER(J) | J #NE# 1 :
    		T(J, K) >= PHI(K) + DUR(1, J, K) - M*(1 - X(1,J,K));
    	);
    );
    
    @FOR(KENDARAAN(K) :
    	@FOR(CUSTOMER(I) | I #NE# 1 :
    		@FOR(CUSTOMER(J) :
    			T(J, K) >= TAU(I) + S(I) + DUR(I, J, K) - M*(1 - X(I, J, K));
    		);	
    	);
    );
    
    ! hubungan antara jarak, kecepatan, dan biaya ;
    
    @FOR(KENDARAAN(K) :
    	@FOR(CUSTOMER(I) :
    		@FOR(CUSTOMER(J) :
    			V(K) * DUR(I, J, K) = D(I, J);
    			COST(I, J, K) = DUR(I, J, K);
    		);
    	);
    );
    
    
    ! subtour elimination, mengenumerasi seluruh subset ;
    ! {2, 3}  |  {2, 4}  |  {2, 5}  |  {2, 6}  |  {2, 7}  |  {3, 4}  |  {3, 5}  |  {3, 6}  |  {3, 7}  |  {4, 5}  |  {4, 6}  |  {4, 7}  |  {5, 6}  |  {5, 7}  |  {6, 7}  |  {2, 3, 4}  |  {2, 3, 5}  |  {2, 3, 6}  |  {2, 3, 7}  |  {2, 4, 5}  |  {2, 4, 6}  |  {2, 4, 7}  |  {2, 5, 6}  |  {2, 5, 7}  |  {2, 6, 7}  |  {3, 4, 5}  |  {3, 4, 6}  |  {3, 4, 7}  |  {3, 5, 6}  |  {3, 5, 7}  |  {3, 6, 7}  |  {4, 5, 6}  |  {4, 5, 7}  |  {4, 6, 7}  |  {5, 6, 7}  |  {2, 3, 4, 5}  |  {2, 3, 4, 6}  |  {2, 3, 4, 7}  |  {2, 3, 5, 6}  |  {2, 3, 5, 7}  |  {2, 3, 6, 7}  |  {2, 4, 5, 6}  |  {2, 4, 5, 7}  |  {2, 4, 6, 7}  |  {2, 5, 6, 7}  |  {3, 4, 5, 6}  |  {3, 4, 5, 7}  |  {3, 4, 6, 7}  |  {3, 5, 6, 7}  |  {4, 5, 6, 7}  |  {2, 3, 4, 5, 6}  |  {2, 3, 4, 5, 7}  |  {2, 3, 4, 6, 7}  |  {2, 3, 5, 6, 7}  |  {2, 4, 5, 6, 7}  |  {3, 4, 5, 6, 7}  |  {2, 3, 4, 5, 6, 7};
    ! kendala (7) dalam [2] ;
    
    @FOR(KENDARAAN(K) :
    
    	X(2, 3, K) + X(3, 2, K) <= 1;
    	X(2, 4, K) + X(4, 2, K) <= 1;
    	X(2, 5, K) + X(5, 2, K) <= 1;
    	X(2, 6, K) + X(6, 2, K) <= 1;
    	X(2, 7, K) + X(7, 2, K) <= 1;
    	X(3, 4, K) + X(4, 3, K) <= 1;
    	X(3, 5, K) + X(5, 3, K) <= 1;
    	X(3, 6, K) + X(6, 3, K) <= 1;
    	X(3, 7, K) + X(7, 3, K) <= 1;
    	X(4, 5, K) + X(5, 4, K) <= 1;
    	X(4, 6, K) + X(6, 4, K) <= 1;
    	X(4, 7, K) + X(7, 4, K) <= 1;
    	X(5, 6, K) + X(6, 5, K) <= 1;
    	X(5, 7, K) + X(7, 5, K) <= 1;
    	X(6, 7, K) + X(7, 6, K) <= 1;
    	X(2, 3, K) + X(2, 4, K) + X(3, 2, K) + X(3, 4, K) + X(4, 2, K) + X(4, 3, K) <= 2;
    	X(2, 3, K) + X(2, 5, K) + X(3, 2, K) + X(3, 5, K) + X(5, 2, K) + X(5, 3, K) <= 2;
    	X(2, 3, K) + X(2, 6, K) + X(3, 2, K) + X(3, 6, K) + X(6, 2, K) + X(6, 3, K) <= 2;
    	X(2, 3, K) + X(2, 7, K) + X(3, 2, K) + X(3, 7, K) + X(7, 2, K) + X(7, 3, K) <= 2;
    	X(2, 4, K) + X(2, 5, K) + X(4, 2, K) + X(4, 5, K) + X(5, 2, K) + X(5, 4, K) <= 2;
    	X(2, 4, K) + X(2, 6, K) + X(4, 2, K) + X(4, 6, K) + X(6, 2, K) + X(6, 4, K) <= 2;
    	X(2, 4, K) + X(2, 7, K) + X(4, 2, K) + X(4, 7, K) + X(7, 2, K) + X(7, 4, K) <= 2;
    	X(2, 5, K) + X(2, 6, K) + X(5, 2, K) + X(5, 6, K) + X(6, 2, K) + X(6, 5, K) <= 2;
    	X(2, 5, K) + X(2, 7, K) + X(5, 2, K) + X(5, 7, K) + X(7, 2, K) + X(7, 5, K) <= 2;
    	X(2, 6, K) + X(2, 7, K) + X(6, 2, K) + X(6, 7, K) + X(7, 2, K) + X(7, 6, K) <= 2;
    	X(3, 4, K) + X(3, 5, K) + X(4, 3, K) + X(4, 5, K) + X(5, 3, K) + X(5, 4, K) <= 2;
    	X(3, 4, K) + X(3, 6, K) + X(4, 3, K) + X(4, 6, K) + X(6, 3, K) + X(6, 4, K) <= 2;
    	X(3, 4, K) + X(3, 7, K) + X(4, 3, K) + X(4, 7, K) + X(7, 3, K) + X(7, 4, K) <= 2;
    	X(3, 5, K) + X(3, 6, K) + X(5, 3, K) + X(5, 6, K) + X(6, 3, K) + X(6, 5, K) <= 2;
    	X(3, 5, K) + X(3, 7, K) + X(5, 3, K) + X(5, 7, K) + X(7, 3, K) + X(7, 5, K) <= 2;
    	X(3, 6, K) + X(3, 7, K) + X(6, 3, K) + X(6, 7, K) + X(7, 3, K) + X(7, 6, K) <= 2;
    	X(4, 5, K) + X(4, 6, K) + X(5, 4, K) + X(5, 6, K) + X(6, 4, K) + X(6, 5, K) <= 2;
    	X(4, 5, K) + X(4, 7, K) + X(5, 4, K) + X(5, 7, K) + X(7, 4, K) + X(7, 5, K) <= 2;
    	X(4, 6, K) + X(4, 7, K) + X(6, 4, K) + X(6, 7, K) + X(7, 4, K) + X(7, 6, K) <= 2;
    	X(5, 6, K) + X(5, 7, K) + X(6, 5, K) + X(6, 7, K) + X(7, 5, K) + X(7, 6, K) <= 2;
    	X(2, 3, K) + X(2, 4, K) + X(2, 5, K) + X(3, 2, K) + X(3, 4, K) + X(3, 5, K) + X(4, 2, K) + X(4, 3, K) + X(4, 5, K) + X(5, 2, K) + X(5, 3, K) + X(5, 4, K) <= 3;
    	X(2, 3, K) + X(2, 4, K) + X(2, 6, K) + X(3, 2, K) + X(3, 4, K) + X(3, 6, K) + X(4, 2, K) + X(4, 3, K) + X(4, 6, K) + X(6, 2, K) + X(6, 3, K) + X(6, 4, K) <= 3;
    	X(2, 3, K) + X(2, 4, K) + X(2, 7, K) + X(3, 2, K) + X(3, 4, K) + X(3, 7, K) + X(4, 2, K) + X(4, 3, K) + X(4, 7, K) + X(7, 2, K) + X(7, 3, K) + X(7, 4, K) <= 3;
    	X(2, 3, K) + X(2, 5, K) + X(2, 6, K) + X(3, 2, K) + X(3, 5, K) + X(3, 6, K) + X(5, 2, K) + X(5, 3, K) + X(5, 6, K) + X(6, 2, K) + X(6, 3, K) + X(6, 5, K) <= 3;
    	X(2, 3, K) + X(2, 5, K) + X(2, 7, K) + X(3, 2, K) + X(3, 5, K) + X(3, 7, K) + X(5, 2, K) + X(5, 3, K) + X(5, 7, K) + X(7, 2, K) + X(7, 3, K) + X(7, 5, K) <= 3;
    	X(2, 3, K) + X(2, 6, K) + X(2, 7, K) + X(3, 2, K) + X(3, 6, K) + X(3, 7, K) + X(6, 2, K) + X(6, 3, K) + X(6, 7, K) + X(7, 2, K) + X(7, 3, K) + X(7, 6, K) <= 3;
    	X(2, 4, K) + X(2, 5, K) + X(2, 6, K) + X(4, 2, K) + X(4, 5, K) + X(4, 6, K) + X(5, 2, K) + X(5, 4, K) + X(5, 6, K) + X(6, 2, K) + X(6, 4, K) + X(6, 5, K) <= 3;
    	X(2, 4, K) + X(2, 5, K) + X(2, 7, K) + X(4, 2, K) + X(4, 5, K) + X(4, 7, K) + X(5, 2, K) + X(5, 4, K) + X(5, 7, K) + X(7, 2, K) + X(7, 4, K) + X(7, 5, K) <= 3;
    	X(2, 4, K) + X(2, 6, K) + X(2, 7, K) + X(4, 2, K) + X(4, 6, K) + X(4, 7, K) + X(6, 2, K) + X(6, 4, K) + X(6, 7, K) + X(7, 2, K) + X(7, 4, K) + X(7, 6, K) <= 3;
    	X(2, 5, K) + X(2, 6, K) + X(2, 7, K) + X(5, 2, K) + X(5, 6, K) + X(5, 7, K) + X(6, 2, K) + X(6, 5, K) + X(6, 7, K) + X(7, 2, K) + X(7, 5, K) + X(7, 6, K) <= 3;
    	X(3, 4, K) + X(3, 5, K) + X(3, 6, K) + X(4, 3, K) + X(4, 5, K) + X(4, 6, K) + X(5, 3, K) + X(5, 4, K) + X(5, 6, K) + X(6, 3, K) + X(6, 4, K) + X(6, 5, K) <= 3;
    	X(3, 4, K) + X(3, 5, K) + X(3, 7, K) + X(4, 3, K) + X(4, 5, K) + X(4, 7, K) + X(5, 3, K) + X(5, 4, K) + X(5, 7, K) + X(7, 3, K) + X(7, 4, K) + X(7, 5, K) <= 3;
    	X(3, 4, K) + X(3, 6, K) + X(3, 7, K) + X(4, 3, K) + X(4, 6, K) + X(4, 7, K) + X(6, 3, K) + X(6, 4, K) + X(6, 7, K) + X(7, 3, K) + X(7, 4, K) + X(7, 6, K) <= 3;
    	X(3, 5, K) + X(3, 6, K) + X(3, 7, K) + X(5, 3, K) + X(5, 6, K) + X(5, 7, K) + X(6, 3, K) + X(6, 5, K) + X(6, 7, K) + X(7, 3, K) + X(7, 5, K) + X(7, 6, K) <= 3;
    	X(4, 5, K) + X(4, 6, K) + X(4, 7, K) + X(5, 4, K) + X(5, 6, K) + X(5, 7, K) + X(6, 4, K) + X(6, 5, K) + X(6, 7, K) + X(7, 4, K) + X(7, 5, K) + X(7, 6, K) <= 3;
    	X(2, 3, K) + X(2, 4, K) + X(2, 5, K) + X(2, 6, K) + X(3, 2, K) + X(3, 4, K) + X(3, 5, K) + X(3, 6, K) + X(4, 2, K) + X(4, 3, K) + X(4, 5, K) + X(4, 6, K) + X(5, 2, K) + X(5, 3, K) + X(5, 4, K) + X(5, 6, K) + X(6, 2, K) + X(6, 3, K) + X(6, 4, K) + X(6, 5, K) <= 4;
    	X(2, 3, K) + X(2, 4, K) + X(2, 5, K) + X(2, 7, K) + X(3, 2, K) + X(3, 4, K) + X(3, 5, K) + X(3, 7, K) + X(4, 2, K) + X(4, 3, K) + X(4, 5, K) + X(4, 7, K) + X(5, 2, K) + X(5, 3, K) + X(5, 4, K) + X(5, 7, K) + X(7, 2, K) + X(7, 3, K) + X(7, 4, K) + X(7, 5, K) <= 4;
    	X(2, 3, K) + X(2, 4, K) + X(2, 6, K) + X(2, 7, K) + X(3, 2, K) + X(3, 4, K) + X(3, 6, K) + X(3, 7, K) + X(4, 2, K) + X(4, 3, K) + X(4, 6, K) + X(4, 7, K) + X(6, 2, K) + X(6, 3, K) + X(6, 4, K) + X(6, 7, K) + X(7, 2, K) + X(7, 3, K) + X(7, 4, K) + X(7, 6, K) <= 4;
    	X(2, 3, K) + X(2, 5, K) + X(2, 6, K) + X(2, 7, K) + X(3, 2, K) + X(3, 5, K) + X(3, 6, K) + X(3, 7, K) + X(5, 2, K) + X(5, 3, K) + X(5, 6, K) + X(5, 7, K) + X(6, 2, K) + X(6, 3, K) + X(6, 5, K) + X(6, 7, K) + X(7, 2, K) + X(7, 3, K) + X(7, 5, K) + X(7, 6, K) <= 4;
    	X(2, 4, K) + X(2, 5, K) + X(2, 6, K) + X(2, 7, K) + X(4, 2, K) + X(4, 5, K) + X(4, 6, K) + X(4, 7, K) + X(5, 2, K) + X(5, 4, K) + X(5, 6, K) + X(5, 7, K) + X(6, 2, K) + X(6, 4, K) + X(6, 5, K) + X(6, 7, K) + X(7, 2, K) + X(7, 4, K) + X(7, 5, K) + X(7, 6, K) <= 4;
    	X(3, 4, K) + X(3, 5, K) + X(3, 6, K) + X(3, 7, K) + X(4, 3, K) + X(4, 5, K) + X(4, 6, K) + X(4, 7, K) + X(5, 3, K) + X(5, 4, K) + X(5, 6, K) + X(5, 7, K) + X(6, 3, K) + X(6, 4, K) + X(6, 5, K) + X(6, 7, K) + X(7, 3, K) + X(7, 4, K) + X(7, 5, K) + X(7, 6, K) <= 4;
    	X(2, 3, K) + X(2, 4, K) + X(2, 5, K) + X(2, 6, K) + X(2, 7, K) + X(3, 2, K) + X(3, 4, K) + X(3, 5, K) + X(3, 6, K) + X(3, 7, K) + X(4, 2, K) + X(4, 3, K) + X(4, 5, K) + X(4, 6, K) + X(4, 7, K) + X(5, 2, K) + X(5, 3, K) + X(5, 4, K) + X(5, 6, K) + X(5, 7, K) + X(6, 2, K) + X(6, 3, K) + X(6, 4, K) + X(6, 5, K) + X(6, 7, K) + X(7, 2, K) + X(7, 3, K) + X(7, 4, K) + X(7, 5, K) + X(7, 6, K) <= 5;
    
    );
    
    ! kendala biner untuk variabel ;
    
    @FOR(KENDARAAN(K) : 
    	@BIN(Z(K));
    	@FOR(CUSTOMER(I) :
    		@BIN(Y(I, K));
    		@FOR(CUSTOMER(J) :
    			@BIN(X(I, J, K));
    		);
    	);
    );
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

     
  • abrari 2:03 am pada 11 January 2012 Permalink | Balas  

    Slide Presentasi Kolokium 

    Slide untuk presentasi kolokium sudah dibuat. Update terakhir saya simpan di Google Documents pada link ini.

     
  • abrari 11:13 pm pada 6 January 2012 Permalink | Balas  

    Skripsi 

    Mulai akhir semester 7 ini, kami harus sudah mempersiapkan untuk skripsi atau tugas akhir. Salah satunya penentuan pembimbing, penentuan topik penelitian, dan persiapan untuk kolokium atau seminar proposal.

    Alhamdulillah, saya sendiri sudah mendapatkannya. Topik penelitian saya tidak “wah” seperti yang lainnya, hanya membuat program saja. Program yang akan dibuat adalah sistem pencarian ayat Al-Quran berbasis kemiripan fonetik. Apa maksudnya?

    Jadi begini, selama ini kalau kita hendak mencari di program Al-Quran, maka kita harus mencari dalam bahasa Arab, dan mengetikkan pencariannya dalam tulisan Arab. Masalahnya, tidak semua orang paham bagaimana merepresentasikan bunyi ayat yang dia ketahui dalam tulisan Arab. Mungkin banyak yang salah menuliskan “rabbil ‘aalamiin” dengan ” ربل عالمين ” padahal yang benar adalah ” رب العالمين ”. Oleh karena itu, program sistem pencarian yang dibuat bisa mencari ayat dalam Al-Quran dengan cukup mengetikkan bunyi kata dalam tulisan Latin, bukan dengan tulisan Arab.

    Itulah yang disebut kemiripan fonetik, atau kemiripan pengucapan. Kemudian, untuk metode pencariannya menggunakan teknik indeks trigram yang cukup terkenal dalam bidang information retrieval.

    Pembimbing skripsi saya adalah bapak Ahmad Ridha, salah satu dosen Ilmu Komputer yang insya Allah berkompeten dalam hal Al-Quran dan information retrieval. Semoga yang dikerjakan akan bermanfaat bagi kaum muslimin.

    Sejauh ini, yang sudah dibuat adalah makalah kolokium atau proposal penelitian. Insya Allah proposal akan diseminarkan pada akhir Januari mendatang, setelah beberapa revisi atas arahan pembimbing. Targetnya bulan Juli harus sudah beres :)

    Tambahan: Seluruh dokumen terkait penelitian saya backup di Google Documents pada link ini. Dan log jalannya penelitian saya usahakan selalu di-update di blog ini.

     
  • abrari 2:54 am pada 26 December 2011 Permalink | Balas  

    Ponsel Android 

    Alhamdulillah, ponsel Android, dengan tipe Samsung Galaxy Gio. Kira-kira seperti ini wujudnya:

    Memang dirasa lebih mahal dalam hal pemakaian pulsa, karena saya menggunakan kartu yang paling mahal di Indonesia, karena perlu konektivitas internet yang lebih intens. Tapi untuk penghematan, layanan internet selalu dimatikan dan hanya dihidupkan saat diperlukan saja.

    Selain itu, diinstal beberapa aplikasi dari Market, antara lain:

    • Opera Mini, untuk browsing lebih murah.
    • Facebook for Android, untuk iseng saja.
    • Facebook Messenger, untuk iseng juga.
    • Google Docs, untuk koneksi dan integrasi dengan Google Docs.
    • Google Reader, untuk koneksi dengan Google Reader.
    • Terminal Emulator, untuk iseng main-main terminal di OS.
    • Adobe Reader, untuk baca PDF dengan lebih baik.
    • iQuran, untuk baca Al-Quran di ponsel.
    • Fruit Ninja, game sederhana.
    • Smart App Protector, untuk proteksi beberapa aplikasi dengan password, supaya tidak sembarangan dilihat orang.
    • Mathmatiz, aplikasi semacam Matlab, untuk hitung-hitungan.
    • Ibrahim Keyboard, untuk mengetik dalam tulisan Arab.

    Memang yang menarik dari ponsel semacam ini adalah tersedianya banyak aplikasi untuk menunjang kebutuhan. Selain itu, kontak dan phonebook akan disinkronkan dengan yang ada di Gmail dan Facebook, sehingga lebih memudahkan.

     
    • asfarian 5:55 pm pada 28 Desember 2011 Permalink | Balas

      Ngikutin… Curang…

      Kalau mau baca ebook di handphone pakai Aldiko saja.
      Gratis dan mendukung berbagai format.
      Paling enak sih format epub.

      • abrari 11:00 pm pada 28 Desember 2011 Permalink

        Bedanya sama Adobe Reader apa mas? Selain mendukung berbagai format.

      • asfarian 11:38 pm pada 6 Januari 2012 Permalink

        Zoom-nya lebih dalam :P
        Jadi lebih enak bacanya…
        Tapi kalau bukunya ada gambarnya, jadi masalah

    • East9_21 1:07 am pada 7 Januari 2012 Permalink | Balas

      Waa curang, ngeduluin… :p

c
Tulis postingan baru
j
tulisan berikutnya/komentar berikutnya
k
tulisan sebelumnya/komentar sebelumnya
r
reply
e
sunting
o
tampilkan/sembunyikan komentar
t
ke atas
l
masuk ke log
h
show/hide help
shift + esc
cancel
Ikuti

Get every new post delivered to your Inbox.

Bergabunglah dengan 53 pengikut lainnya.