# How can i use Genetic algorithm in simulink for PID?

16 views (last 30 days)
Mohammed benzaouia on 4 Nov 2019
Commented: Sam Chak on 6 Jun 2022
Hello,
I want to use genetic algorithm to find Kp,Ki and Kd for PID controller in SimulinK,
can someone give me some ideas ?

JESUS DAVID ARIZA ROYETH on 4 Nov 2019
To perform a genetic algorithm in simulink and find optimal parameters of a pid controller, the first thing you have to do is define how you are going to encode these parameters in a population, I recommend that the population encode it in digits, after this, you must define the performance of each individual based on the stability of the process (which you can evaluate by simulating some disturbances) and thus being able to select individuals in several iterations, you will probably need help from some codes in Matlab, since it would be much easier to do it in Matlab directly

Ibrahim Seleem on 12 Feb 2020
The main idea is creating s fitness function which depend on the process you want. In your case, I suggest to use sum of square error
function y=fcn(x)
Kp=x(1);
Ki=x(2);
Kd=x(3);
simopt = simset('solver','ode5','SrcWorkspace','Current','DstWorkspace','Current'); % Initialize sim options
err1=error.^2;
err=sum(err1);
end
Sam Chak on 6 Jun 2022
Can you open and ask a new question?
fitfun = @hata;
options = optimoptions('ga', 'ConstraintTolerance', 1e-6, 'PlotFcn', @gaplotbestf);
[K, fval] = ga(fitfun, nvars, A, b, Aeq, beq, lb, ub, nonlcon, options)
K =
1.37333774469592 1.13832193717631 0.392244213118769
fval =
1.67188417949144 