[数学建模]遗传算法

现代优化算法:遗传算法步骤

1、初始种群的选择

采用tsp问题中的改良圈算法(见文末),可以更快收敛。

2、选择

采用轮盘赌选择法,轮盘赌选择法(Croulette wheel selectio) 是最简单也是最常用的选择方法。

在该方法中,各个个体的选择概率和其适应度值成比例。设种群中个体总数为N,个体i的适应度为fi,则个体i被选取的几率为:
Pi=fi/总适应度
显然,概率反映了个体i的适应度在整个群体的个体适应度总和中所占的比例。个体适应度越大,其被选择的概率就越高,反之亦然。
计算出群体中各个个体的选择概率后,为了选择交配个体,需要进行多轮选择。每一轮产生一个[0,1]之间均匀随机数,将该随机数作为选择指针来确定被选个体。
个体被选后,被选择的个体进入交配过程。一般的遗传算法都有一个交配概率(又称为交叉概率),范围一般是0.6~1,这个交配概率反映两个被选中的个体进行交配的概率

这个地方涉及到适应度函数的选择:

1.遗传算法和直接搜索工具箱中的函数ga是求解目标函数的最小值,所以如果目标函数为求解最小值,则直接令目标函数为适应度函数即可。编写的适应度函数,语法如下:
function f = fitnesscn(x)
f = f(x);
end
2.如果有约束条件(包括自变量的取值范围),对于求解函数的最小值问题,语法如下:
function f = fitnessfcx(x)
    if x<=-1||x>3
        f = inf;
    else
        f = f(x);
    end
end

3、交叉

一般采用单点交叉,在个体串中随机设定一个交叉点,进行交叉,也就是基因重组

改良交叉算法是采用多维向量空间下的的黄金分割点,具体可以参考《黄金分割下的遗传算法》。

4、变异(实值变异,二值变异)

变异算子的操作步骤:

     a、对种群中所有个体以事先设定的概率判断是否变异

     在第n代种群中,随机产生一个数 r∈(0,1),如果 r≤0.382+0.618^n−1,则变异概率为1/(N*M),(N为个体数目,M为参数个数),即让一个基因变异。

     b、对进行变异的个体随机选择变异位置

5、终止条件(繁殖多少代)

伪代码:

begin
t=0
初始化种群p(t)=(x1,x2,x3...xn)
改良圈算法选择较为优良的种群
计算P(t)的适应值
while(不满足停止准则)
      do
      begin
      t=t+1
      从p(t+1)中选择p(t)
      交叉变异重组p(t)
      计算p(t)的适应值
end

附1:改良圈算法

首先求得一个Hamilton圈,然后修改圈得到具有较小权的另一个Hamilton圈,直至无法改进则停止

构建新圈

对于 1≤i<i+1<j≤n,构建新的Hamilton圈
Cij = v1v2…vivjvj-1vj-2…vi+1vJ+1vJ+2…vnv1
它是由C中将vi和vj之间的边逆序得到的。
若 w(vivj)+w(vi+1vj+1)<w(vivi+1)+w(vjvj+1)
则该圈替换有效

附2:遗传算法的参数设计原则

1.种群的规模
种群不宜过大也不宜过小。种群规模的一个建议值为0-100。(50)

2.变异概率
变异概率也不宜过大或者过小。一般取值为0.0001-0.2

黄金分割:在第n代种群中,随机产生一个数 r∈(0,1),如果 r≤0.382+0.618^n−1,则变异概率为1/(N*M),(N为个体数目,M为参数个数),即让一个基因变异

3.交配概率
同上,不宜过大或者过小。一般取值 为0.4-0.99

4.进化代数
同上,不宜过大或者过小。一般取值为100-500。(100)

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数学建模是将实际问题抽象化为数学模型,并利用数学方法解决问题的过程。而遗传算法是一种模拟自然生物进化过程的优化算法。在Python中,可以利用遗传算法来进行数学建模。 首先,我们需要定义数学建模问题的目标函数。例如,如果我们要优化一个函数的取值,可以将该函数作为目标函数。然后,我们需要定义问题的约束条件,例如变量的取值范围、条件限制等。 接下来,我们可以使用遗传算法进行优化。首先,我们需要初始化一组个体,每个个体代表了问题的一种解决方案。然后,通过交叉、变异等操作对个体进行演化,产生新的一代个体。根据目标函数的取值,我们可以选择适应度函数来评估每个个体的适应程度。适应度越高的个体,被选中的概率就越大。 通过多代的进化,遗传算法可以找到近似最优解。在Python中,可以使用遗传算法的库,如deap来实现算法的具体细节。使用deap库,可以方便地定义目标函数、约束条件和适应度函数,并进行演化过程。同时,deap还提供了丰富的遗传算法操作,如交叉、变异等。 综上所述,数学建模遗传算法Python可以通过定义目标函数、约束条件和适应度函数,使用遗传算法库如deap来实现优化过程。这种方法可以帮助解决各种实际问题,如优化参数、组合最优等。在实际应用中,我们可以根据具体问题的需求进行调整和优化,以获得更好的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值