function [duty,iterations] = TSOMPPT(vpv,ipv) persistent p u dc dbest counter iteration iter_max num; if isempty(num) num=10; end if isempty(p) p=zeros(1,num); dbest=0; counter=0; u=1; iteration=0; iter_max=15; end if isempty(dc) dc=linspace(0,0.7,num); end iterations=iteration; if iterations<=iter_max if(counter>=1 && counter<=100) duty=dc(u); counter=counter+1; return; end if(u>=1 && u<=num) p(u)=vpv*ipv; end u=u+1; if(u<num+1) duty=dc(u); counter=1; return; end u=1; counter=1; iteration=iteration+1; [m,i]=max(p); dbest=dc(i); dc1=EPOUpdateDuty(dbest,dc,iteration,iter_max,num); dc=dc1; duty=dc(u); return; else duty=dbest; return; end end function D=EPOUpdateDuty(dbest,d,iter,iter_max,num) D=zeros(1,num); dup=zeros(1,num); persistent s; if isempty(s) s=0.5; end res=0.01; if iter>iter_max iter=iter_max; end eta=(res/s)^(iter/iter_max); s=s*eta for i=1:num deltaD=s*(2*rand()-1); if d(i)==dbest dup(i)=dbest; else dup(i)=dbest+deltaD; end if dup(i)>1 dup(i)=1; end if dup(i)<0 dup(i)=0; end end D=dup; end
时间: 2024-04-02 22:32:12 浏览: 65
ga.rar_GA_GA matlab_Ga function_genetic iterations_遗传算法迭代
这是一个 MATLAB 函数,可能是用于控制某个设备的电压和电流的。函数名为 TSOMPPT,输入参数为 vpv 和 ipv,输出参数为 duty 和 iterations。函数中使用了一些变量和参数,如 num、p、dc、dbest、counter、iteration 等。函数的主要逻辑是通过不断调整 duty 的值,使得计算得到的 p 最大化,从而实现对电压和电流的控制。在一定的迭代次数之内,会不断地调整 duty 的值,直到找到最优解为止。
阅读全文