how can i write cost function in firefly algorithm for optimal tuning pid parameters in matlab
4 ビュー (過去 30 日間)
古いコメントを表示
Iam using firefly algorithm for optimal tuning pid parameters , the cost function is IAE i wrote IAE function as a function of pid parameters {kp,ki.kd} but it doesnot work it gives error that it undefined variable ,should i give initial values for parameters?? and what is error in the IAE function
costFunction = integral(abs(error),0,Inf);
it gives Undefined function 'abs'
0 件のコメント
回答 (2 件)
noor diyana
2017 年 5 月 11 日
Here are example from my senior project. You can try it. You can change the objective function, MaxIt, runtime as system that you want. Anything can email me diyana.escosa2014@gmail.com All the best!
2 件のコメント
Hansem Rosas Ramos
2024 年 6 月 5 日
Hello Noor diyana,
Pls could you explain me how to change the system in the code, in my case I must change for this system:
G(s)=1065.5/(s+10.57) (Plant)
I think that in your code called "trackls.m", i have to change in SystemA for the feedback controlled system (Wc(s)=(G(s)C(s))/(1 + G(s)C(s)),where C(s)=Kp + Ki/s + Kd*s , and continue the operation algebratically, for example my feedback system controlled would be:
SystemA=tf([1605.5*kd 1605.5*kp 1605.5*ki ],[(1605.5*kd + 1) (1605.5*kp + 10.57) 1605.5*ki]);
this is correct?
And then the main program pulls the data and parameters contained in the tracklsq code? Pls I would appreciate it if you could explain that part better to me.
Best Regards
ednilson szeskoski
2017 年 9 月 3 日
I have the same problem. I'm implementing PID for a voltage control system. The goal is to optimize using firefly, the same error quoted is happening, how can I implement in the code the transfer function of my case? Thank you.
tf([0.004, 0.454, 5.55, 15.1, 10], [1.6e-05, 0.002032, 0.04732, 0.4286, 2.133, 8.76, 18.01, 11])


3 件のコメント
ednilson szeskoski
2017 年 9 月 3 日
編集済み: Walter Roberson
2017 年 9 月 3 日
The image where the mesh is drawn representing the system is only for understanding my system I work with it in simulink but only by changing the PID values, the image with the equation is the result of the transfer function of the feedback system, in which I am not able to implement in the Diyana code.
Below I have the code that I made simply to get the transfer function. Now the problem is to apply the adapted PID to the firefly optimization code.
%%Malha da excitação
amp = tf([10] , [0.1 1])
exit = tf([1] , [0.4 1])
ger = tf([1] , [1 1])
sens = tf([1], [0.01 1])
h = amp * exit * ger
g = sens
malhaeq = h / (1+h*g)
step(malhaeq)
参考
カテゴリ
Help Center および File Exchange で PID Controller Tuning についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!