⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 garepaireval.m

📁 遗传算法实例
💻 M
字号:
function [sol,val] = garepairEval(sol,bus,nornalized_reald,relationlist_final,index,Tpbefore,best_rptime)

%规划周期内的时段数目(13周)
Nperiod=13*3+1;  %(2,2,3)
%系统内节点总数
Nnode=length(bus(:,1));

%检修机组序号序列
rp_Pserial=find(Tpbefore>0);


%各机组检修需要持续的时间序列 
ndtime=ones(1,Nnode);
for n=1:Nnode
    if length(find(find(Tpbefore>0)==n))==1
        ndtime(n)=bus(n,9);    
    end
end

for n=1:length(rp_Pserial)
    if sol(n)==0
        soln=1;
    elseif sol(n)>=7
        soln=6;
    else
        soln=sol(n);
    end
    Tpbefore(rp_Pserial(n))=best_rptime(soln,n);        
end
for nperiod=1:Nperiod
    %计算此时段内参加检修的机组序号和网络单元序号
    repairP=find((Tpbefore<=nperiod)&(Tpbefore>=(nperiod-ndtime+1)));    
    gmax(nperiod)=sum(bus(:,6))/100-sum(bus(repairP,6))/100;
    reald(nperiod)=sum((bus(:,4)/100).*nornalized_reald(:,nperiod));
end

% deta=gmax-reald;
% val1=abs(sum(deta(find(deta<0))));
% if sum(gmax)>sum(reald)
%     deta=gmax-(sum(gmax)/sum(reald))*reald;    
% end
% val=(5/std(deta))^20+(5/(val1+0.1))^3;


deta=gmax-reald;
val1=10+sum(deta(find(deta<0)));
if sum(gmax)>sum(reald)
    deta=gmax-(sum(gmax)/sum(reald))*reald;    
end
% val=(5/std(deta))^20+500*val1;
val=(20/std(deta))^25;



% breaksign=0;
% for nperiod=1:Nperiod
%     repairP=find((Tpbefore<=nperiod)&(Tpbefore>=(nperiod-ndtime+1)));         
%     if nperiod<=z
%         compserial=find(sum(relationlist_final(:,:,nperiod),2)>0);
%         tempcompserial=compserial;
%         for n=1:length(tempcompserial)
%             if length(find(relationlist_final(compserial(n),:,nperiod)>0))>length(repairP)
%                 compserial(n)=0;
%             end
%         end
%         compserial=compserial(find(compserial>0));            
%         if length(compserial)>0
%             for n=1:length(compserial)
%                 testnum=find(relationlist_final(compserial(n),:,nperiod)>0);
%                 count=0;
%                 for m=1:length(testnum)
%                     if length(find(repairP==relationlist_final(compserial(n),testnum(m),nperiod)))>0
%                         count=count+1;
%                     end
%                 end
%                 if count==length(testnum)
%                     val=0;
%                     breaksign=1;
%                     break;
%                 end
%             end
%             if breaksign==1
%                 break;
%             end
%         end
%     end
% end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -