JAVA遗传算法初始化

JAVA Genetic Algorithm initialization

我正在尝试研究 TSP 遗传算法。我是 GA 的新手,我已经阅读了很多关于它的文档。我知道它需要创建初始化,然后找出每个人的适应度,然后进行变异等等。但是,我对 JAVA 编程真的很陌生。我不确定如何创建初始化(将所有人口个体初始化为所有有效旅游而不重复)。 P.s。一些资源代码和在线教程对我来说太难了。

这就是我到目前为止所得到的。请指出我需要什么,我做错了什么以及我还需要在代码中添加什么。

private void initialize(){

for(int i =0; i< population.length; i++){


  for(int j =0; j < population[i].length; j++){

  }
 }

您的问题与一般的遗传算法关系不大,而与初始化 Java 中的排列集合有很大关系。

通常,TSP 的答案被编码为要访问的城市列表。因此,对于 4 个城市,这可能看起来像 [0, 1, 2, 3],意思是 "visit the first, then the second, then the third, and then the fourth"。 所有有效答案都是此基本答案的排列。。如果你对往返感兴趣(你最终从最后一个城市到第一​​个城市),那么你可以通过只洗牌最后 N-1 个元素来避免一些对称。

让我们编写 Java 中的简单排列方法:

// initialize an ArrayList of n integers, from 0 to N-1
ArrayList<Integer> base = new ArrayList<>();
for (int i=0; i<n; i++) base.add(i);

// initialize each answer to a permutation of the base answer
Random r = new Random(); // use a seed if you want repeatable runs
for (Individual p : population) {
  int[] perm = new int[base.size()];
  Collections.shuffle(base, r);
  base.toArray(perm);
  p.setAnswer(perm);
}

我假设您使用实际的 Individual 对象,而不是 int 的二维数组,这些对象不仅包含答案,还包含适应度和其他属性。