?? ga(java).java
字號(hào):
//01絪絏
// -(x-1)^2+5, 0<=x<=15
import java.util.*;
public class GA {
int populationsize = 5;
int numberofgene = 4; //2^4 = 16
int[][] population = new int[populationsize][numberofgene];
int[] eval = new int[populationsize];
double probabilityofcrossover = 0.8;
double probabilityofmutation = 0.1;
int thebestvalue;
int[] best = new int[numberofgene];
int maxgeneration = 10;
int times;
public static void main (String args[]) {
GA G = new GA();
G.initial();
G.evaluate();
do {
G.reproduction();
G.crossover();
G.mutation();
G.evaluate();
G.printresult();
G.times++;
} while (G.times < G.maxgeneration);
System.out.print("Gene: ");
for (int i=0;i<G.numberofgene;i++) {
System.out.print(G.best[i]+" ");
}
System.out.println();
System.out.println("Number: "+G.binarytonumber(G.best));
System.out.println("Thebestvalue: "+G.thebestvalue);
}
void printresult() {
System.out.println("Times: "+times);
for (int i=0;i<populationsize;i++) {
System.out.print("Gene: ");
for (int j=0;j<numberofgene;j++) {
System.out.print(population[i][j]+" ");
}
System.out.print("number: ");
System.out.println(binarytonumber(population[i]));
}
System.out.println("----------------------");
}
void initial() {
for (int i=0;i<populationsize;i++) {
int randomnumber = (int)(Math.random()*16);
population[i] = numbertobinary(randomnumber);
}
}
void evaluate() {
int x;
for (int i=0;i<populationsize;i++) {
x = binarytonumber(population[i]);
eval[i] = -(int)Math.pow(x-1, 2)+5;//ヘ夾Α
}
for (int i=0;i<populationsize;i++) {
if (eval[i] > thebestvalue) {
thebestvalue = eval[i];
for (int j=0;j<numberofgene;j++) {
best[j] = population[i][j];
}
}
}
}
void reproduction() {
int[][] populationtemp = new int[populationsize][numberofgene];
double stepsum, doubletemp, sum = 0;
for (int i=0;i<eval.length;i++) { //璸衡ダ砰ず┮Τ琕︹砰続萊
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -