The problem is that i am getting negative values of kp and ki, how i can get value in specific range?
9 ビュー (過去 30 日間)
古いコメントを表示
function F = tracklsq(pid)
syms x;
limit_1 = 0;
limit_2 = 10;
Area = int(x,limit_1, limit_2);
Kp = pid(1);
Ki = pid(2);
z=Kp*0.1+Ki*0.1*Area; %objective function
sys_overshoot=z-1; % compute the overshoot
alpha=10;beta=10;
F=0.1*2*beta+sys_overshoot*alpha;
end
PSO code is attached
0 件のコメント
回答 (1 件)
Walter Roberson
2017 年 7 月 10 日
Your pso code has
current_position = 10*(rand(dim, n)-.5);
rand() is going to be in the range 0 to 1, so rand() - 0.5 is going to be in the range -0.5 to +0.5; 10 times that would be -5 to +5 .
If you do not want negative inputs, then do not subtract .5 in this statement.
8 件のコメント
Walter Roberson
2017 年 7 月 12 日
? How do you get from those minimizations in the paper to your u expression ??
参考
カテゴリ
Help Center および File Exchange で Get Started with Optimization Toolbox についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!