The problem is that i am getting negative values of kp and ki, how i can get value in specific range?
    7 views (last 30 days)
  
       Show older comments
    
    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 Comments
Answers (1)
  Walter Roberson
      
      
 on 10 Jul 2017
        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 Comments
  Walter Roberson
      
      
 on 12 Jul 2017
				? How do you get from those minimizations in the paper to your u expression ??
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


