我正在尝试为我正在研究的遗传算法创建不同的选择方法,但我在所有选择方法中遇到的一个问题是我的每个节点的适应性必须不同.这对我来说是一个问题,因为我的健身计算器非常基本,并且会产生几个相同的健身

public static Map calculateRouletteSelection(Map population) {

String[] keys = new String[population.size()];

Double[] values = new Double[population.size()];

Double[] unsortedValues = new Double[population.size()];

int index = 0;

for(Map.Entry mapEntry : population.entrySet()) {

keys[index] = mapEntry.getKey();

values[index] = mapEntry.getValue();

unsortedValues[index] = mapEntry.getValue();

index++;

}

Arrays.sort(values);

ArrayList numbers = new ArrayList<>();

while(numbers.size() < values.length/2) {

int random = rnd.nextInt(values.length);

if (!numbers.contains(random)) {

numbers.add(random);

}

}

HashMap finalHashMap = new HashMap<>();

for(int i = 0; i

for(int j = 0; j

if(values[numbers.get(i)] == unsortedValues[j]) {

finalHashMap.put(keys[j], unsortedValues[j]);

}

}

}

return finalHashMap;

}

我所有不同的选择方法中有90%是相同的,所以我敢肯定,如果我能解决它,我可以为所有人解决它.

对我所做错的任何帮助都将不胜感激

编辑:我看到我的意思是发布正在发生的事情的一般行为,所以基本上该方法接受HashMap<>,根据它们的适应性对值进行排序,随机选取一半排序值并将这些值添加到新的HashMap<> ;与他们相应的染色体.

最佳答案 我认为你使用集合类会好得多.

List> sorted = new ArrayList<>(population.entrySet());

// sort by fitness

Collections.sort(sorted, Comparator.comparing(Map.Entry::getValue));

Set usedIndices = new HashSet<>(); // keep track of used indices

Map result = new HashMap<>();

while (result.size() < sorted.size()/2) {

int index = rnd.nextInt(sorted.size());

if (!usedIndices.add(index)) {

continue; // was already used

}

Map.Entry survivor = sorted.get(index);

result.put(survivor.getKey(), survivor.getValue());

}

return result;

但是,正如谢尔盖所​​说,我不相信这是你的算法所需要的;你需要支持健身更高的人.

轮盘算法 java_java – 使用轮盘选择的遗传算法相关推荐

  1. 输入法按照选字频率排序的C语言程序算法,算法与数据结构之选择排序(C语言)...

    #include #include void SelectSort(int *a,int n);//预声明要调用的函数 int main(void) { int k; int x[]={,,,,,,, ...

  2. 机器学习Top10算法,教你选择最合适的那一个!

    本文经AI新媒体量子位(公众号ID:qbitai )授权转载,转载请联系出处 本文共3800字,建议阅读6分钟. 选什么算法?本文为你梳理TOP10机器学习算法特点. 在机器学习领域里,不存在一种万能 ...

  3. 【机器学习】机器学习Top10算法,教你选择最合适的那一个!一文读懂ML中的解析解与数值解...

    在机器学习领域里,不存在一种万能的算法可以完美解决所有问题,尤其是像预测建模的监督学习里. 比方说,神经网络不见得比决策树好,同样反过来也不成立. 最后的结果是有很多因素在起作用的,比方说数据集的大小 ...

  4. 5中排序算法(冒泡,选择,插入,快速,归并)

    1冒泡排序 比较相邻的元素,将小的放到前面,(每一轮找出数组中最大的放在后面,后面排好序的数组元素不参与下轮排序). 下面将数组[7,8,5,1,3]里面的元素进行排序. 7 8 5 1 3 1.1: ...

  5. 算法---宝藏最优选择问题

    贪心算法-宝藏最优选择问题 原理参考趣学算法 代码: #include"quickSort1.h" 快速排序代码 int quickSort1(int a[], int l, in ...

  6. 算法一之简单选择排序

    一.  选择排序的思想 选择排序的基本思想是:每一趟在n-i+1(i=1,2,-n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录.基于此思想的算法主要有简单选择排序.树型选择排序和堆排序. ...

  7. 【简单排序算法】:简单选择排序、直接插入排序和冒泡排序

    [简单排序算法]:简单选择排序.直接插入排序和冒泡排序 简单选择排序: 原理:设所排序序列的记录个数为n.i取1,2,-,n-1,每次从所有n-i+1个记录(Ri,Ri+1,-,Rn)中找出最小的记录 ...

  8. 蛮力法查找有序数列c语言,算法——蛮力法之选择排序和冒泡排序c++实现

    这次实现的是蛮力法中的两个例子,选择排序法和冒泡排序法,使用的编译环境是vs2013,下面对这两个算法做一个简单介绍,然后是两个算法的c++实现代码. 选择排序法比较的范围是整个列表,每次扫描结束找出 ...

  9. 机器学习100天(三十):030 K近邻分类算法-K值的选择

    机器学习100天,今天讲的是:K近邻分类算法-K值的选择. <机器学习100天>完整目录:目录 上一节我们讲了 K 折交叉验证的理论,下面我们将 K 折交叉验证算法应用到 K 近邻分类算法 ...

最新文章

  1. 用聚类方法结合卷积网络,实现无监督端到端图像分类
  2. python xpath语法-XPath语法和lxml模块(数据提取)
  3. 创建型设计模式(单例模式)
  4. EXCEL 中找出两个sheet相同列
  5. 怎么去掉vux点击group产生的阴影
  6. js中const,var,let区别与用法
  7. mac 下配置连接Linux服务器方法,上传下载文件操作
  8. python123作业怎么提交_python分析作业提交情况
  9. TomatoLog-1.1.0实现ILoggerFactory
  10. 关于Docker官方CentOS镜像无法启动mysqld的总结
  11. 利用posix_fadvise清理系统中的文件缓存
  12. 学习Nginx,看这篇就就好了!(多图详解)
  13. 协方差检验用在什么地方_胶带还有什么隐藏功能,看看这几个,家里很多地方用得到...
  14. ccccccccccccccccccccc
  15. 饥荒独立服务器在线模式收不到,Windows 服务器搭建Don’t Starve Together饥荒独立服务器教程...
  16. NRF52832 SPI 资料收集
  17. wordpress创建_您可以使用WordPress创建的19种网站类型
  18. 机器人,给我来一瓶82年的农夫山泉
  19. 强推win10损害用户利益?这锅微软不背
  20. C语言 投票系统:给定候选人,从键盘输入候选人的名字,统计票数,并输出最终获胜者...

热门文章

  1. html文本框 控件,标签和文本框都用于显示文本
  2. 优秀案例|App内弹窗界面设计灵感
  3. UI干货素材分享|导航设计
  4. token 微信access 过期_如何设计 QQ、微信等第三方账号登陆 ?以及设计数据库表!...
  5. oracle 10g的进程主要分为,Oracle10g 后台进程列表
  6. QTableWidget item设置不可以选中和编辑状态
  7. Dentry negativity/negative dentry
  8. Kafka和RocketMQ底层存储:零拷贝技术
  9. Cuda:invalid device pointer
  10. python图书管理系统增删改查_图书管理系统---增删改查