java - 遗传算法的数组帮助

标签 java arrays algorithm class object

所以我正在构建一个遗传算法,基本上从创建一个个体群体开始,每个个体在一个数组中有 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/

相关文章:

java - Open Liberty 下 mpRestClient 证书身份验证握手失败

javascript - 在数组 JS 中多次使用 trim

php - "iterate"单个对象或 php 对象的索引等价物

java - 字符串数组[0]不通过if

java - 将 JButton 数组添加到 JFrame 时出现 NullpointerException

java - Tesseract-ocr 在与 alfresco 5.0.d 集成后无法正常工作

c++ - 算法和算法性能的缺陷

java - 像链一样左移数组

algorithm - 是否有一种不需要 BigInteger 类型的算法来计算 x modulo y(对于 y < 1000)的乘法阶数?

java - 将元素的数量与 ArrayList 中的数字相匹配