Partial preview of the text
Download matlab code for femtocell and more Study Guides, Projects, Research Matlab skills in PDF only on Docsity!
1 A
4 F
E 1
7 F
7 E
D C
F E
8 D
E F
5 B
B 9
C F
8 C
6 D
C F
4 F
4 F
7 B
6 C
D 5MATLAB^
6 E
E E
1 A
4 F
E 1
7 F
7 E
D C
F E
8 D
E F
5 B
B 9
C F
8 C
6 D
C F
4 F
4 F
7 B
6 C
: D 5MATLAB
6 E
function [Zp,Xp,Yp,LC1,LC2]=GACFA(M,N,Pm)
% GACFA.m
% Genetic Algorithm for Capacity and Flow Assignment
F E
8 D
E F
5 B
B 9
C F
8 C
6 D
C F
4 F
4 D
4 F
7 B
6 C
D 5
% GreenSim
E 2
1 F
9 F
1 B
4 F
5 C
C 1
8 F
6 C
8 F
7 D
8 B
F 7
6 C
E 8
, 0 E
F 4
1 A
9 F
1 B
4 E
E 3
8 B
F 7
8 B
B F
, E EGreenSim
E 2
1 F
4 E
3 B
7 5:http://blog.sina.com.cn/greensim
7 B
6 C
D 5
8 B
B E
8 B
A 1
4 E
E 3
7 A
0 B
5 E
8 F
6 B
8 F
C E
8 B
B F
, E EGreenSim——
7 B
6 C
D 5
4 E
F F
1 F
E 2
1 F→http://blog.sina.com.cn/
greensim%--------------------------------------------------------------------------
F D
9 F
F D
4 F
7 F
4 F
7 B
6 C
D 5
6 C
E 3
1 A
4 F
E 1
7 F
F E
8 D
E F
5 B
B 9
C F
8 C
6 D
C F
4 F
4 D
E E
C 2
2 E
F 6
2 F,^
B 0
4 F
5 9.^
F A
4 E
8 E
4 F
7 B
6 C
D 5
8 B
A 1
7 B
3 A
1 A
4 F
E 1
7 F
4 F
8 B
B E
8 B
A 1[J].
4 E
A C
A E
5 B
5 B
A 5.1996,16(2):9-
8 F
C 2
% M
4 F
8 F
D B
8 F
E D
4 E
E 3
6 B
% N
C D
7 F
A 4
C 4
6 A
2 1(^
D 6
% Pm
D 8
5 F
8 F
F A
C 2
% Zp
E E
F D
4 F
3 C
% Xp
8 D
E F
E 9
B 3
7 B
D 8
C F
4 F
3 C
% Yp
7 E
B F
8 D
E F
8 B
F 7
B 3
7 B
D 8
C F
4 F
3 C
% LC
5 B
F 2
7 E
B F^1
4 E
E 3
4 F
4 E
2 A
4 F
5 E
3 C
8 B
B 0
5 F
% LC
5 B
F 2
7 E
B F^2
4 E
E 3
7 F
A 4
4 F
5 E
5 E
3 C
8 B
B 0
5 F
7 B
2 C
4 E
6 B
8 F
7 D
6 E
8 C
8 F
F A
D 8
C F
1 D
C B
load DATA_CFA;
Xp=zeros(14,1);
Yp=zeros(8,3);
LC1=zeros(1,M);
LC2=LC1;
7 B
2 C
4 E
8 C
6 B
8 F
3 A
4 E
A 7
1 F
1 D
C B
C D
7 F
: A 4
farm_X=zeros(14,N);
farm_Y=zeros(8,3*N);
for i=1:N
for j=1:2:
RAND=rand;
if RAND>0.
farm_X(j,i)=1;
else
farm_X(j+1,i)=1;
end
end
end
for i=1:N
for j=1:
RAND=rand;
if RAND<1/
farm_Y(j,3*i-2)=1;
elseif RAND>2/
farm_Y(j,3*i)=1;
else
farm_Y(j,3*i-1)=1;
end
end
end
counter=0;%
8 B
B E
7 F
6 E
8 F
E D
4 E
E 3
8 B
A 1
while counter<M%
5 C
6 B
4 E
F 6
4 E
3 A
8 F
B E
8 F
E D
4 E
E 3
6 B
7 B
2 C
4 E
6 B
4 E
A 4
: C 9
newfarm_X=zeros(14,N);
newfarm_Y=zeros(8,3*N);
Ser=randperm(N);
5 B
F 9X^
5 A
4 E
A 4
C 9
for i=1:2:(N-1)
A_X=farm_X(:,Ser(i));
B_X=farm_X(:,Ser(i+1));
cp=2*unidrnd(6);
a_X=[A_X(1:cp);B_X((cp+1):end)];
b_X=[B_X(1:cp);A_X((cp+1):end)];
newfarm_X(:,i)=a_X;
newfarm_X(:,i+1)=b_X;
end
5 B
F 9Y^
5 A
4 E
A 4
C 9
for i=1:2:(N-1)
A_Y=farm_Y(:,(3Ser(i)-2):(3Ser(i)));
B_Y=farm_Y(:,(3Ser(i+1)-2):(3Ser(i+1)));
cp=unidrnd(7);
a_Y=[A_Y(1:cp,:);B_Y((cp+1):end,:)];
b_Y=[B_Y(1:cp,:);A_Y((cp+1):end,:)];
newfarm_Y(:,(3i-2):(3i))=a_Y;
newfarm_Y(:,(3i+1):(3i+3))=b_Y;
end
B 0
E 7
C D
7 F
A 4
5 E
FARM_X=[farm_X,newfarm_X];
FARM_Y=[farm_Y,newfarm_Y];
end
pos2=unidrnd(8);
GT_Y(pos2,:)=zeros(1,3);
GT_Y(pos2,unidrnd(3))=1;
end
end
counter=counter+
end
Xp=Xp';
Yp=Yp';
%plot(LC1)
%hold on
plot(LC2)
4 F
7 B
6 C
D 5
7 A
0 B
5 E
8 F:
8 B
F 4
0 E: fga.m^
4 E
3 A
4 F
7 B
6 C
D 5
4 E
3 B
7 A
0 B
5 E
8 F;^
C 7
4 E
8 C
8 F
D B
3 6Gray^
7 F
0 1,^
C 7
F A
4 E
8 E
8 F
6 E
D 8
8 D
4 C
6 C
D 5
5 E
7 E
B F
0 D
E 9,^
4 E
A 4
C 9,^
D 8
5 F
C D
4 F
5 C,^
0 C
4 E
8 F
D 8
5 F
4 E
4 F
4 D
C D
4 F
5 C!
function [BestPop,Trace]=fga
(FUN,LB,UB,eranum,popsize,pCross,pMutation,pInversion,options)
% [BestPop,Trace]=fmaxga
(FUN,LB,UB,eranum,popsize,pcross,pmutation)
% Finds a maximum of a function of several variables.
% fmaxga solves problems of the form:
% max F(X) subject to: LB <= X <= UB
% BestPop -
4 F
7 F
A 4
4 F
4 E
3 A
4 F
D 3
4 F
7 F
A 4
% Trace -
4 F
D 3
4 F
5 B
F 9
5 E
E E
F D
3 C
% FUN -
E E
F D
% LB -
E A
D 8
C F
4 E
0 B
% UB -
E A
D 8
C F
4 E
0 A
% eranum -
C D
7 F
A 4
4 E
E 3
7 0,^
D 6100--1000(^
9 E
D 8
8 B
A 4200)
% popsize -
6 B
C F
4 E
4 E
E 3
C D
7 F
A 4
C 4
6 A
6 B
E F
; D 650--200(
9 E
D 8
8 B
A 4100)
% pcross -
4 E
A 4
C 9
8 7,^
4 E
2 C
D 60.5--0.^
4 E
4 B
F 4
8 F
7 D(^
9 E
D 8
8 B
A 40.8)
% pmutation -
1 D
C B
D 8
5 F
8 7,^
4 E
2 C
D 60.05-0.^
4 E
4 B
F 4
8 F
7 D(^
9 E
D 8
8 B
A 40.1)
% pInversion -
4 F
4 D
8 7,^
4 E
2 C
D 60.05-0.^
4 E
4 B
F 4
8 F
7 D(^
9 E
D 8
8 B
A 40.2)
% options - 1*
E 9
3 5,options(1)=^
4 E
8 C
8 F
D B
7 F
0 1(^
9 E
D 8
8 B
A 40),option(1)~=^
8 F
D B
7 F
0 1,option(2)^
8 B
B E
5 B
9 A
6 C
E 3
7 C
B E
5 E
A 6(^
9 E
D 8
8 B
A 41e-4)
T1=clock;
if nargin<3, error('FMAXGA requires at least three input arguments');
end
if nargin==3,
eranum=200;popsize=100;pCross=0.8;pMutation=0.1;pInversion=0.
5;options=[0 1e-4];end
if nargin==4,
popsize=100;pCross=0.8;pMutation=0.1;pInversion=0.15;options=[
1e-4];end
if nargin==5, pCross=0.8;pMutation=0.1;pInversion=0.15;options=[
1e-4];end
if nargin==6, pMutation=0.1;pInversion=0.15;options=[0 1e-4];end
if nargin==7, pInversion=0.15;options=[0 1e-4];end
if find((LB-UB)>0)
error('
6 E
8 F
8 B
E F,^
8 B
F 7
C D
B 0
8 F
6 5(LB<UB):');
end
s=sprintf('
7 A
0 B
5 E
8 F
8 F
D 0
4 C
7 E
A 6%.4f^
D 2
9 F
F 6
F 4,^
8 B
F 7
7 A
0 D
7 B
4 9......',(eranum*popsize/1000));
disp(s);
global m n NewPop children1 children2 VarNum
bounds=[LB;UB]';bits=[];VarNum=size(bounds,1);
precision=options(2);%
6 C
E 3
7 C
B E
5 E
A 6
6 E
5 B
9 A
4 E
8 C
8 F
D B
7 F
7 F
5 E
A 6
bits=ceil(log2((bounds(:,2)-bounds(:,1))' ./ precision));%
8 B
B E
5 B
9 A
7 C
B E
5 E
A 6
3 A
F 4
[Pop]=InitPopGray(popsize,bits);%
1 D
C B
C D
7 F
A 4
[m,n]=size(Pop);
NewPop=zeros(m,n);
children1=zeros(1,n);
children2=zeros(1,n);
pm0=pMutation;
BestPop=zeros(eranum,n);%
4 D
1 D
C B
E 3
7 A
7 A
F 4BestPop,Trace
Trace=zeros(eranum,length(bits)+1);
i=1;
while i<=eranum
for j=1:m
value(j)=feval(FUN(1,:),(b2f(Pop(j,:),bounds,bits)));%
8 B
A 1
7 B
5 E
5 E
A 6
end
[MaxValue,Index]=max(value);
BestPop(i,:)=Pop(Index,:);
Trace(i,1)=MaxValue;
Trace(i,(2:length(bits)+1))=b2f(BestPop(i,:),bounds,bits);
%R
4 E
3 A
E D
8 D
E F
5 F
8 4,Rlength^
4 E
3 A
8 D
E F
5 F
7 F
5 E
A 6
function [R,Rlength]=geneticTSP(D,n,C,m,alpha)
[N,NN]=size(D);
farm=zeros(n,N);%
4 E
8 E
5 B
A 8
C D
7 F
A 4
for i=1:n
farm(i,=randperm(N);%
8 F
3 A
1 F
1 D
C B
C D
7 F
A 4
end
R=farm(1,;%
5 B
A 8
4 F
C D
7 F
A 4
len=zeros(n,1);%
5 B
A 8
8 D
E F
5 F
7 F
5 E
A 6
fitness=zeros(n,1);%
5 B
A 8
5 F
4 E
5 E
3 C
counter=0;
while counter<C
for i=1:n
len(i,1)=myLength(D,farm(i,);%
8 B
A 1
7 B
8 D
E F
5 F
7 F
5 E
A 6
end
maxlen=max(len);
minlen=min(len);
fitness=fit(len,m,maxlen,minlen);%
8 B
A 1
7 B
5 F
4 E
5 E
3 C
rr=find(len==minlen);
R=farm(rr(1,1),;%
F 4
B 0
E D
8 D
E F
5 F
FARM=farm;%
4 F
D C
A 3
6 C
7 0,nn^
8 B
B 0
5 F
4 E
0 D
4 E
2 A
nn=0;
for i=1:n
if fitness(i,1)>=alpha*rand
nn=nn+1;
FARM(nn,=farm(i,;
end
end
FARM=FARM(1:nn,;
[aa,bb]=size(FARM);%
4 E
A 4
C 9
8 C
D 8
5 F
while aa<n
if nn<=
nnper=randperm(2);
else
nnper=randperm(nn);
end
A=FARM(nnper(1),;
B=FARM(nnper(2),;
[A,B]=intercross(A,B);
FARM=[FARM;A;B];
[aa,bb]=size(FARM);
end
if aa>n
FARM=FARM(1:n,;%
4 F
D D
C D
7 F
A 4
C 4
6 A
4 E
3 An
end
farm=FARM;
clear FARM
counter=counter+
end
Rlength=myLength(D,R);
function [a,b]=intercross(a,b)
L=length(a);
if L<=10%
6 E
5 B
9 A
4 E
A 4
C 9
5 B
B D
5 E
A 6
W=1;
elseif ((L/10)-floor(L/10))>=rand&&L>
W=ceil(L/10);
else
W=floor(L/10);
end
p=unidrnd(L-W+1);%
8 F
3 A
E 9
4 E
A 4
C 9
F 4
4 E
, C Ep
3 0p+W
for i=1:W%
4 E
A 4
C 9
x=find(a==b(1,p+i-1));
y=find(b==a(1,p+i-1));
[a(1,p+i-1),b(1,p+i-1)]=exchange(a(1,p+i-1),b(1,p+i-1));
[a(1,x),b(1,y)]=exchange(a(1,x),b(1,y));
end
function [x,y]=exchange(x,y)
temp=x;
x=y;
y=temp;
8 B
A 1
7 B
8 D
E F
5 F
5 B
7 A
0 B
5 E
8 F
function len=myLength(D,p)
[N,NN]=size(D);
len=D(p(1,N),p(1,1));
for i=1N-1)
len=len+D(p(1,i),p(1,i+1));
end
8 B
A 1
7 B
5 F
4 E
5 E
3 C
5 B
7 A
0 B
5 E
8 F
function fitness=fit(len,m,maxlen,minlen)
fitness=len;
for i=1:length(len)
fitness(i,1)=(1-((len(i,1)-minlen)/(maxlen-minlen+0.000001))).^m;
x(:,1)=[m:-1:1]';
[y x(:,2)]=sort(selectprob);
r=q/(1-(1-q)^m);%
C 6
5 E
F A
3 C
newfit(x(:,2))=r*(1-q).^(x(:,1)-1);%
1 F
E 9
newfit=cumsum(newfit);%
8 B
A 1
7 B
E 9
4 E
4 B
8 C
rNums=sort(rand(m,1));
fitIn=1;newIn=1;
while newIn<=m
if rNums(newIn)<newfit(fitIn)
selectpop(newIn,:)=pop(fitIn,:);
newIn=newIn+1;
else
fitIn=fitIn+1;
end
end
4 E
A 4
C 9
C D
4 F
5 C
function [NewPop]=CrossOver(OldPop,pCross,opts)
%OldPop
4 E
3 A
4 E
E 3
C D
7 F
A 4,pcross^
4 E
3 A
4 E
A 4
C 9
global m n NewPop
r=rand(1,m);
y1=find(r<pCross);
y2=find(r>=pCross);
len=length(y1);
if len>2&mod(len,2)==1%
9 C
8 F
D B
4 C
4 E
A 4
C 9
D 3
4 F
4 E
3 A
5 C
8 C
4 E
3 A
y2(length(y2)+1)=y1(len);
y1(len)=[];
end
if length(y1)>=
for i=0:2:length(y1)-
if opts==
[NewPop(y1(i+1),:),NewPop(y1(i+2),:)]=EqualCrossOver(OldPop
(y1(i+1),:),OldPop(y1(i+2),:));
else
[NewPop(y1(i+1),:),NewPop(y1(i+2),:)]=MultiPointCross(OldPop
(y1(i+1),:),OldPop(y1(i+2),:));
end
end
end
NewPop(y2,:)=OldPop(y2,:);
C 7
4 E
A 4
C 9
function [children1,children2]=EqualCrossOver(parent1,parent2)
global n children1 children
hidecode=round(rand(1,n));%
8 F
3 A
1 F
A 9
crossposition=find(hidecode==1);
holdposition=find(hidecode==0);
children1(crossposition)=parent1(crossposition);%
A 9
4 E
3 A^1
4 E
3 A
5 B
5 0^1
D 0
4 F
9 B
F A
E 0
children1(holdposition)=parent2(holdposition);%
A 9
4 E
3 A^0
4 E
3 A
5 B
5 0^1
D 0
4 F
9 B
F A
E 0
children2(crossposition)=parent2(crossposition);%
A 9
4 E
3 A^1
4 E
3 A
5 B
5 0^2
D 0
4 F
9 B
F A
E 0
children2(holdposition)=parent1(holdposition);%
A 9
4 E
3 A^0
4 E
3 A
5 B
5 0^2
D 0
4 F
9 B
F A
E 0
C 7
1 A
B 9
4 E
A 4
C 9
4 E
A 4
C 9
B 9
D 8
C F
B 3
5 B
, 9 A
function [Children1,Children2]=MultiPointCross(Parent1,Parent2)
global n Children1 Children2 VarNum
Children1=Parent1;
Children2=Parent2;
Points=sort(unidrnd(n,1,2*VarNum));
for i=1:VarNum
Children1(Points(2i-1):Points(2i))=Parent2(Points(2*i-1):Points
(2*i));
Children2(Points(2i-1):Points(2i))=Parent1(Points(2*i-1):Points
(2*i));
end
D 8
5 F
C D
4 F
5 C
function [NewPop]=Mutation(OldPop,pMutation,VarNum)
global m n NewPop
r=rand(1,m);
position=find(r<=pMutation);
len=length(position);
if len>=
for i=1:len
k=unidrnd(n,1,VarNum); %
8 B
B E
7 F
6 E
D 8
5 F
B 9
4 E
2 C
8 B
B E
7 F
, 6 E 1
B 9
for j=1:length(k)
if OldPop(position(i),k(j))==
OldPop(position(i),k(j))=0;
else
OldPop(position(i),k(j))=1;
end
end
end
end
NewPop=OldPop;
4 F
4 D
C D
4 F
5 C
function [NewPop]=Inversion(OldPop,pInversion)