蒙特卡洛与遗传算法介绍

蒙特卡洛算法

        Monte Carlo方法是计算机模拟的基础,它的名字来源于世界著名的赌
城 ——摩纳哥的蒙特卡洛, 其历史起源于 1777 年法国科学家蒲丰提
出的一种计算圆周 π 的方法 ——随机投针法,即著名的蒲丰投针问题。

一般步骤:

建立概率模型 ---模拟统计试验 ---多次随机试验 ---统计事件发生的百分比
频率 事件发生的概率(大数定理) -------求出要估计的参数

蒙特卡洛使用matlab求解圆周率的代码如下:

tic
l=1;a=2;n=100000;
x=unifrnd(0,a/2,1,n);
y=unifrnd(0,pi/2,1,n);
[a,b]=find(x<l/2*sin(y));
m=length(a);
p=m/n; pi_m=1/p
toc

蒙特卡洛计算重积分
原理:用蒙特卡洛法计算N N重积分积分:设D D为n n维空间R R n n 的一个区
域 ,f(x)∈D R R n n →R, ,区域D D上的n n重积分用下式表示: :

 可以认为 I=(区域D的测度 ) *(函数f的期望) )。基本的蒙特卡洛法就是
找一个超立方体( (测度已知, 为 Mc)包含区域 D,在D内随机生成 n(n一般
足够大) 个均匀分布的点, ,统计落入区域D的点, ,假设有m个

 

遗传算法( Genetic Algorithms,简称 GA)
        GA是一种基于自然选择原理和自然遗传机制的搜索(寻优)算法,它是模拟自然界中
的生命进化机制,在人工系统中实现特定目标的优化。遗传算法的实质是通过群体
搜索技术,根据适者生存的原则逐代进化,最终得到最优解或准最优解。

算法中的一些控制参数:
■ 种群规模
■ 最大换代数
■ 交叉率(crossover rate)就是参加交叉运算的染色体个数占全体
染色体总数的比例,记为P c ,取值范围一般为0.4~0.99。
■ 变异率(mutation rate)是指发生变异的基因位数所占全体染色
体的基因总位数的比例,记为P m ,取值范围一般为0.0001~0.1。

步骤如下:

基本遗传算法
步1 在搜索空间U上定义一个适应度函数f(x),给定种
群规模N,交叉率P c 和变异率P m ,代数T;
步2 随机产生U中的N个个体s 1 , s 2 , …, s N ,组成初始种
群S={s 1 , s 2 , …, s N },置代数计数器t=1;
步3 计算S中每个个体的适应度f() ;
步4 若终止条件满足,则取S中适应度最大的个体作
为所求结果,算法结束。

步5 按选择概率P(xi)所决定的选中机会,
每次从S中随机选定1个个体并将其染色体复制,
共做N次,然后将复制所得的N个染色体组成
群体S1;
步6 按交叉率Pc所决定的参加交叉的染色
体数c,从S1中随机确定c个染色体,配对进行
交叉操作,并用产生的新染色体代替原染色体,
得群体S2

步7 按变异率P m 所决定的变异次数m,从S 2
中随机确定m个染色体,分别进行变异操作,并
用产生的新染色体代替原染色体,得群体S 3 ;
步8 将群体S 3 作为新一代种群,即用S 3 代替
S,t = t+1,转步3;

篇幅有限,例子见下一篇博客,感谢各位!动动小手点个赞更好!!!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值