[已解决] BP神经网络PID在线simulink仿真例程(独立修改版,亲测可用)

  [复制链接]
popvip44 发表于 2017-8-22 10:18:48
网上流传的那份代码和simulink框架都有问题,各种报错,主要报错有:
1、The sample time [0, 0] of '...' at input port 1 isdifferent from the sample time 1 of '...' at output port 1.
解决方法:修改function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes中的ts为ts=[0 0];
2、Output returned by S-function '...' in 'BPPID/S-Function' during flag=3 call must be a real vector of length 4
或者报错有代数环
解决方法:因为S函数的输入的初始值是不能确定的,只有在几次迭代之后才能确定,都默认设置为0的话会导致在迭代过程中产生除以0的情况,这样就会报错。所以要在subsystem中加好多延时单元,在延时单元上手工设定S函数输入变量的初始值。
QQ截图20170822101403.png
最后,放上一阶系统跟踪阶跃信号的图:

QQ截图20170822101907.png

BPPID.slx (16.3 KB, 下载次数: 2463)

最佳答案


wutaoshihaoren 发表于 2017-8-25 21:44:47
跟帖,送上大大的赞,谢谢,分享:)
回复此楼

50 条回复


wutaoshihaoren 发表于 2017-8-25 21:44:47
跟帖,送上大大的赞,谢谢,分享:)
回复此楼

kimi2zhao 发表于 2017-12-21 13:42:13
为什么我的报错:矩阵维度必须一致啊?不知道哪里出错了

jiangnanbawang 发表于 2018-1-22 22:50:47
厉害厉害,亲测有效,都想给你包红包!

森林木2号 发表于 2018-2-28 20:18:03
请问为什么改变传递函数,输出就不收敛了呢?

GTsugar_1 发表于 2018-3-2 16:03:39
楼主,这是什么问题?The block 'BPPID/Subsystem/Unit Delay1' does not permit continuous sample time (0 or [0,0]) for the parameter 'SampleTime'.

jiangnanbawang 发表于 2018-3-4 20:48:12
森林木2号 发表于 2018-2-28 20:18
请问为什么改变传递函数,输出就不收敛了呢?

我也想问这个问题其实,改变传函确实不收敛了

JWJWJW 发表于 2018-3-9 20:58:38
jiangnanbawang 发表于 2018-1-22 22:50
厉害厉害,亲测有效,都想给你包红包!

请问,S-function parameters 怎么设置的?非常感谢

JWJWJW 发表于 2018-3-9 21:01:43
森林木2号 发表于 2018-2-28 20:18
请问为什么改变传递函数,输出就不收敛了呢?

请问,S-function parameters 怎么设置的?非常感谢

ZM123456-matlab 发表于 2018-4-9 09:42:42
楼主,为什么我的出现这个啊The block 'BPPID/Subsystem/Unit Delay1' does not permit continuous sample time (0 or [0,0]) for the parameter 'SampleTime'.

power帅 发表于 2018-4-28 15:16:21
ZM123456-matlab 发表于 2018-4-9 09:42
楼主,为什么我的出现这个啊The block 'BPPID/Subsystem/Unit Delay1' does not permit continuous sample  ...

我也出现这个 请问解决了吗

power帅 发表于 2018-4-28 15:34:39
GTsugar_1 发表于 2018-3-2 16:03
楼主,这是什么问题?The block 'BPPID/Subsystem/Unit Delay1' does not permit continuous sample time ( ...

我也出现这个问题 请问解决了吗

张冲_s5rLD 发表于 2018-5-17 10:20:06
jiangnanbawang 发表于 2018-1-22 22:50
厉害厉害,亲测有效,都想给你包红包!

您好,想请教一下您楼主说的要在延时单元上手动输入变量的初值应该怎么赋值啊。为什么我给完初值还是报错那。是我的初值给的不对吗。您可以给我解答一下吗?

zbsj 发表于 2018-5-24 19:30:01
楼主,我运行后出现这个问题
To ensure consistent initialization of conditionally executed subsystem output ports in the block diagram 'BPPID1', you must enable strict bus modeling by setting both of the options 'Mux blocks used to create bus signals' and 'Bus signal treated as vector' in the Connectivity Diagnostics pane of the Configuration Parameters dialog box to 'error'. Note that you may need to make modifications to the block diagram to conform to the modeling standards set by these diagnostics. For more information on how to make such modifications, see Simulink documentation under 'Diagnostics Pane: Connectivity' or run the Model Advisor check 'Check bus usage'

guoyuan0627 发表于 2018-5-28 19:47:52
kimi2zhao 发表于 2017-12-21 13:42
为什么我的报错:矩阵维度必须一致啊?不知道哪里出错了

是不是inner matrixs dimension must agree?如果是这个问题,好好检查自己的程序,从上到下,我的也有这个问题,检查程序后发现有个变量给的不对

曾小龙 发表于 2018-6-8 10:20:15
ZM123456-matlab 发表于 2018-4-9 09:42
楼主,为什么我的出现这个啊The block 'BPPID/Subsystem/Unit Delay1' does not permit continuous sample  ...

我也是出现这种错误,请问您解决了吗?

shuang11223344 发表于 2018-6-14 14:36:51
换个对象模型继续报错Output returned by S-function '...' in 'BPPID/S-Function' during flag=3 call must be a real vector of length 4怎么办

浅影川还2323 发表于 2018-6-19 10:38:11
曾小龙 发表于 2018-6-8 10:20
我也是出现这种错误,请问您解决了吗?

将subsystem的unit delay的Sample time都设成-1,示波器可以出现波形,不过我的和楼主的不太一样,你可以试试

dfyun 发表于 2018-7-13 11:31:29
jiangnanbawang 发表于 2018-3-4 20:48
我也想问这个问题其实,改变传函确实不收敛了

你们知道为什么了吗?

dfyun 发表于 2018-7-13 11:32:49
我想知道为啥神经网络可以对PID参数进行正定?神经网络是如何实现自动整定的?

luyaoyang 发表于 2018-7-15 09:33:38
我想知道为啥神经网络可以对PID参数进行正定?神经网络是如何实现自动整定的?

打得不错 发表于 2018-8-5 11:04:37
感谢分享

若猴君 发表于 2018-9-17 20:08:19
感谢楼主,正在学习,非常有用

稀客 发表于 2018-11-1 19:41:16
谢谢楼主,感谢

ZTW 发表于 2018-11-2 17:33:23
改变传递函数之后结果不收敛,我也是这个情况。我综合对比了几个仿真程序,发现如果把传递函数放在simulink里运行,会出现这样的错误An error occurred while running the simulation and the simulation was terminated
Caused by:
Output returned by S-function 'exppidf' in 'BPPID_gai/S-Function' during flag=3 call must be a real vector of length 4
初步分析可能是迭代过程中出现了NAN的量,但是目前为止还没查出原因。
或者说神经网络PID控制需要特定的传递函数?这个问题没人做,现在的资料全都是弄一个惯性环节,说不好听的太容易了,做控制的人不可能面对这么简单的对象的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表