how can i write cost function in firefly algorithm for optimal tuning pid parameters in matlab

9 visualizaciones (últimos 30 días)
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'

Respuestas (2)

noor diyana
noor diyana el 11 de Mayo de 2017
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!
  1 comentario
sandy jeak
sandy jeak el 13 de Mayo de 2017
Thanks for answering me, I put my system in the code and i have that error Reference to non-existent field 'Position'. Error in main (line 112) Trace_pid=[Trace_pid;BestSol.Position]; How can I fix that. Thanks in advance

Iniciar sesión para comentar.


ednilson szeskoski
ednilson szeskoski el 3 de Sept. de 2017
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 comentarios
ednilson szeskoski
ednilson szeskoski el 3 de Sept. de 2017
Editada: Walter Roberson el 3 de Sept. de 2017
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)

Iniciar sesión para comentar.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by