Jenetics使用问题:如何解析染色体并获取旅行商问题解的点集与顺序?
解决方法
你现在直接打印Phenotype对象输出的乱码是double数组的默认toString返回的对象内存地址,要获取有序的最优路径点集,按以下步骤修改即可:
- 用你定义的Problem实例的codec对最优基因型做解码,直接得到按最优路径排列的点序列
- 遍历该序列打印每个点的x、y坐标,不要直接打印double数组本身
代码修改
在你现有run方法的System.out.println(best);后面添加如下代码:
// 解码得到最优路径的有序点集 ISeq<double[]> bestPath = encotrarRuta.codec().decode(best.genotype()); // 输出结构化结果 System.out.println("最短路径总长度:" + best.fitness()); System.out.println("路径点排列顺序:"); for (int i = 0; i < bestPath.size(); i++) { double[] point = bestPath.get(i); System.out.printf("第%d个点:x = %.4f, y = %.4f%n", i + 1, point[0], point[1]); }
内容的提问来源于stack exchange,提问作者leon kennedy
相关产品推荐
相关产品推荐

