恳求大神指点——我想通过如何成为编程大神产生一些数并将这些数赋给simulink中的PID控制器,应该怎么做?

小木虫 --- 700万学术达人喜爱的学术科研平台
热门搜索:
&&模糊PID控制器simulink图
模糊PID控制器simulink图
看到别人做的模糊PID控制器simulink图,在误差输入前要除以2,如下图所示
请问各路大神,这是为何?
参考26横侧向滚转角Simulink.JPG
就是量化因子和比例因子吗?
我觉得应该是
如果是量化因子,那么模糊逻辑那里还能说得过去
可是为什么要把量化过的误差进行PID调节呢
我觉得调整过的误差对于闭环动力学系统的稳定性(鲁棒性)或者性能(跟随能力)会有不同的作用,具体的话我不是做模糊逻辑方面的,没法具体讲,
学术必备与600万学术达人在线互动!
扫描下载送金币查看: 5094|回复: 13|关注: 0
粒子群算法优化simulink模型中pid参数出现错误
<h1 style="color:# 麦片财富积分
新手, 积分 5, 距离下一级还需 45 积分
本帖最后由 hfutgx1 于
15:27 编辑
最近想用粒子群优化算法优化一下模型中的pid参数,算法使用的是书中的算法,我稍微做了下修改。算法如下:PSO_PID.m文件:function z = PSO_PID(x)
assignin('base','drv_kp',x(1));& && && && && && && && && && && && && && &&&%粒子群依次赋值给Kp
assignin('base','drv_ki',x(2));& && && && && && && && && && && && && && &&&%粒子群依次赋值给Ki
[y_out] = sim('ISG_Mymodel_Pso', [0, 1180]);& && && && && && && & %使用命令行运行控制系统模型
z = y_out(end, simout);& && && && && && && && && && && && && && && && && & %返回性能指标
PSO.m算法文件:
%% 清空环境
%% 参数设置
w = 0.6;& &&&% 惯性因子
c1 = 2;& && & % 加速常数
c2 = 2;& && & % 加速常数
Dim = 2;& && && && &% 维数
SwarmSize = 30;& & % 粒子群规模
ObjFun = @PSO_PID;&&% 待优化函数句柄
MaxIter = 50;& && &% 最大迭代次数
MinFit = 0.1;& && & % 最小适应值
Vmin = -1;
Ub = [300 300];
Lb = [0 0];
%% 粒子群初始化
Range = ones(SwarmSize,1)*(Ub-Lb);& &
Swarm = rand(SwarmSize,Dim).*Range + ones(SwarmSize,1)*L& &&&% 初始化粒子群& &
VStep = rand(SwarmSize,Dim)*(Vmax-Vmin) + V& && && && && & % 初始化速度& &
fSwarm = zeros(SwarmSize,1);
for i=1:SwarmSize& &
& & fSwarm(i,:) = feval(ObjFun,Swarm(i,:));& && && && && && && && & % 粒子群的适应值
%% 个体极值和群体极值
[bestf, bestindex]=min(fSwarm);
zbest=Swarm(bestindex,:);& &% 全局最佳
gbest=S& && && && && & % 个体最佳
fgbest=fS& && && && &&&% 个体最佳适应值
fzbest=& && && && && &% 全局最佳适应值
%% 迭代寻优
y_fitness = zeros(1,MaxIter);& &% 预先产生4个空矩阵
drv_kp = zeros(1,MaxIter);& && && &
drv_ki = zeros(1,MaxIter);
while( (iter & MaxIter) && (fzbest & MinFit) )& &
& & for j=1:SwarmSize& && &&&% 速度更新& && &&&
& && &&&VStep(j,:) = w*VStep(j,:) + c1*rand*(gbest(j,:) - Swarm(j,:)) + c2*rand*(zbest - Swarm(j,:));& && &&&
& && &&&if VStep(j,:)&Vmax, VStep(j,:)=V end& && &&&
& && &&&if VStep(j,:)&Vmin, VStep(j,:)=V end& && &&&% 位置更新& && &&&
& && &&&Swarm(j,:)=Swarm(j,:)+VStep(j,:);& && &&&
& && &&&for k=1:Dim& && && && &
& && && && &if Swarm(j,k)&Ub(k), Swarm(j,k)=Ub(k); end& && && && &
& && && && &if Swarm(j,k)&Lb(k), Swarm(j,k)=Lb(k); end& && &&&
& && &&&end
& && &&&% 适应值
& && &&&fSwarm(j,:) = feval(ObjFun,Swarm(j,:));& && &&&% 个体最优更新& && && && &
& && &&&if fSwarm(j) & fgbest(j)& && && && &
& && && && &gbest(j,:) = Swarm(j,:);& && && && &
& && && && &fgbest(j) = fSwarm(j);& && &&&
& && &&&end& && &&&% 群体最优更新& && &&&
& && &&&if fSwarm(j) & fzbest& && && && &
& && && && &zbest = Swarm(j,:);& && && && &
& && && && &fzbest = fSwarm(j);& && &&&
& && &&&end
& & iter = iter+1;& && && && && && && & % 迭代次数更新& &
& & y_fitness(1,iter) =& && && &% 为绘图做准备& &
& & drv_kp(1,iter) = zbest(1);& &
& & drv_ki(1,iter) = zbest(2);& &
%% 绘图输出
figure(1)& && &% 绘制性能指标ITAE的变化曲线
plot(y_fitness,'LineWidth',2)
title('最优个体适应值','fontsize',18);
xlabel('迭代次数','fontsize',18);
ylabel('适应值','fontsize',18);
set(gca,'Fontsize',18);
figure(2)& && &% 绘制PID控制器参数变化曲线
plot(drv_kp)
plot(drv_ki,'k','LineWidth',3)
title('Kp、Ki、Kd 优化曲线','fontsize',18);
xlabel('迭代次数','fontsize',18);
ylabel('参数值','fontsize',18);
set(gca,'Fontsize',18);
legend('Kp','Ki',1);
我的模型中的参数是编写在另外一个m文件中的,且模型能够单独正确运行。我想要实现的功能是算法算出一个粒子后(即P和I的值),能够自动赋给模型,然后模型运行出的目标函数也能够赋到PSO算法中,这样循环知道满足条件。但是我载入模型参数,然后运行PSO.m的时候,老是出错,这是错误信息:
Error using PSO_PID (line 4)
Error due to multiple causes.
Error in PSO (line 23)
& & fSwarm(i,:) = feval(ObjFun,Swarm(i,:));& && && && && && && && & % 粒子群的适应值
Caused by:
& & Error using PSO_PID (line 4)
& & Invalid setting in 'ISG_Mymodel_Pso/Clutch/Clutch locked/Clutch
& & inertia' for parameter 'Value'
& && &&&Error using PSO_PID (line 4)
& && &&&Error evaluating parameter 'Value' in
& && &&&'ISG_Mymodel_Pso/Clutch/Clutch locked/Clutch inertia'
& && && && &Error using PSO_PID (line 4)
& && && && &Undefined function or variable 'clutch_inertia'.
& & Error using PSO_PID (line 4)
& & The expression: u&eng_spd_start
& & in 'ISG_Mymodel_Pso/Driver/Clutch Control & Gear Shift Control/clutch
& & locking =& cmd/Fcn2'
& & has a syntax error
& & Error using PSO_PID (line 4)
& & Invalid setting in 'ISG_Mymodel_Pso/Engine/Fuel Calculate/Look-Up
& & Table (2-D)' for parameter 'RowIndex'
& && &&&Error using PSO_PID (line 4)
& && &&&Error evaluating parameter 'RowIndex' in
& && &&&'ISG_Mymodel_Pso/Engine/Fuel Calculate/Look-Up Table (2-D)'
& && && && &Error using PSO_PID (line 4)
& && && && &Undefined function or variable 'eng_spd_fuel_hot_index'.
& & Error using PSO_PID (line 4)
& & Invalid setting in 'ISG_Mymodel_Pso/Final Drive/Inertia
& & calculation/Final Drive inertia' for parameter 'Value'
& && &&&Error using PSO_PID (line 4)
& && &&&Error evaluating parameter 'Value' in 'ISG_Mymodel_Pso/Final
& && &&&Drive/Inertia calculation/Final Drive inertia'
& && && && &Error using PSO_PID (line 4)
& && && && &Undefined function or variable 'final_drive_inertia'.
& & Error using PSO_PID (line 4)
& & Invalid setting in 'ISG_Mymodel_Pso/Gearbox Manual/Inertia
& & Calculation/gb_inertia_in' for parameter 'Value'
& && &&&Error using PSO_PID (line 4)
& && &&&Error evaluating parameter 'Value' in 'ISG_Mymodel_Pso/Gearbox
& && &&&Manual/Inertia Calculation/gb_inertia_in'
& && && && &Error using PSO_PID (line 4)
& && && && &Undefined function or variable 'gearbox_inertia_in'.
& & Error using PSO_PID (line 4)
& & Invalid setting in 'ISG_Mymodel_Pso/Graphics/eng_calc_ratio_cum' for
& & parameter 'Gain'
& && &&&Error using PSO_PID (line 4)
& && &&&Error evaluating parameter 'Gain' in
& && &&&'ISG_Mymodel_Pso/Graphics/eng_calc_ratio_cum'
& && && && &Error using PSO_PID (line 4)
& && && && &Undefined function or variable 'eng_calc_ratio_cum'.
& & Error using PSO_PID (line 4)
& & Invalid setting in 'ISG_Mymodel_Pso/Mechanical Accessory/Limit Speed'
& & for parameter 'LowerLimit'
& && &&&Error using PSO_PID (line 4)
& && &&&Error evaluating parameter 'LowerLimit' in
& && &&&'ISG_Mymodel_Pso/Mechanical Accessory/Limit Speed'
& && && && &Error using PSO_PID (line 4)
& && && && &Undefined function or variable 'eng_spd_idle'.
& & Error using PSO_PID (line 4)
& & Invalid setting in 'ISG_Mymodel_Pso/Motor/Inertia (kg-s^2)' for
& & parameter 'Value'
& && &&&Error using PSO_PID (line 4)
& && &&&Error evaluating parameter 'Value' in
& && &&&'ISG_Mymodel_Pso/Motor/Inertia (kg-s^2)'
& && && && &Error using PSO_PID (line 4)
& && && && &Undefined function or variable 'mc_inertia'.
& & Error using PSO_PID (line 4)
& & Invalid setting in 'ISG_Mymodel_Pso/NIMH
& & Battery/1//ess.init.num_module_parallel' for parameter 'Gain'
& && &&&Error using PSO_PID (line 4)
& && &&&Error evaluating parameter 'Gain' in 'ISG_Mymodel_Pso/NIMH
& && &&&Battery/1//ess.init.num_module_parallel'
& && && && &Error using PSO_PID (line 4)
& && && && &Undefined function or variable 'ess_num_module_parallel'.
& & Error using PSO_PID (line 4)
& & Invalid setting in
& & 'ISG_Mymodel_Pso/Powertrain_Control/Brake_Control/1//wheel_torque_brake_max'
& & for parameter 'Gain'
& && &&&Error using PSO_PID (line 4)
& && &&&Error evaluating parameter 'Gain' in
& && &&&'ISG_Mymodel_Pso/Powertrain_Control/Brake_Control/1//wheel_torque_brake_max'
& && && && && && &&&Error using PSO_PID (line 4)
& && && && &Undefined function or variable 'wheel_torque_brake_max'.
& & Error using PSO_PID (line 4)
& & Invalid setting in 'ISG_Mymodel_Pso/Tyre/1//radius ' for parameter
& & 'Gain'
& && &&&Error using PSO_PID (line 4)
& && &&&Error evaluating parameter 'Gain' in
& && &&&'ISG_Mymodel_Pso/Tyre/1//radius '
& && && && &Error using PSO_PID (line 4)
& && && && &Undefined function or variable 'wheel_radius'.
& & Error using PSO_PID (line 4)
& & Invalid setting in 'ISG_Mymodel_Pso/Vehicle/ Vehicle mass' for
& & parameter 'Value'
& && &&&Error using PSO_PID (line 4)
& && &&&Error evaluating parameter 'Value' in 'ISG_Mymodel_Pso/Vehicle/
& && &&&Vehicle mass'
& && && && &Error using PSO_PID (line 4)
& && && && &Undefined function or variable 'vehicle_mass'.
大概就是讲我模型参数有问题??但是我直接载入参数直接运行模型是可以正确运行的。。求大神花时间看一下到底是哪里有问题。
matlab.png (14.95 KB, 下载次数: 323)
15:20 上传
<h1 style="color:# 麦片财富积分
有没有做过此类优化的大神来指点一二。。:Q
<h1 style="color:# 麦片财富积分
楼主解决了么?能不能给下指导,谢谢
<h1 style="color:# 麦片财富积分
楼主,请问这是那本书的程序,急求:time:
<h1 style="color:# 麦片财富积分
z = y_out(end, simout);& && && && && && && && && && && && && && && && && & %返回性能指标
这段错了吧!simout是什么鬼?
z = y_out(end, 1);& &&&试试
<h1 style="color:# 麦片财富积分
[y_out] = sim('ISG_Mymodel_Pso', [0, 1180]);
[t_time,x_state,y_out] = sim('ISG_Mymodel_Pso', [0, 1180]);
<h1 style="color:# 麦片财富积分
楼主,请问这是那本书的程序,急求
matlab智能算法30个案例中的,只不过楼主改去了一个Kd
<h1 style="color:# 麦片财富积分
<h1 style="color:# 麦片财富积分
出现相同的问题,pso工具箱有没有
<h1 style="color:# 麦片财富积分
楼内问题解决了吗?可不可以指点下?
站长推荐 /1
MATLAB中文论坛是全球最大的 MATLAB & Simulink 中文社区。用户免费注册会员后,即可下载代码,讨论问题,请教资深用户及结识书籍作者。立即注册加入我们吧!
MATLAB官方社交平台
MATLAB中文论坛微社区豆丁微信公众号
君,已阅读到文档的结尾了呢~~
基于S函数的RBF神经网络PID控制器Simulink仿真,simulink pid控制器,simulink pid仿真,simulink pid仿真实例,simulink模糊控制器,simulink pid,matlab simulink pid,simulink pid模块,模糊pid simulink,simulink中pid模块
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于S函数的RBF神经网络PID控制器Simulink仿真
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口【doc】基于S函数的RBF神经网络PID控制器Simulink仿真doc下载_爱问共享资料
【doc】基于S函数的RBF神经网络PID控制器Simulink仿真.doc
【doc】基于S函数的RBF神经网络PID控制器Simulink仿真.doc
【doc】基于S函数的RBF神经网络PID控制器Simulin…
简介:本文档为《【doc】基于S函数的RBF神经网络PID控制器Simulink仿真doc》,可适用于高等教育领域,主题内容包含【doc】基于S函数的RBF神经网络PID控制器Simulink仿真基于S函数的RBF神经网络PID控制器Simulink仿真第卷第期OO年月安徽冶符等。
侵权或盗版
*若权利人发现爱问平台上用户上传内容侵犯了其作品的信息网络传播权等合法权益时,请按照平台要求书面通知爱问!
赌博犯罪类
添加成功至
资料评价:
所需积分:0

我要回帖

更多关于 可编程控制器的产生 的文章

 

随机推荐