📄 cload.m
字号:
function c_out = cload(fid,varargin)
% LOAD_CHROM - Loads a chromosome vector.
% c = load_chrom(fid), loads a chromosome vector (generation)
% from a file. The fid is the file indicator, note the file
% should be rightly positioned.
% See also SAVE_CHROM
fgetl(fid);
fgetl(fid);
tmp=fgetl(fid);
nmbr_chr=str2num(tmp(24:end));
fgetl(fid);
for k=1:nmbr_chr
fgetl(fid);
fgetl(fid);
fgetl(fid);
tmp=fgetl(fid);
name_chr=tmp(7:end);
tmp=fgetl(fid);
fitness=str2num(tmp(9:end));
fgetl(fid);
fgetl(fid);
c_out(k)=chrom(name_chr,cdv,ddv);
c_out(k)=set(c_out(k),'fitness',fitness);
name_cdv=fgetl(fid);
tmp=fgetl(fid);
val_cdv=sscanf(tmp,'%g');
tmp=fgetl(fid);
lim=sscanf(tmp,'%g');
tmp=fgetl(fid);
bits_dna=sscanf(tmp,'%g');
cdvs=read_cdvs(name_cdv,val_cdv,lim,bits_dna);
c_out(k)=set(c_out(k),'cdvs',cdvs);
%=============DDVS===========================================
fgetl(fid);fgetl(fid);fgetl(fid);
name_ddv=fgetl(fid);
tmp=fgetl(fid);
val_ddv=sscanf(tmp,'%g');
p_val=fgetl(fid);
tmp=fgetl(fid);
dna=sscanf(tmp,'%g');
ddvs=read_ddvs(name_ddv,val_ddv,p_val,dna);
c_out(k)=set(c_out(k),'ddvs',ddvs);
end
fgetl(fid);
function cdvs = read_cdvs(name_cdvs,val_cdv,lim,bits_dna)
% READ_CDVS -
%
if and(length(name_cdvs)==1,isspace(name_cdvs))
cdvs=cdv;
else
[n r]=strtok(name_cdvs);
cdvs(1)=cdv(n,0,0,0);
ind=2;
while length(r)>1
[n r]=strtok(r);
cdvs(ind)=cdv(n,0,0,0);
ind=ind+1;
end
for k=1:length(cdvs)
cdvs(k)=set(cdvs(k),'value',val_cdv(k));
end
l_lim=lim(1:2:end);
u_lim=lim(2:2:end);
for k=1:length(cdvs)
cdvs(k)=set(cdvs(k),'l_limit',l_lim(k));
cdvs(k)=set(cdvs(k),'u_limit',u_lim(k));
end
bits=bits_dna(1:2:end);
dna=bits_dna(2:2:end);
for k=1:length(cdvs)
cdvs(k)=set(cdvs(k),'bits',bits(k));
cdvs(k)=set(cdvs(k),'dna',tobin(dna(k),bits(k)));
end
end
%------------------------------------------------------------
function ddvs = read_ddvs(name_ddvs,val_ddv,p_val,dna)
% READ_DDVS -
%
if and(length(name_ddvs)==1,isspace(name_ddvs))
ddvs=ddv;
else
[n r]=strtok(name_ddvs);
ddvs(1)=ddv(n,0);
ind=2;
while length(r)>1
[n r]=strtok(r);
ddvs(ind)=ddv(n,0);
ind=ind+1;
end
for k=1:length(ddvs)
ddvs(k)=set(ddvs(k),'value',val_ddv(k));
end
tabs=findstr(p_val,sprintf('\t'));
tabs=[1 tabs];
for k=1:length(tabs)-1
p_string=p_val(tabs(k):tabs(k+1));
pval=sscanf(p_string,'%g')';
ddvs(k)=set(ddvs(k),'p_val',pval);
end
bits=dna(1:2:end);
dna=dna(2:2:end);
for k=1:length(ddvs)
ddvs(k)=set(ddvs(k),'bits',bits(k));
ddvs(k)=set(ddvs(k),'dna',tobin(dna(k),bits(k)));
end
end
function b = tobin(dec,bits)
% TOBIN -
%
tmp=dec2bin(dec);
zero=bits-length(tmp);
if zero
for k=1:zero
b(k)=0;
end
for l=1:length(tmp);
b(k+l)=str2num(tmp(l));
end
else
for l=1:length(tmp);
b(l)=str2num(tmp(l));
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -