作业帮 > 综合 > 作业

请问怎么不使用matlab的遗传算法工具箱用matlab遗传算法求极值?

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/05/10 08:57:26
请问怎么不使用matlab的遗传算法工具箱用matlab遗传算法求极值?
求函数f(x)=abs(4*sin(x))*(exp(-0.1*x))的最大值
继续源码,
不好意思忘了写上了,x>=0
多谢大侠这么热心,但是我要这个程序并不只是简单的要求函数最大值,最后要用在卫星天线付形的程序中,所以一定得要遗传算法的
请问怎么不使用matlab的遗传算法工具箱用matlab遗传算法求极值?
【1】先看看图形.
subplot(2,1,1)
ezplot('abs(4*sin(x))*(exp(-0.1*x))')
subplot(2,1,2)
ezplot('abs(4*sin(x))*(exp(-0.1*x))',[-4*pi 2*pi])
图形见:
http://hi.baidu.com/chemical%5Fengineering/album/item/0289d0165bb4ed1c962b43e7.html
【2】用fminbnd函数最简单,遗传算法俺不会啊
fun=inline('-abs(4*sin(x))*(exp(-0.1*x))')%最大值的负数就是最小值
x = fminbnd(fun,0,2*pi) %求最小值
maxval=-subs(fun) %最小值的负数就是最大值
运行结果:
fun =
Inline function:
fun(x) = -abs(4*sin(x))*(exp(-0.1*x))
x = 1.4711
maxval = 3.4357
【3】这个是遗传算法,您试试.