Professional Documents
Culture Documents
Chrom CRTBP Ranking Select Recombin
Chrom CRTBP Ranking Select Recombin
Chrom CRTBP Ranking Select Recombin
6.1
[Chrom,Lind,BaseV]=crtbp(Nind,Lind,base)
objV=[1;2;3;4;5;10;9;8;7;6]; %
FintV=ranking(objV); %
SelCh=select('sus',Chrom,FitV); % FitV Chrom
NewChrom=recombin(REC_F,Chrom,RecOpt,SUBPOP)
REC_F recdisxovsp
Chrom
RecOpt NAN
NewChrom=mut(OldChrom,Pm,BaseV)
Pm 0.7/Lind().
baseV
Chrom=reins(Chrom,SelCh) %
TSP
BP
Feynman 1982
1985 Deutsch
1992 Deutsch D-J
1994 Peter Shor Shor
100 RSA PKI ed=q mod (n)
1995 Grover NP
1995 Monroe
1996 Llods Feynman
1998 Chuang Grover
D-J GHZ bit byte
1999 NEC Josephson
Qubit
2000 NEC - 1000
2003 NEC Qubit
2004 NTT Qubit Tony Hey Grover
2004
2004 125
6.2
bit 0
1
qubit
01(superposed state) 0
1 0101
=*+* +=1
01
(Ground state) 1 (First excited state)
(eigen state )
(basic state)(basic vector)
Hilbert () Hilbert
a+bi a-bi
Dirac |x> ket
<x| bra
1
|0>0 <0|[1,0]
0
0
|1>1 <1|[0,1]
1
|>=|0>+|1>2+ 2=1
1
<0|0>=[1,0] 0 =1
0
<1|1>=[0,1] 1 =1
1 1 0
|0><0|= 0 [1,0] = 0 0
0 0 0
|1><1|= 1 [0,1]= 0 1
1 0 1 0 1 0 1 0 1
|0><0|(|>)= 0 0 (|0>+|1>)= 0 0 ( 0 + 1 )= 0 + 0 )= 0 =|0>
0 0 0 0 1 0 0 0 0
|1><1|(|>)= 0 1 (|0>+|1>)= 0 1 ( 0 + 1 )= 0 + 1 )= 1 =|1>
|0><0||1><1|
6.3
(01 )
|0>|1>|1>|0>
1 0 0 1 0 0 0 1
X=|0><1|+|1><0|= 0 [0,1]+ 1 [1,0]= 0 0 + 1 0 = 1 0
0 1 1 0 1 0 0 1
X|>=X(|0>+|1>)= 1 0
0
+ 1 0
1
= 1 + 0 =|1>+|0>|>=|0>+|1>
X(|0>)=|1> X(|1>)=|0>
X |1>|0>|0>|1>
=1=0 X|>=|1>+|0>=|1>|>=|0> X|0>|1>
=0=1 X|>=|1>+|0>=|0>|>=|1> X|1>|0>
0 1 0 1 T 0 1 0 1 1 0
XXT= 1 0 1 0
= 1 0 1 0
= 0 1 X-1=XT X
6.4
6.5
(qubit)
(,)
0101 01
0 1 100%00
1 1 100%11
0 0.2 0 0.25
k 2k
k 2k
1 2 L k
q jt
1 2 L k
m
11 12 L 1k 21 22 L 2k L m1 m2 L mk
q jt
11 12 L 1k 21 22 L 2k L m1 m 2 L mk m
t t j j m
mk
||2 ||2 0 1
1
6.6
(+)(Pc)(Pm)
(,),
cos sin
U()=
sin cos
f(i,i)
i' i
cos i sin i i cos i i sin i
' U ( i ) i
i
i sin i cos i i i sin i i cosi
|'i|2+|'i|2=[icos(i)-isin(i)]2+[isin(i)+icos(i)]2=
[icos(i)]2+[isin(i)]2-2icos(i) isin(i)+
[isin(i)]2+[icos(i)]2+2isin(i)icos(i)=|i|2+|i|2=1
1
=kf(i,i) k
k=10exp(-t/C) t C
xi i besti i
f(.)s(i,i)
xi besti f(x)>f(best) s(i,i)
ii>0 ii<0 i=0 i=0
0 0 False 0 0 0 0 0
0 0 True 0 0 0 0 0
0 1 False 0.01 +1 -1 0 1
0 1 True 0.01 -1 +1 1 0
1 0 False 0.01 -1 +1 1 0
1 0 True 0.01 +1 -1 0 1
1 1 False 0 0 0 0 0
1 1 True 0 0 0 0 0
qj f(x) f(best)
t
f(x)>f(best) qjt
(i,i) x best
6.7
1
n P(t)={pt1,pt2,,ptn} ptj t j
(ij,ij)(1/sqrt(2),1/sqrt(2))
=1/2+1/2=1=
2
R(t)={t1, t2,, tn}
tj t j m
0 1|ij|2|ij|2
0~1
1 0
,
3 R(t)
R(t)
4 U(t) P(t)
6.8
max f(x,y)=21.5+xsin(4x)+ysin(20y)-3.0x12.14.1y5.8
x=-3.0:0.01:12.1;
len=length(x);
y1=(5.8-4.1)/len;
y=4.1:y1:5.8;
y=y(1:len);
[X,Y]=meshgrid(x,y);
Z=21.5+X.*sin(4*pi*X)+Y.*sin(20*pi*Y);
mesh(X,Y,Z)
function chrom=InitPop(M,N)
%% -
% M:2( )
% N:
for i=1:M
for j=1:N
chrom(i,j)=1/sqrt(2); %
end
end
chrom=InitPop(10,5) 5 ()
0.7071 0.7071 0.7071 0.7071 0.7071
0.7071 0.7071 0.7071 0.7071 0.7071
0.7071 0.7071 0.7071 0.7071 0.7071
0.7071 0.7071 0.7071 0.7071 0.7071
0.7071 0.7071 0.7071 0.7071 0.7071
0.7071 0.7071 0.7071 0.7071 0.7071
0.7071 0.7071 0.7071 0.7071 0.7071
0.7071 0.7071 0.7071 0.7071 0.7071
0.7071 0.7071 0.7071 0.7071 0.7071
0.7071 0.7071 0.7071 0.7071 0.7071
()
function binary=collapse(chrom)
%%
% chrom
% binary
[M,N]=size(chrom); %
M=M/2; %
binary=zeros(M,N); %
for i=1:M
for j=1:N
pick=rand; %0,1
if pick>(chrom(2.*i-1,j)^2) %
binary(i,j)=1;
else
binary(i,j)=0;
end
end
end
function chrom=Qgate(chrom,fitness,best,binary)
%%
% chrom
% fitness
% best
% binary
% chrom
sizepop=size(chrom,1)/2;
lenchrom=size(binary,2);
for i=1:sizepop
for j=1:lenchrom
A=chrom(2*i-1,j); %
B=chrom(2*i,j); %
x=binary(i,j);
b=best.binary(j);
if ((x==0)&(b==0))||((x==1)&(b==1))
delta=0; % delta
s=0; % s
elseif (x==0)&(b==1)&(fitness(i)<best.fitness)
delta=0.01*pi;
if A*B>0
s=1;
elseif A*B<0
s=-1;
elseif A==0
s=0;
elseif B==0
s=sign(randn);
end
elseif (x==0)&(b==1)&(fitness(i)>=best.fitness)
delta=0.01*pi;
if A*B>0
s=-1;
elseif A*B<0
s=1;
elseif A==0
s=sign(randn);
elseif B==0
s=0;
end
elseif (x==1)&(b==0)&(fitness(i)<best.fitness)
delta=0.01*pi;
if A*B>0
s=-1;
elseif A*B<0
s=1;
elseif A==0
s=sign(randn);
elseif B==0
s=0;
end
elseif (x==1)&(b==0)&(fitness(i)>=best.fitness)
delta=0.01*pi;
if A*B>0
s=1;
elseif A*B<0
s=-1;
elseif A==0
s=0;
elseif B==0
s=sign(randn);
end
end
e=s*delta; % e
U=[cos(e) -sin(e);sin(e) cos(e)]; %
y=U*[A B]'; % y
chrom(2*i-1,j)=y(1);
chrom(2*i,j)=y(2);
end
end
function [fitness,X]=FitnessFunction(binary,lenchrom)
%%
% binary
% lenchrom
% fitness
% X
sizepop=size(binary,1);
fitness=zeros(1,sizepop);
num=size(lenchrom,2);
X=zeros(sizepop,num);
for i=1:sizepop
[fitness(i),X(i,:)]=Objfunction(binary(i,:),lenchrom); %
end
function [Y,X]=Objfunction(x,lenchrom)
%%
% x
% lenchrom
% Y
% X
bound=[-3.0 12.1;4.1 5.8]; %
%% binary
X=bin2decFun(x,lenchrom,bound);
%% -
Y=sin(4*pi*X(1))*X(1)+sin(20*pi*X(2))*X(2);
function X=bin2decFun(x,lenchrom,bound)
%%
% x
% lenchrom
% bound
% X
M=length(lenchrom);
n=1;
X=zeros(1,M);
for i=1:M
for j=lenchrom(i)-1:-1:0
X(i)=X(i)+x(n).*2.^j;
n=n+1;
end
end
X=bound(:,1)'+X./(2.^lenchrom-1).*(bound(:,2)-bound(:,1))';
clc;
clear all;
close all;
%---------------------------------------
MAXGEN=200; %
sizepop=40; %
lenchrom=[20 20]; %
trace=zeros(1,MAXGEN);
%--------------------------------------------------------------------------
best=struct('fitness',0,'X',[],'binary',[],'chrom',[]); %
%%
chrom=InitPop(sizepop*2,sum(lenchrom));
%%
binary=collapse(chrom);
%%
[fitness,X]=FitnessFunction(binary,lenchrom); %
%% best
[best.fitness bestindex]=max(fitness); %
best.binary=binary(bestindex,:);
best.chrom=chrom([2*bestindex-1:2*bestindex],:);
best.X=X(bestindex,:);
trace(1)=best.fitness;
fprintf('%d\n',1)
%%
for gen=2:MAXGEN
fprintf('%d\n',gen) %
%%
binary=collapse(chrom);
%%
[fitness,X]=FitnessFunction(binary,lenchrom);
%%
chrom=Qgate(chrom,fitness,best,binary);
[newbestfitness,newbestindex]=max(fitness); %
% best
if newbestfitness>best.fitness
best.fitness=newbestfitness;
best.binary=binary(newbestindex,:);
best.chrom=chrom([2*newbestindex-1:2*newbestindex],:);
best.X=X(newbestindex,:);
end
trace(gen)=best.fitness;
end
%%
plot(1:MAXGEN,trace);
title('');
xlabel('');
ylabel('');
%%
disp([' X',num2str(best.X)])
disp([' Y:',num2str(best.fitness)]);