首页 > 搜索 > 遗传算法怎样得到自变量的值,遗传算法求解实例

遗传算法怎样得到自变量的值,遗传算法求解实例

互联网 2020-10-26 00:13:05
在线算命,八字测算命理

yj1.m :简单一元函数优化实例,利用遗传算法计算下面函数的最大值

0.2)*10sin()(+=x x x f π,∈x [-1, 2]

选择二进制编码,种群中个体数目为40,每个种群的长度为20,使用代沟为0.9,

最大遗传代数为25

译码矩阵结构:??????????

???????

????

?=ubin lbin scale code

ub lb len FieldD 译码矩阵说明:

len – 包含在Chrom 中的每个子串的长度,注意sum(len)=length(Chrom); lb 、ub – 行向量,分别指明每个变量使用的上界和下界;

code – 二进制行向量,指明子串是怎样编码的,code(i)=1为标准二进制编码,

code(i)=0则为格雷编码; scale – 二进制行向量,指明每个子串是否使用对数或算术刻度,scale(i)=0为算术

刻度,scale(i)=1则为对数刻度; lbin 、ubin – 二进制行向量,指明表示范围中是否包含每个边界,选择lbin=0或

ubin=0,表示从范围中去掉边界;lbin=1或ubin=1则表示范围中包含边界; 注:增加第22行:variable=bs2rv(Chrom, FieldD);否则提示第26行plot(variable(I),

Y, 'bo'); 中variable(I)越界

yj2.m :目标函数是De Jong 函数,是一个连续、凸起的单峰函数,它的M 文件objfun1包含在GA 工具箱软件中,De Jong 函数的表达式为:

==

n

i i x x f 1

2

)(, 512512≤≤-i x

这里n 是定义问题维数的一个值,本例中选取n=20,求解 )(min x f ,程序主要变量:

NIND (个体的数量):=40;

MAXGEN (最大遗传代数):=500;

NV AR (变量维数):=20;

PRECI (每个变量使用多少位来表示):=20;

GGAP (代沟):=0.9

注:函数objfun1.m 中switch 改为switch1,否则提示出错,因为switch 为matlab

保留字,下同!

yj3.m :多元多峰函数的优化实例,Shubert 函数表达式如下,求)(min x f 【shubert.m 】

∑∑==++++=

5

1

251

1

21]*)1cos[(*]*)1cos[(),(i i i x i i i x

i i x x f ,10,1021≤≤-x x

注:第10行各变量的上下限改为[-10;10],原来为[-3;3]; 第25行改为:[Y , I]=min(ObjV);原来为[Y , I]=min(ObjVSel);以此将染色体的个

体值与shubert()函数值对应起来,原表达式不具有shubert()函数自变量和应

变量的对应关系

yj4.m :收获系统最优控制,收获系统(Harvest)是一个一阶的离散方程,表达式为

遗传算法求解实例

)()(*)1(k u k x a k x -=+, =k 1,2,…,N ..t s )0(x 为初始条件

R k x ∈)(为状态变量 +

∈R k u )(为控制输入变量

目标函数:)0()(20

4.0)(),(6

.01

x N x k u u x f N

k --

=

=

精确优化解:)

1()

1)(0()(max 1

2

--=

-a a

a x x f N N

用遗传算法对此问题求解,100)0(=x ,1.1=α,控制步骤N=20,决策变量)(k u

个数NV AR=20,]200,0[)(∈k u

注:第20行语句原为:Chrom=crtrp(NIND,FieldDD);

改为:Chrom=crtrp(SUBPOP*NIND,FieldDD); 运行提示:

Warning: File: D:\MA TLAB6p5\toolbox\gatbx\CRTRP .M Line: 34 Column: 19 V ariable 'nargin' has been previously used as a function name.

(Type "warning off MA TLAB:mir_warning_variable_used_as_function" to suppress this warning.)

yj5.m :装载系统的最优问题,装载系统是一个二维系统,表达式如下

)

(1)()(*2)1()

遗传算法求解实例

()1(2

12221k u N

k x k x k x k x k x +

-=+=+ =k 1,2,…,N

目标函数:∑=+

+-=N

k k u

N

N x u x f 1

2

1)(21)1(),(

理论最优解:∑-=+

-+

-

=1

1

2

3

2

216133

1),(min N k k

N

N

N u x f

用遗传算法对此问题求解,=)0(x [0 0],控制步骤N=20,决策变量)(k u 个数

NV AR=20,]10,0[)(∈k u

注:增加第32-35行语句,功能为实现每隔MIGGEN=20代,以迁移率MIGR=0.2在子种群之间迁移个体,增加这几行语句之前求得目标函数最小值为-0.1538,增加这几行语句之后求得目标函数最小值为-0.1544,目标函数理论最优值为-0.1544.

yj6.m :离散二次线性系统最优控制问题,其一维二阶线性系统表达式如下:

)(*)(*)1(k u b k x a k x +=+, =k 1,2,…,N

目标函数:

∑=++

+=N

k k u r k x s n x q u x f 1

2

2

2

])(*)

(*[)1(*),(

参数设置:

遗传算法求解实例

求),(min u x f

yj7.m :目标分配问题描述为:m 个地空导弹火力单元对n 批空袭目标进行目标分配。假设进行目标分配之前,各批目标的威胁程度与各火力单元对各批目标的射击有利程

度已经经过评估和排序。第j 批目标的威胁程度评估值为j w ,第i 个火力单元对第j 批目标射击有利程度估计值为ij p (j w 、ij p 的值在程序文件targetalloc.m 中),令各火力单元对各批目标进行拦击的效益值为ij j ij p w c *=,其中ij c 表示对某批目标进行拦击我方获益大小程度。目标分配的目的是满足目标分配的基本原

则,追求总体效益最佳,即求)max(

1

∑=n

j ij

c

遗传算法求解实例

注:最大遗传代数MAXGEN=50改为MAXGEN=400,方能比较稳定地得到总收

益为6.4719

【targetalloc.m 】

yj8.m :双积分的优化问题,双积分问题的状态方程为:

遗传算法求解实例

21x x = 12x x = 2x y =

时间范围:10≤≤t ;

初始条件:0)0(1=x ;1)0(2-=x ; 终止条件:0)0(1=x ;0)0(2=x . 目标函数:?

=

1

2

)()(min dt t u u f

双积分问题的Simulink 模型:

遗传算法求解实例

注:在matlab6.5版本下提示RK23函数已过旧,为防止循环过程因不断调用RK23函数而出现大量的如下警告提示: Warning: RK23 is obsolete and will be eliminated in future versions. Use SIM instead. > In D:\MA TLAB6p5\toolbox\simulink\simulink\rk23.m at line 15 In D:\MA TLAB6p5\toolbox\gatbx\test_fns\OBJDOPI.M at line 93 In j:\gatbx\yj8.m at line 18

Warning: Output port 1 of block 'SIMDOPI1/Integrator2' is not connected. 可以在Matlab 命令窗口中键入warning off 以消除此类警告提示

【yj9】雷达目标识别问题

注:没有源码

yj10.m :图像分割问题,利用遗传算法进行图像分割的基本思想是:把图像中的像素按灰度值用域值M 分成两类图像,一类为目标图像1C ,另一类为背景图像2C 。图像1C 由

灰度值在0~M 之间的像素组成,图像2C 由灰度值在M+1~L-1(L 为图像的灰度级数)之间的像素组成。本例处理图像为256灰度级,将灰度分割域值编码为一个8位0、1二进制码串,适应度函数选为:

2

2121)]()([*)(*)()(M U M U M W M W M f -=

其中)(1M W 为目标图像1C 中所包含的像素数;)(2M W 为目标图像2C

中所包含

Import

Integrator1

Integrator2

【target.m 】

的像素数;)(1M U 为1C 中所有像素数的平均灰度值;)(2M U 为2C 中所有像素

数的平均灰度值。

注:经过50次迭代后的分割图像域值为120,代入目标函数后知116~122都是所

求的最佳分割图像域值,可见遗传算法有助于缩小检索范围。

【yj11】一些测试函数对应的优化问题(列于表内)

表6.2 工具箱提供的测试文件

遗传算法求解实例

yj12.m :多目标优化问题,含有两个优化目标的多目标优化问题表达式如下: min 4

422

211x x f +

遗传算法求解实例

= min

10)1(212+-=x x f

..t s 411≤≤x ,212≤≤x

对于该问题,利用权重系数变换法很容易求出Pareto 最优解,本例中确定1f 和2f 的权重系数都为0.5。

注:此例中经遗传算法优化子代个体数目逐步减少,最后稳定在10个染色体个体

yj12_1.m :同上,改进之处为使用reins 恢复函数使得子代数量(子代染色体个数)等于父

代数量(父代染色体个数),一次计算上例得min(f1(v)+f2(v))=10.4758,本例得

min(f1(v)+f2(v))=10.1033,最大遗传代数均为MAXGEN=50.

gaplotchange.m :Matlab 遗传算法工具箱自己创建的绘图函数(7.1版本工具箱帮助文件中

有)

poll_example.m :完全表决示例函数(7.1版本直接搜索工具箱帮助文件中有)

【f1.m ,f2.m 】

【f1.m ,f2.m 】

parameterfun.m:利用匿名函数参数化函数,首先编写此含参数调用的函数,然后在MA TLAB工作空间输入下列命令,给匿名函数定义一个句柄:

a=4;b=2.1;c=4;objfun=@(x) parameterfun(x,a,b,c);x0=[0.5 0.5];

如果接着决定改变a、b、c的值,必须重新建立一个匿名函数,例如:

a=3.6;b=2.4;c=5;objfun=@(x) parameterfun(x,a,b,c);

runps.m:利用嵌套函数参数化函数,为运行最优化,可键入:

a=4;b=2.1;c=4;x0=[0.5 0.5];

[x fval]=runps(a,b,c,x0)

免责声明:非本网注明原创的信息,皆为程序自动获取互联网,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责;如此页面有侵犯到您的权益,请给站长发送邮件,并提供相关证明(版权证明、身份证正反面、侵权链接),站长将在收到邮件12小时内删除。

相关阅读

一周热门

查看更多