Particle swarm optimisation problem
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello all,
I am trying to use PSO for solving a system of nonlinear transcendental equations used in SHE PWM.
Following is the code i am using to solve
fun = @(alpha) pwm_equations_multilevel_pso(alpha0,1,2,harmonics)
nvars = 3;
lb=[0, 0, 0];ub=[deg2rad(90),deg2rad(90),deg2rad(90)];
options = optimoptions('particleswarm','SwarmSize',200,'MaxStallIterations',200)
options = optimoptions(options,'PlotFcn',@pswplotbestf);
[x,fval,exitflag,output] = particleswarm(fun,nvars,lb,ub,options)
where 'pwm_equations_multilevel_pso' is simply as follows
function F_dot = pwm_equations_multilevel_pso(alpha,M,harmonic_cancellation,harmonics)
F(1) = cos(harmonics(1)*alpha(1)) + cos(harmonics(1)*alpha(2)) - cos(harmonics(1)*alpha(3));
F(2) = cos(harmonics(2)*alpha(1)) + cos(harmonics(2)*alpha(2)) - cos(harmonics(2)*alpha(3));
F(3) = (cos(alpha(1)) + cos(alpha(2)) - cos(alpha(3))) - M;
F_dot=dot(F,F)
end
So the scalar value returned is a dot product of F with itself. I want to minimize F_dot to zero, but when i use PSO i get the following result
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/234379/image.jpeg)
Unfortunately PSO does not converge to zero, it does not do anything in my case.
Obviously I am doing something wrong, but I am not sure what
Any help will be appreciated!
6 Kommentare
Walter Roberson
am 18 Aug. 2019
particleswarm() does not offer any constraints other than lb / ub .
You could add a penalty to the output for inputs that are out of order.
Antworten (1)
Nishma Sai
am 22 Jan. 2021
can u just provide the entire code as i got some errors with my code
1 Kommentar
Walter Roberson
am 22 Jan. 2021
You could post your attempt, along with the error message, and we could help you debug the problems.
Siehe auch
Kategorien
Mehr zu Particle Swarm finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!