Roulette Wheel Selection dengan Java (sederhana)

Pagi penonton…hehehe….

uda pada sarapan belum?? abis sarapan ni ane..:D #kenyaaaang…
pengen share lg ni…tp masih sederhana banget dan mungkin masih ada kurangnya…hehehe

lagi-lagi ngebahas tentang Komputasi Evolusioner sekarang pake algoritma Roulette Wheel Selection…kurang lebih seperti ni gan…hehehe

#butuh evaluasi dari para master…mohon kritik sarannya…^_^

import java.util.*;
/**
*
* @author open it
*/
public class RouletteWheel{
    public static void main(String args[]){
        Scanner in = new Scanner(System.in);
        int input,fitness;

        //TENTUKAN UKURAN POPULASI DAN BANYAKNYA FITNESS
        System.out.print("\nMasukkan jumlah chromosome (Populasi Individu) = ");
        input = in.nextInt();
        double[] arr = new double[input];
        System.out.print("Masukkan Banyak Fitness : ");
        fitness = in.nextInt();

        //TENTUKAN NILAI FITNESS DARI 0-BANYAKNYA FITNESS
        for (int i = 0;i < arr.length; i++ ) {
            System.out.print("Fitness chromosome ke-"+(i+1)+" : ");
            arr[i] =(int) (Math.random()*fitness);
            System.out.print(arr[i]+"");
            System.out.print("\n");
        }

        //JUMLAH FITNESS DARI SETIAP KROMOSOM
        double jmlFit = 0.0;
        System.out.print("Jumlah fitness : ");
        for (int i = 0; i < arr.length; i++) {
            jmlFit += arr[i];
            System.out.print(jmlFit+" ");
        }
        System.out.print("\n");

        //HITUNG PROBABILITAS
        double[] prob=new double[arr.length];
        System.out.println("\nProbabilitas tiap chromosome: ");
        for (int i=0;i < arr.length;i++){
            prob[i]=arr[i]/jmlFit;
            System.out.print("\nChromosome ke-"+(i+1)+" = "+arr[i]+" / "+jmlFit+" = "+prob[i]);
        }
        //System.out.println("\n"+Arrays.toString(prob));
        System.out.print("\n");

        //JUMLAH PROBABILITAS
        double[] jmlProb=new double[arr.length];
        double jumProb = 0.0;
        System.out.println("\nJumlah probabilitas: ");
        for (int i=0;i < arr.length;i++){
            jumProb += prob[i];
            jmlProb[i] = jumProb;
            //System.out.println(jmlProb[i]+" ");
        }
        System.out.println(jmlProb[arr.length-1]+" ");
        //PROSES ROULETTE WHEEL SELECTION
        for (int i=0;i < arr.length;i++){
            //pertama bangkitkan bilangan acak r
            double r =(double) (Math.random()*jmlProb[arr.length-1]);
            System.out.print("\n================================");
            System.out.print("\nBilangan acak (r) : "+r);
            //kedua bandingkan jmlProb[i] dengan r
            if (jmlProb[i] < r){
                System.out.print("\n"+jmlProb[i]+" < "+r);
                System.out.print("\nChromosome ke-"+(0+1)+" terseleksi dengan fitness: "+arr[0]);
                System.out.println("\n================================");
            } else {
                System.out.print("\n"+jmlProb[i]+" > "+r);
                System.out.print("\nChromosome ke-"+(i+1)+" terseleksi dengan fitness: "+arr[i]);
                System.out.println("\n================================");
            }
        }
    }
}

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s