文档库 最新最全的文档下载
当前位置:文档库 › 图论与网络优化课程设计_Matlab实现

图论与网络优化课程设计_Matlab实现

图论与网络优化课程设计_Matlab实现
图论与网络优化课程设计_Matlab实现

图论与网络优化课程设计

四种基本网络(NCN、ER、WS、BA)

的构造及其性质比较

摘要:网络科学中被广泛研究的基本网络主要有四种,即:规则网络之最近邻耦合网络(Nearest-neighbor coupled network),本文中简称NCN;ER随机网络G(N,p);WS小世界网络;BA无标度网络。本文着重研究这几种网络的构造算法程序。通过运用Matlab软件和NodeXL网络分析软件,计算各种规模下(例如不同节点数、不同重连概率或者连边概率)各自的网络属性(包括边数、度分布、平均路径长度、聚类系数),给出图、表和图示,并进行比较和分析。

关键字:最近邻耦合网络;ER随机网络;WS小世界网络;BA无标度网络;Matlab;NodeXL。

四种基本网络(NCN、ER、WS、BA)

的构造及其性质比较

1.概述

1.网络科学的概述

网络科学(Network Science)是专门研究复杂网络系统的定性和定量规律的一门崭新的交叉科学,研究涉及到复杂网络的各种拓扑结构及其性质,与动力学特性(或功能)之间相互关系,包括时空斑图的涌现、动力学同步及其产生机制,网络上各种动力学行为和信息的传播、预测(搜索)与控制,以及工程实际所需的网络设计原理及其应用研究,其交叉研究内容十分广泛而丰富。网络科学中被广泛研究的基本网络主要有四种,即:规则网络之最近邻耦合网络(Nearest-neighbor coupled network),本文中简称NCN;ER随机网络G(N,p);WS小世界网络;BA无标度网络。本文着重研究这几种网络的构造算法程序。计算各种规模下(例如不同节点数、不同重连概率或者连边概率)各自的网络属性(包括边数、度分布、平均路径长度、聚类系数),给出图、表和图示,并进行比较和分析。

2.最近邻耦合网络的概述

如果在一个网络中,每一个节点只和它周围的邻居节点相连,那么就称该网络为最近邻耦合网络。这是一个得到大量研究的稀疏的规则网络模型。

常见的一种具有周期边界条件的最近邻耦合网络包含围成一个环的N个节点,其中每K个邻居节点相连,这里K是一个偶数。这类网络的一个重要特征个节点都与它左右各/2

就是网络的拓扑结构是由节点之间的相对位置决定的,随着节点位置的变化网络拓扑结构也可能发生切换。

NCN的Matlab实现:

%function b = ncn(N,K)

%此函数生成一个有N个节点,每个节点与它左右各K/2个节点都相连的最近邻耦合网络

%返回结果b为该最近邻耦合网络对应的邻接矩阵

function b = ncn(N,K)

b=zeros(N);

for i = 1:N

for j = (i+1):(i+K/2)

if j<=N

b(i,j)=1;

b(j,i)=1;

else

b(i,j-N)=1;

b(j-N,i)=1; end end end end

图-1即为20N =,6K =时的最近邻耦合网络的节点图。

图- 1:最近邻耦合网络

3. ER 随机网络的概述

与完全规则网络相对应的是完全随机网络,最为经典的模型是Erdos 和Reny i 于20世纪50年代末开始研究的现在称为ER 随机图的模型。该模型既易于描述又可通过解析方法研究。在20世纪的后40年中,ER 随机图理论一直是研究复杂网络拓扑的基本理论。关于随机图的理论较为全面的数学论述可参考Bollobas 的著作[1]。

ER 随机图(,)G N p 的构造算法:

(1). 初始化:给定N 个节点以及连边概率[0,1]p ∈。 (2). 随机连边:

a) 选择一对没有边相连的不同节点。

b) 生成一个随机数(0,1)r ∈。

c) 如果r p <,那么在这对节点之间添加一条边;否则就不添加边。

d) 重复步骤a) ~c),直到所有的节点对都被选择过一次。

ER 算法的Matlab 实现: %function b = er(N,p)

%此函数生成一个有N 个节点,节点连边概率p ∈[0,1]的ER 随机图 %返回结果b 为该ER 随机图对应的邻接矩阵

function b = er(N,p) b = zeros(N);

for i = 1:N-1

for j = (i+1):N r=rand; if r

b(i,j)=1; b(j,i)=1; end end end end

图-2即为20N =,0.3158p =时的完全随机网络的节点图。

图- 2:完全随机网络

4. WS 小世界网络的概述

顾名思义,小世界网络具有明显聚类和小世界特征。从直观上看,毕竟大部分实际网络既不是完全规则也不是完全随机的:在现实生活中,人们通常认识他们的邻居和同事,但也可能有一些朋友远在异国他乡。

WS 小世界网络的工作1998年6月在《Nature 》[2]上发表,作者是美国Cornell 大学的博士生Watts 及其导师、非线性动力学专家Strogatz 教授。Watts 和Strogatz 发现:作为从完全规则网络向完全随机网络的过渡,只要在规则网络中引入少许的随机性就可以产生具有小世界特征的网络模型,现在称为WS 小世界网络模型。

WS 小世界模型构造算法: (1). 从规则网络开始:给定一个含有N 个节点的环状最近邻耦合网络,其中每个节

点都与它左右相邻的/2K 个节点相连,K 是偶数。

(2). 随机化重连:以概率p 随机地重新连接网络中原有的每条边,即把每条边的

一个端点保持不变,另一个端点改取为网络中随机选择的一个节点。其中规定不得有重边和自环。

WS 算法的Matlab 实现代码: %function b = ws(N,K,p)

%此函数生成一个具有N 个节点的WS 小世界网络。

%返回结果b 为该小世界网络对应的邻接矩阵。

%由于WS 小世界网络都是首先由规则的最近邻耦合网络生成的,故需要先调用ncn.m

function b = ws(N,K,p) b = ncn(N,K); for i = 1:N-1 for j = i+1:N if b(i,j)~=0 if rand

b(i,j) = 0;

b(j,i) = 0; %随机重连,遍历原规则网络中的每一条边 c = 1:N-1;

c = c'; %保持其一端的节点不变,产生一个随机数 for h = N-1:(-1):i %若该随机数小于p ,则随机选取除该端点 c(h,1) = h+1; %之外的另一个节点作为另一端的节点。 end

d = ceil((N-1)*rand); s = c(d,1); b(i,s) = 1; b(s,i) = 1; end end end end end

图-3即为20,6N K ==,0.5p =时的WS 小世界网络的节点图。

图- 3:WS 小世界网络

5. BA 无标度网络的概述

20世纪末网络科学研究上有两个重要发现,一个是上面提到的W S 小世界网络,另一个就是BA 无标度网络。这类网络的节点的度没有明显的特征长度,其度分布都可以用适当的

幂律形式来较好地描述。现实生活中的Internet 、WWW 、科研合作网络以及蛋白质交互网络等众多不同领域的网络都是是某种形式上的BA 无标度网络。

BA 无标度网络的工作于1999年10月发表在《Science 》上[3],由美国Notre Dam e 大学物理系的Barabas i 教授及其博士生Albert 合作完成。

BA 无标度网络模型构造算法: (1). 增长:从一个具有M 个节点的连通网络开始,每次引入一个新的节点并且连接

到m 个已经存在的节点上,这里m ≤M 。

(2). 优先连接:一个新节点与一个已经存在的节点i 连接的概率i ∏与节点i 的度i

k 之间满足如下关系

i

i j

j

k k ∏=

BA 算法的Matlab 实现代码: %function b = ba(M,m,N)

%此函数生成一个具有N 个节点的BA 无标度网络

%M 为初始代连通网络的节点数、m 为每次引入的新节点连接到已存在的节点的个数 %其中m ≤M

%返回结果b 为所求BA 无标度网络对应的邻接矩阵

function b = ba(M,m,N) b = zeros(N);

if M==1 M=2; end

for i = 1:M-1 %这里为简便起见,假使初始网络为完全连通网络 for j = (i+1):M b(i,j) = 1; b(j,i) = 1; end end

d = zeros(N,1); %建立一个存储每个节点度值的矩阵 for i = 1:M

d(i,1) = M-1; end

for i = M+1:N

mm = 0; %mm 为当前步已经和新节点连接的旧节点个数 dd = d(1:i-1,1); %dd 为d 的副本 while mm

dn = 0; %dn 为节点度之和 for j = 1:i-1

dn = dn+dd(j,1); end

p = zeros(i-1,1); %p 为节点累积度值占总度值百分比的矩阵 p(1,1) = dd(1,1)/dn; for j = 2:i-1

p(j,1) = p(j-1,1)+dd(j,1)/dn; end

r = rand;

for j = 1:i-1 %进行m 次轮盘赌方法选择与新节点相连的节点 if r

d(i,1)=d(i,1)+1; d(j,1)=d(j,1)+1; dd(j,1) = 0; break; end end end end

示例:图-4即为3,2,20M m N ===时的BA 无标度网络的节点图

图- 4:BA 无标度网络

从以上四种网络的构造算法出发,很容易得出其边数、度分布、平均路径长度、聚类系数的理论值,如下表:

表- 1

NCN 最近邻耦合网

ER 随机网络

WS 小世界网络 BA 无标度网络

边数 /2NK (1)/2M pN N <>=-

/2NK

()(1)/2N M m M M -+-

度分布 1,0,k K

k K

=??

≠? 二项分布(N 很大p 很小时近似泊松分布)

11(1)

k k N k

N C p p ---- 介于规则网络与随机网络之间,近似

泊松分布

幂律分布:23

2m k -

平均度

K

(1)k p N <>=-

平均路径长度 /2

11[2/]

(2)2N m m K N N

K

=-≈

~/ER ER L D InN In k ≤<>

2();ln()

,1N

f NKp K NKp NKp K p

>> ln ln ln N

L

N

聚类系数

2

/2

233(2)4(1)

K K

C C K K ?-=

-

1

k C p N <>

==-

33(2)

(1)(1/)

4(1)

K p O N K --+- 2

(ln )N C

N

比较和分析 通过拓扑性质的表达式得出有意义的结论。例如:小世界网络的平均路径长度(记为L )绝不会小于同等规模的随机网络的L ;无标度网络的L 比同等规模的随机网络的L 小得多。

运用以上四个算法的Matlab代码生成规模为1000的4种网络模型,再用NodeXL分析其拓扑性质,通过比较得出结论。

表- 2

NCN(1000,6)ER(1000,0.006)WS(1000,6,0.5)BA(3,3,1000)

图像

边数3000 3015 2992 2994

度分

平均

6 6.030 5.984 5.998

平均

路径

长度

83.667 4.029739 4.280806 3.451422

聚类

系数

0.6 0.006 0.089 0.04

比较和分析(1)、在同等网络规模下,小世界网络的平均路径长度介于规则网络与随机网络之间,这也是小世界网络所以为“小世界”最为显著的特征;

(2)、由表中度分布图可以看出:规则网络有规则的度分布、无标度网络明显倾向于幂律分布,即网络中绝大多数节点的度集中于某一值,但始终有少数节点的度在较远的其他值,这有点类似于现实生活中的“二八法则”、而随机网络和小世界网络的度分布都倾向于二项分布、正态分布或者泊松分布;

(3)、从四个网络的聚类系数可以看出,规则网络、小世界网络和无标度具有相对较大的聚类系数。从我们的直观经验出发,现实生活中的网络往往都具有较大的聚类系数,这说明规则网络、小世界网络和无标度网络更接近于我们的现实生活。而随机网络聚类系数相对较小,可以猜想其具有较强的鲁棒性。

现在我们再看看改变网络规模N和参数m对BA无标度网络度分布的影响。

表- 3

1000 1500 2000

N

M=m

1

3

5

7

结论见后。

4.结论

本文所列举的四种基本网络模型,各有其特点和研究价值。通过以上网络模型的构造算法、Matlab实现、理论分析和仿真分析,可以得出以下基本结论:

(1).最近邻耦合网络具有规则的结构,是最容易被分析和理解的网络模型。它的许多性质易于用纯数学上的解析方法来研究。现实网络的许多性质,都是介于完全规

则网络与完全随机网络之间的,因此最近邻耦合网络看似简单,实则蕴含着无穷的

奥妙。

(2).ER随机网络是典型的完全随机网络。当网络规模一定时,它的各种拓扑性质就完全由随机连边概率p决定了。当网络规模足够大时,即使p非常小(如表-2

p ),整个网络却表现出较短的平均路径长度(4.03),中的ER随机图模型,0.002

即“小世界”特性;整个网络的度分布也倾向于二项分布。这些都说明随机中往往

蕴含着规律性的东西,自然(或曰科学)给人的惊喜(惊奇)是无穷的。

(3).WS小世界网络是由规则的最近邻耦合网络引入随机性得来的,所以它的许多

性质都介于完全规则网络与完全随机网络之间。然而它最为突出的“小世界”特性,最贴近于我们的现实生活,对它在各种形式下的拓扑性质的研究,具有极大的实用

价值。

(4).BA无标度网络引入了WS小世界网络所忽略的实际网络的另外两个重要特性,即增长(Growth)特性和优先连接(Preferential attachment)特性。这使得BA

无标度网络表现出幂律性的度分布,且该幂律性与网络规模N和参数m均无关的更

为复杂的拓扑性质。对这些特性的研究,有利于人们理解并控制实际网络的演变与

发展。受BA无标度网络的鲁棒性与脆弱性的启发,直接改善了人们对传染病的预

防与控制机制。

5.参考文献

[1]BOLLOBáS B. Random Graphs [M]. New York: Academic Press, 2nd ed.,2001.

[2]WATTS D J,STROGATZ S H. Collective dynamics of ‘small-world’ networks [J]. Nature,

1998,393(6684):440-442.

[3]BARABáSI A-L,ALBERT R. Emergence of scaling in random networks [J]. Science,

1999,286(5439):509-512.

图论算法及其MATLAB程序代码

图论算法及其MATLAB 程序代码 求赋权图G =(V ,E ,F )中任意两点间的最短路的Warshall-Floyd 算法: 设A =(a ij )n ×n 为赋权图G =(V ,E ,F )的矩阵,当v i v j ∈E 时a ij =F (v i v j ),否则取a ii =0,a ij =+∞(i ≠j ),d ij 表示从v i 到v j 点的距离,r ij 表示从v i 到v j 点的最短路中一个点的编号. ①赋初值.对所有i ,j ,d ij =a ij ,r ij =j .k =1.转向② ②更新d ij ,r ij .对所有i ,j ,若d ik +d k j <d ij ,则令d ij =d ik +d k j ,r ij =k ,转向③. ③终止判断.若d ii <0,则存在一条含有顶点v i 的负回路,终止;或者k =n 终止;否则令k =k +1,转向②. 最短路线可由r ij 得到. 例1求图6-4中任意两点间的最短路. 解:用Warshall-Floyd 算法,MATLAB 程序代码如下: n=8;A=[0281Inf Inf Inf Inf 206Inf 1Inf Inf Inf 8607512Inf 1Inf 70Inf Inf 9Inf Inf 15Inf 03Inf 8 Inf Inf 1Inf 3046 Inf Inf 29Inf 403 Inf Inf Inf Inf 8630];%MATLAB 中,Inf 表示∞ D=A;%赋初值 for (i=1:n)for (j=1:n)R(i,j)=j;end ;end %赋路径初值 for (k=1:n)for (i=1:n)for (j=1:n)if (D(i,k)+D(k,j)

(图论)matlab模板程序

(图论)matlab模板程序

第一讲:图论模型 程序一:可达矩阵算法 %根据邻接矩阵A(有向图)求可达矩阵P(有向图) function P=dgraf(A) n=size(A,1); P=A; for i=2:n P=P+A^i; end P(P~=0)=1; %将不为0的元素变为1 P; 程序二:无向图关联矩阵和邻接矩阵互换算法F表示所给出的图的相应矩阵 W表示程序运行结束后的结果 f=0表示把邻接矩阵转换为关联矩阵 f=1表示把关联矩阵转换为邻接矩阵 %无向图的关联矩阵和邻接矩阵的相互转换 function W=incandadf(F,f) if f==0 %邻接矩阵转换为关联矩阵 m=sum(sum(F))/2; %计算图的边数 n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i:n if F(i,j)~=0 W(i,k)=1; %给边的始点赋值为1 W(j,k)=1; %给边的终点赋值为1 k=k+1; end end end elseif f==1 %关联矩阵转换为邻接矩阵 m=size(F,2); n=size(F,1); W=zeros(n,n); for i=1:m a=find(F(:,i)~=0); W(a(1),a(2))=1; %存在边,则邻接矩阵的对应值为1 W(a(2),a(1))=1;

end else fprint('Please imput the right value of f'); end W; 程序三:有向图关联矩阵和邻接矩阵互换算法 %有向图的关联矩阵和邻接矩阵的转换 function W=mattransf(F,f) if f==0 %邻接矩阵转换为关联矩阵 m=sum(sum(F)); n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i:n if F(i,j)~=0 %由i发出的边,有向边的始点 W(i,k)=1; %关联矩阵始点值为1 W(j,k)=-1; %关联矩阵终点值为-1 k=k+1; end end end elseif f==1 %关联矩阵转换为邻接矩阵 m=size(F,2); n=size(F,1); W=zeros(n,n); for i=1:m a=find(F(:,i)~=0); %有向边的两个顶点 if F(a(1),i)==1 W(a(1),a(2))=1; %有向边由a(1)指向a(2) else W(a(2),a(1))=1; %有向边由a(2)指向a(1) end end else fprint('Please imput the right value of f'); end W;

图论算法及matlab程序的三个案例

图论实验三个案例 单源最短路径问题 Dijkstra 算法 Dijkstra 算法是解单源最短路径问题的一个贪心算法。其基本思想是,设置一个顶点集合S 并不断地作贪心选择来扩充这个集合。一个顶点属于集合S 当且仅当从源到该顶点的最短路径长度已知。设v 是图中的一个顶点,记()l v 为顶点 v 到源点v 1的最短距离, ,i j v v V ?∈,若 (,)i j v v E ?,记i v 到j v 的权ij w =∞。 Dijkstra 算法: ① 1{}S v =,1()0l v =;1{}v V v ??-,()l v =∞,1i =,1{}S V v =-; ② S φ=,停止,否则转③; ③ ()min{(),(,)} j l v l v d v v =, j v S ∈,v S ?∈; ④ 存在 1 i v +,使 1()min{()} i l v l v +=,v S ∈; ⑤ 1{} i S S v +=, 1{} i S S v +=-,1i i =+,转②; 实际上,Dijkstra 算法也是最优化原理的应用:如果12 1n n v v v v -是从1v 到 n v 的最短路径,则 12 1 n v v v -也必然是从1v 到 1 n v -的最优路径。 在下面的MATLAB 实现代码中,我们用到了距离矩阵,矩阵第i 行第j 行元 素表示顶点i v 到j v 的权ij w ,若i v 到j v 无边,则realmax ij w =,其中realmax 是 MATLAB 常量,表示最大的实数+308)。 function re=Dijkstra(ma)

图论与网络优化课程设计_Matlab实现

图论与网络优化课程设计 四种基本网络(NCN、ER、WS、BA) 的构造及其性质比较 摘要:网络科学中被广泛研究的基本网络主要有四种,即:规则网络之最近邻耦合网络(Nearest-neighbor coupled network),本文中简称NCN;ER随机网络G(N,p);WS小世界网络;BA无标度网络。本文着重研究这几种网络的构造算法程序。通过运用Matlab软件和NodeXL网络分析软件,计算各种规模下(例如不同节点数、不同重连概率或者连边概率)各自的网络属性(包括边数、度分布、平均路径长度、聚类系数),给出图、表和图示,并进行比较和分析。 关键字:最近邻耦合网络;ER随机网络;WS小世界网络;BA无标度网络;Matlab;NodeXL。

四种基本网络(NCN、ER、WS、BA) 的构造及其性质比较 1.概述 1.网络科学的概述 网络科学(Network Science)是专门研究复杂网络系统的定性和定量规律的一门崭新的交叉科学,研究涉及到复杂网络的各种拓扑结构及其性质,与动力学特性(或功能)之间相互关系,包括时空斑图的涌现、动力学同步及其产生机制,网络上各种动力学行为和信息的传播、预测(搜索)与控制,以及工程实际所需的网络设计原理及其应用研究,其交叉研究内容十分广泛而丰富。网络科学中被广泛研究的基本网络主要有四种,即:规则网络之最近邻耦合网络(Nearest-neighbor coupled network),本文中简称NCN;ER随机网络G(N,p);WS小世界网络;BA无标度网络。本文着重研究这几种网络的构造算法程序。计算各种规模下(例如不同节点数、不同重连概率或者连边概率)各自的网络属性(包括边数、度分布、平均路径长度、聚类系数),给出图、表和图示,并进行比较和分析。 2.最近邻耦合网络的概述 如果在一个网络中,每一个节点只和它周围的邻居节点相连,那么就称该网络为最近邻耦合网络。这是一个得到大量研究的稀疏的规则网络模型。 常见的一种具有周期边界条件的最近邻耦合网络包含围成一个环的N个节点,其中每K个邻居节点相连,这里K是一个偶数。这类网络的一个重要特征个节点都与它左右各/2 就是网络的拓扑结构是由节点之间的相对位置决定的,随着节点位置的变化网络拓扑结构也可能发生切换。 NCN的Matlab实现: %function b = ncn(N,K) %此函数生成一个有N个节点,每个节点与它左右各K/2个节点都相连的最近邻耦合网络 %返回结果b为该最近邻耦合网络对应的邻接矩阵 function b = ncn(N,K) b=zeros(N); for i = 1:N for j = (i+1):(i+K/2) if j<=N b(i,j)=1; b(j,i)=1; else b(i,j-N)=1;

(完整版)数字图像处理MATLAB程序【完整版】

第一部分数字图像处理

实验一图像的点运算 实验1.1 直方图 一.实验目的 1.熟悉matlab图像处理工具箱及直方图函数的使用; 2.理解和掌握直方图原理和方法; 二.实验设备 1.PC机一台; 2.软件matlab。 三.程序设计 在matlab环境中,程序首先读取图像,然后调用直方图函数,设置相关参数,再输出处理后的图像。 I=imread('cameraman.tif');%读取图像 subplot(1,2,1),imshow(I) %输出图像 title('原始图像') %在原始图像中加标题 subplot(1,2,2),imhist(I) %输出原图直方图 title('原始图像直方图') %在原图直方图上加标题 四.实验步骤 1. 启动matlab 双击桌面matlab图标启动matlab环境; 2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像, 如:cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像; 3.浏览源程序并理解含义; 4.运行,观察显示结果; 5.结束运行,退出; 五.实验结果 观察图像matlab环境下的直方图分布。 (a)原始图像 (b)原始图像直方图 六.实验报告要求 1、给出实验原理过程及实现代码; 2、输入一幅灰度图像,给出其灰度直方图结果,并进行灰度直方图分布原理分析。

实验1.2 灰度均衡 一.实验目的 1.熟悉matlab图像处理工具箱中灰度均衡函数的使用; 2.理解和掌握灰度均衡原理和实现方法; 二.实验设备 1.PC机一台; 2.软件matlab; 三.程序设计 在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。 I=imread('cameraman.tif');%读取图像 subplot(2,2,1),imshow(I) %输出图像 title('原始图像') %在原始图像中加标题 subplot(2,2,3),imhist(I) %输出原图直方图 title('原始图像直方图') %在原图直方图上加标题 a=histeq(I,256); %直方图均衡化,灰度级为256 subplot(2,2,2),imshow(a) %输出均衡化后图像 title('均衡化后图像') %在均衡化后图像中加标题 subplot(2,2,4),imhist(a) %输出均衡化后直方图 title('均衡化后图像直方图') %在均衡化后直方图上加标题 四.实验步骤 1. 启动matlab 双击桌面matlab图标启动matlab环境; 2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像, 如:cameraman图像;再调用相应的灰度均衡函数,设置参数;最后输出处理后的图像; 3.浏览源程序并理解含义; 4.运行,观察显示结果; 5.结束运行,退出; 五.实验结果 观察matlab环境下图像灰度均衡结果及直方图分布。 (a)原始图像 (b)均衡化后图像

多目标优化实例和matlab程序

NSGA-II 算法实例 目前的多目标优化算法有很多, Kalyanmoy Deb 的带精英策略的快速非支配排序遗传算法(NSGA-II) 无疑是其中应用最为广泛也是最为成功的一种。本文用的算法是MATLAB 自带的函数gamultiobj ,该函数是基于NSGA-II 改进的一种多目标优化算法。 一、 数值例子 多目标优化问题 424221********* 4224212212112 12min (,)10min (,)55..55 f x x x x x x x x x f x x x x x x x x x s t x =-++-=-++-≤≤??-≤≤? 二、 Matlab 文件 1. 适应值函数m 文件: function y=f(x) y(1)=x(1)^4-10*x(1)^2+x(1)*x(2)+x(2)^4-x(1)^2*x(2)^2; y(2)=x(2)^4-x(1)^2*x(2)^2+x(1)^4+x(1)*x(2); 2. 调用gamultiobj 函数,及参数设置: clear clc fitnessfcn=@f; %适应度函数句柄 nvars=2; %变量个数 lb=[-5,-5]; %下限 ub=[5,5]; %上限 A=[];b=[]; %线性不等式约束 Aeq=[];beq=[]; %线性等式约束 options=gaoptimset('paretoFraction',0.3,'populationsize',100,'generations',200,'stallGenLimit',200,'TolFun',1e-100,'PlotFcns',@gaplotpareto); % 最优个体系数paretoFraction 为0.3;种群大小populationsize 为100,最大进化代数generations 为200, % 停止代数stallGenLimit 为200, 适应度函数偏差TolFun 设为1e-100,函数gaplotpareto :绘制Pareto 前端 [x,fval]=gamultiobj(fitnessfcn,nvars,A,b,Aeq,beq,lb,ub,options)

matlab图论程序算法大全

精心整理 图论算法matlab实现 求最小费用最大流算法的 MATLAB 程序代码如下: n=5;C=[0 15 16 0 0 0 0 0 13 14 for while for for(i=1:n)for(j=1:n)if(C(i,j)>0&f(i,j)==0)a(i,j)=b(i,j); elseif(C(i,j)>0&f(i,j)==C(i,j))a(j,i)=-b(i,j); elseif(C(i,j)>0)a(i,j)=b(i,j);a(j,i)=-b(i,j);end;end;end for(i=2:n)p(i)=Inf;s(i)=i;end %用Ford 算法求最短路, 赋初值 for(k=1:n)pd=1; %求有向赋权图中vs 到vt 的最短路

for(i=2:n)for(j=1:n)if(p(i)>p(j)+a(j,i))p(i)=p(j)+a(j,i);s(i)=j;pd=0;end ;end;end if(pd)break;end;end %求最短路的Ford 算法结束 if(p(n)==Inf)break;end %不存在vs 到vt 的最短路, 算法终止. 注意在求最小费用最大流时构造有 while if elseif if if pd=0; 值 t=n; if elseif if(s(t)==1)break;end %当t 的标号为vs 时, 终止调整过程 t=s(t);end if(pd)break;end%如果最大流量达到预定的流量值 wf=0; for(j=1:n)wf=wf+f(1,j);end;end %计算最大流量 zwf=0;for(i=1:n)for(j=1:n)zwf=zwf+b(i,j)*f(i,j);end;end%计算最小费用

图论算法及matlab程序的三个案例

图论实验三个案例 单源最短路径问题 1.1 Dijkstra 算法 Dijkstra 算法是解单源最短路径问题的一个贪心算法。其基本思想是,设置一个顶点集合S 并不断地作贪心选择来扩充这个集合。一个顶点属于集合S 当且仅当从源到该顶点的最短路径长度已知。设v 是图中的一个顶点,记()l v 为顶点 v 到源点v 1的最短距离, ,i j v v V ?∈,若 (,)i j v v E ?,记i v 到 j v 的权 ij w =∞ 。 Dijkstra 算法: ① 1{}S v =,1()0l v =;1{}v V v ??-,()l v =∞,1i =,1{}S V v =-; ② S φ=,停止,否则转③; ③ ()min{(),(,)} j l v l v d v v =, j v S ∈,v S ?∈; ④ 存在1i v +,使1()min{()}i l v l v +=,v S ∈; ⑤ 1{}i S S v += ,1{}i S S v +=-,1i i =+,转②; 实际上,Dijkstra 算法也是最优化原理的应用:如果121n n v v v v - 是从1v 到n v 的最短路径,则121n v v v - 也必然是从1v 到1n v -的最优路径。 在下面的MATLAB 实现代码中,我们用到了距离矩阵,矩阵第i 行第j 行元素表示顶点i v 到 j v 的权 ij w ,若i v 到 j v 无边,则 realmax ij w =,其中realmax 是 MATLAB 常量,表示最大的实数(1.7977e+308)。 function re=Dijkstra(ma)

图论算法及其MATLAB程序代码

图论算法及其MATLAB程序代码 求赋权图G = (V, E , F )中任意两点间的最短路的Warshall-Floyd算法: 设A = (a ij )n×n为赋权图G = (V, E , F )的矩阵, 当v i v j∈E时a ij= F (v i v j), 否则取a ii=0, a ij = +∞(i≠j ), d ij表示从v i到v j点的距离, r ij表示从v i到v j点的最短路中一个点的编号. ①赋初值. 对所有i, j, d ij = a ij, r ij = j. k = 1. 转向② ②更新d ij, r ij . 对所有i, j, 若d ik + d k j<d ij, 则令d ij = d ik + d k j, r ij = k, 转向③. ③终止判断. 若d ii<0, 则存在一条含有顶点v i的负回路, 终止; 或者k = n终止; 否则令k = k + 1, 转向②. 最短路线可由r ij得到. 例1求图6-4中任意两点间的最短路. 图6-4 解:用Warshall-Floyd算法, MA TLAB程序代码如下: n=8;A=[0 2 8 1 Inf Inf Inf Inf 2 0 6 Inf 1 Inf Inf Inf 8 6 0 7 5 1 2 Inf 1 Inf 7 0 Inf Inf 9 Inf Inf 1 5 Inf 0 3 Inf 8 Inf Inf 1 Inf 3 0 4 6 Inf Inf 2 9 Inf 4 0 3 Inf Inf Inf Inf 8 6 3 0]; % MATLAB中, Inf表示∞ D=A; %赋初值 for(i=1:n)for(j=1:n)R(i,j)=j;end;end%赋路径初值 for(k=1:n)for(i=1:n)for(j=1:n)if(D(i,k)+D(k,j)

图论举例MATLAB

例1 某公司在六个城市621,,,c c c 中有分公司,从i c 到j c 的直接航程票价记在下述矩阵的),(j i 位置上。(∞表示无直接航路),请帮助该公司设计一张城市1c 到其它城市间的票价最便宜的路线图。 ? ? ??? ? ? ? ? ?????????∞∞∞∞∞∞ 055252510550102025251001020402010015252015050102540500 用矩阵n n a ?(n 为顶点个数)存放各边权的邻接矩阵,行向量pb 、1index 、2index 、 d 分别用来存放P 标号信息、标号顶点顺序、标号顶点索引、最短通路的值。其中分量 ?? ?=顶点未标号 当第顶点已标号 当第i i i pb 01)(; )(2i index 存放始点到第i 点最短通路中第i 顶点前一顶点的序号; )(i d 存放由始点到第i 点最短通路的值。 求第一个城市到其它城市的最短路径的Matlab 程序如下: clear; clc; M=10000; a(1,:)=[0,50,M,40,25,10]; a(2,:)=[zeros(1,2),15,20,M,25]; a(3,:)=[zeros(1,3),10,20,M]; a(4,:)=[zeros(1,4),10,25]; a(5,:)=[zeros(1,5),55]; a(6,:)=zeros(1,6); a=a+a'; pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a)); d(1:length(a))=M;d(1)=0;temp=1; while sum(pb)=2

图论matlab程序

第一讲:图论模型 程序一:可达矩阵算法 function P=dgraf(A) n=size(A,1); P=A; for i=2:n P=P+A^i; end P(P~=0)=1; P; 程序二:关联矩阵和邻接矩阵互换算法 function W=incandadf(F,f) if f==0 m=sum(sum(F))/2; n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i:n if F(i,j)~=0 W(i,k)=1; W(j,k)=1; k=k+1; end end end elseif f==1 m=size(F,2); n=size(F,1); W=zeros(n,n); for i=1:m a=find(F(:,i)~=0); W(a(1),a(2))=1; W(a(2),a(1))=1; end else fprint('Please imput the right value of f'); end W;

程序三:有向图关联矩阵和邻接矩阵互换算法 function W=mattransf(F,f) if f==0 m=sum(sum(F)); n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i:n if F(i,j)~=0 W(i,k)=1; W(j,k)=-1; k=k+1; end end end elseif f==1 m=size(F,2); n=size(F,1); W=zeros(n,n); for i=1:m a=find(F(:,i)~=0); if F(a(1),i)==1 W(a(1),a(2))=1; else W(a(2),a(1))=1; end end else fprint('Please imput the right value of f'); end W;

超全图论matlab程序

超全的图论程序 关注微信公众号“超级数学建模”,教你做有料、有趣的数模人 程序一:可达矩阵算法 function P=dgraf(A) n=size(A,1); P=A; for i=2:n P=P+A^i; end P(P~=0)=1; P; 程序二:关联矩阵和邻接矩阵互换算法 function W=incandadf(F,f) if f==0 m=sum(sum(F))/2; n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i:n if F(i,j)~=0 W(i,k)=1; W(j,k)=1; k=k+1; end end end elseif f==1 m=size(F,2); n=size(F,1); W=zeros(n,n); for i=1:m a=find(F(:,i)~=0); W(a(1),a(2))=1; W(a(2),a(1))=1; end else fprint('Please imput the right value of f'); end W;

程序三:有向图关联矩阵和邻接矩阵互换算法 function W=mattransf(F,f) if f==0 m=sum(sum(F)); n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i:n if F(i,j)~=0 W(i,k)=1; W(j,k)=-1; k=k+1; end end end elseif f==1 m=size(F,2); n=size(F,1); W=zeros(n,n); for i=1:m a=find(F(:,i)~=0); if F(a(1),i)==1 W(a(1),a(2))=1; else W(a(2),a(1))=1; end end else fprint('Please imput the right value of f'); end W;

图论最短路MATLAB程序

最短路法MATLAB 程序 例1: 某公司在六个城市621,,,c c c 中有分公司,从i c 到j c 的直接航程票价记在下述矩阵的),(j i 位置上。(∞表示无直接航路),请帮助该公司设计一张城市1c 到其它城市间的票价最便宜的路线图。 ??????????????????∞∞∞∞∞∞ 05525251055010202525100102040 2010015252015050102540500 用矩阵n n a ?(n 为顶点个数)存放各边权的邻接矩阵,行向量pb 、1index 、 2index 、d 分别用来存放P 标号信息、标号顶点顺序、标号顶点索引、最短通路的值。其中分量 ? ??=顶点未标号当第顶点已标号当第i i i pb 01)(; )(2i index 存放始点到第i 点最短通路中第i 顶点前一顶点的序号; )(i d 存放由始点到第i 点最短通路的值。 求第一个城市到其它城市的最短路径的Matlab 程序如下: 程序一: clc,clear

a=zeros(6); %邻接矩阵初始化 a(1,2)=50;a(1,4)=40;a(1,5)=25;a(1,6)=10; a(2,3)=15;a(2,4)=20;a(2,6)=25; a(3,4)=10;a(3,5)=20; a(4,5)=10;a(4,6)=25; a(5,6)=55; a=a+a'; %将矩阵数据对称赋予矩阵 a(find(a==0))=inf; %找到0值并赋值为inf pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a)); d(1:length(a))=inf;d(1)=0; temp=1; %最新的P标号的顶点 while sum(pb)

图论matlab程序大全

图论程序大全 程序一:可达矩阵算法 function P=dgraf(A) n=size(A,1); P=A; for i=2:n P=P+A^i; end P(P~=0)=1; P; 程序二:关联矩阵和邻接矩阵互换算法function W=incandadf(F,f) if f==0 m=sum(sum(F))/2; n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i:n if F(i,j)~=0 W(i,k)=1; W(j,k)=1;

k=k+1; end end end elseif f==1 m=size(F,2); n=size(F,1); W=zeros(n,n); for i=1:m a=find(F(:,i)~=0); W(a(1),a(2))=1; W(a(2),a(1))=1; end else fprint('Please imput the right value of f'); end W; 程序三:有向图关联矩阵和邻接矩阵互换算法 function W=mattransf(F,f) if f==0

m=sum(sum(F)); n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i:n if F(i,j)~=0 W(i,k)=1; W(j,k)=-1; k=k+1; end end end elseif f==1 m=size(F,2); n=size(F,1); W=zeros(n,n); for i=1:m a=find(F(:,i)~=0); if F(a(1),i)==1 W(a(1),a(2))=1; else

(完整word版)图论算法及matlab程序的三个案例.docx

图论实验三个案例 单源最短路径问题 1.1 Dijkstra算法 Dijkstra 算法是解单源最短路径问题的一个贪心算法。其基本思想是,设置一个顶点集合 S 并不断地作贪心选择来扩充这个集合。一个顶点属于集合 S 当且 仅当从源到该顶点的最短路径长度已知。设v 是图中的一个顶点,记l (v) 为顶点 v 到源点 v1的最短距离,v i ,v j V ,若 (v i , v j ) E ,记 v i到 v j的权 w ij。 Dijkstra算法: ①S{ v 1 } , l (v 1 ) 0 ; v V { v 1 } , l (v) , i 1,S V { v1}; ②S ,停止,否则转③; ③l (v) min{ l (v), d (v j , v)} , v j S ,v S ; ④存在v i 1,使l (v i 1) min{ l (v)},v S; ⑤S S U { v i 1 } , S S { v i 1 } ,i i 1,转②; 实际上,Dijkstra算法也是最优化原理的应用:如果v 1 v 2 L v n 1 v n是从 v 1 到 v n的最 短路径,则v 1 v 2 L v n 1也必然是从 v 1 到 v n 1的最优路径。 实现代码中,我们用到了距离矩阵,矩阵第i 行第 j 行元 在下面的 MATLAB 素表示顶点v i 到 v j的权 w ij,若 v i 到 v j无边,则 w ij realmax ,其中 realmax 是 MATLAB常量,表示最大的实数 (1.7977e+308) 。 function re=Dijkstra(ma)

图论程序算法大全

图论算法matlab实现求最小费用最大流算法的 MATLAB 程序代码如下: n=5;C=[0 15 16 0 0 0 0 0 13 14 0 11 0 17 0 0 0 0 0 8 0 0 0 0 0]; %弧容量 b=[0 4 1 0 0 0 0 0 6 1 0 2 0 3 0 0 0 0 0 2 0 0 0 0 0]; %弧上单位流量的费用 wf=0;wf0=Inf; %wf 表示最大流量, wf0 表示预定的流量值 for(i=1:n)for(j=1:n)f(i,j)=0;end;end %取初始可行流f 为零流 while(1) for(i=1:n)for(j=1:n)if(j~=i)a(i,j)=Inf;end;end;end%构造有向赋权图 for(i=1:n)for(j=1:n)if(C(i,j)>0&f(i,j)==0)a(i,j)=b(i,j); elseif(C(i,j)>0&f(i,j)==C(i,j))a(j,i)=-b(i,j); elseif(C(i,j)>0)a(i,j)=b(i,j);a(j,i)=-b(i,j);end;end;end for(i=2:n)p(i)=Inf;s(i)=i;end %用Ford 算法求最短路, 赋初值 for(k=1:n)pd=1; %求有向赋权图中vs 到vt 的最短路 for(i=2:n)for(j=1:n)if(p(i)>p(j)+a(j,i))p(i)=p(j)+a(j,i);s(i)=j;pd=0;end;end;en d if(pd)break;end;end %求最短路的Ford 算法结束 if(p(n)==Inf)break;end %不存在vs 到vt 的最短路, 算法终止. 注意在求最小费用最大流时构造有 向赋权图中不会含负权回路, 所以不会出现k=n dvt=Inf;t=n; %进入调整过程, dvt 表示调整量 while(1) %计算调整量 if(a(s(t),t)>0)dvtt=C(s(t),t)-f(s(t),t); %前向弧调整量 elseif(a(s(t),t)<0)dvtt=f(t,s(t));end %后向弧调整量 if(dvt>dvtt)dvt=dvtt;end if(s(t)==1)break;end %当t 的标号为vs 时, 终止计算调整量 t=s(t);end %继续调整前一段弧上的流f pd=0;if(wf+dvt>=wf0)dvt=wf0-wf;pd=1;end%如果最大流量大于或等于预定的流量值 t=n;while(1) %调整过程 if(a(s(t),t)>0)f(s(t),t)=f(s(t),t)+dvt; %前向弧调整 elseif(a(s(t),t)<0)f(t,s(t))=f(t,s(t))-dvt;end %后向弧调整 if(s(t)==1)break;end %当t 的标号为vs 时, 终止调整过程

图论算法及其Matlab程序

求单源最短路径的Dijkstra算法的Matlab程序 function [d index1 index2]=Dijkf(a) M=max(max(a)); pb(1:length(a))=0; pb(1)=1; index1=1; index2=ones(1,length(a)); d(1:length(a))=M;d(1)=0;temp=1; while sum(pb)=2 index=index(1); end index2(temp)=index; end d; index1; index2; 求任意两点间最短路的Floyd算法的Matlab程序 function [D,R]=floyd(a) n=size(a,1); D=a; for i=1:n for j=1:n R(i,j)=j; end end for k=1:n for i=1:n for j=1:n if D(i,k)+D(k,j)

end end end D;R ; 求Euler回路的Fleury算法的Matlab程序function [eu,cEu]=arEuler(E) eu=0; cEu=[]; ncV=arComp(E); if max(ncV)>1 return end n=max(max(E(:,1:2))); m=size(E,1); for i=1:n b(i)=0; for j=1:m if E(j,1)==i|E(j,2)==i b(i)=b(i)+1; end end end rp=rem(b,2); srp=sum(rp); switch srp case 0, eu=1; case 2, eu=0.5; otherwise, return end if srp==0 v1=1; else v1=find(rp); v1=v1(1); end vc=v1; m=size(E,1); E1=[E(:,1:2),[1:m]'];

常用离散信号MATLAB程序及波形

常用离散信号MATLAB 表示 单位抽样序列 n=-10:10; x=[n==0]; stem(n,x); title('单位抽样信号'); xlabel('n');ylabel('x');grid on ; -10 -8 -6 -4 -2 02 4 6 8 10 00.10.20.30.40.50.60.70.80.91单位抽样信号 n x 延迟k=4个单位后的图像为: -10 -8 -6 -4 -2 02 4 6 8 10 00.10.20.30.40.50.60.70.80.91单位抽样信号 n x

单位阶跃信号 n=-5:10; x=[zeros(1,5),ones(1,11)]; stem(n,x,'m','p'); axis([-5,10,-0.5,1.5]); title('单位阶跃信号'); xlabel('n');ylabel('幅度') grid on ; -5 510 -0.50 0.5 1 1.5 单位阶跃信号 n 幅度 矩形序列 n=-5:15; x=[zeros(1,5),ones(1,11),zeros(1,5)]; stem(n,x,'r','h') axis([-5,15,-0.5,1.5]); title('矩形序列'); xlabel('时间');ylabel('幅度') grid on ;

-5 51015 -0.50 0.5 1 1.5 矩形序列 时间 幅度 正弦序列 n=-5:0.1:5; xn=2*sin(0.5*pi*n+pi/3); stem(n,xn) axis([-5,5,-3,3]); title('正弦序列'); xlabel('时间');ylabel('幅度'); grid on ; -5 -4-3-2-1 012345 -3-2 -1 1 2 3 正弦序列 时间 幅度

用matlab实现寻找最短路

用matlab寻找赋权图中的最短路中的应用 1引言 图论是应用数学的一个分支,它的概念和结果来源都非常广泛,最早起源于一些数学游戏的难题研究,如欧拉所解决的格尼斯堡七桥问题,以及在民间广泛流传的一些游戏的难题,如迷宫问题,博弈问题等。这些古老的难题,吸引了很多学者的注意。 1847年,图论应用于分析电路网络,这是它最早应用于工程科学,以后随着科学的发展,图论在解决运筹学,网络理论,信息论,控制论,博弈论以及计算机科学等各个领域的问题时,发挥出很大的作用。在实践中,图论已成为解决自然科学,工程技术,社会科学,军事等领域中许多问题的有力工具之一。 最短路问题是图论理论中的经典问题,寻找最短路径就是在指定网络中两节点间找一条距离最小的路。 2 最短路 2.1 最短路的定义(short-path problem) 对最短路问题的研究早在上个世纪60年代以前就卓有成效了,其中对赋权图()0 w≥的有效算法是由荷兰著名计算机专家E.W.Dijkstra在1959年首次提出的,该算法能ij 够解决两指定点间的最短路,也可以求解图G中一特定点到其它各顶点的最短路。后来海斯在Dijkstra算法的基础之上提出了海斯算法。但这两种算法都不能解决含有负权的图的最短路问题。因此由Ford提出了Ford算法,它能有效地解决含有负权的最短路问题。但在现实生 w≥的情况下选择Dijkstra算法。活中,我们所遇到的问题大都不含负权,所以我们在()0 ij 若网络中的每条边都有一个数值(长度、成本、时间等),则找出两节点(通常是源节点和阱节点)之间总权和最小的路径就是最短路问题。最短路问题是网络理论解决的典型问题之一,它不仅可以直接应用于解决生产实际的许多问题,如管路铺设、线路安装、厂区布局和设备更新等,而且经常被作为一个基本的工具,用于解决其他的做优化问题。 定义1:若图G=G(V,E)中个边[v i,v j]都赋有一个实数w ij ,则称这样的图G为

相关文档