大碗岛资源下载在本文中,我们将讨论“遗传算法”,它是进化的一种改编,它允许数据科学家“进化”出问题的解决方案。
为了深入理解遗传算法,我们将首先从宏观层面回顾进化的原理,然后探讨如何将常见问题重新思考为一代又一代解决方案的演化过程。在本文的最后,我们将运用进化原理来解决调度冲突,并在复杂的交通模式中选择最佳路线。
粗略算一下,就有 120⁴⁴⁰ 种可能的时间表。可观测宇宙中大约有 10⁸² 个原子,这意味着暴力破解这个问题比逐个统计已知星系中的所有原子要困难得多。让我们用几分钟时间,通过让时间表发生性关系来解决这个问题。
这篇文章有多高级?这篇文章适合初学者,但对于那些可能以前没有机会使用遗传算法的经验丰富的数据科学家来说,也是一个引人入胜的主题。
进化是生命形式随着时间推移而发生变化的过程,这是“自然选择”影响生命形式在连续几代中最常见的特征的过程。
自然选择认为,一个种群中只有特定的成员能够活到性成熟。如果一个种群的成员具有某些不利的特征,他们交配的可能性就会降低;而如果一个种群的成员具有某些有利的特征,他们交配的可能性就会增加。
进化依赖于脱氧核糖核酸(DNA),这是一种长而复杂的分子,它决定了生物体的遗传身份。
DNA是一种复杂的聚合物,编码着生命的基本信息。除某些病毒外,所有生物都含有DNA。来源。
这个结构可以简化为一长串遗传信息。这些遗传信息会影响诸如眼睛颜色、身高、患某些疾病的倾向等等。
DNA 又长又脆弱,因此出于实际目的,它被包裹在一种称为染色体的结构中。
在有性生殖过程中,后代的产生是通过在随机点上对父母双方的染色体进行分割,并交换遗传信息来实现的。因此,后代是父母双方遗传信息的组合。这个过程被称为“交叉”。
在交配过程中,父母双方的染色体会通过随机位置的交换元件相互作用。这会产生一个兼具父母双方基因的后代。
“突变”是进化论中的另一个重要概念,指的是后代遗传信息的随机改变。突变可以有多种形式:某些遗传信息可以被复制、移除、翻转等等。
突变可能对生物体毫无影响,也可能带来巨大的负面影响,有时也可能为某个物种带来极其有利的新特性。例如,感知颜色的能力,就是同一遗传物质被重复四次产生的结果。
人类的眼睛利用四种基因来感知光线:三种基因控制视锥细胞(或色觉),一种基因控制视杆细胞(或夜视);这四种基因都源自同一个祖先基因。——来源
大多数突变不会造成影响,或者会产生负面影响。然而,变异对于物种维持遗传多样性和进化至关重要,因此某些突变对于进化的正常进行至关重要。
简而言之,这就是生物学进化的原理。让我们来探索一下遗传算法如何运用这些思想来解决复杂问题。
“遗传算法”(GA)利用进化的核心原理来解决问题。其核心思想是将问题转化为类似染色体的结构,进行适者生存,创建繁殖对并进行交叉,然后进行一些随机变异来创建新的种群。
想象一下,你负责制定一所大学的课程表。学校里有很多教室、班级和老师。有些老师可能只能教几门课,有些课程需要在特定的教室上课等等。我们可以使用遗传算法 (GA) 来解决这个问题。
首先,我们可以把这个问题想象成DNA,其中有一个很大的位置列表,并且每个位置都可能存在某些信息。我们可以把每个教室的每个时间段想象成一个位置,把班级和老师想象成信息。
然后,我们可以定义一个叫做“适应度函数”的东西。我们可以查看我们的日程安排,并制定一些基本规则:
我们可以根据适应度函数为种群中的每个成员创建一个分数。假设我们的种群中有 100 个时间表,我们可以通过保留得分排名前 50% 的时间表来进行选择。
一旦我们拥有一个相对适合的种群,我们就可以随机创建繁殖对并对它们的信息进行交叉。
如果我们这样做很多次,我们将创造出连续的几代,它们将慢慢进化以更好地适应我们的适应度函数,从而给我们一个好的时间表!
这些老师必须教授一定数量的课程,每个课程每周必须教授一定次数,可能需要或不需要计算机实验室,班级规模有一定的限制,等等。
我们的目标是制定一个好的课程表,这很难。如果每个教室每周5天,每天提供8个一小时的时间段,那么就有440个可能的时间段,其中15节课(包括完全没有课)可以上,8位老师(包括完全没有老师)可以上。
粗略计算一下,就有 120⁴⁴⁰ 种可能的时间表。可观测宇宙中大约有 10⁸² 个原子,这意味着暴力破解这个问题比逐个统计已知星系中的所有原子要困难得多。让我们用几分钟时间,通过让时间表发生性关系来解决这个问题。
首先,我们需要用类似于DNA结构的方式来表示这个问题。我们可以把一个房间可能包含的每个时间段想象成DNA中的一个位置。
然后,我们只需在每个时间段填写随机的班级和教授,就可以创建随机的人口成员。
现在我们有了一个随机的群体,我们需要一种方法来计算该群体中某个成员的“适应度”。这可以通过简单地遍历所有时间段并扣除那些与时间安排不符的点数来实现。
我们要优化的具体课表直接定义在这个适应度函数中,这就是遗传算法 (GA) 如此强大的原因。通过修改这些简单的规则,我们可以改变课表的性质。如果老师抱怨课太多,中间没有休息?那就添加一条规则吧!
一旦定义了适应度函数,我们就可以简单地将其应用于我们种群的所有成员(我们的随机时间表),以仅保留最好的成员。
初始种群规模为 100。这个特定的选择函数保留了种群中排名前 50% 的个体。有很多不同类型的选择函数可供选择(例如概率保留),但我最喜欢保留排名前 50% 的个体。
现在它们的朋友死了一半,我们的日程安排可能变得紧张起来。我们可以随机创建繁殖对,让它们进行杂交,产生新的后代,让我们的种群恢复到原来的规模。
在这里,我们通过在特定时间段内随机交换特定教室的班级和老师来进行交叉教学。具体的交叉方式可以根据具体应用进行调整。
现在我们已经完成了交叉,可以通过在数据中注入一些随机方差来变异种群。就像交叉一样,具体操作方法取决于你的应用。
我选择简单地迭代每个教室的每个时间段,并偶尔更改班级和授课老师。请注意,None是对老师和教室的可能选择。根据适应度函数的定义方式,如果班级或老师为“无”,则该教室的特定时间段将被视为空。
因此,此变异函数可以向课堂时间段添加新的课程和教师,也可以将课堂时间段清空。mutation_rate定义了特定时间段被修改的可能性。
因此,我们可以创建一个随机调度的初始种群,计算它们的适应度,并执行选择、交叉和变异。这就是遗传算法 (GA) 所需的一切,让我们把它们连接起来。
初始种群表现不佳,这是可以预料到的,因为它们完全是随机的,但过了一段时间,种群就会收敛到近乎完美的时间表。
如果我们绘制出随时间变化的适应度历史,我们可以看到 GA 持续稳定的改进。
回想一下,适应度为 0 代表着完美的排课方案,所以我们的遗传算法做得相当不错!你可以从最终的群体中选取任何排课方案,它都会非常可靠。当然,排课方案的“质量”是由我们的适应度函数定义的。如果我们发现老师们被迫在学校里来回跑,我们就会想要修改我们的适应度函数。
你可能会注意到,适应度永远不会完全达到零。这是因为,随着计划变得越来越完美,找到能够带来改进的突变变得越来越难;大多数突变都会以某种方式损害计划的质量。如果让它运行一段时间,你可能会找到一个好的解决方案,或者你可以尝试调整突变率和种群规模,或许能更快地收敛到一个完美的解决方案。遗传算法通常运行得相当快,所以这类实验很容易进行。
“旅行商问题”是图论中一个著名的问题。其核心思想是,假设有很多彼此相连的城市,你需要找到一条路线,以便在尽可能短的时间内访问所有城市。
在这个例子中,我们假设城市之间的交通模式会随着时间而变化。当我们的销售员从一个城市到另一个城市旅行时,这些交通模式也会发生变化。在规划城市间路线时,我们应该将这些交通模式考虑进去。
我确信肯定有某种巧妙的方法可以优化这个问题,但我不知道。遗传算法的一大优点就是它很容易应用到问题中,所以就用遗传算法试试吧,看看会发生什么!
首先,我们需要定义要处理的数据。整个思路是,每个城市之间都有一条路线,并且从一个城市到另一个城市所需的时间会随时间变化。我实际上将这些信息存储为一个有向图,其中每条边都包含一天中每个小时的遍历时间列表。通过对该图进行采样,我们可以得到一天中特定时间的遍历时间图。
这才是真正最难的部分。定义一个遗传算法来解决这个问题,实际上和我们之前讨论的例子是一样的。
就像前面的例子一样,我们需要将结构格式化为类似 DNA 的东西,定义适应度函数,进行选择、交叉,然后进行变异。
定义 DNA 非常简单,它可以是按某种顺序排列的城市列表。这里我称之为基因组而不是 DNA,因为遗传算法和它们的生物学灵感之间的类比可能有点牵强。
在这里,我决定将基因组设计得更长,因为理论上来说,穿过一座城市可能比直接从一座城市开车到另一座城市更理想。我希望在种群成员中留出一些空间,以便拥有更长的列表,并能够探索这类解决方案。
适应度函数evaluate_genome采用特定的基因组(又名种群成员、又名 DNA、又名解决方案......无论如何),并为其分配适应度分数。
这里的适应度指的是-infinity列表中是否有一个城市被遗漏。我们的想法是覆盖所有城市,所以如果一个基因组没有覆盖所有城市,那么它就是不好的。
如果所有城市都已去过,那么适应度就是所花费时间的负数。因此,更快的路线会带来更好的奖励。在这里,适应度函数本质上是模拟从一个城市移动到另一个城市的过程。它会获取特定时间段内当前交通模式的图表,加上当前移动的遍历时间,等等。
请注意,在找到的最佳解决方案中有一些重复的字符。由于我们定义适应度函数的方式,这些字符会被跳过。此外,一旦访问了所有城市,我们就会停止计数。因此,实际结果是:
每个字母代表一个城市。这意味着需要 21 个小时才能走遍所有 16 个城市。遗传算法的一个缺点是,我们通常不知道最终得到的解决方案是否是最优的。话虽如此,如果你的用例要求“足够好”,那么遗传算法是一个绝佳的选择。考虑到从一个城市到另一个城市的平均时间是两个小时,这个结果比平均水平要好得多!
玩笑归玩笑,我们实际上学到了一种解决任意问题的非常有效的方法。如果你能将问题转化为类似DNA的表征,并定义一个合理的适应度函数,那么你就可以使用遗传算法快速找到令人信服的解决方案!
两岁男童从6楼坠落砸穿雨棚仅眼角擦伤,支雨棚大爷:一个月前才安装,没想到救了个人
极目新闻记者 王柳钦7月18日,哈尔滨依兰县有网友发视频称,她两岁多的儿子不小心从6楼坠落,正好掉到楼下的雨棚上,将雨棚砸穿个洞,事后她带孩子到哈尔滨多个医院检查,所幸孩子身体并无大碍,仅是眼角有点擦伤,引发网友热议。
9岁男孩跟着亲爸后妈出远门,亲爸让他坐在后备箱几小时,亲妈: 当时7个人 ,孩子想坐后座,他们说没位置了,事发2023年夏天,已拿到孩子抚养权
嚣张别车男身份被扒!中联重科急撇清 网友:代理商不算你的人?#中联重科回应男子别停摩托车
叫你们不要买比亚迪,不要买比亚迪,都不信,这下好了吧~~#国产之光 #比亚迪夏#腾势d9
中联重科员工联系我了,我给大家读一读 你们觉得,有道理么,我觉得,挺有道理的#摩托车 #交通事故 #中联重科
据俄罗斯卫星社网站7月19日报道,根据卫星社对世界银行数据的分析结果,2024年工业对经济贡献最多的国家为中国,其工业对GDP的贡献增加了近2%,达到6.8万亿美元。
男婴医院离世获赔88万元,律师拿走代理费55万元,家长认为上当,广州律协立案一年无果
对此,曾为韦先生代理的律师邓某说,案件起初没收费,但不是风险代理,案件按照司法鉴定,本应给次责赔偿,他们努力让韦先生获得了主责赔偿。
为最大限度实现生效法律文书确定的债权,切实维护债权人的合法权益,更好的借助社会力量查找被执行人名下财产,提高执行效率,维护法律权威,根据申请执行人的悬赏执行申请,依照《中华人民共和国民事诉讼法》第二百六十六条、《最高人民法院关于民事执行中财产调查若干问题的规定》第二十一条、第二十二条、第二十三条、第二十四条规定,本院特发布悬赏公告如下:
广州全城进入台风战备状态,韦帕逼近!交通停运、景区闭园多项措施紧锣密鼓展开哎呦,最近这阵子,可算是广州的天气大事件了!别看天还没黑,整个城市已经开始忙活起来了。你听说没,今年第6号台风“韦帕”正往我们这边凶猛扑过来呢,眼看着就要靠近广东沿海了。
|