所以我正在构建一个遗传算法,基本上从创建一个个体群体开始,每个个体在一个数组中有 8 个基因,这些基因随机选择为 0 或 1。但是当我创建填充和输出每个单独基因的数组我没有得到预期的输出,我只得到 28 个 1 或 0,而我应该有 64 个。有人能帮忙吗?非常感谢。
主类:
package geneticalgorithm;
public class GeneticAlgorithm {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
final int P = 20;
final int N = 8;
int count = 0;
Random rand = new Random();
Individual[] population = new Individual[P];
for (int i = 0; i < P; i++){
population[i] = new Individual(); //Generates a population of P individuals and gives each one unique genes
population[i].generateGenes();
population[i].fitness = 0;
}
for (int i = 0; i < P; i++){
for (int j = 0; j < N; j++){
if (population[i].genes[j] == 1 ){
population[i].fitness++;
}
}
}
for (int i = 0; i < 8 ; i++){
for (int j = 0; j < i; j++){
count++;
System.out.print(population[i].genes[j]);
if ((count % N) == 0){
System.out.println("");
}
}
}
}}
个人类(class):
package geneticalgorithm;
import java.util.Random;
public class Individual {
private final int P = 20;
private final int N = 8;
int fitness;
int[] genes = new int[N];
private Object rand;
Individual() {
}
public void generateGenes(){
Random rand = new Random();
for(int i=0; i < N; ++i) {
this.setGenes(i, (rand.nextInt(2)));
}
}
public Individual(int[] genes){
this.genes = genes;
}
public int[] getGenes() {
return genes;
}
public void setGenes(int index, int genes) {
this.genes[index] = genes;
}
}
最佳答案
为了打印群体中的个体你有循环:
for (int i = 0; i < 8 ; i++){
for (int j = 0; j < i; j++){
...
System.out.print(population[i].genes[j]);
...
}
}
您不会遍历所有种群成员,也不会遍历每个个体的所有基因。相反,您应该:
for (int i = 0; i < P; i++){
for (int j = 0; j < N; j++){
System.out.print(population[i].genes[j]);
}
System.out.println();
}
关于java - 遗传算法的数组帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33068826/