The problem is that i am getting negative values of kp and ki, how i can get value in specific range?
    8 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    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 Commenti
Risposte (1)
  Walter Roberson
      
      
 il 10 Lug 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 Commenti
  Walter Roberson
      
      
 il 12 Lug 2017
				? How do you get from those minimizations in the paper to your u expression ??
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



