LAMPIRAN 1
LIST PROGRAM FEA
import java.text.NumberFormat; import java.util.Random; import java.util.Vector;
/*
* To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates
* and open the template in the editor. */
/** *
* @author Bevan */
public class FAP{
public static void main (String args []){ int space = 6;
int jumlah_kanal=64; int number_cell = 17;
double []traf = new double [number_cell]; Vector vect = new Vector();
int [][] distance = new int [17][17];
distance [14] [8] = 2 ; distance [14] [9] = 0 ; distance [14] [10] = 0 ; distance [14] [11] = 0 ; distance [14] [12] = 1 ; distance [14] [13] = 1 ; distance [14] [14] = 6 ; distance [14] [15] = 0 ; distance [14] [16] = 0 ; distance [15] [0] = 0 ; distance [15] [1] = 0 ; distance [15] [2] = 0 ; distance [15] [3] = 0 ; distance [15] [4] = 0 ; distance [15] [5] = 0 ; distance [15] [6] = 0 ; distance [15] [7] = 0 ; distance [15] [8] = 0 ; distance [15] [9] = 2 ; distance [15] [10] = 2 ; distance [15] [11] = 1 ; distance [15] [12] = 0 ; distance [15] [13] = 0 ; distance [15] [14] = 0 ; distance [15] [15] = 6 ; distance [15] [16] = 2 ; distance [16] [0] = 0 ; distance [16] [1] = 0 ; distance [16] [2] = 0 ; distance [16] [3] = 0 ; distance [16] [4] = 0 ; distance [16] [5] = 0 ; distance [16] [6] = 0 ; distance [16] [7] = 0 ; distance [16] [8] = 0 ; distance [16] [9] = 1 ; distance [16] [10] = 2 ; distance [16] [11] = 2 ; distance [16] [12] = 1 ; distance [16] [13] = 0 ; distance [16] [14] = 0 ; distance [16] [15] = 2 ; distance [16] [16] = 6 ;
for(int aa=0;aa<1000;aa++){
double[] traffics = { 5, 10, 15, 20, 17, 18, 12, 6, 9, 11, 4, 6, 5, 2, 10, 3, 1, 7, 8, 13}; Allocation [] cell_user = new Allocation [number_cell];
//initialisasi
for (int i=0; i <number_cell ; i ++) { cell_user [i] = new Allocation (); Random r = new Random (); int index = r.nextInt(16);
cell_user[i].setCell(i);
cell_user[i].setAllocation(false); cell_user[i].setBeginner(false); if(i==0){
cell_user[i].addAdj(1);cell_user[i].addAdj(3);cell_user[i].addAdj(4); }else if(i==1){
cell_user[i].addAdj(0);cell_user[i].addAdj(2);cell_user[i].addAdj(4);cell_user[i].addAdj(5); }else if(i==2){
cell_user[i].addAdj(1);cell_user[i].addAdj(6);cell_user[i].addAdj(7); }else if(i==3){
cell_user[i].addAdj(1);cell_user[i].addAdj(4);cell_user[i].addAdj(10); }else if(i==4){
cell_user[i].addAdj(0);cell_user[i].addAdj(1);cell_user[i].addAdj(5);cell_user[i].addAdj(11);cell_user [i].addAdj(10);
}else if(i==5){
cell_user[i].addAdj(1);cell_user[i].addAdj(2);cell_user[i].addAdj(6);cell_user[i].addAdj(11);cell_user [i].addAdj(10);cell_user[i].addAdj(4);
}else if(i==6){
cell_user[i].addAdj(2);cell_user[i].addAdj(7);cell_user[i].addAdj(12);cell_user[i].addAdj(11);cell_us er[i].addAdj(5);
}else if(i==7){
cell_user[i].addAdj(6);cell_user[i].addAdj(8);cell_user[i].addAdj(13);cell_user[i].addAdj(12); }else if(i==8){
cell_user[i].addAdj(7);cell_user[i].addAdj(14);cell_user[i].addAdj(13); }else if(i==9){
cell_user[i].addAdj(3);cell_user[i].addAdj(4);cell_user[i].addAdj(10);cell_user[i].addAdj(15); }else if(i==10){
cell_user[i].addAdj(4);cell_user[i].addAdj(5);cell_user[i].addAdj(11);cell_user[i].addAdj(16);cell_us er[i].addAdj(15);cell_user[i].addAdj(9);
}else if(i==11){
cell_user[i].addAdj(5);cell_user[i].addAdj(6);cell_user[i].addAdj(12);cell_user[i].addAdj(16);cell_us er[i].addAdj(10);
}else if(i==12){
cell_user[i].addAdj(6);cell_user[i].addAdj(7);cell_user[i].addAdj(13);cell_user[i].addAdj(11); }else if(i==13){
cell_user[i].addAdj(7);cell_user[i].addAdj(8);cell_user[i].addAdj(14);cell_user[i].addAdj(12); }else if(i==14){
cell_user[i].addAdj(8);cell_user[i].addAdj(13); }else if(i==15){
cell_user[i].addAdj(9);cell_user[i].addAdj(10);cell_user[i].addAdj(16); }else if(i==16){
cell_user[i].addAdj(10);cell_user[i].addAdj(11);cell_user[i].addAdj(15); }
//Initial allocation, the biggest pheromon
//cek sorting, s menyimpan urutan besar ke kecil int s[]=Sort(cell_user);
// for(int u=0;u<s.length;u++){
// System.out.println(cell_user[s[u]].getTraffic()); // }
for (int i=0;i<number_cell;i++){ int newch=0;
int count=0; int x=s[i];
//mencari chanel awal
for(int y=0;y<jumlah_kanal;y++){ //cek interferensi
if(checkInterference(cell_user,x,newch)){ newch++;
}else{ break; } }
int z=jumlah_kanal/space+1; for(int y=0;y<jumlah_kanal;y++){ //cek interferensi
if(count<cell_user[x].getTraffic() && newch<jumlah_kanal){ cell_user[x].addChannel(newch);
count++;
newch=newch+space; }else{
cell_user[x].setBlocking(((cell_user[x].getTraffic()-count)/cell_user[x].getTraffic())*100);
break; } }
}
/* if(checkInterference(cell_user, 1, 6)){ System.out.println("Interference"); }else{
System.out.println("Tidak Interference"); }*/
// boolean solution =false;
// int n = largestNumbers(cell_user); /*while(solution==false){
n = largestNumbers(cell_user); //alokasi sel awal
cell_user[n].getTraffic(); for(int i=0;i<number_cell;i++){
//Cek kanal sel n
for(int i=0;i<number_cell;i++){
System.out.print( "Sel :"+i + " Trafik: "+cell_user[i].getTraffic()+" kanal :"); for(int c=0;c<cell_user[i].getChannel().size();c++){
System.out.print(" " +(int)cell_user[i].getChannel().get(c)); }
System.out.println("---"+cell_user[i].getBlocking()+"%"); }
double avBlock=0;
for(int i=0;i<number_cell;i++){
avBlock=avBlock+cell_user[i].getBlocking(); }
System.out.println("Blocking rata-rata:---"+avBlock/number_cell+"%"); /*
//cek status user
for (int i=0; i <number_cell;i++){
System.out.print ("Sel no :"+cell_user[i].getCell()+" jumlah Traffic:"+ cell_user[i].getTraffic());
if (cell_user[i].getAllocation()==false){ System.out.println (" belum teralokasi"); }else{
System.out.println (" telah teralokasikan"); }
}*/
vect.add(avBlock/number_cell); }
for(int ii=0;ii<vect.size();ii++){
System.out.println("Iterasi: "+ii+" blocking: "+(double)vect.get(ii)); }
}
private static int largestNumbers(Allocation[] cell_user) { double [] traf = new double[cell_user.length];
for (int i = 0 ; i <cell_user.length; i ++){ if(cell_user[i].getBenginner()==true); traf [i] = 0;
traf [i] = cell_user[i].getTraffic(); }
int in=0;
double largeNumber = traf[0]; for (int i = 0; i < traf.length; i++) { if (traf[i] > largeNumber) { largeNumber = traf[i]; }
}
boolean c=false;
for (int j = 0; j < traf.length; j++) {
if(largeNumber == traf[j] && c==false){ in=j;
c=true;
//System.out.println("largest number index "+j); }
return in; }
//Sorting
private static int[] Sort(Allocation[] v1){ double[] num=new double[v1.length]; int[] num1=new int[v1.length]; for(int x=0;x<v1.length;x++){ num[x]=v1[x].getTraffic(); num1[x]=x;
}
int n = v1.length; int k;
for (int m = n; m >= 0; m--) { for (int i = 0; i < n - 1; i++) { k = i + 1;
if (num[i] < num[k]) { double temp = num[i]; num[i] = num[k];
num[k] = temp; int temp1 = num1[i]; num1[i] = num1[k]; num1[k] = temp1; }
} }
return num1; }
// metode chek interferensi kanal
private static Boolean checkInterference (Allocation []a, int in_cell,int kanal){ Boolean interference = false;
Vector adj = a [in_cell].getAdj(); for (int i=0;i<adj.size();i++){
Vector ch=a[(int)adj.get(i)].getChannel(); if (ch.size()>0){
for (int j=0;j<ch.size();j++){
// System.out.println(kanal+":"+(int)ch.get(j)); if(Math.abs(kanal-(int)ch.get(j))<2){
interference = true; }
} } }
return interference; }
LAMPIRAN 2
LIST PROGRAM FEA
import java.text.NumberFormat; import java.util.Random; import java.util.Vector;
/*
* To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates
* and open the template in the editor. */
/** *
* @author Bevan */
public class ParticleSwarm{
public static void main (String args []){ int space =6;
Vector vect=null; int jumlah_kanal=64; int number_cell = 17;
double []traf = new double [number_cell]; int [][] distance = new int [17][17];
distance [14] [8] = 2 ; distance [14] [9] = 0 ; distance [14] [10] = 0 ; distance [14] [11] = 0 ; distance [14] [12] = 1 ; distance [14] [13] = 1 ; distance [14] [14] = 6 ; distance [14] [15] = 0 ; distance [14] [16] = 0 ; distance [15] [0] = 0 ; distance [15] [1] = 0 ; distance [15] [2] = 0 ; distance [15] [3] = 0 ; distance [15] [4] = 0 ; distance [15] [5] = 0 ; distance [15] [6] = 0 ; distance [15] [7] = 0 ; distance [15] [8] = 0 ; distance [15] [9] = 2 ; distance [15] [10] = 2 ; distance [15] [11] = 1 ; distance [15] [12] = 0 ; distance [15] [13] = 0 ; distance [15] [14] = 0 ; distance [15] [15] = 6 ; distance [15] [16] = 2 ; distance [16] [0] = 0 ; distance [16] [1] = 0 ; distance [16] [2] = 0 ; distance [16] [3] = 0 ; distance [16] [4] = 0 ; distance [16] [5] = 0 ; distance [16] [6] = 0 ; distance [16] [7] = 0 ; distance [16] [8] = 0 ; distance [16] [9] = 1 ; distance [16] [10] = 2 ; distance [16] [11] = 2 ; distance [16] [12] = 1 ; distance [16] [13] = 0 ; distance [16] [14] = 0 ; distance [16] [15] = 2 ; distance [16] [16] = 6 ;
vect = new Vector(); for(int aa=0;aa<1000;aa++){
double[] traffics = { 5, 10, 15, 20, 17, 18, 12, 6, 9, 11, 4, 6, 5, 2, 10, 3, 1, 7, 8, 13}; Allocation [] cell_user = new Allocation [number_cell];
//initialisasi
cell_user[i].setTraffic(traffics [index]); // Set which cell user belongs to. cell_user[i].setCell(i);
cell_user[i].setAllocation(false); cell_user[i].setBeginner(false); if(i==0){
cell_user[i].addAdj(1);cell_user[i].addAdj(3);cell_user[i].addAdj(4); }else if(i==1){
cell_user[i].addAdj(0);cell_user[i].addAdj(2);cell_user[i].addAdj(4);cell_user[i].addAdj(5); }else if(i==2){
cell_user[i].addAdj(1);cell_user[i].addAdj(6);cell_user[i].addAdj(7); }else if(i==3){
cell_user[i].addAdj(1);cell_user[i].addAdj(4);cell_user[i].addAdj(10); }else if(i==4){
cell_user[i].addAdj(0);cell_user[i].addAdj(1);cell_user[i].addAdj(5);cell_user[i].addAdj(11);cell_user [i].addAdj(10);
}else if(i==5){
cell_user[i].addAdj(1);cell_user[i].addAdj(2);cell_user[i].addAdj(6);cell_user[i].addAdj(11);cell_user [i].addAdj(10);cell_user[i].addAdj(4);
}else if(i==6){
cell_user[i].addAdj(2);cell_user[i].addAdj(7);cell_user[i].addAdj(12);cell_user[i].addAdj(11);cell_us er[i].addAdj(5);
}else if(i==7){
cell_user[i].addAdj(6);cell_user[i].addAdj(8);cell_user[i].addAdj(13);cell_user[i].addAdj(12); }else if(i==8){
cell_user[i].addAdj(7);cell_user[i].addAdj(14);cell_user[i].addAdj(13); }else if(i==9){
cell_user[i].addAdj(3);cell_user[i].addAdj(4);cell_user[i].addAdj(10);cell_user[i].addAdj(15); }else if(i==10){
cell_user[i].addAdj(4);cell_user[i].addAdj(5);cell_user[i].addAdj(11);cell_user[i].addAdj(16);cell_us er[i].addAdj(15);cell_user[i].addAdj(9);
}else if(i==11){
cell_user[i].addAdj(5);cell_user[i].addAdj(6);cell_user[i].addAdj(12);cell_user[i].addAdj(16);cell_us er[i].addAdj(10);
}else if(i==12){
cell_user[i].addAdj(6);cell_user[i].addAdj(7);cell_user[i].addAdj(13);cell_user[i].addAdj(11); }else if(i==13){
cell_user[i].addAdj(7);cell_user[i].addAdj(8);cell_user[i].addAdj(14);cell_user[i].addAdj(12); }else if(i==14){
cell_user[i].addAdj(8);cell_user[i].addAdj(13); }else if(i==15){
cell_user[i].addAdj(9);cell_user[i].addAdj(10);cell_user[i].addAdj(16); }else if(i==16){
} //alokasi
//Initial allocation, the biggest pheromon
//cek sorting, s menyimpan urutan besar ke kecil int s[]=Sort(cell_user);
// for(int u=0;u<s.length;u++){
// System.out.println(cell_user[s[u]].getTraffic()); // }
Vector bloking =new Vector(); for(int a=5;a<9;a++){
space=a;
for (int i=0;i<number_cell;i++){ int newch=0;
int count=0; int x=s[i];
//mencari chanel awal
for(int y=0;y<jumlah_kanal;y++){ //cek interferensi
if(checkInterference(cell_user,x,newch)){ newch++;
}else{ break; } }
int z=jumlah_kanal/space+1; for(int y=0;y<jumlah_kanal;y++){ //cek interferensi
if(count<cell_user[x].getTraffic() && newch<jumlah_kanal){ cell_user[x].addChannel(newch);
count++;
newch=newch+space; }else{
cell_user[x].setBlocking(((cell_user[x].getTraffic()-count)/cell_user[x].getTraffic())*100);
break; } }
}
/* if(checkInterference(cell_user, 1, 6)){ System.out.println("Interference"); }else{
System.out.println("Tidak Interference"); }*/
// boolean solution =false;
// int n = largestNumbers(cell_user); /*while(solution==false){
cell_user[n].getTraffic(); for(int i=0;i<number_cell;i++){
} }*/
//Cek kanal sel n
for(int i=0;i<number_cell;i++){
System.out.print("Sel :"+i + " jumlah kanal: "+cell_user[i].getTraffic()+" nomor kanal :");
for(int c=0;c<cell_user[i].getChannel().size();c++){
System.out.print(" " +(int)cell_user[i].getChannel().get(c)); }
System.out.println("---"+cell_user[i].getBlocking()+"%"); }
double avBlock=0;
for(int i=0;i<number_cell;i++){
avBlock=avBlock+cell_user[i].getBlocking(); cell_user[i].kanal=new Vector();
}
System.out.println("Space: "+space+" Blocking rata-rata:---"+avBlock/number_cell+"%");
bloking.add(avBlock/number_cell); /*
//cek status user
for (int i=0; i <number_cell;i++){
System.out.print ("Sel no :"+cell_user[i].getCell()+" jumlah Traffic:"+ cell_user[i].getTraffic());
if (cell_user[i].getAllocation()==false){ System.out.println (" belum teralokasi"); }else{
System.out.println (" telah teralokasikan"); }
}*/ }
double[] d = new double[bloking.size()]; for(int ss=0;ss<bloking.size();ss++){ d[ss]=(double)bloking.get(ss); }
double dd= smallestNumbers(d);
//System.out.println (" Nilai terkecil: "+d[(int)dd]); vect.add(d[(int)dd]);
}
for(int ii=0;ii<vect.size();ii++){
System.out.println("Iterasi: "+ii+" blocking: "+(double)vect.get(ii)); }
}
private static int smallestNumbers(double[] traf) { int in=0;
} }
boolean c=false;
for (int j = 0; j < traf.length; j++) {
if(smallNumber == traf[j] && c==false){ in=j;
c=true;
//System.out.println("largest number index "+j); }
}
return in; }
//Sorting
private static int[] Sort(Allocation[] v1){ double[] num=new double[v1.length]; int[] num1=new int[v1.length]; for(int x=0;x<v1.length;x++){ num[x]=v1[x].getTraffic(); num1[x]=x;
}
int n = v1.length; int k;
for (int m = n; m >= 0; m--) { for (int i = 0; i < n - 1; i++) { k = i + 1;
if (num[i] < num[k]) { double temp = num[i]; num[i] = num[k];
num[k] = temp; int temp1 = num1[i]; num1[i] = num1[k]; num1[k] = temp1; }
} }
return num1; }
// metode chek interferensi kanal
private static Boolean checkInterference (Allocation []a, int in_cell,int kanal){ Boolean interference = false;
Vector adj = a [in_cell].getAdj(); for (int i=0;i<adj.size();i++){
Vector ch=a[(int)adj.get(i)].getChannel(); if (ch.size()>0){
for (int j=0;j<ch.size();j++){
// System.out.println(kanal+":"+(int)ch.get(j)); if(Math.abs(kanal-(int)ch.get(j))<2){
interference = true; }
} } }
return interference; }
LAMPIRAN 3
iterasi Prob. PSO (%) Prob. FEA (%) 934 18.82352941 27.95847751
935 13.81007305 16.11303345
936 15.71895425 0.490196078
937 12.85869071 4.363706267
938 19.40792003 17.42022299
939 12.43560169 10.73625529
940 16.49977281 29.47362902
941 10.70357555 28.62745098
942 2.058823529 7.797001153
943 4.642445213 9.673202614
944 28.37859565 21.16755793
945 18.83541295 18.08919646
946 12.51633987 15.34409842
947 8.367935409 21.14571319
948 13.21991542 21.10761595
949 29.41176471 13.28527489
950 18.1164587 12.92230261
951 19.01960784 7.941176471
952 11.40522876 9.473629024
953 21.31977212 16.89542484
954 2.647058824 20.4248366
955 23.39869281 28.12379854
956 34.85582468 16.09573241
957 21.4225298 6.422529796
958 12.87581699 16.20565517
959 16.60130719 31.43983083
960 15.44213764 20.16339869
961 19.48970676 23.28719723
962 13.01841949 20.67089581
963 26.69183181 14.25028835
964 17.51826221 18.48135333
965 8.546712803 15.91503268
966 23.34713921 13.10457516
967 15.32871972 33.49673203
968 15.22875817 20.49211842
969 6.030372933 14.91926182
970 20.38167139 8.366013072
971 7.01076509 16.29181084
972 23.38331411 13.07189542
973 20.26143791 19.26566705
974 16.65128797 10.4094579
975 9.248366013 20.93233372
976 28.70766488 17.74702038
iterasi Prob. PSO (%) Prob. FEA (%) 977 4.346405229 16.12491699
978 19.34640523 14.90388312
979 16.6532103 24.31757017
980 19.58704694 18.02383699
981 29.48306595 31.668589
982 30.35196253 21.87655098
983 22.66435986 29.25221069
984 15.31526336 20.15186467
985 7.464786271 35.07916536
986 17.45482507 14.46174548
987 11.04575163 24.12795778
988 16.03037293 14.95194156
989 23.91108315 38.04148754
990 16.85225962 32.46828143
991 10.44405998 24.08986054
992 8.660130719 27.67973856
993 13.87351019 5.424836601
994 17.80696236 10.27873895
995 13.36601307 12.18954248
996 16.07843137 7.299465241
997 10.14801999 23.9561707
998 6.503267974 7.334067317