?? garepaireval.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 + -