问题标签 [genetic-programming]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
648 浏览

java - 需要帮助解决遗传算法的问题

我有这个程序可以模拟两支球队之间的足球点球。

- 目标是 24 x 8,坐标 (0,0) 在左下角。

-每队有5名踢球手和1名守门员(为了方便,我将2队称为A队和B队)

-A队 - 踢球者有5种策略(每个人一个),守门员有5种策略(因为他需要B队的每个踢球者的策略)

-B队-踢球者有5种策略(每个人一个),守门员有5种策略(因为他需要A队的每个踢球者的策略)

  • 踢球者的策略是坐标 (x,y) 和功率值。坐标是踢的位置,力量是踢的强度。(稍后我将详细解释 Power 属性)。例如,每个 kicker 输入策略如下:(1,2) 100 或 (24,7) 25

  • 守门员的策略是一个坐标和一个 +Width 和 +Height 值。守门员覆盖区域是一个矩形,其左下角为(x,y)位置,右上角为(x+width,y+height)。例如, (3,4) 5 5 他的左下角坐标在 (3,4) 并且 (3+5,4+5) 是他的矩形右上角(覆盖区域)。

  • 覆盖区域的最大范围是目标区域的 25%(程序将检查这一点)

  • 功率:0-24;kick 不会出错;踢击守门员覆盖区域 100% 节省力量:24-49 踢将有 10% 的失误(-/+10% 的 coor);90%省电:50-75踢会有20%的误差;80%省电:76-100踢会有30%的误差;节省 50%

输入示例:功率必须为 0-100,所有其他值必须为正整数,其中 0-(2^7-1) 球队 A 踢球者:(14,3) 25 守门员:(2,3) 4 4 (3,5 ) 50 门将:(1,1) 5,5 依此类推...

B 队: 踢球手:(9,3) 75 守门员:(1,2) 5 5 (3,13) 100 守门员:(2,3) 6 6(假设这不会超过球门面积的 25% 等等在 ....

好的,那是模拟器程序

现在我需要创建一个 GA,为模拟器提供最佳团队策略。

让我们简化问题,以便每个人都可以对其进行概念化:

输入:-population(随机创建 n 支球队,例如,如果 n=5,则随机创建 5 支球队,每支球队的属性包括 5 个踢球者的战术,5 个守门员的战术)

输出: - 最佳球队策略(每支球队将互相比赛,并为下一次迭代选择最佳球队,记住每支球队有 5 个踢球者的战术,5 个守门员的战术)

所以我最终在 n 个人口的领域寻找 1 个解决方案

我的问题是如何开始编码解决方案。我应该将解决方案编码为团队还是球员/守门员对?

例如,将其编码为团队: Chromosome:= [player1, player2, player3, player4, player5, goalkeeper1, goalkeeper2, goalkeeper3, goalkeeper4, goalkeeper5]

或将其编码为球员/守门员对:

像这样编码的问题是我必须在最后得到 5 个最佳球员/守门员组合才能组成一个团队。

另一个问题是二进制和值编码。假设我要与球员/守门员配对,这样的值编码会[x,y,power,x,y,weight,height] = [2,3,100,3,3,4,5]比二进制表示更有意义[0010, 0011, 1100100, 0011, 0011, 0100, 0101] = [0010 0011 1100100 0011 0011 0100 0101].吗?我认为交叉和变异将其表示为二进制更容易,不是吗?

我只是想收集想法,所以我有地方开始。

提前致谢

0 投票
14 回答
8832 浏览

algorithm - 是什么阻碍了基因编程?

我已经非常成功地完成了大量关于遗传算法的工作,但迄今为止忽略了遗传编程。据我所知,大多数程序仍然由程序员编写,我很想知道是什么阻碍了基因编程?

我想到的一些可能的解释是:

  1. 搜索空间太大,无法在噪音中找到有用的程序
  2. 大多数实际应用程序无法提供足够的数据来对此类空间进行适应性评估。
  3. 很难将许多实际应用程序的功效降低到单一的适应度度量。换句话说,编写一个合适的适应度函数可能需要与编写实际程序相同的工作量。

有任何想法吗?

0 投票
1 回答
2812 浏览

c# - 在车辆路径问题中使用图论

我正在处理单个站点的车辆路线问题。问题定义如下。有 n 个车辆需要前往 m 个站点。每个站点都有其特定的限制,例如只有具有一定容量的车辆才能为站点提供服务,某些站点需要在一天中的特定时间提供服务。此外,车辆将具有不同的容量,并且将具有不同的开始和结束时间。

这个想法是为了最大限度地减少车辆从仓库出发的旅行时间。

我正在为该问题构建成本矩阵。虽然不是图论专家,但我知道如果问题落入经典的旅行推销员问题,我可以使用哈密顿循环来解决问题。但是,因为它属于多次旅行推销员问题,我想知道如何使用哈密顿循环来解决这个问题,或者是否有另一个专门针对此类问题设计的过程?

任何帮助将非常感激。

0 投票
4 回答
4294 浏览

c++ - C++ 中的遗传算法优化

我正在寻找添加或省略代码的有效方法,以帮助我的遗传算法程序更快地返回结果。该程序的目标是接受一个字符串并创建尽可能匹配的其他字符串。无论哪个新制作的字符串与最接近(前 5 个)匹配的字符串都与其他字符串匹配并产生后代(其中一些具有将新随机数放入字符串而不影响长度的突变)。这一切都很好,但是要使一些较长的字符串(4 及以上)完美匹配,需要数代人。对不起 tl;dr 长度,但这是我当前的代码。批评走开!

0 投票
1 回答
846 浏览

operators - 遗传算法中有哪些不同的低级算子?

对于我的考试,我想详细说明不同的低级 GA 运算符。但是我发现不同的文本说不同的低级运算符。

David E. Goldberg列出的搜索、优化和机器学习中的遗传算法

  • 支配地位
  • 倒置
  • 染色体内重复
  • 删除
  • 易位
  • 隔离

作为low-level运营商。

并将移民、婚姻限制和种族隔离列为higher level population oriented operators

但其他一些文本,如神经网络、模糊逻辑和遗传算法:S. Rajashekaran 和 GA Vijayalksmi 的综合和应用包括低级算子的迁移。

low-level这和high-level运营商有什么区别。

0 投票
1 回答
1323 浏览

java - 遗传算法:请求优化

我是遗传算法的新手,我被分配实施遗传算法来优化药房每个工作日的请求顺序。首先,让我解释一下问题:

有 9 个家庭要求在工作周的任何一天(周一至周五)参加。药房每天只能接诊1到3个家庭,不能多也不能少,而且同一周不能重复任何家庭。主要目标是优化每个家庭的最佳就诊日,这样,药房每周处理最多的请求,并对问题施加限制。优化算法的输入是每个家庭发出的每个请求数的年平均值。例如:

(让我们只使用 3 个系列,以简化示例):

输入:

        | 星期一 | 周二 | 周三 | 星期四 | 周五
F1 | 10 | 20 | 2 | 0 | 7
F2 | 20 | 12 | 0 | 1 | 2
F3 | 2 | 0 | 0 | 19 | 3

可能的解决方案:

| 星期一 | 周二 | 周三 | 星期四 | 周五
| | F2 | F1 | F3 |

到目前为止,我一直在研究遗传学和遗传算法的整个概念。我研究了粒子群优化,但由于我的时间很短,我决定使用一个框架。我正在使用 JGAP,但我的主要问题是我如何提出潜在的解决方案?我的意思是,我应该如何组织染色体上用于交配、繁殖等的基因……?我已经开发了一个适应度函数,但我无法按照我想要的方式对基因进行编码。有什么建议么?

0 投票
4 回答
1214 浏览

c++ - 如何在 C++ 中创建一个包含不同类型函数指针的容器?

我正在做一个线性遗传编程项目,其中程序是通过自然进化机制培育和进化的。他们的“DNA”基本上是一个容器(我已经成功地使用了数组和向量),其中包含指向一组可用函数的函数指针。现在,对于简单的问题,例如数学问题,我可以使用一个类型定义的函数指针,它可以指向所有返回双精度并且都以两个双精度为参数的函数。

不幸的是,这不是很实用。我需要能够有一个容器,它可以有不同类型的函数指针,比如一个指向不带参数的函数的函数指针,或者一个带一个参数的函数,或者一个返回某些东西的函数等(你得到主意)...

有没有办法使用任何类型的容器来做到这一点?我可以使用包含多态类的容器来做到这一点,而多态类又具有各种函数指针?我希望有人可以指导我找到解决方案,因为重新设计我迄今为止所做的一切都会很痛苦。

0 投票
4 回答
1280 浏览

simulation - 什么是会产生有趣/令人惊讶的结果并且没有无聊/明显的终点的遗传算法?

我发现像这样的遗传算法模拟非常迷人,我认为自己制作会很有趣。但大多数像这样的模拟的问题在于,它们通常只是爬山到一个可预测的理想结果,而这种结果本可以在人类指导下很容易地制作出来。一个有趣的模拟会有无数不同的解决方案,这些解决方案彼此之间会有很大的不同,并且会让观察它们的人感到惊讶。

那么我将如何尝试创建类似的东西呢?期望实现我所描述的目标是否合理?有没有我可以从中汲取灵感的“标准”模拟(从某种意义上说,生活游戏是标准化的)?

0 投票
2 回答
409 浏览

c++ - 在 Visual Studio 2010 中编译 c++ 程序时出错

我无法在 Visual Studio 2010 中编译我的以下 c++ 程序。我已经有相同代码的工作版本,所以我知道代码是正确的。但我不知道它是什么或如何编译的。

因此,如果有人可以复制代码并尝试在 VS 2010 中编译它,我将不胜感激。

代码:

http://codepad.org/4VtrVBdK

好的,我根据下面的评论进行了编辑。现在唯一似乎仍然存在的问题与对重载函数的调用有关。那么该怎么做呢?

0 投票
3 回答
3564 浏览

algorithm - 遗传编程和搜索算法

遗传编程目前是否能够将一种搜索算法演变为另一种搜索算法?例如,是否有任何实验曾经从 QuickSort 培育/变异 BubbleSort(参见http://en.wikipedia.org/wiki/Sorting_algorithm