惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Heimdal Security Blog
P
Privacy International News Feed
S
Schneier on Security
P
Proofpoint News Feed
L
Lohrmann on Cybersecurity
Spread Privacy
Spread Privacy
P
Privacy & Cybersecurity Law Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Scott Helme
Scott Helme
K
Kaspersky official blog
大猫的无限游戏
大猫的无限游戏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
aimingoo的专栏
aimingoo的专栏
Simon Willison's Weblog
Simon Willison's Weblog
S
Securelist
Help Net Security
Help Net Security
B
Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Security Archives - TechRepublic
Security Archives - TechRepublic
云风的 BLOG
云风的 BLOG
The GitHub Blog
The GitHub Blog
N
News and Events Feed by Topic
Hacker News: Ask HN
Hacker News: Ask HN
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
M
MIT News - Artificial intelligence
雷峰网
雷峰网
博客园 - 司徒正美
V
V2EX
AWS News Blog
AWS News Blog
Know Your Adversary
Know Your Adversary
N
News | PayPal Newsroom
T
Tor Project blog
Cisco Talos Blog
Cisco Talos Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
PCI Perspectives
PCI Perspectives
Google DeepMind News
Google DeepMind News
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
U
Unit 42
C
Cybersecurity and Infrastructure Security Agency CISA
P
Palo Alto Networks Blog
G
Google Developers Blog
T
Threat Research - Cisco Blogs
博客园 - Franky
I
InfoQ
D
DataBreaches.Net
爱范儿
爱范儿
Y
Y Combinator Blog
博客园 - 叶小钗
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

Long Luo's Life Notes

夏至日测地球:利用太阳影子计算地球半径 太阳温度是怎么计算出来的? 《大象的时间,老鼠的时间》读书笔记:生命节奏背后的数学规律 小港流到哪里去? 如何用一根棍子测出地球有多大?复刻埃拉托色尼的春分实验 2007江苏高考数学第20题解析:一道通向黄金分割数的数列压轴题 Google经典面试题: 鸡蛋应该怎么扔? 2010年江苏高考数学压轴题解析:巧用余弦定理与数学归纳法 2011年清华大学自主招生数学题解析:一道经典数列题的解法与思路 2011年清华大学自主招生数学题解析:一道经典数列题的解法与思路 2006年江西高考理科数学压轴题解析:递推、放缩与不等式结构 2006年江西高考理科数学压轴题解析:递推、放缩与不等式结构 一道初中数学极值题的多种解法:柯西不等式、几何法、函数法详解 扔几个骰子,怎么算出期望?——拼多多校招笔试算法题的数学故事 拼多多校招笔试算法题:一行公式搞定“多多的魔术盒子” 斯特林公式(Stirling's Formula):我一个阶乘表达式,怎么就和圆扯上关系了呢? 我爱做题:2010年江西高考理科数学压轴题 热机的效率上限在哪里?解析卡诺循环(Carnot Cycle) 为什么 2024 年会有 366 天? 数学之美:几何视角下的高斯积分(Gaussian Integral) 从最小二乘法到正态分布:高斯是如何找到失踪的谷神星的? 正态分布(Normal Distribution)公式为什么长这样? 高速公路编号背后的数学密码 2024阿里巴巴全球数学竞赛预选赛试题及解答 库函数 (libm) 是如何计算三角函数值的? payne hanek 归约算法 音乐背后的数学 素描背后的物理 cody waite 浮点数 Remez Algorithm 参数归约算法(Argument Range Reduction):如何在浮点数环境下计算超大数字的三角函数值? 素描背后的数学 CORDIC算法:一种高效计算三角函数值的方法 墨卡托的魔术:地图是如何欺骗你的眼睛的? PID 算法到底在干什么?工程师最常用的控制方法 解密卡尔曼滤波(Kalman Filter)算法:深入解析卡尔曼滤波算法原理与在线可视化实例 从记忆到洞察:轻松掌握泰勒展开式(Taylor Series)的记忆技巧 哪个更大呢? $2^{100!}$ 还是 $2^{100}!$ ? Google经典编程竞赛题:计算 $(3 + \sqrt{5})^n$ 的小数点前三位数 手写数字识别:解码机器学习的背后的数学原理 The Answers of MRI Tutorial Videos gdb 操作指南 Linux 网络命令指南 贝塞尔曲线(Bezier Curve):优雅背后的数学原理 LeetCode 380. Insert Delete GetRandom O(1) Data Structures: Thought Process from HashMap to HashMap + Array LeetCode 2475. 数组中不等三元组的数目 2种 O(n) 时间复杂度算法 LeetCode 947. Most Stones Removed with Same Row or Column It is Literally a Graph: DFS and Union Find LeetCode 295. Find Median from Data Stream Two Heaps with the Follow Ups LeetCode 295. Find Median from Data Stream Two Heaps with the Follow Ups LeetCode 1668. 最大重复子字符串 不用API,比KMP更易理解简洁优雅的暴力解法 LeetCode 334. Increasing Triplet Subsequence Why Greedy Works? LeetCode 迷宫问题(The Maze)
发生在计算机内存里的进化:解密遗传算法(Genetic Algorithm)
2023-06-12 · via Long Luo's Life Notes

By Long Luo

这篇文章部分内容还在优化,Demo 还在继续开发,大概还需要 7 - 8 小时写作时间。

无限猴子定理(英语:Infinite monkey theorem)

让一只猴子在打字机上随机地按键,当按键时间达到无穷时,几乎必然能够打出任何给定的文字,比如莎士比亚的全套著作。

在这里,几乎必然是一个有特定含义的数学术语,“猴子”也不是一只真正意义上的猴子,它被用来比喻成一个可以产生无限随机字母序列的抽象设备。这个理论说明把一个很大但有限的数看成无限的推论是错误的。猴子精确地通过键盘敲打出一部完整的作品比如说莎士比亚的哈姆雷特,在宇宙的生命周期中发生的概率也是极其低的,但并不是零。

遗传算法(Genetic Algorithm) 1 是一种元启发式搜索和优化技术,借鉴了生物进化中的自然选择和遗传机制。它已经在各个领域展示出了强大的应用潜力。本文将介绍遗传算法的发展历史、原理、示例,以及其广泛应用和不足之处。

发展历史

遗传算法的发展可以追溯到上世纪60年代的约翰·荷兰德(John Holland)和他的同事们的工作。他们首先提出了基因型与表现型之间的映射关系,并通过模拟生物进化过程来解决复杂的优化问题。

原理

遗传算法的核心原理是模拟自然进化的过程。它通过定义适应度函数来评估候选解的质量,并利用遗传操作(选择、交叉和变异)对候选解进行迭代改进。具体而言,算法从一个初始种群开始,通过选择适应度较高的个体作为父代,进行交叉和变异操作产生新的后代个体,然后通过评估适应度来选择出下一代个体。这个过程不断迭代,直到找到满足特定条件的优秀解。

It’s never too late

举个例子

目前参考网络资源写了一个简单的Demo,地址:http://longluo.me/projects/genetic

这个例子还有待完善!

Genetic Algorithm

应用领域

遗传算法在各个领域都有广泛的应用。它被用于优化问题、机器学习、数据挖掘、调度问题等。例如,在工程设计中,可以使用遗传算法来优化设计参数,以获得更好的性能。在人工智能领域,遗传算法被用于训练神经网络的参数。

ToDos

  • 利用遗传算法优化 PID ,自动调谐 PID 参数,目前开发中…
  • 利用遗传算法应用于 机器学习 ,目前还在开发中…

缺点

遗传算法在应用中存在一些缺点,但可以采取一些方法来规避这些问题。以下是一些常见的遗传算法缺点及其应对措施的例子:

可能陷入局部最优解:由于遗传算法的随机性质,可能导致算法收敛到局部最优解而无法达到全局最优解。为了规避这个问题,可以采用以下方法:

多次运行算法:运行遗传算法的多个独立实例,以增加搜索空间的探索性。 引入多样性维护机制:通过保留一部分较差个体、增加变异操作的概率或引入新的个体,以增加种群的多样性,避免过早陷入局部最优解。 计算复杂度高:遗传算法需要进行大量的计算和评估操作,导致计算复杂度较高。为了降低计算成本,可以尝试以下方法:

优化评估函数:通过对评估函数进行优化,减少计算成本。 使用近似算法:在某些情况下,可以使用近似算法或启发式方法来加速计算过程,以减少计算复杂度。 参数选择困难:遗传算法中的参数选择对算法的性能和效果至关重要。不正确的参数选择可能导致算法效果不佳。为了解决这个问题,可以采取以下措施:

参数调优:通过实验和测试,调整算法的参数,以找到最佳的参数组合。 自适应参数调整:引入自适应机制,根据问题的特性和算法的表现,动态调整参数值。 举例来说,假设有一个优化问题,需要找到一个函数的最小值。遗传算法被用来解决这个问题,但在初步运行中发现算法很容易陷入局部最优解。为了规避这个问题,可以采取多次运行算法的方法,每次使用不同的初始种群和随机数种子,以增加搜索空间的覆盖度,从而更有可能找到全局最优解。

另外,遗传算法在每一代选择操作时都会考虑适应度函数的评估,这可能导致计算复杂度的增加。为了降低计算成本,可以对适应度函数进行优化,使用更高效的算法或数据结构进行计算。同时,可以利用并行计算或分布式计算的方法,提高算法的计算效率。

总之,通过合理的方法和技巧,可以规避遗传算法的一些缺点,并提高算法的效率和性能。根据具体的问题和应用场景,选择适当的策略和方法来克服遗传算法的局限性。

总结

综上所述,遗传算法作为一种强大的优化技术,在解决复杂问题和优化搜索中具有广泛的应用。通过模拟生物进化的机制,它能够发现优秀的解决方案。然而,它也面临局部最优解和计算复杂度高的挑战。随着计算能力和算法改进的不断提升,遗传算法在未来将继续发挥重要作用,并为各个领域的问题提供创新解决方案。

参考文献


  1. George Gamow↩︎