基于遗传算法的随机优化搜索

遗传算法是一种模拟生物进化过程的全局优化搜索算法,由J.Holland提出。算法通过个体、群体、染色体和基因等概念,通过选择、交叉和变异等操作进行迭代优化,寻找问题的最优解。此算法适用于复杂问题的求解,如函数优化、机器学习、调度和设计等领域,具有全局搜索、鲁棒性和并行性等特点。
摘要由CSDN通过智能技术生成

1.基本概念

       遗传算法(Genetic Algorithm—GA),是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,它是由美国Michigan大学的J.Holland教授于1975年首先提出的.遗传算法作为一种新的全局优化搜索算法,以其简单通用、鲁棒性强、适于并行处理及应用范围广等显著特点,奠定了它作为21世纪关键智能计算之一的地位。

        遗传算法的基本思想正是基于模仿生物界遗传学的遗传过程.它把问题的参数用基因代表,把问题的解用染色体代表(在计算机里用二进制码表示),从而得到一个由具有不同染色体的个体组成的群体.这个群体在问题特定的环境里生存竞争,适者有最好的机会生存和产生后代.后代随机化地继承了父代的最好特征,并也在生存环境的控制支配下继续这一过程。

        群体的染色体都将逐渐适应环境,不断进化,最后收敛到一族最适应环境的类似个体,即得到问题最优的解.值得注意的一点是,现在的遗传算法是受生物进化论学说的启发提出的,这种学说对我们用计算机解决复杂问题很有用,而它本身是否完全正确并不重要(目前生物界对此学说尚有争议)。

序号

遗传学概念

遗传算法概念

数学概念

1

个体

要处理的基本对象、结构

也就是可行解

2

群体

个体的集合

被选定的一组可行解

3

染色体

个体的表现形式

可行解的编码

4

基因

染色体中的元素

编码中的元素

5

基因位

某一基因在染色体中的位置

元素在编码中的位置

6

适应值

个体对于环境的适应程度,或在环境压力下的生存能力

可行解所对应的适应函数值

7

种群

被选定的一组染色体或个体

根据入选概率定出的一组可行解

8

选择

从群体中选择优胜的个体,淘汰劣质个体的操作

保留或复制适应值大的可行解,去掉小的可行解

9

交叉

一组染色体上对应基因段的交换

根据交叉原则产生的一组新解

10

交叉概率

染色体对应基因段交换的概率(可能性大小)

闭区间[0,1]上的一个值,一般为0.65~0.90

11

变异

染色体水平上基因变化

编码的某些元素被改变

12

变异概率

染色体上基因变化的概率(可能性大小)

开区间(0,1)内的一个值, 一般为0.001~0.01

13

进化、

适者生存

个体进行优胜劣汰的进化,一代又一代地优化

目标函数取到最大值,最优的可行解

个体与种群

      个体就是模拟生物个体而对问题中的对象 (一般就是问题的解)的一种称呼,一个个体也就是搜索空间中的一个点。

      种群(population)就是模拟生物种群而由若干个体组成的群体, 它一般是整个搜索空间的一个很小的子集

适应度与适应度函数

       适应度(fitness)就是借鉴生物个体对环境的适应程度,而对问题中的个体对象所设计的表征其优劣的一种测度。

      适应度函数(fitness function)就是问题中的全体个体与其适应度之间的一个对应关系。它一般是一个实值函数。该函数就是遗传算法中指导搜索的评价函数。

染色体与基因

  染色体(chromosome)就是问题中个体的某种字符串形式的编码表示。字符串中的字符也就称为基因(gene)。

    例如:

            个体         染色体

               9    ----   1001

              (2,5,6)---- 010 101 110

遗传操作

  亦称遗传算子(genetic operator),就是关于染色体的运算。遗传算法中有三种遗传操作:

   选择-复制(selection-reproduction)

   交叉(crossover亦称交换、交配或杂交)

   变异(mutation亦称突变)

选择-复制 通常做法是:对于一个规模为N的种群S,按每个染色体xiS的选择概率P(xi)所决定的选中机会, 分N次从S中随机选定N个染色体, 并进行复制。

                                         这里的选择概率P(xi)的计算公式为      

                                                P(x{i})=\frac{f(xi)}{\sum_{j=1}^{N}f(xj))}

交叉 就是互换两个染色体某些位上的基因。   

例如,  设染色体 s1=01001011,  s2=10010101, 交换其后4位基因, 即

 

s1′=01000101,   s2′=10011011可以看做是原染色体s1和s2的子代染色体。  

 变异  就是改变染色体某个(些)位上的基因.

 例如,   设染色体 s=11001101将其第三位上的0变为1, 即

              s=11001101 11101101= s′。

       s′也可以看做是原染色体s的子代染色体。

2.基本遗传算法

                                                         遗传算法基本流程框图

算法中的一些控制参数:

  种群规模

  最大换代数

  交叉率(crossover rate)就是参加交叉运算的染色体个数占全体染色体总数的比例,记为Pc,取值范围一般为0.4~0.99。

  变异率(mutation rate)是指发生变异的基因位数所占全体染色体的基因总位数的比例,记为Pm,取值范围一般为0.0001~0.1。

基本遗传算法

  步1 在搜索空间U上定义一个适应度函数f(x),给定种群规模N,交叉率Pc和变异率Pm,代数T

  步2 随机产生U中的N个个体s1, s2, …, sN,组成初始种群S={s1, s2, …, sN},置代数计数器t=1;

  步3  计算S中每个个体的适应度f() ;

  步4 若终止条件满足,则取S中适应度最大的个体作为所求结果,算法结束。

     步5  按选择概率P(xi)所决定的选中机会,每次从S中随机选定1个个体并将其染色体复制,共做N次,然后将复制所得的N个染色体组成群体S1;

      步6  按交叉率Pc所决定的参加交叉的染色体数c,从S1中随机确定c个染色体,配对进行交叉操作,并用产生的新染色体代替原染色体,得群体S2;

      步7 按变异率Pm所决定的变异次数m,从S2中随机确定m个染色体,分别进行变异操作,并用产生的新染色体代替原染色体,得群体S3;

      步8  将群体S3作为新一代种群,即用S3代替St = t+1,转步3;

3.应用举例

例、利用遗传算法求解区间[0,31]上的二次函数y=x2的最大值。  

分析   原问题可转化为在区间[0, 31]中搜索能使y取最大值的点a的问题。那么,[0, 31] 中的点x就是个体, 函数值f(x)恰好就可以作为x的适应度,区间[0, 31]就是一个(解)空间 。这样, 只要能给出个体x的适当染色体编码, 该问题就可以用遗传算法来解决。

(1) 设定种群规模,编码染色体,产生初始种群。

    将种群规模设定为4;用5位二进制数编码染色体;取下列个体组成初始种群S1:

                     s1= 13 (01101),  s2= 24 (11000)

                     s3= 8 (01000),    s4= 19 (10011)

(2) 定义适应度函数,

               取适应度函数:f (x)=x2

(3) 计算各代种群中的各个体的适应度, 并对其染色体进行遗传操作,直到适应度最高的个体(即31(11111))出现为止。

首先计算种群S1中各个体

              s1= 13(01101),    s2= 24(11000)                     

                s3= 8(01000),     s4= 19(10011)

的适应度f (si) 。

       容易求得

                       f (s1) = f(13) = 132 = 169

                       f (s2) = f(24) = 242 = 576

                       f (s3) = f(8) = 82 = 64

                       f (s4) = f(19) = 192 = 361

再计算种群S1中各个体的选择概率。

选择概率的计算公式为

由此可求得

                        P(s1) = P(13) = 0.14

                       P(s2) = P(24) = 0.49

                       P(s3) = P(8) = 0.06

                       P(s4) = P(19) = 0.31

在算法中赌轮选择法可用下面的子过程来模拟:

       ① 在[0, 1]区间内产生一个均匀分布的随机数r

  ② 若rq1,则染色体x1被选中。

  ③ 若qk-1<rqk(2≤kN), 则染色体xk被选中。 其中的qi称为染色体xi (i=1,  2,  …,  n)的积累概率, 其计算公式为

 

 选择-复制  

设从区间[0, 1]中产生4个随机数如下:

               r1 = 0.450126,   r2 = 0.110347

               r3 = 0.572496,   r4 = 0.98503

  染色体

  适应度

选择概率

积累概率

选中次数

s1=01101

    169

    0.14

    0.14

      1

s2=11000

    576

    0.49

    0.63

      2

s3=01000

      64

    0.06

    0.69

      0

s4=10011

    361

    0.31

    1.00

      1

 

于是,经复制得群体:

s1 =11000(24),  s2 =01101(13)

s3 =11000(24),  s4 =10011(19)

交叉

        设交叉率pc=100%,即S1中的全体染色体都参加交叉运算。

        设s1s2配对,s3s4配对。分别交换后两位基因,得新染色体:

   s1’’=11001(25),  s2’’=01100(12)

                                                 s3’’=11011(27),  s4’’=10000(16)

变异

        设变异率pm=0.001。

        这样,群体S1中共有

                               5×4×0.001=0.02

位基因可以变异。

         0.02位显然不足1位,所以本轮遗传操作不做变异。

于是,得到第二代种群S2:

        s1=11001(25), s2=01100(12)

         s3=11011(27), s4=10000(16)

第二代种群S2中各染色体的情况

  染色体

  适应度

选择概率

积累概率

  估计的

选中次数

s1=11001

    625

    0.36

    0.36

      1

s2=01100

    144

    0.08

    0.44

      0

s3=11011

    729

    0.41

    0.85

      2

s4=10000

    256

    0.15

    1.00

      1

 

假设这一轮选择-复制操作中,种群S2中的

4个染色体都被选中,则得到群体:

s1=11001(25),  s2= 01100(12)

 s3=11011(27),  s4= 10000(16)

做交叉运算,让s1s2s3s4 分别交换后三位基因,得

 s1’’ =11100(28), s2’’ = 01001(9)

 s3’’ =11000(24), s4’’ = 10011(19)

这一轮仍然不会发生变异。

于是,得第三代种群S3:

 s1=11100(28), s2=01001(9)

 s3=11000(24), s4=10011(19)

   第三代种群S3中各染色体的情况

  染色体

  适应度

选择概率

积累概率

  估计的

选中次数

s1=11100

    784

    0.44

    0.44

      2

s2=01001

      81

    0.04

    0.48

      0

s3=11000

    576

    0.32

    0.80

      1

s4=10011

    361

    0.20

    1.00

      1

  设这一轮的选择-复制结果为:

         s1=11100(28),  s2=11100(28)

         s3=11000(24),  s4=10011(19)

做交叉运算,让s1s4s2s3 分别交换后两位基因,得

         s1’’=11111(31), s2’’=11100(28)

         s3’’=11000(24), s4’’=10000(16)

这一轮仍然不会发生变异。

于是,得第四代种群S4:

          s1=11111(31),  s2=11100(28)

         s3=11000(24),  s4=10000(16)

显然,在这一代种群中已经出现了适应度最高的染色体s1=11111。于是,遗传操作终止,将染色体“11111”作为最终结果输出。

然后,将染色体“11111”解码为表现型,即得所求的最优解:31。

将31代入函数y=x2中,即得原问题的解,即函数y=x2的最大值为961。

 

4.遗传算法的特点与优势

遗传算法的主要特点

—遗传算法一般是直接在解空间搜索, 而不像图搜索那样一般是在问题空间搜索, 最后才找到解。

—遗传算法的搜索随机地始于搜索空间的一个点集, 而不像图搜索那样固定地始于搜索空间的初始节点或终止节点, 所以遗传算法是一种随机搜索算法。

—遗传算法总是在寻找优解, 而不像图搜索那样并非总是要求优解, 而一般是设法尽快找到解, 所以遗传算法又是一种优化搜索算法。

 —遗传算法的搜索过程是从空间的一个点集(种群)到另一个点集(种群)的搜索,而不像图搜索那样一般是从空间的一个点到另一个点地搜索。 因而它实际是一种并行搜索, 适合大规模并行计算,而且这种种群到种群的搜索有能力跳出局部最优解。

         —遗传算法的适应性强, 除需知适应度函数外, 几乎不需要其他的先验知识。

  —遗传算法长于全局搜索, 它不受搜索空间的限制性假设的约束,不要求连续性, 能以很大的概率从离散的、多极值的、 含有噪声的高维问题中找到全局最优解。

遗传算法的应用

遗传算法在人工智能的众多领域便得到了广泛应用。例如,机器学习、聚类、控制(如煤气管道控制)、规划(如生产任务规划)、设计(如通信网络设计、布局设计)、调度(如作业车间调度、机器调度、运输问题)、配置(机器配置、分配问题)、组合优化(如TSP、背包问题)、函数的最大值以及图像处理和信号处理等等。
另一方面,人们又将遗传算法与其他智能算法和技术相结合,使其问题求解能力得到进一步扩展和提高。例如,将遗传算法与模糊技术、神经网络相结合,已取得了不少成果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值