Senin, 22 April 2024

BAB 2 ALGORITMA GENETIKA





1. Algoritma Genetika untuk Optimasi [BACK] 


Q: Berapa nilai x1 dan x2 yang membuat fungsi h( x1, x2 ) = 4 x1 - 5 x2  menjadi                    maksimum jika diketahui x1 , x2 𝟄 [-4,3] ? Bagaimana menyelesaikannya                            menggunakan AG?
           
A: Fungsi h mencapai nilai maksimum ketika 32, pada saat x1 = 3 dan x2 = 4. Berikut adalah langkah-langkahnya:

Pertama kedua variabel x1 dan x2 dikodekan dalam kromosom yang berisi                             sejumlah gen yang mengkodekan informasi didalam 

Untuk menyelesaikannya, misal digunakan binary encoding dengan panjang                         kromosom 20 gen, masing - masing variabel dikodekan 10 gen. Berikut                                 ilustrasinya : 

Setelah dilakukan pengkodean, GA diinisialisasi untuk sebuah populasi dengan N kromosom.
Gen yang mengisi kromosom akan dibangkitkan secara acak, biasanya dilakukan dengan 
distribusi seragam. Masing - masing kromosom dikodekan jadi individu dengan fitness tertentu.

Berikut pseducode tentang langkah - langkah AG :


Pada algoritma diatas digunakan skema penggantian populasi yang disebut generational replacement. Dimana N kromosom suatu generasi diganti N kromosom baru hasil pindah silang dan mutasi. 

2. Komponen Algoritma Genetika [BACK] 
Pada dasarnya algoritma Genetika memiliki 7 komponen :

2a. Skema Pengkodean [BACK] 
Terdapat 3 skema pengkodean:

§  
Real number encoding (gen dalam interval 0 sampai R, dimana R merupakan bilangan real positif, dan biasanya R=1)

    contoh

Dengan interval tertentu batas bawah rb dan batas atas ra, sebagai berikut :

Jika variabel dibatasi pada interval tertentu, misal [-1,2], maka hasil pengkodean dari contoh diatas adalah :

x1 = -1 + (2-(-1)) x g1 = -1 + 3 x 0,2390 = -0,2830 

x2 = -1 + (2-(-1)) x g2 = -1 + 3 x 1,0000 = 2,0000

x3 = -1 + (2-(-1)) x g3 = -1 + 3 x 0,0131 = -0,9607


§  Discrete decimal encoding, (setiap gen bisa bernilai 1-9)

    contoh
    

Dengan menggunakan interval tertentu, batas bawah rb, batas atas ra dan N adalah jumlah kromosom ( panjang kromosom ), maka hasil pengkodean adalah :

Jika variabel dibatasi pada interval tertentu, misal [-1,2], maka hasil pengkodean dari contoh diatas adalah : 

Dengan pengkodean diatas diperoleh nilai x2 = 1,9970, tidak maksimum seperti real number encoding ( 2,0000 ). Disebabkan nilai maksimum dari discrete decimal encoding kurang dari 1, yaitu : 

Solusinya pada batas interval yang diberikan, maka formula pengkodean diatas perlu dirubah menjadi : 
Dengan N = jumlah gen dalam kromosom(panjang kromosom), maka diperoleh hasil :


§  Binary encoding (setiap gen hanya bisa bernilai 1 atau 0

    Contoh :
Dengan menggunakan interval tertentu, batas bawah rb, batas atas ra dan N adalah jumlah kromosom ( panjang kromosom ), maka hasil pengkodean adalah : 

Jika variabel dibatasi pada interval tertentu, misal [-1,2], maka hasil pengkodean dari contoh diatas adalah : 

Hal yang sama terjadi pada skema binary dimana nilai x2 = 1,6250, karena nilai binarinya jauh dari nilai maksimum ( 1 ), yaitu : 
maka formula pengkodean binary juga harus dirubah menjadi :

 

Dengan rumus pengkodean diatas, maka diperoleh :

Pada pengkodean binary dihasilkan nilai x1 = -0,1428, berbeda dengan skema real number encoding x1 = 0,2830, karena jumlah gen pada binary terlalu sedikit ( 3 ) sedangkan dibutuhkan lebih banyak gen pada binary. Jumlah gen mempengaruhi kecepatan AG secara signifikan. 

Beberapa aplikasi menggunakan 10 gen untuk binary encoding, dengan ini nilai maksimum yang bisa dikodekan adalah :

dengan ini berarti sudah cukup mendekati nilai 1.
                  

2b. Nilai Fitness [BACK] 

  • Merupakan nilai yang menyatakan baik atau tidaknya suatu individu.
  • Dijadikan sebagai acuan dalam mencapai nilai optimal dalam algoritma genetika.
  • Pada masalah optimasi, untuk memaksimalkan fungsi h (  maksimasi ), maka nilai fitness yang digunakan adalah nilai dari fungsi h tersebut, yaitu f = h ( f = fitness ). 
  • Untuk meminimalkan fungsi h ( minimasi ), maka fungsi h tidak bisa digunakan langsung karena individu dengan fitness tinggi lebih bisa bertahan. Maka fitnes yang digunakan adalah f = 1 / h, dimana semakin kecil nilai h maka semakin besar nilai f. 
  • Tapi jika h = 0 maka f = ~, untuk mengatasinya h perlu ditambah bilangan yang dianggap sangat kecil sehingga nilai fitnesnya :

Dimana a = bilangan sangat kecil yang bervariasi sesuai masalah. 
            Note : Penentuan nilai fitness sangat berpengaruh pada performansi AG secara keseluruhan
  • Untuk mendapatkan nilai fitness yang baik, jauh dari peluang nilai konvergen pada optimum lokal, nilai fitness dapat dicari dengan :

Contoh 1 :

Jika diketahui x1,x2 𝟄 [-2,5],  bagaimana nilai fitness yang bisa digunakan untuk mencari nilai maksimal ? dan bagaimana nilai fitness untuk mencari nilai minimalnya ? dari fungsi :

 Jawab :

  •  Fungsi h mencapai ekstrem maksimum 50 saat x1 = 5 dan x2 = 5
  •  Nilai fitness untuk maksimasi adalah h itu sendiri.
  •  Fungsi h mencapai ekstrem minimum 0, pada saat x1 = 0 dan x2 = 0, karena h bisa saja bernilai 0.
  •  Maka nilai fitness untuk masalah ini adalah f=1/(h+a), karena dianggap sangat kecil


2c. Seleksi Orang Tua [BACK] 
Seleksi dilakukan untuk mendapatkan calon induk yang baik. Seleksi dapat dilakukan dengan 2 cara, yaitu dengan Rotated Wheel dan Tournament.




2d. Crossover [BACK] 
  • Crossover merupakan operator dalam algoritma genetika yang melibatkan dua induk untuk menghasilkan keturunan yang baru.
  • Proses crossover bisa dalam bentuk:
    • one point CO 
    • n-point CO
    • uniform CO

2e. Mutasi [BACK] 
Mutasi dapat merubah susunan gen dengan swapping, insertion, inversion, dan displacement.

2f. Elitisme [BACK] 
Proses elitisme merupakan proses meng-copy individu dengan nilai fitness tertinggi. Walaupun suatu individu memiliki nilai fitness yang tinggi, masih ada kemungkinan individu tersebut tidak akan terpilih karena proses pemilihan dilakukan secara acak. Kalaupun terpilih, ada kemungkinan nilai fitness individu tersebut rusak dikarenakan terjadi pemindahan silang, oleh karena itu diperlukan satu atau dua tiruan dari individu tersebut. Prosedur inilah yang disebut dengan elitisme

2g. Pergantian Populasi 
[BACK] 
Semua N individu dalam suatu generasi akan digantikan dengan N individu baru hasil crossover dan mutasi.
Individu yang dihilangkan merupakan individu dengan nilai fitness terendah/individu tua.
Dalam algoritma genetika, terdapat skema penggantian populasi yang disebut generational replacement, yang berarti semua individu ( missal N individu dalam suatu populasi ) dari suatu generasi sekaligus oleh N individu baru hasil pindah silang dan mutase. Secara umum skema penggantian populasi dapat dirumuskan berdasar suatu ukuran yang disebut generational gap G. Ukuran menunjukkan presentase populasi yang digantikan dalam setiap generasi. Pada generational replacement, G=1.

3. Video [BACK] 





4. File Download 
[BACK] 
Materi HTML (click here)

Sabtu, 06 April 2024

LAPORAN AKHIR 2 MODUL 3 (PERCOBAAN 2)

 [KEMBALI KE MENU SEBELUMNYA]


Percobaan 2

 Komunikasi SPI Menggunakan Arduino


1. Foto Hardware dan Diagram Blok [Kembali]

  1. Arduino Uno



        2. Seven Segment 

   
        2. Dipswitch

                                                


Diagram Blok:



2. Prosedur Percobaan  [Kembali]

Rangkai semua komponen 
+ buat program di aplikasi arduino IDE
+ setelah selesai masukkan program ke arduino 
+ jalankan program pada simulasi dan cobakan dengan modul



Prinsip Kerja

Rangkaian ini terdiri dari dua Arduino, yaitu master dan slave, yang saling berkomunikasi melalui SPI. Master Arduino berperan sebagai pengirim data, terhubung ke dipswitch, sementara slave berperan sebagai penerima data dan mengendalikan seven segment. Komunikasi antara keduanya memungkinkan pengiriman data digital, misalnya dari pin 7 pada master. Saat pin 7 aktif, master akan mengirimkan data "7" ke slave, yang kemudian menampilkan angka "7" pada seven segment. Jika tidak ada dipswitch yang aktif, angka yang ditampilkan akan menjadi 1, atau disesuaikan dengan pin yang aktif. Dengan demikian, rangkaian ini memungkinkan kontrol seven segment pada slave dari jarak jauh, dengan master mengirimkan instruksi digital melalui SPI, dan slave menerjemahkan instruksi tersebut untuk menampilkan angka pada seven segment sesuai dengan kondisi yang ditentukan.

4. Flowchart dan Listing Program [Kembali]


Flowchart:

Master


Slave



Listing Program:

Master

#include<SPI.h> //Library for SPI
int dip[] = {2,3,4,5,6,7,8,9};
int dipvalue[] = {};
void setup (){
 Serial.begin(9600); //Starts Serial Communication 
 for(int i = 0; i < 8; i++){
 pinMode(dip[i], INPUT_PULLUP);
 }
 SPI.begin(); //Begins the SPI commnuication
 SPI.setClockDivider(SPI_CLOCK_DIV8); //Sets clock for SPI communication at 8 (16/8=2Mhz)
 digitalWrite(SS,HIGH); // Setting SlaveSelect as HIGH (So master doesnt connnect with slave)
}
void loop(void){
 byte Mastersend;
 int x = 1;
 for(int i = 0; i < 8; i++){
 dipvalue[i] = digitalRead(dip[i]);
 if(dipvalue[i] == LOW){
 x = dip[i];
 }
 }
 digitalWrite(SS, LOW); //Starts communication with Slave connected to master

Mastersend = x;
 Serial.println(Mastersend);
 SPI.transfer(Mastersend); //Send the mastersend value to slave also receives value from slave
 delay(1000);
}


Slave

#include<SPI.h>
const int segmentPins[] = {9, 8, 7, 6, 5, 4, 3, 2};
volatile boolean received = false;
volatile byte Slavereceived;
int index;
void setup(){
 Serial.begin(9600);
 for (int i = 0; i < 8; i++) {
 pinMode(segmentPins[i], OUTPUT);
 }
 SPCR |= _BV(SPE); //Turn on SPI in Slave Mode
 SPI.attachInterrupt(); //Interuupt ON is set for SPI commnucation
}
ISR (SPI_STC_vect){ //Inerrrput routine function
 Slavereceived = SPDR; // Value received from master if store in variable slavereceived
 received = true; //Sets received as True
}
void loop(){
 Serial.println(Slavereceived);
 if(received){//Logic to SET LED ON OR OFF depending upon the value recerived from master
 displayCharacter(Slavereceived);
 delay(1000);
 }
}
void displayCharacter(int ch) {
 byte patterns[10][7] = {
 {0, 0, 0, 0, 0, 0, 1}, // 0
 {1, 0, 0, 1, 1, 1, 1}, // 1
 {0, 0, 1, 0, 0, 1, 0}, // 2
 {0, 0, 0, 0, 1, 1, 0}, // 3
 {1, 0, 0, 1, 1, 0, 0}, // 4
 {0, 1, 0, 0, 1, 0, 0}, // 5
 {0, 1, 0, 0, 0, 0, 0}, // 6
 {0, 0, 0, 1, 1, 1, 1}, // 7
 {0, 0, 0, 0, 0, 0, 0}, // 8
 {0, 0, 0, 0, 1, 0, 0} // 9
 };
 if ((ch >= 0 && ch <= 9)) {
 // Get the digit index (0-9) from the character
 int index = ch;
 // Write the pattern to the segment pins
 for (int i = 0; i < 7; i++) {
 digitalWrite(segmentPins[i], patterns[index][i]);
 }
 }
}

5. Kondisi [Kembali]

Ketika tidak terdapat dipswitch on maka angka yang ditampilkan ialah 1 ketika terdapat yang nyala akan disesuaikan dengan pada pin berapa yang menyala atau berlogika 1, jika pada pin 2 maka akan menampilkan angka 2. 

᭒ HTML↠ Download
᭒ Percobaan↠ Download
᭒ Video Percobaan↠ Download
᭒ Datasheet Arduino↠ Download
᭒ Datasheet 7Segmen↠ Download
᭒ Datasheet Dipswitch↠ Download

Entri yang Diunggulkan

UAS Fuzzy

Referensi : Sitti Amalia. (2021). Pemodelan Sistem Pengontrolan Suhu Ruangan Berbasis Logika Fuzzy Mamdani . Jurnal Teknik Elektro, 10(1), 3...