Chrom CRTBP Ranking Select Recombin

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 12

Ch6 -

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

6.2 Quantum Computing

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

(Quantum Genetic Algorithm QGA)(Quantum Computing


QC)

NP
1994 Shor
1996 Grover

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)]);

You might also like