利用MATLAB仿真创新网络演化过程的程序及其说明.docx

上传人:b****8 文档编号:9847875 上传时间:2023-02-07 格式:DOCX 页数:20 大小:18.54KB
下载 相关 举报
利用MATLAB仿真创新网络演化过程的程序及其说明.docx_第1页
第1页 / 共20页
利用MATLAB仿真创新网络演化过程的程序及其说明.docx_第2页
第2页 / 共20页
利用MATLAB仿真创新网络演化过程的程序及其说明.docx_第3页
第3页 / 共20页
利用MATLAB仿真创新网络演化过程的程序及其说明.docx_第4页
第4页 / 共20页
利用MATLAB仿真创新网络演化过程的程序及其说明.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

利用MATLAB仿真创新网络演化过程的程序及其说明.docx

《利用MATLAB仿真创新网络演化过程的程序及其说明.docx》由会员分享,可在线阅读,更多相关《利用MATLAB仿真创新网络演化过程的程序及其说明.docx(20页珍藏版)》请在冰豆网上搜索。

利用MATLAB仿真创新网络演化过程的程序及其说明.docx

利用MATLAB仿真创新网络演化过程的程序及其说明

第一部分程序:

获取不同δ值时的网络演化情况并保存成数据文件

clearall;clc;

N_delta_array=4;

Array_delta=[0.0005,0.001,0.0015,0.0025];

fornda=1:

N_delta_array

%%%%%%%Initialparameters

n0=20;%initialnumberofpoints

T=3000;%totalnumberofstepsneededrunning

m2=10;%numberofnewlinksforeachnewpoints

p_ini=0.5;%probabilityofinitiallinks

p_iso=0.01;%probabilityofisolatepointtobeselected

p_sat=0.0002;%probabilityofsaturatedpointtobeselected

delta=Array_delta(nda);%factorofincreasingresource

%%%%%%%Getinitialtotalnumber

N=n0;%initialtotalnumberofpoints

%%%%%%%Prepareemptyarraystosaveinformation

ti=zeros(N,1);%type

lij=zeros(N,N);%link

ki=zeros(N,1);%degree

mi=zeros(N,1);%resource

pij=zeros(N,N);%performance

wij=zeros(N,N);%weight

%%%%%%%%%%%%%%%%%

isolate=zeros(N,1);%isolatestate

saturation=zeros(N,1);%saturatedstate

Egt=zeros(T,1);%efficiencyofcooperation

Dgt=zeros(T,1);%varianceofcooperateefficiency

Lt=zeros(T,1);%averagelength

Zt=zeros(T,1);%aggregationfactor

Kt=zeros(T,1);%averagedegreeofnet

Vt=zeros(T,1);%varianceofKt

lt=zeros(T,1);%max(ki)-min(ki)

ut=zeros(T,1);%averageofthedifference

St=zeros(T,1);%numberofsizesateachstep

%%%%%%%Initializationbeforthefirststep

%%%%%%%%%%%%%%%%%%Initializetypesofeachpoints

fornti=1:

N

ti(nti)=fix(4*rand(1,1))+1;

ifti(nti)==4

ti(nti)=2;

end

end

%%couldorn'tbeconnected

could_cot=zeros(N,N);

forni=1:

N

fornj=1:

N

if(ni~=nj)&&((ti(ni)~=ti(nj))||((ti(ni)==2)&&(ti(nj)==2)))

could_cot(ni,nj)=1;

end

end

end

could_cot_ini=could_cot;

%%%%%%%%%%%%%%%%%%Initializelinks

por_i=rand(1,N);

tempones=ones(1,N);

key_lij=meshgrid(por_i,tempones)+meshgrid(por_i,tempones)';

key_lij=key_lij.*could_cot;

idx_ini=find(key_lij>2*(1-p_ini));

lij(idx_ini)=1;

could_cot=could_cot-lij;

%%%%%%%%%%%%%%%%%%Initializeweights

tempw=rand(1,N)*5*T;

wij=(meshgrid(tempw,tempones)+meshgrid(tempw,tempones)').*lij;

%%%%%%%%%%%%%%%%%Initializedegrees

ki=sum(lij)';

%%%%%%%%%%%%%%%%%%Initializeresources

mi=rand(N,1);

%%%%%%%%%%%%%%%%%%Initializeresources

pij=zeros(N,N);

%%%%%%%%%%%%%%%%%%%%%stepbysteprunning

fornt=1:

T

disp(['Step',num2str(nt),'isrunning']);

%%deletetheconnection

wij=wij-1;

idx_lost=find(wij<=0);

wij(idx_lost)=0;

lij(idx_lost)=0;

could_cot(idx_lost)=1;

could_cot=could_cot.*could_cot_ini;

ki=sum(lij)';

%%deletetheisolatedpoint

state_temp=(1-isolate).*(1-saturation);

idx_state=find(state_temp==0);

kitemp=ki;

kitemp(idx_state)=10^4;

idx_isolate=find(kitemp==min(kitemp));

key_isolate=zeros(N,1);

key_isolate(idx_isolate)=1;

key_isolate=key_isolate.*rand(N,1);

key_isolate=ones(N,1)-key_isolate;

idx_chk=find(key_isolate

isolate(idx_chk)=1;

ki(idx_chk)=0;

lij(idx_chk,:

)=0;

lij(:

idx_chk)=0;

wij(idx_chk,:

)=0;

wij(:

idx_chk)=0;

could_cot(idx_chk,:

)=0;

could_cot(:

idx_chk)=0;

could_cot_ini(idx_chk,:

)=0;

could_cot_ini(:

idx_chk)=0;

%%markthesaturationpoint

state_temp=(1-isolate).*(1-saturation);

temp_sat=rand(N,1).*state_temp;

idx_sat=find(temp_sat>(1-p_sat));

saturation(idx_sat)=1;

could_cot(idx_sat,:

)=0;

could_cot(:

idx_sat)=0;

could_cot_ini(idx_sat,:

)=0;

could_cot_ini(:

idx_sat)=0;

%%addnewconnections

m1=fix(0.02*N);

number_codcot=sum(sum(could_cot))/2;

ifnumber_codcot<=m1

lij=lij+could_cot;

meshtemp=meshgrid(rand(1,N),ones(1,N));

wij=wij+5*T*could_cot.*(meshtemp+meshtemp');

could_cot=zeros(N,N);

else

KIM=meshgrid((ki+1).*mi,ones(1,N));

KIMS=KIM+KIM';

OP=could_cot.*KIMS.*tril(ones(N,N),0);

OPL=reshape(OP,1,N*N);

COPL=cumsum(OPL);

COP=reshape(COPL,N,N);

keynew=m1;

whilekeynew>0

keyone=rand(1,1)*COP(N,N);

IKA=find(COPL>keyone);

IK=IKA

(1);

KEY=COPL(IK);

idx_new1=find(COP==KEY);

idx_new2=find(COP'==KEY);

ifcould_cot(idx_new1)==1

lij(idx_new1)=1;

lij(idx_new2)=1;

could_cot(idx_new1)=0;

could_cot(idx_new2)=0;

wij(idx_new1)=rand(1,1)*10*T;

wij(idx_new2)=wij(idx_new1);

keynew=keynew-1;

end

end

end

%%addnewpoint

N=N+1;

ti_temp=ti;

ti=[ti;0];

ti(N)=fix(4*rand(1,1))+1;

ifti(N)==4

ti(N)=2;

end

mi=[mi;rand(1,1)];

isolate=[isolate;0];%isolatestate

saturation=[saturation;0];%saturatedstate

ki=[ki;0];

%%couldconnected

could_cot=[could_cot;zeros(1,(N-1))];

could_cot=[could_cot,zeros(N,1)];

could_cot_ini=[could_cot_ini;zeros(1,(N-1))];

could_cot_ini=[could_cot_ini,zeros(N,1)];

cd_N=zeros(1,N-1);

ifti(N)==2

could_cot(N,:

)=ones(1,N);

could_cot(:

N)=ones(N,1);

could_cot_ini(N,:

)=ones(1,N);

could_cot_ini(:

N)=ones(N,1);

could_cot(N,N)=0;

could_cot_ini(N,N)=0;

else

idx_newc=find(ti_temp~=ti(N));

zero_temp=zeros(1,N);

zero_temp(idx_newc)=1;

could_cot(N,:

)=zero_temp;

could_cot(:

N)=zero_temp';

could_cot_ini(N,:

)=zero_temp;

could_cot_ini(:

N)=zero_temp';

end

state_temp=(1-isolate).*(1-saturation);

idx_state=find(state_temp==0);

could_cot(N,idx_state)=0;

could_cot(idx_state,N)=0;

could_cot_ini(N,idx_state)=0;

could_cot_ini(idx_state,N)=0;

%%%%%link

lij=[lij;zeros(1,(N-1))];

lij=[lij,zeros(N,1)];

wij=[wij;zeros(1,(N-1))];

wij=[wij,zeros(N,1)];

number_couldfornew=sum(could_cot(N,:

));

ifnumber_couldfornew<=m2

lij(N,:

)=could_cot(N,:

);

lij(:

N)=could_cot(:

N);

wij(N,:

)=10*T*could_cot(N,:

).*rand(1,N);

wij(:

N)=wij(N,:

)';

could_cot(N,:

)=zeros(N,1);

could_cot(:

N)=zeros(1,N);

else

K1=(ki+1).*mi;

CK1=cumsum(K1);

key_newlink=m2;

whilekey_newlink>0

KEY=rand(1,1)*CK1(N);

idx_new_array=find(CK1>KEY);

idx_new=idx_new_array

(1);

ifcould_cot(N,idx_new)==1

lij(N,idx_new)=1;

lij(idx_new,N)=1;

could_cot(N,idx_new)=0;

could_cot(idx_new,N)=0;

wij(N,idx_new)=rand(1,1)*10*T;

wij(idx_new,N)=wij(N,idx_new);

key_newlink=key_newlink-1;

end

end

end

%%Refreshdata

%%Refreshdegrees

ki=sum(lij)';

%%Refreshresource

mi=mi.*(1+delta*(ki+1)/(sum(ki)+N));

%%Getperformance

tempones=ones(1,N);

meshmi=meshgrid(mi,tempones);

meshmj=meshmi';

pij=sqrt(meshmi.*meshmj).*lij;

Egt(nt)=sum(sum(pij))/(N*(N-1)/2);

Dgt(nt)=sum(sum((pij-Egt(nt)).^2))/(N*(N-1)/2);

St(nt)=sum(ki);

end

dij=finddij(lij);

N1=length(find(sum(dij)>0));

L=sum(sum(dij))/(N1*(N1-1));

zi=zeros(N,1);

forni=1:

N

lij_temp=lij(ni,:

);

idx_cop=find(lij_temp==1);

k_cop=length(idx_cop);

ifk_cop>1

cop_temp=lij(idx_cop,:

);

cop=cop_temp(:

idx_cop);

fai=sum(sum(cop))/2;

zi(ni)=2*fai/(k_cop*(k_cop-1));

end

end

Z=(sum(zi))/N1;

save(['Data3000_delta',num2str(delta),'.mat']);

end

第二部分程序:

从第一部分程序运行得到的数据文件中提取相关信息并作图,给出演化形成网络的相关信息

clearall;clc;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

n0=20;

T=3000;

NT=n0+T;

T_Array=1:

T;

NT_Array=1:

NT;

N_delta_array=4;

Array_delta=[0.0005,0.001,0.0015,0.0025];

Color_Array=['b','g','r','c'];

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

StDelta=zeros(T,N_delta_array);

EgtDelta=zeros(T,N_delta_array);

DgtDelta=zeros(T,N_delta_array);

kiDelta=zeros(NT,N_delta_array);

ziDelta=zeros(NT,N_delta_array);

dijDelta=zeros(NT,NT,N_delta_array);

KDelta=zeros(1,N_delta_array);

VDelta=zeros(1,N_delta_array);

LDelta=zeros(1,N_delta_array);

UDelta=zeros(1,N_delta_array);

ZDelta=zeros(1,N_delta_array);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

loadData3000_delta0.0005.mat;

run=1

StDelta(:

1)=St;

EgtDelta(:

1)=Egt;

DgtDelta(:

1)=Dgt;

kiDelta(:

1)=ki;

ziDelta(:

1)=zi;

dijDelta(:

:

1)=dij;

KDelta

(1)=sum(ki)/NT;

VDelta

(1)=sqrt((sum(ki-KDelta

(1)).^2)/NT);

N1=length(find(sum(dij)>0));

L=sum(sum(dij))/(N1*(N1-1));

LDelta

(1)=L;

ZDelta

(1)=(sum(zi))/N1;

temp=0;

forniuij=1:

N

fornjuij=1:

N

ifniuij~=njuij

temp=temp+abs(ki(niuij)-ki(njuij));

end

end

end

UDelta

(1)=temp/sum(ki);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

loadData3000_delta0.001.mat;

run=2

StDelta(:

2)=St;

EgtDelta(:

2)=Egt;

DgtDelta(:

2)=Dgt;

kiDelta(:

2)=ki;

ziDelta(:

2)=zi;

dijDelta(:

:

2)=dij;

KDelta

(2)=sum(ki)/NT;

VDelta

(2)=sqrt((sum(ki-KDelta

(1)).^2)/NT);

N1=length(find(sum(dij)>0));

L=sum(sum(dij))/(N1*(N1-1));

LDelta

(2)=L;

ZDelta

(2)=(sum(zi))/N1;

temp=0;

forniuij=1:

N

fornjuij=1:

N

ifniuij~=njuij

temp=temp+abs(ki(niuij)-ki(njuij));

end

end

end

UDelta

(2)=temp/sum(ki);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

loadData3000_delta0.0015.mat;

run=3

StDelta(:

3)=St;

EgtDelta(:

3)=Egt;

DgtDelta(:

3)=Dgt;

kiDelta(:

3)=ki;

ziDelta(:

3)=zi;

dijDelta(:

:

3)=dij;

KDelta(3)=sum(ki)/NT;

VDelta(3)=sqrt((sum(ki-KDelta

(1)).^2)/NT);

N1=length(find(sum(dij)>0));

L=sum(sum(dij))/(N1*(N1-1));

LDelta(3)=L;

ZDelta(3)=(sum(zi))/N1;

temp=0;

forniuij=1:

N

fornjuij=1:

N

ifniuij~=njuij

temp=temp+abs(ki(niuij)-ki(njuij));

end

end

end

UDelta(3)=temp/sum(ki);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

loadData3000_delta0.0025.mat;

run=4

StDelta(:

4)=St;

EgtDelta(:

4)=Egt;

DgtDelta(:

4)=Dgt;

kiDelta(:

4)=ki;

ziDelta(:

4)=zi;

dijDelta(:

:

4)=dij;

KDelta(4)=sum(ki)/NT;

VDelta(4)=sqrt((sum(ki-KDelta

(1)).^2)/NT);

N1=length(find(sum(dij)>0));

L=sum(sum(dij))/(N1*(N1-1));

LDelta(4)=L;

ZDelta(4)=(sum(zi))/N1;

temp=0;

forniuij=1:

N

fornjuij=1:

N

ifniuij~=njuij

temp=temp+abs(ki(niuij)-ki(njuij));

end

end

end

UDelta(4)=temp/sum(ki);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Array_delta=[0.0005,0.001,0.0015,0.00

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 初中作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1