深圳网站设计收费南通丰汇建设有限公司公司网站
- 作者: 五速梦信息网
- 时间: 2026年03月21日 09:19
当前位置: 首页 > news >正文
深圳网站设计收费,南通丰汇建设有限公司公司网站,西部数据网站备案流程,网站建设视频格式遗传算法与深度学习实战——生命模拟与进化论 0. 前言1. 模拟进化1.1 代码实现1.2 代码改进 2. 达尔文进化论3. 自然选择和适者生存3.1 适者生存3.2 进化计算中的生物学 小结系列链接 0. 前言 生命模拟通过计算机模拟生物体的基本特征、遗传机制、环境互动等#xff0c;试图模… 遗传算法与深度学习实战——生命模拟与进化论 0. 前言1. 模拟进化1.1 代码实现1.2 代码改进 2. 达尔文进化论3. 自然选择和适者生存3.1 适者生存3.2 进化计算中的生物学 小结系列链接 0. 前言 生命模拟通过计算机模拟生物体的基本特征、遗传机制、环境互动等试图模拟和理解生物的演化过程。我们已经学习了如何实现简单的生命模型为了进一步提升生命模拟需要模拟进化接下来通过借鉴达尔文的进化论构建升级版的生命模拟。
- 模拟进化 在本节中我们重用了简单生命模型的大部分代码并对其进行修改以模拟进化或细胞传递遗传特征的能力。在本节中我们不再使用单一特征 strength而是分配了三个新特征标记为 a、b 和 c。除此之外我们还将健康特征替换为更通用的术语——适应度 (fitness)。 1.1 代码实现 (1) 更新 create_cell 函数该函数需要接受两个输入细胞来生成一个后代。例如在模拟开始时没有父代细胞则为细胞的特征设置随机值而在有父代细胞时子代细胞的每个特征为父代双亲特征的平均值这种平均机制只是创建子代特征值的一种方式 import random import time import matplotlib.pyplot as plt from livelossplot import PlotLossesMUTATE_RNG 5 MUTATE_RATE 10def clamp(num, min_value, max_value):return max(min(num, max_value), min_value)def create_cell(parent1, parent2):if parent1 is None or parent2 is None:return dict(fitness 0,a random.randint(1, 100),b random.randint(1, 100),c random.randint(1, 100)) else: return dict(fitness 0,a (parent1[a] parent2[a])/2,b (parent1[b] parent2[b])/2,c (parent1[c] parent2[c])/2,) (2) 更新 reproduce 函数首先按适应度对父代细胞进行排序然后选择前一半作为父代(选择过程)然后循环遍历所选择的父代两次(假设每个父代双亲有两个孩子)随机选择两个父代双亲进行繁殖然后将这两个父母传递给 create_cell 函数使用两个父母的特征获得一个新的子代。最后通过 mutate 函数对细胞执行突变(有多种选择父代的方式我们将在后续的学习中看到更多选择方式) def reproduce(cells): parents sorted(cells, keylambda d: d[fitness])[int(len(cells)/2):] children [] for i in range(len(parents)*2):mates random.sample(parents, 2) children.append(create_cell(mates[0], mates[1]))return mutate(children)(3) mutate 函数能够随机修改子代特征通过使用此函数来模拟物理世界中生物体(细胞)可能发生的突变以获取超越父母的特征。突变是进化的关键因素也是地球上所有高级生命形式的根源 def mutate(cells):for cell in cells:if random.randint(1,100) MUTATE_RATE:cell[a] clamp(cell[a] random.randint(-MUTATE_RNG, MUTATE_RNG), 1, 100)cell[b] clamp(cell[b] random.randint(-MUTATE_RNG, MUTATE_RNG), 1, 100)cell[b] clamp(cell[b] random.randint(-MUTATE_RNG, MUTATE_RNG), 1, 100) return cells(4) 更新 evaluate 函数使用一个简单的方程来评估特征 a、b 和 c 的值并输出细胞的适应度。该函数在特征 a 上的权重为 2在特征 b 上的权重为一个负值而特征 c 权重为 1。进化生命模拟的目标是优化这些特征以获取高适应度个体。更高的适应度增加了繁殖的可能性将鼓励更多优秀特征的传递 def birth(offspring):return [create_cell(None, None) for i in range(offspring)]def evaluate(cells):for cell in cells:cell[fitness] 2 * cell[a] - cell[b] cell[c]return cells删除 death 函数专注于 reproduce 函数。之所以这样做是因为我们简单地假设在繁殖后所有的父母都不会进一步保留因此无需考虑细胞死亡的情况。因此我们不再关心种群数量的增长而是关注种群的繁衍。这个假设简化了模拟的过程我们的过程当然我们也可以模拟多代之间的繁殖保留父代中的优秀个体。 (5) 最后更新 run_generation 函数函数首先调用 evaluate 函数更新细胞的适应度。接下来调用 reproduce 函数产生下一代繁殖种群。之后再次调用 evaluate 函数更新新一代的适应度值 def run_generation(cells): cells evaluate(cells)cells reproduce(cells) cells evaluate(cells) return cellsgenerations 25 #param {type:slider, min:1, max:25, step:1} initial_offspring 10 #param {type:slider, min:10, max:1000, step:1} mutation_rate 10 #param {type:slider, min:1, max:100, step:1} mutation_range 20 #param {type:slider, min:1, max:100, step:1}MUTATE_RNG mutation_range MUTATE_RATE mutation_rate cells birth(initial_offspring)groups {Generation: [population,avg_fitness], Attrributes : [avg_a, avg_b, avg_c]} liveloss PlotLosses(groupsgroups)history {} for i in range(generations): cells run_generation(cells) history[population] len(cells) history[avg_fitness] sum([cell[fitness] for cell in cells])/(len(cells)1)history[avg_a] sum([cell[a] for cell in cells])/(len(cells)1) history[avg_b] sum([cell[b] for cell in cells])/(len(cells)1) history[avg_c] sum([cell[c] for cell in cells])/(len(cells)1) liveloss.update(history)liveloss.send()代码输出如下图所示。可以看到与上一节的模拟相比适应度显著提高但人口始终保持为 10 个。并且特征 a、b 和 c 都得到了明显的优化特征 a 的值明显增加特征 b 的值明显减少这是由于我们在适应度方程中定义的特征权重导致的结果。 通过将进化的概念添加到生命模拟中可以看到适应度和特征优化之间的强相关性使得修改后的模拟更加健壮和可扩展。事实上进化的概念是整个进化算法类的基础。 1.2 代码改进 可以通过完成以下问题进一步理解上示生命模拟过程 修改 evaluate 函数中的适应度计算方法重新运行模拟过程观察不同权重的优化结果在细胞中添加一个新特征 d并相应修改相关代码将突变率 MUTATE_RATE 改为介于 0 和 1 之间的值更改后重新运行代码观察突变对细胞进化的影响
- 达尔文进化论 从达尔文提出自然选择概念和理论开始对地球上的生命如何通过遗传学分享和传递选择特征的好奇驱使我们不断探索进化理论。 达尔文于 1859 年发表了《物种起源》这一开创性的作品颠覆了自然科学并成为许多自然和生物科学的基础。达尔文将自然选择理论描述为“导致所有有机生命进步的一般法则即繁殖、突变令强者生存、弱者死亡。” 根据这一法则达尔文构建了他的进化理论认为生命需要通过将更成功的特征传递给后代来繁衍。虽然他未理解细胞有丝分裂和遗传学过程但他确实总结了多个物种中特征的选择性传递。直到 1865 年孟德尔通过观察豌豆植物的七个特征提出了基因遗传理论。 孟德尔使用特征来描述我们现在称为基因的东西。近 30 年后他的工作才得到认可遗传学领域就此诞生此后基因学快速发展包括基因治疗、转基因技术等。
- 自然选择和适者生存 3.1 适者生存 “适者生存”常常被用来定义进化和进化计算但这个术语是由早期的自然学家赫伯特·斯宾塞首次提出的。但斯宾塞忽略了一个事实生存只是变化的结果。达尔文很好地解释了这个概念“生存下来的不是最强壮或最聪明的而是对变化最敏感的物种。”进化不是发展最强壮或最适合的物种而是能够最好地适应变化的物种。这意味着在实际应用中虽然我们专注于开发能产生最佳适应度的算法我们真正的目标是发展进化性变化。 在计算中通过应用进化性变化确保不仅是最适合或最优秀的个体能够得以生存这意味着需要确保种群不仅是最好的而且是最具多样性的。鼓励多样性的种群通常能够更快地解决问题。 3.2 进化计算中的生物学 进化计算借鉴了生物学和进化理论。与神经网络将深度学习 ( Deep learning, DL) 与大脑进行类比一样并非所有概念都完全等价。在多数情况下能够使用类似或匹配生物学等效的概念但为了便于理解这些生物学概念已经被大幅简化。 小结 生命模拟利用计算机模拟来模拟生命体的行为、生长和进化过程。这些模拟可以基于简单的规则和算法通过模拟生物个体的互动和繁殖探索复杂系统如何从简单规则中产生出自组织和复杂性。在本节中通过借鉴达尔文的进化论构建了升级版的生命模拟。 系列链接 遗传算法与深度学习实战——进化深度学习 遗传算法与深度学习实战——生命模拟及其应用
- 上一篇: 深圳网站设计公司费用多少网站 的建设意义
- 下一篇: 深圳网站搜索西安广告网站制作
相关文章
-
深圳网站设计公司费用多少网站 的建设意义
深圳网站设计公司费用多少网站 的建设意义
- 技术栈
- 2026年03月21日
-
深圳网站设计公司电建购物网站
深圳网站设计公司电建购物网站
- 技术栈
- 2026年03月21日
-
深圳网站设计 制作元湖南中高风险地区
深圳网站设计 制作元湖南中高风险地区
- 技术栈
- 2026年03月21日
-
深圳网站搜索西安广告网站制作
深圳网站搜索西安广告网站制作
- 技术栈
- 2026年03月21日
-
深圳网站推广优化培训wordpress 不显示时间
深圳网站推广优化培训wordpress 不显示时间
- 技术栈
- 2026年03月21日
-
深圳网站外包wordpress时间差8小时
深圳网站外包wordpress时间差8小时
- 技术栈
- 2026年03月21日

