深入理解遗传算法(三)

栏目: 数据库 · 发布时间: 6年前

内容简介:欢迎点击「算法与编程之美」↑关注我们!为更好理解本文,强烈建议优先阅读:

欢迎点击「算法与编程之美」↑关注我们!

本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

为更好理解本文,强烈建议优先阅读:

深入理解遗传算法(一)

深入理解遗传算法(二)

问题描述

首先来看一个线性方程组的求解问题。

已知N元一次方程y = w 1 x 1 + w 2 x 2 + w 3 x 3 + w 4 x 4 + w 5 x 5 + w 6 x 6

其中给定 x 1 , …, x 6 的数据如下:

x 1

x 2

x 3

x 4

x 5

x 6

y

4

-2

7

5

11

1

44.1

将列表中的x 1 , …, x 6 代入到上述方程得到

y’ = 4w 1 - 2w 2 + 7w 3 + 5w 4 + 11w 5 + w 6

试求出一组w 1 ,w 2 , …, w 6 使得y’的值尽可能的接近于y.

如何淘汰

假设现在有六组w值如下表所示并且给出了对应的y’的计算值,如何从这六组中选择最优的三组,即淘汰剩余三组?

w 1

w 2

w 3

w 4

w 5

w 6

y’

2.4

0.7

8

-2

5

1.1

110.3

-0.4

2.7

5

-1

7

0.1

100.1

-1

2

2

-3

2

0.9

13.9

4

7

12

6.1

1.4

-4

127.9

3.1

4

0

2.4

4.8

0

69.2

-2

3

-7

6

3

3

3

1 - 2w 2 + 7w 3 + 5w 4 + 11w 5 + w 6

= 110.3

根据上述公式,可快速计算每一组w值的y’。

给出一个适应性函数定义如下:

深入理解遗传算法(三)

则F(c)的值越大,|y’ - y|的差距越小,表明该组值的效果越好。

w 1

w 2

w 3

w 4

w 5

w 6

y’

F(c)

2.4

0.7

8

-2

5

1.1

110.3

0.015

-0.4

2.7

5

-1

7

0.1

100.1

0.018

-1

2

2

-3

2

0.9

13.9

0.033

4

7

12

6.1

1.4

-4

127.9

0.012

3.1

4

0

2.4

4.8

0

69.2

0.0398

-2

3

-7

6

3

3

3

0.024

根据F(c)的大小,将保留最大的三组值,剩下的三组即为淘汰。

如何交叉

有了以上的三组存活的值,接下来将通过交叉方式生成三组新的值。

w 1

w 2

w 3

w 4

w 5

w 6

A

-1

2

2

-3

2

0.9

B

3.1

4

0

2.4

4.8

0

C

-2

3

-7

6

3

3

具体的交叉方式是:

  1. A的前三位和B的后三位;

w 1

w 2

w 3

w 4

w 5

w 6

A

-1

2

2

-3

2

0.9

B

3.1

4

0

2.4

4.8

0

C

-2

3

-7

6

3

3

  1. B的前三位和C的后三位;

w 1

w 2

w 3

w 4

w 5

w 6

A

-1

2

2

-3

2

0.9

B

3.1

4

0

2.4

4.8

0

C

-2

3

-7

6

3

3

  1. C的前三位和A的后三位;

w 1

w 2

w 3

w 4

w 5

w 6

A

-1

2

2

-3

2

0.9

B

3.1

4

0

2.4

4.8

0

C

-2

3

-7

6

3

3

通过上述的交叉方式,将可以得到新的三组解。

如何变异

接下来将对上述新产生的三组解进行变异,具体的变异方法为将第五位的值变为一半,最后得到的新值为:

w 1

w 2

w 3

w 4

w 5

w 6

-1

2

2

-3

2

0.9

3.1

4

0

2.4

4.8

0

-2

3

-7

6

3

3

-1

2

2

2.4

2.4

0

3.1

4

0

6

1.5

3

-2

3

-7

-3

1

0.9

底下的三组解是通过交叉、变异产生的新的三组解。此处没有选择所有的值都变异,而继续保持上一代中的三个值不变,原因在于担心完全变异后的结果也许比上一代更差。

结语

遗传算法的核心就是定义一个适应性函数,从一组解中淘汰一部分,然后从存活下来的解中,实施交叉、变异操作生成新的解,然后再不断的重复此过程,直到满足某个阀值时结束。

拓展阅读:

深入理解遗传算法(一)

深入理解遗传算法(二)

从1到100求和学算法思维(一)

从1到100求和学算法思维(二)

从1到100求和学算法思维(三)

从1到100求和学算法思维(四)

从1到100求和学算法思维(五)

从1到100求和学算法思维(六)

where2 go 团队

微信号:算法与编程之美

深入理解遗传算法(三)

长按识别二维码关注我们!

温馨提示: 点击页面右下角 “写留言” 发表评论,期待您的参与!期待您的转发!


以上所述就是小编给大家介绍的《深入理解遗传算法(三)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

构建之法(第三版)

构建之法(第三版)

邹欣 / 人民邮电出版社 / 2017-6 / 69.00元

软件工程牵涉的范围很广, 同时也是一般院校的同学反映比较空洞乏味的课程。 但是,软件工程 的技术对于投身 IT 产业的学生来说是非常重要的。作者有在世界一流软件企业 20 年的一线软件开 发经验,他在数所高校进行了多年的软件工程教学实践,总结出了在 16 周的时间内让同学们通过 “做 中学 (Learning By Doing)” 掌握实用的软件工程技术的教学计划,并得到高校师生的积极反馈。在此 ......一起来看看 《构建之法(第三版)》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具