-
遗传算法的示例如下:
求解函数 f(x) x 10 sin(5 x) 7 cos(4 x) 的最大值,区间为 0,9。
为了解决函数最大值问题,一般选择二进制编码:
实数编码:直接用实数来表示基因,通俗易懂,不需要解码过程,但容易过早收敛,从而落入局部最优;
二进制编码:稳定性高,种群多样性大,但需要大存储空间,需要解码且难以理解。
以目标函数 f(x) x 10sin(5x) 7cos(4x), x 0,9 为例。
将解的精度设置为小数点后4位,x的解空间可以分成(9 0) (1e 4) 90000等份。
需要 2 16 90000 2 17、17 二进制数来表示这些解决方案。 换句话说,解决方案的编码是 17 位二进制字符串。
这些二进制字符串是随机生成的。 一个这样的二元字符串代表一串染色体,这里染色体串的长度是 17。 对于任何这样的染色体,将其恢复(解码)到区间 0,9。
以下公式可用于解码:
x 0 decimal(染色体) (9 0) (2 17 1)decimal( ) 将二进制数转换为十进制数。 )
通用译码公式:
f(x), x 下界, 上界 x 下界 decimal(染色体) (上界下界) (2 染色体大小 1)f(x), x 下界, 上限 x 下界 decimal(染色体) (上界下界) (2 染色体大小 1) 下界: 函数定义的域的下界。
上限:函数定义的域上限。
染色体大小:染色体的长度。
使用上面的公式,我们可以成功地将二进制染色体字符串解码为 0,9 区间内的十进制实数解。
-
最近,我开发了一款模型识别软件,发现它在计算速度方面需要优化,于是我寻找优化相关的算法,这两天在网上搜索了遗传算法的信息,记录了我对遗传算法的理解。
遗传算法通过模拟自然界中生物种群的进化过程,通过选择、交叉、突变等机制,在一定范围内的解空间内找到最优解。 在遗传算法中,通过适应度函数(可看作是目标函数的变形)来评估单个(解)与最优解之间的近似值,设计适应度函数在某种意义上与问题本身的目标函数呈线性相关。
遗传算法的组成部分:
1.编码。 解空间中的元素以某种编码方式(通常是二进制数)表示。
2.初始化填充。 选择总体大小(每次迭代期间需要计算和评估的解决方案数)并随机填充。
3.健康。 种群根据适应度函数进行排名。
4.遗传操作员。 也就是说,通过选择、杂交和突变,产生下一代种群。
5.根据终止判断规则,判断是找到了最优解还是循环继续。
以下是几个问题:
遗传算法的优点是不需要在解空间中对每个解进行计算和比较,在一定程度上优化了计算速度,但收敛速度是随机的。 这里我还是有一些关于遗传算法的问题:如果解空间的尺度不是很大,比如几百个,那么如果选择的种群太大,就可以在一次或两次迭代中迭代空间中几乎所有的元素,这与顺序遍历没有什么区别; 如果选择的总体太小,算法是否会因为交叉和突变操作的基数小而停滞不前?
后代与父母完全相同)。
选择(以轮盘选择法为例)不等价于选择亲代种群规模的数量,产生后代,然后重复后代中适应度较高的解,拟合度越高,还款概率越大。 是否需要剔除重复项,然后从解决方案空间中随机填充? 还是要保留重复项?
如何处理以相同方式和变体发生的重复项? )
另外,如何终止判决规则,如何判定?
-
由于遗传算法的整体搜索策略和优化搜索方法在计算中不依赖梯度信息或其他辅助知识,而只需要影响搜索方向的目标函数和相应的适应度函数,遗传算法为求解复杂系统问题提供了一个通用框架,它不依赖于问题的特定领域,对问题的类型具有很强的鲁棒性, 因此,它被广泛应用于许多科学领域。
主要应用领域: 1、函数优化函数优化是遗传算法的经典应用领域。 对于一些非线性、多模型、多目标的函数优化问题,用其他优化方法很难求解,但遗传算法可以很容易地获得更好的结果。
2.组合优化随着问题规模的增大,组合优化问题的搜索空间也急剧增加,有时在当前计算中很难通过枚举方法找到最优解。 对于如此复杂的问题,人们已经意识到,主要关注点应该放在找到令人满意的解决方案上,而遗传算法是找到这种令人满意的解决方案的最佳工具之一。
先天性斜视一般有家族遗传因素,斜视可发生在出生后或出生后6个月内,偏角一般很大,多表现为远视屈光,仅戴眼镜无法矫正,并且没有先天性单眼病症,对视觉功能危害最大。 >>>More
你好! 风湿病在医学上是指关节及其周围软组织中不明原因的慢性疼痛。 风湿性疾病是指一大类疾病**,这些疾病各不相同,但关节和周围软组织(包括肌肉、韧带、滑囊和筋膜)有一个共同点。 >>>More
基因(gene,孟德尔因子)是指携带遗传信息的DNA或RNA序列,又称遗传因子,是控制性状的基本遗传单位。 >>>More