声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1485|回复: 10

[综合讨论] 遗传算法求解ITAE

[复制链接]
发表于 2008-1-7 21:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本人在用遗传算法求解ITAE整定PID时,了解有两种方法,一是自己编写目标函数的.M文件,二是用simulink做个模型自动生成,但是现在看了三本书和一些网上的资料后仍然搞不定,一个问题是matlab书上没有关于多参量数值积分的介绍,另一个是不知道如何使用simulink来生成.M文件,恳请各位大家指教。
回复
分享到:

使用道具 举报

发表于 2008-1-7 21:53 | 显示全部楼层
 楼主| 发表于 2008-1-8 12:47 | 显示全部楼层

回复 #2 sigma665 的帖子

先谢谢了啊,不过quad只支持单参量积分,多参量的matlab帮助里并没有说明,版主示例里的,那些那是单变量的,然后又找了找,找到你以前发过的那个裂纹的程序,不懂,于是照猫画虎改了下,有问题,能否帮忙看下这个错误
In an assignment  A(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 编辑 ]
 楼主| 发表于 2008-1-8 13:08 | 显示全部楼层
现在的问题是能够把这个函数正确表达出来即可,剩下的由算法去搞定,本人愚钝大侠帮忙啊
发表于 2008-1-8 13:09 | 显示全部楼层

回复 #3 mlxk 的帖子

x(4)=linspace(0,inf);

这个不能这样吧,要是无穷大的话,取一个很大的数
 楼主| 发表于 2008-1-8 13:15 | 显示全部楼层

回复 #5 sigma665 的帖子

取了很大也不行,还是那个错误,现在来看不知道思路是不是也有问题了,郁闷啊
发表于 2008-1-8 13:23 | 显示全部楼层

回复 #6 mlxk 的帖子

:@L
x(4)是一个数...
刚刚没注意.

你的x是一个一维矩阵?
x(1),x(2),x(3),x(4),x(5),是其中的某个值??

[ 本帖最后由 sigma665 于 2008-1-8 13:25 编辑 ]
 楼主| 发表于 2008-1-8 13:30 | 显示全部楼层
我设的是  p=x(1)
               i=x(2)
               d=x(3)
               w=x(4)
               t=x(5)  把传递函数里面的信息都包含在那两个函数里,kesi=p+i/s+ds
 楼主| 发表于 2008-1-8 13:32 | 显示全部楼层
最后是对x(5)也就是对时间t求积分,上下限是[0,inf],是这样
发表于 2008-1-8 13:50 | 显示全部楼层

回复 #9 mlxk 的帖子

那不要用x(i)来表示,x(i)表示一维矩阵里的某一个值
用原来的字母...
w=linspace(0,inf);这个不行,第一数是nan,其他都是inf
 楼主| 发表于 2008-1-8 14:28 | 显示全部楼层
查了下,inspace要求是个确定是两个数之间的距离,quad应该是不能用多变量,不然就容易多了,谢谢sigma665
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-23 17:22 , Processed in 0.058887 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表