📄 energy.m
字号:
function [eng]=energy(j,s,A,sj,pop)
t=size(pop);
eng=[0,0,0];
for ii=1:t(1)
k=1;
b=0;
Q=0;
fit=[0,0,0];
B=[];
B=pop(ii,:);
while Q<=s&k<=j
Q=Q+sj(B(k));
k=k+1;
b=b+1;
if Q>s|k==j+1
d=k-b;
if k==j+1
b=b+1;
end; % if
for f=d:b+d-2
C(f)=A(1,1,B(f))+2*A(1,2,B(f))+A(1,3,B(f));
D(f)=A(1,2,B(f));
E(f)=A(1,3,B(f))-A(1,1,B(f));
if f==d
Pb=A(:,:,B(f));
else
if C(f)>C(f-1)
Pb=A(:,:,B(f));
elseif C(f)<C(f-1)
Pb=A(:,:,B(f-1));
C(f)=C(f-1);D(f)=D(f-1);E(f)=E(f-1);
elseif C(f)==C(f-1)
if D(f)>D(f-1)
Pb=A(:,:,B(f));
elseif D(f)<D(f-1)
Pb=A(:,:,B(f-1));
C(f)=C(f-1);D(f)=D(f-1);E(f)=E(f-1);
elseif D(f)==D(f-1)
if E(f)>E(f-1)
Pb=A(:,:,B(f));
elseif E(f)<E(f-1)
Pb=A(:,:,B(f-1));
C(f)=C(f-1);D(f)=D(f-1);E(f)=E(f-1);
end % for if E(f)>E(f-1)
end % for if D(f)>D(f-1)
end % for if C(f)>C(f-1)
end %for if f==d
end % for for
fit=fit+Pb;
Pb=0;
b=0;
Q=0;
if k~=j+1
k=k-1;
end % if
end % for if Q>s|k==j+1
end % for while
eng=[eng;fit];
end
eng(1,:)=[];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -