Python 寻找一种更好的遗传算法评价方法
我目前正试图用一种不常用的方法,一种遗传算法来解决reddit上的问题 简言之,在将字符串拆分为Python 寻找一种更好的遗传算法评价方法,python,algorithm,genetic-algorithm,Python,Algorithm,Genetic Algorithm,我目前正试图用一种不常用的方法,一种遗传算法来解决reddit上的问题 简言之,在将字符串拆分为辅音和元音并删除空格后,我需要将其组合在一起,而不知道哪个字符先出现 hello world被分为hllwrld和eoo,需要重新组合。例如,一个解决方案是hlelworlod,但这没有多大意义。采用所有可能的解决方案的穷举方法是可行的,但对于较长的问题集是不可行的 我已经拥有的 英语词频数据库 一种使用齐夫定律构造相对成本数据库的算法,可以一致地将单词从没有空格的句子中分离出来(借用自 一种方法,
辅音
和元音
并删除空格
后,我需要将其组合在一起,而不知道哪个字符先出现
hello world
被分为hllwrld
和eoo
,需要重新组合。例如,一个解决方案是hlelworlod
,但这没有多大意义。采用所有可能的解决方案的穷举方法是可行的,但对于较长的问题集是不可行的
我已经拥有的
- 英语词频数据库
- 一种使用齐夫定律构造相对
数据库的算法,可以一致地将单词从没有空格的句子中分离出来(借用自成本
- 一种方法,将辅音和元音放在一个堆栈中,从其中任意一个字符中随机抽取一个字符,并将其编码为一个由
和1
组成的字符串,有效地将结构编码为2
。例如,正确的gene
是gene
1211212111
- 一种对这样的字符串进行变异,随机交换字符的方法
推断空间()生成500个随机序列
方法和用所有单词的成本评估适合度,从中选择最好的25%并变异4个新单词,适用于小字符串,但经常陷入局部极小值,特别是对于较长的序列。Hello World已经出现在第一代中,这不是很好
(正确分离,成本为41.223
)聚合到第二代的iss n ti wo或king v rye good(270成本)
我需要什么
显然,使用计算成本作为评估方法只适用于语法正确的句子分离,而不适用于这种遗传算法。你有更好的想法我可以尝试吗?或者是解决方案的另一部分,例如基因的表示,问题?假设你有几个一代一代,你为每一代的<强>最佳<强>样本绘制代价(我们考虑长句)。这个图是在2-3个世代之后下降或收敛到一个特定的值(让算法运行10代)吗?你可以用不同的初始条件(随机序列)运行你的算法数次吗?看看你有时会不会得到好的结果 根据结果,您可以尝试以下方法(此图是提高性能的非常好的工具): 1) 如果你有一张图表,它总是上下波动太大——你有太多的突变(例如,每个基因的平均交换数),试着减少它 2) 如果你坚持一个局部最小值(一段时间后,最佳样本的成本不会有太大变化),试着增加变异或在算法开始时运行几个孤立的种群(3-4个),比如说100个物种。然后选择最好的种群(接近全局最小值),并尝试通过变异来尽可能地改善它
PS:顺便说一句,有趣的问题是,我试图找出如何使用交叉来改进算法,但还没有找到答案,我将把问题简化为两部分