数学建模智能算法精品文档完整版.docx
- 文档编号:281694
- 上传时间:2022-10-08
- 格式:DOCX
- 页数:13
- 大小:294.65KB
数学建模智能算法精品文档完整版.docx
《数学建模智能算法精品文档完整版.docx》由会员分享,可在线阅读,更多相关《数学建模智能算法精品文档完整版.docx(13页珍藏版)》请在冰豆网上搜索。
数学建模智能算法精品文档完整版
Part3——群智能算法
群智能算法,也称为启发式算法,起于上个世纪80年代初。
启发式算法近年来在实际应用方面得到了较大的发展,尤其是在大数据下,人们在不断探索研究以获得更有效的应用场景。
这些算法包括:
遗传算法、蚁群算法、粒子群算法、模拟退火算法、人工鱼群算法、人工蜂群算法、微分进化算法和免疫算法等,这些算法在理论上也较为完善。
该部分主要介绍几种常用的群智能算法。
第一章遗传算法
遗传算法(GeneticAlgorithm,GA),是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,它是由美国Michigan大学的J.Holland教授于1975年首先提出的。
遗传算法作为一种新的全局优化搜索算法,以其简单通用、鲁棒性强、适于并行处理及应用范围广等显著特点,奠定了它作为21世纪关键智能计算之一的地位。
遗传算法的基本思想正是基于模仿生物界遗传学的遗传过程.它把问题的参数用基因代表,把问题的解用染色体代表(在计算机里用二进制码表示),从而得到一个由具有不同染色体的个体组成的群体.这个群体在问题特定的环境里生存竞争,适者有最好的机会生存和产生后代.后代随机化地继承了父代的最好特征,并也在生存环境的控制支配下继续这一过程.群体的染色体都将逐渐适应环境,不断进化,最后收敛到一族最适应环境的类似个体,即得到问题最优的解.值得注意的一点是,现在的遗传算法是受生物进化论学说的启发提出的,这种学说对我们用计算机解决复杂问题很有用,而它本身是否完全正确并不重要(目前生物界对此学说尚有争议).
1.1遗传算法中的生物遗传学概念
由于遗传算法是由进化论和遗传学机理而产生的直接搜索优化方法;故而在这个算法中要用到各种进化和遗传学的概念.
首先给出遗传学概念、遗传算法概念和相应的数学概念三者之间的对应关系.这些概念如下:
表1-1.遗传算法相关概念
序号
遗传学概念
遗传算法概念
数学概念
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
进化、
适者生存
个体进行优胜劣汰的进化,一代又一代地优化
目标函数取到最大值,最优的可行解
1.2遗传算法的步骤
遗传算法计算优化的操作过程就如同生物学上生物遗传进化的过程,主要有三个基本操作(或称为算子):
选择(Selection)、交叉(Crossover)、变异(Mutation).
遗传算法基本步骤主要是:
先把问题的解表示成“染色体”,在算法中也就是以二进制编码的串,在执行遗传算法之前,给出一群“染色体”,也就是假设的可行解.然后,把这些假设的可行解置于问题的“环境”中,并按适者生存的原则,从中选择出较适应环境的“染色体”进行复制,再通过交叉、变异过程产生更适应环境的新一代“染色体”群.经过这样的一代一代地进化,最后就会收敛到最适应环境的一个“染色体”上,它就是问题的最优解.
下面给出遗传算法的具体步骤,流程图参见图1-1:
第一步:
选择编码策略,把参数集合(可行解集合)转换染色体结构空间;
第二步:
定义适应函数,便于计算适应值;
第三步:
确定遗传策略,包括选择群体大小,选择、交叉、变异方法以及确定交叉概率、变异概率等遗传参数;
第四步:
随机产生初始化群体;
第五步:
计算群体中的个体或染色体解码后的适应值;
第六步:
按照遗传策略,运用选择、交叉和变异算子作用于群体,形成下一代群体;
第七步:
判断群体性能是否满足某一指标、或者是否已完成预定的迭代次数,不满足则返回第五步、或者修改遗传策略再返回第六步。
遗传算法有很多种具体的不同实现过程,以上介绍的是标准遗传算法的主要步骤,此算法会一直运行直到找到满足条件的最优解为止.
图1-1.本文算法的流程图
1.3遗传算法的演变流程
1>编解码
这里我们通过采用二进制的形式来解决编码问题,将某个变量值代表的个体表示为一个{0,1}二进制串。
当然,串长取决于求解的精度。
如果要设定求解精度到六位小数,假设区间为,由于区间长度为,则必须将闭区间分为等分。
因为所以编码的二进制串至少需要22位。
将一个二进制串(b21b20b19…b1b0)转化为区间内对应的实数值很简单,只需采取以下两步:
1)将一个二进制串(b21b20b19…b1b0)代表的二进制数化为10进制数:
2)对应的区间内的实数:
例如,一个二进制串a=<1000101110110101000111>表示实数0.637197。
=(1000101110110101000111)2=2288967
另假设我们所要求解的是一个含有三个变量的优化函数,并且三个变量作用域是在3000-3255之间,该优化函数是。
这些整数可以使用8位二进制来代表,而8位二进制可代表的整数范围是255,所以我们使用基数3000,再加上二进制数的十进制值就是原来的数据了。
(当然这里取值恰好是255,可以使用8位编码,否则按照上面的方法进行编码位数设定。
)
例如:
整数3021、3058、3240可表示如下。
图1-2.编码示例
其中,像(3021,3058,3240)我们称为一个个体,而他们对应的二进制序列000101010011101011110000我们称为一条染色体。
一般情况下,我们认为染色体和个体是同一个概念,可以不作区分。
2>初始化
初始化单条染色体:
初始化大小为N的种群如下:
图1-3.种群初始化示例
其中,每个个体的长度是24,种群大小是N,如果存在一个二维数组中的话,该二维数组的大小是N×L。
3>适应度值和选择操作
在当前的迭代中,需要评估每个解的适应度值;然后基于适应度值计算个体的选择概率来选择个体用于下一次迭代;该阶段是为了选择优质的个体。
图1-4.通过适应度值计算选择概率
选择概率计算如下:
其中,是第i个个体的适应度值,如图示中的15、27、6等;为第i个个体被选择的概率,如图示中的10%、14%等都是所计算出来的选择概率。
4>交叉操作
交叉操作主要是局部搜索操作,可以分为单点交叉、两点交叉和均匀交叉。
目的是使用当前迭代中的两个个体产生2个新个体,用于下一次迭代;交叉概率一般在0.5~0.8之间,交叉点的选择是随机选择。
单点交叉:
两点交叉:
均匀交叉:
5>变异操作
变异操作主要是全局搜索,通过变异概率修改个体,变异概率一般在0.001-0.01之间。
操作如下:
6>细节流程
细节流程如下:
(1)编码、初始化、适应度值
(2)计算概率
(3)交叉操作
(4)变异操作
(5)计算适应度值
图1-5.细节流程
1.4遗传算法工具箱使用
工具箱的使用可以节约我们大量的时间,并且工具箱比较专业、规范,可以再较短的时间内获得想要的结果。
在这里建议大家使用英国Sheffield大学的工具箱,资料比较齐全,也是公认的比较强大的工具箱。
下面以校内赛A题《用户甄别与筛选》为例,来使用该工具箱。
原题如下:
3、某商家需要定位一批用户(从附件一中选取),使得这批用户的总影响力为10000、所有用户粉丝中男性总比例49.8%、所有用户平均每天发布的微博数量总和最大;请建立相关数学模型进行求解,并给出最优解时这批用户的平均“活跃粉丝比例”。
建立三个目标函数如下:
综合目标函数如下:
其中,N是所选的用户数。
在这里使用了常见的线性加权方式来解决多目标优化问题的,为了使用工具箱给出这个简单的示例,在实际中还需要把各个目标函数的数量级降成同级,还可以使用帕累托最优来求解多目标等。
具体程序如下:
主函数如下:
functionmain
%%数据清空
clc,clear
closeall;
%%数据读入
influence=importdata('data/influence.txt');
aveweibos=importdata('data/aveweibos.txt');
existactiveratio=importdata('data/existactiveratio.txt');
existratio=importdata('data/existratio.txt');
maleratio=importdata('data/maleratio.txt');
%%定义遗传算法参数
NIND=100;%个体数目(Numberofindividuals)
MAXGEN=10000;%最大遗传代数(Maximumnumberofgenerations)
GGAP=0.9;%代沟(Generationgap)
trace=zeros(MAXGEN,2);%遗传算法性能跟踪初始值
%%遗传算法实现
Chrom=randint(NIND,1000,[0,1]);%初始种群
gen=0;
ObjV=Objectvalue(Chrom,aveweibos,influence,maleratio);%计算初始种群函数值
whilegen FitnV=ranking(ObjV);%分配适应度值(Assignfitnessvalues),求最小值 SelCh=select('sus',Chrom,FitnV,GGAP);%选择 SelCh=recombin('xovsp',SelCh,0.7);%重组 f=rep([0;1],[1,1000]); SelCh=mutbga(SelCh,f);SelCh=fix(SelCh);%变异 ObjVSel=Objectvalue(SelCh,aveweibos,influence,maleratio);%计算子代目标函数值 [ChromObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);%重插入 gen=gen+1 trace(gen,1)=min(ObjV);%遗传算法性能跟踪 trace(gen,2)=sum(ObjV)/length(ObjV); end %%结果展示 [Y,I]=min(ObjV);Chrom(I,: ),Y%最优解及其目标函数值,I是最优解对应的种群号 figure,plot(trace(: 1),'-.');grid;title('解的变化'); figure,plot(trace(: 2),'r');grid;title('种群均值的变化'); 目标函数如下: functionvalue=o
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数学 建模 智能 算法 精品 文档 完整版