Particle swarm optimisation problem
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
Walter Roberson
2019-8-18
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.
回答(1 个)
Nishma Sai
2021-1-22
can u just provide the entire code as i got some errors with my code
1 个评论
Walter Roberson
2021-1-22
You could post your attempt, along with the error message, and we could help you debug the problems.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Particle Swarm 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!