遗传算法求解ITAE
本人在用遗传算法求解ITAE整定PID时,了解有两种方法,一是自己编写目标函数的.M文件,二是用simulink做个模型自动生成,但是现在看了三本书和一些网上的资料后仍然搞不定,一个问题是matlab书上没有关于多参量数值积分的介绍,另一个是不知道如何使用simulink来生成.M文件,恳请各位大家指教。 原帖由 mlxk 于 2008-1-7 21:45 发表 http://www.chinavib.com/forum/images/common/back.gif一个问题是matlab书上没有关于多参量数值积分的介绍
这个问题,本版有很多,请搜索
http://www.chinavib.com/forum/viewthread.php?tid=42369&extra=page%3D1%26amp%3Bfilter%3Ddigest
[ 本帖最后由 sigma665 于 2008-1-7 22:19 编辑 ]
回复 #2 sigma665 的帖子
先谢谢了啊,不过quad只支持单参量积分,多参量的matlab帮助里并没有说明,版主示例里的,那些那是单变量的,然后又找了找,找到你以前发过的那个裂纹的程序,不懂,于是照猫画虎改了下,有问题,能否帮忙看下这个错误In an assignmentA(I) = B, the number of elements in B and
I must be the same.
程序是:
function z = w(x)
x(4)=linspace(0,inf);
kesi=x(1)+x(2)/(x(4)*x(5))+x(3)*x(4)*x(5);
z=arrayfun(@(kesi) quad(@(b) kesi*exp(-0.06*x(4)*x(5))/(1+kesi),0,inf),x(5));
[ 本帖最后由 mlxk 于 2008-1-8 13:32 编辑 ] 现在的问题是能够把这个函数正确表达出来即可,剩下的由算法去搞定,本人愚钝大侠帮忙啊
回复 #3 mlxk 的帖子
x(4)=linspace(0,inf);这个不能这样吧,要是无穷大的话,取一个很大的数
回复 #5 sigma665 的帖子
取了很大也不行,还是那个错误,现在来看不知道思路是不是也有问题了,郁闷啊回复 #6 mlxk 的帖子
:@Lx(4)是一个数...
刚刚没注意.
你的x是一个一维矩阵?
x(1),x(2),x(3),x(4),x(5),是其中的某个值??
[ 本帖最后由 sigma665 于 2008-1-8 13:25 编辑 ] 我设的是p=x(1)
i=x(2)
d=x(3)
w=x(4)
t=x(5)把传递函数里面的信息都包含在那两个函数里,kesi=p+i/s+ds 最后是对x(5)也就是对时间t求积分,上下限是,是这样
回复 #9 mlxk 的帖子
那不要用x(i)来表示,x(i)表示一维矩阵里的某一个值用原来的字母...
w=linspace(0,inf);这个不行,第一数是nan,其他都是inf 查了下,inspace要求是个确定是两个数之间的距离,quad应该是不能用多变量,不然就容易多了,谢谢sigma665
页:
[1]