标签: genetic-algorithm

遗传算法中的轮盘选择

任何人都可以为轮盘选择功能提供一些伪代码吗?我该如何实现这个:

替代文字

我真的不明白如何阅读这个数学符号.我从未接受过任何概率或统计数据.

roulette-wheel-selection genetic-algorithm evolutionary-algorithm

37
推荐指数
5
解决办法
5万
查看次数

您是否曾在实际应用中使用过遗传算法?

我想知道在商业代码中找到遗传算法方法是多么常见.

在我看来,某些类型的调度程序可以从GA引擎中受益,作为主算法的补充.

genetic-algorithm

36
推荐指数
3
解决办法
1万
查看次数

是否有一种有效的手写文本分割算法?

我想通过线条(以及将来的文字)自动划分古代手写文字的图像.

第一个明显的部分是预处理图像......

我只是使用简单的数字化(基于像素的亮度).之后我将数据存储到二维数组中.

下一个显而易见的部分是分析二进制数组.

  1. 我的第一个算法很简单 - 如果数组的一行中的黑色像素多于最大值最小值的均方根,则该行是行的一部分.

    在形成线条列表后,我切断了高度低于平均值的线条.最后它变成了某种线性回归,试图最小化空行和文本行之间的差异.(我以为这个事实) 第一个结果

  2. 我的第二次尝试 - 我尝试使用GA和几个健身功能.染色体包含3个值 - xo,x1,x2.xo [-1; 0] x1 [0; 0.5] x2 [0; 0.5]

确定行到行的同一性的函数是(xo +α1x1+α2x2)> 0,其中α1是行中黑色像素的缩放和,α2是行中极端黑色像素之间的范围的中值.(a1,a2 [0,1])我试过的另一个函数是(x1 <α1或x2>α2)(1/xo + [a1 x1]/[a2 x2])> 0 最后一个函数是最多的高效. GA的结果 适应度函数是 (1 /(HeigthRange + SpacesRange))

范围是最大值和最小值之间的差异.它代表了文本的同质性.此功能的全局最佳 - 将图像划分为线条的最平滑方式.

我使用C#和我的自编码GA(经典,2点交叉,灰色代码染色体,最大群体为40,突变率为0.05)

现在我没有想法如何将这个图像分成几行,精度达到100%.

这样做的有效算法是什么?


更新: 原始图像 原始BMP(1.3 MB)


更新2: 将此文本的结果改进为100% Nev结果

我是怎么做到的:

  • 修复范围计数中的小错误
  • 将健身功能改为1 /(distanceRange + 1)*(heightsRange + 1))
  • 将分类函数最小化为(1/xo + x2 /范围)> 0(行中的点现在不影响分类)(即优化的输入数据并使适应度函数优化更明确)

问题:

问题

GA令人惊讶地未能认识到这一点.我看了'find rages'函数的调试数据,发现在'无法识别'的地方有太多的噪音.功能代码如下:

public double[] Ranges()
{ …
Run Code Online (Sandbox Code Playgroud)

c# algorithm ocr image-processing genetic-algorithm

33
推荐指数
2
解决办法
3346
查看次数

遗传算法生成代码

进化编程似乎是解决许多优化问题的好方法.这个想法非常简单,实施不会产生问题.

我想知道是否有任何方法可以进化创建ruby/python脚本(或任何其他语言)的程序?

这个想法很简单:

  1. 创建一个程序群
  2. 执行遗传操作(轮盘赌选择或任何其他选择),创建新程序,继承最佳程序等.
  3. 循环点2直到找到满足我们条件的程序

但仍然存在一些问题:

  1. 如何表示染色体?例如,染色体的一个细胞是否应该是一行代码?
  2. 染色体将如何产生?如果它们是代码行,我们如何生成它们以确保它们在语法上是正确的等等?

可生成的程序示例:

创建以N个数字作为输入并将其均值作为输出返回的脚本.

如果有任何尝试创建此类算法,我会很高兴看到任何链接/来源.

algorithm code-generation genetic-programming genetic-algorithm evolutionary-algorithm

30
推荐指数
4
解决办法
1万
查看次数

用于在图像上布置标签的建议算法/方法

给定一个图像和一组标签附加到图像上的特定点,我正在寻找一种算法,以一定的约束将标签布局到图像的两侧(每侧标签大致相同,标签大致等距离,将标签连接到各自的点,没有线交叉的线.

现在,通过按Y坐标(它们所指的点)对标签进行排序,通常可以非常天真地找到近似解决方案,如本例所示(仅限概念证明,请忽略实际数据的准确度等)!

现在为了满足没有过境的条件,我想到了一些想法:

  • 使用遗传算法找到没有交叉的标签的排序;
  • 使用另一种方法(例如动态编程算法)来搜索这样的排序;
  • 使用上述算法之一,允许间距和排序的变化,找到最小化交叉数和从均匀间距变化的解决方案;
  • 也许有一些标准我可以用来在某些标准内粗略搜索标签的每个可能的排序(如果它们的距离大于X,不要重新排序两个标签);
  • 如果所有其他方法都失败了,只需尝试数百万的随机排序/间距偏移,并选择一个给出最小交叉/间距变化的偏移量.(优点:直接进行编程,可能会找到一个足够好的解决方案;虽然不是一个显示停止的轻微劣势:也许不能在应用程序中动态运行它,以允许用户更改图像的布局/大小. )

在我开始其中之一之前,我会欢迎其他人的意见:有其他人遇到过类似问题并有任何信息来报告上述任何方法的成功/失败,或者他们是否有更好的/更简单的解决方案,我没有发生?感谢您的输入!

sorting algorithm dynamic-programming backtracking genetic-algorithm

27
推荐指数
5
解决办法
1912
查看次数

遗传算法中的交叉效率

我已经实现了许多遗传算法来解决各种问题.但是我仍然对交叉/重组的有用性持怀疑态度.

我通常在实现交叉之前首先实现变异.在我实施交叉之后,与简单地使用突变并在每一代中引入一些随机个体以确保遗传相比,我通常不会看到产生良好候选解决方案的速率显着提高.

当然,这可能是由于交叉函数和/或概率的选择不当,但我想得到一些具体的解释/证据,说明为什么/是否交叉改善了GA.有没有关于此的研究?

我理解它背后的原因:交叉可以将两个人的优势结合成一个人.但对我来说,就像说我们可以交配科学家和美洲虎来获得智能和快速的混合动力.

编辑:在mcdowella的回答中,他提到了如何找到一个案例,从多个起点爬山可以改善交叉是非常重要的.有人可以详细说明这一点吗?

algorithm genetic-algorithm

26
推荐指数
3
解决办法
3029
查看次数

最佳拟合调度算法

我正在编写一个带有困难编程问题的调度程序.有几个事件,每个事件都有多个会议时间.我需要找到会议时间的安排,以便每个时间表包含任何给定事件一次,使用每个事件的多个会议时间之一.

显然我可以使用蛮力,但这很少是最好的解决方案.我猜这是一个相对基本的计算机科学问题,一旦我开始学习计算机科学课程,我就会学到这些问题.与此同时,我更喜欢任何我可以阅读的链接,甚至只是我可以谷歌的名字.

algorithm scheduling genetic-programming genetic-algorithm

25
推荐指数
2
解决办法
2万
查看次数

遗传算法和遗传编程有什么区别?

我想对遗传算法和遗传编程之间的差异做一个简单的解释(没有太多的编程术语).例子也将不胜感激.

显然,在遗传编程中,解决方案是计算机程序.另一方面,遗传算法将解决方案表示为一串数字.还有其他差异吗?

terminology genetic-programming genetic-algorithm

25
推荐指数
2
解决办法
2万
查看次数

如何选择整数线性编程求解器?

我是整数线性编程的新手.我计划使用整数线性编程求解器来解决我的组合优化问题.我更熟悉IDE上的C++ /面向对象编程.现在我使用NetBeans和Cygwin一起编写我的应用程序.

我可以问一下,对我来说是否有一个简单易用的ILP求解器?或者这取决于我想解决的问题?我正在尝试做一些资源映射优化.如果需要任何进一步的信息,请告诉我.

非常感谢,Cassie.

c++ algorithm linear-programming genetic-algorithm graph-algorithm

24
推荐指数
4
解决办法
2万
查看次数

什么是遗传算法或遗传编程中的交叉概率和突变概率?

什么是遗传算法或遗传编程中的交叉概率和突变概率?有人可以从实施角度解释它们!

genetic-programming genetic-algorithm

24
推荐指数
3
解决办法
4万
查看次数