📄 ga(java).java
字号:
//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++) { //璸衡ダ砰ず┮Τ琕︹砰続莱
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -