搜档网
当前位置:搜档网 › 遗传算法在多目标优化的应用:公式,讨论,概述总括

遗传算法在多目标优化的应用:公式,讨论,概述总括

遗传算法在多目标优化的应用:公式,讨论,概述总括
遗传算法在多目标优化的应用:公式,讨论,概述总括

遗传算法在多目标优化的应用:公式,讨论,概述/总括

概述

本文主要以适合度函数为基础的分配方法来阐述多目标遗传算法。传统的群落形成方法(niche formation method)在此也有适当的延伸,并提供了群落大小界定的理论根据。适合度分配方法可将外部决策者直接纳入问题研究范围,最终通过多目标遗传算法进行进一步总结:遗传算法在多目标优化圈中为是最优的解决方法,而且它还将决策者纳入在问题讨论范围内。适合度分配方法通过遗传算法和外部决策者的相互作用以找到问题最优的解决方案,并且详细解释遗传算法和外部决策者如何通过相互作用以得出最终结果。

1.简介

求非劣解集是多目标决策的基本手段。已有成熟的非劣解生成技术本质上都是以标量优化的手段通过多次计算得到非劣解集。目前遗传算法在多目标问题中的应用方法多数是根据决策偏好信息,先将多目标问题标量化处理为单目标问题后再以遗传算法求解,仍然没有脱离传统的多目标问题分步解决的方式。在没有偏好信息条件下直接使用遗传算法推求多目标非劣解的解集的研究尚不多见。

本文根据遗传算法每代均产生大量可行解和隐含的并行性这一特点,设计了一种基于排序的表现矩阵测度可行解对所有目标总体表现好坏的向量比较方法,并通过在个体适应度定标中引入该方法,控制优解替换和保持种群多样性,采用自适应变化的方式确定交叉和变异概率,设计了多目标遗传算法(Multi Objective Genetic Algorithm, MOGA)。该算法通过一次计算就可以得到问题的非劣解集,

简化了多目标问题的优化求解步骤。

多目标问题中在没有给出决策偏好信息的前提下,难以直接衡量解的优劣,这是遗传算法应用到多目标问题中的最大困难。根据遗传算法中每一代都有大量的可行解产生这一特点,我们考虑通过可行解之间相互比较淘汰劣解的办法来达到最

后对非劣解集的逼近。

考虑一个n维的多目标规划问题,且均为目标函数最大化,

其劣解可以定义为: f

i (x

*

)≤f

i

(x

t

) i=1,2,??,n

(1)

且式(1)至少对一个i取“<”。即至少劣于一个可行解的x必为劣解。

对于遗传算法中产生大量的可行解,我们考虑对同一代中的个体基于目标函数相互比较,淘汰掉确定的劣解,并以生成的新解予以替换。经过数量足够大的种群一定次数的进化计算,可以得到一个接近非劣解集前沿面的解集,在一定精度要求下,可以近似的将其作为非劣解集。

个体的适应度计算方法确定后,为保证能得到非劣解集,算法设计中必须处理好以下问题:(1)保持种群的多样性及进化方向的控制。算法需要求出的是一组不同的非劣解,所以计算中要防止种群收敛到某一个解。与一般遗传算法进化到

后期时种群接近收敛不同,多目标遗传算法中要求都要保持解的多样性以适应对已得到的优解(也就是最后非劣解集的备选集)能再进行更新。(2)优解的选择替换。算法必须能选出表现更好的解,并避免由于优解的替换不当使得解集收敛于同一个方向,并使得解集的分布具有一定程度的均匀性。从上述思路出发,本文在多目标遗传算法中使用了针对多目标的个体适应度确定方法,对交叉和变异概率依据种群和进化代数进行自适应调整,并控制种群个体并行向非劣解集前沿面逼近。

二向量评估基因算法

Schaffer 在1984 年提出一种向量评价的遗传算法。它通过以目标向量的各个分量作为适应度来选择出几个等规模的子群体, 交叉和变异的操作则在由子。

群体组成的整个群体内进行。即在每一代,基于个目标函数适应度的计算,产生一定数目的子种群,子种群的大小为N/q,q为目标函数的个数,然后将产生q 个子种群的后代混合起来成为新的种群N继续杂交。杂交采用离散重组,变异采用均匀变异。

然而1989年理查德提出:将所得的全部新个体都划分到同一个种群内,相当于将全部适合度符合的向量点集,线性划归到同一适合度函数曲线上。因此当下的效率权衡就取决于当下新组成的群体。实质上它是一种权重取于当前世代的适应度函数线性求和的将多目标合成单一目标的优化方法。

在最优集的基础上, 提出一种将各个目标值直接映射到适应度函数中的基于秩的适应度函数。因此下一章我们提出:提出了用于对整个种群的个体进行排序的结合目标值及其优先级偏好信息的关系算子。

三以等级分三类的方式体现适应度分配方法在多目标优化遗传算法中的应用

将Xi视为t子代中的一个个体,该个体符合适应度函数Pi(t),假设其余全部个体都在现存种群中,则Xi在该种群中的位置,可用以下函数表明:

函数(Xi,t)=1+p t

i

)

(

其余所有不完全符合Pi(t)的个体则被分配到等级1(rank1)的函数曲线上,见图1.(见原稿figure 1multiobjective ranking),这和Fourman1985年提出的分类筛选的方法有所不同,该等级分类的方式明确表明处于等级3的个体劣于处于等级2的个体,原因在于后者(等级3)函数曲线对现存个体的描述较为粗略。但1989年Goldberg,提出的方法则忽略了这两的等级存在的些微差异。

关于适应度分配方法我们应认识到:不需要将某代该种群中的各个等级都呈现出来,例如图1中等级4的缺失即为一很好的例证。传统的适应度按等级的分配方法在此有了一定延伸:

1. 按等级找种群

2. 将全部个体按适应度从最优(等级1)排到最劣(等级n,其中n 小于等于N ),

从某方面看,该曲线一般为线性关系,但也不尽然。

3. 按适合度将每个个体都分配到同一等级,则这些个体被选中继续作为下一

代亲本的几率是相同的。值得注意的是该方法使得全球各种群的适应度具有连续性,并维持了适当的筛选淘汰的压力。

上述所指的适应度分配方法仅为传统/标准方法的一个延伸,适用于单目标优化或无相互竞争的多目标优化。

四 基于小生境技术遗传算法

适应度分享法可以有效地在复杂多峰函数优化问题中避免基因个体的堆积,保持群体的多样性。这里引进的另一个遗传算法的矢量σ

share

需要特别注意。现存的理论把σ

share

的价

值设定为解集有优先知道的有限个峰和均匀小生境组成。在收敛上,适应度高的个体将取代原有的结构相似的个体。

另一方面,在多目标优化问题中的全体解的个体适应度是均匀单调的,而且无法预知解集的大小。函数的运用已经强制性使搜索集中在在全体最优解中。通过在目标价值范围内应用使用度分享比在多种解决范围内要好。,并且只有在总体操作空间的两两间非支配个体间才能进化出均匀分配表现。

适应度共享函数的直接目的时将搜索空间的多个不同峰值在地理上区分开来,每一个峰值处接受一定比例数目的个体,比例大小与峰值高度有关。为了实现这样的分布,共享法将个体的目标适应度降低得到个体邻集密集程度的估计。适应度函数共享法多少独立于现在使用的选择方法。

4.1 对σ

share

的选择

σ

s h a r e

的建立意义是较好峰值之间个体的最小距离,其建立基础是分享法将个体目标适

应度降低。通过以上部分,我们无法知道在不同解决范围内多目标优化问题解集的大小,由于它依赖于目标函数图像。然而,在目标价值范围内和由于非支配个体定义,一个更高的限制对于解集的大小可以被计算通过最小值和最大值评价各个目标假设在那个解集内。另S 为不同解决方法范围内的解集。f(S)为目标范围内的解集,)

(y

y q

,1y

=,,同时令

)

,()m i n ,,1(1m i

n m m y

y q y

q

y

m ==

)

()m a x ,m a x (,11

M

M

y y q

y

q

y

M

==

设A 是各个不同

)

(m M

j j

-边界连积的和

∑∏==-

=

q 1

1

)

(i q

j j

j

m

M

A

)

()(1

1

i 1q m =--+--

∏∏==-σ

σ

σshare

q

i q

i i share

i i

share

M m M

σ

share

>0

五 在选择算法中混合HIGHER-LEVER 的解决方式

当遇到既定函数做选择的情况下,决策者需要决定哪个无支配个体作为解。首先,非劣最优目标区域根据特定的问题设定协议,然后用一个清晰地可用的图,这个协议知道找到解终止。总而言之,适应度较高的解保留较多而样本,适应度较低的解保留较少的样本甚至被淘汰。进化过程最后一代的最优解就是遗传算法的最终结果。

减少解决法案的种类被称为Higher-lever 的结决方案。这个方法并没有缩小寻找的范围,而是减少了非劣最优目标区域寻找最优解的空间。

这种适应度解决方式更早前被描述为了接受达成目标的信息,近似的被应用为传统的目标达成方式(Gembicki 1974)

5.1 目标规划法

目标规划法解决多目标多约束问题的定义如下

)

(m i n x f x Ω

设X 为变量,Ω为可行域,f 为目标函数,代入一下公式可得 λλ

min Ω

∈x 同理 g

w

f

i

i

i

<

λ

这里

g

i

是 f 的目标偏好值。

w

i

为权重。对 λ求极限,λ

w i 是目标偏差的最小值

5.2调整多目标优化方案概括目标信息

多目标优化函数程序最早描述的是对通过改变个体与个体比较的方法调整目标信息。这使得一个个体优于另一个个体成为可能,即使两个都是无支配个体。这个算法将变得不同并演进了操作面得相关区域 。

仍然是个最小化的问题,假设两个q 单位的目标向量,

)

(1

y

y

y

gq

g g

?

=,且

)

(1

y

y

y bq

b b

?

=,且目标向量

)

(1

g g

g q

?

=。同时考虑

y

g

满足

一个值,q~k,中一个特殊目标。除了一般性的误差,可写成

)

()(,,,1,,1;1q ,1g

y

g

y

j

gj

i

gi

q k j k i k ≤

∧>

?+=??=?-?=?, (A )

假设一组可用的目标序列值。甚至,y

g

不满足任意一个目标,i,e.

)

(,q ,1g

y

i

gi

i >

?=?, (B)

或者全部目标,我们可写成

(g

j

gj

q j ≤

?=?y

,,,1 (C )

在公式(A )中,y

g

满足目标k+1,…,q 并且,因此将优先于

y

b

,如果他支配

y b

遵循第一个k 构成的

y

g

等同于由k 构成的

y

b

y

g

将仍在种群中优于

y

b

如果他支配

y

b

遵循剩

余的组成个体,或者剩余的种群个体全都不满足目标。通常,

y

g

将优先于

y

b

当且仅当

{]

[?

??

?

?≤∨<

=

<++++)(~)()()()q ,1()

q ,,1()

1()

q 1()

,,1()

,1()

,,1()

,1(g y

y

y

y

y

y

y

b b b q b b b g b b b g b b b g p p ,

在公式(B )中,y

g

不满足任何一个目标。然后

y

g

优先于

y

b

,当且仅当它支配

y

b

,i,e,

)

(~)(g y y

y

b

b

gp

≤∨<

这种关系的应用优于仅对其进行描述。设所有的目标趋近无穷大将使得算法演进为整个非劣性域的表述。

这种表述或许不够精确,受目标规划的影响,在多目标优化问题中比较容易得到偏好信息不同的目标给定相同的优先级,可以避免使用目标函数的距离测度,而距离测度不可避免的依赖于具体问题中给定的目标值大小。这种方法依赖于决策者提供的目标值及其优先级偏好信息,在某种程度上仍取决于决策者对问题的把握程度,需要决策者来决定。

六 通过多目标优化遗传算法提高偏好值精确值

多目标优化遗传算法可以进一步被推广。决策者的行为可看成一些非绝对意义上的效用函数的连续价值体现。效用函数表达了一种决策者结合目标函数对其中一个目标值的偏好大于另一目标值,最后,是这个函数建立了遗传算法优化种群的基础。建立线性规划模型进行个体比较,同时对当前种群的个体进行排序,另一方面,达成决策者两个不同态度的一致。首先,假设决策者准确的指导优化的对象,比如财政支出。第二,决策者只使得优化个体使用多目标优化优越性最广泛的定义。提供目标信息,或使用分享技术,通常意味着决策者更详尽的态度,更少直接的效用函数,一个可能甚至不同于遗传算法的过程,但仍是另一个效用函数。

一个多目标的基因优化在一般意义上是,由体现决策者对每代种群序列解的评估的标准的基因算法构成。决策者通过对非劣性最优解和可用的优先信息的应用来表达其偏好,同时通过选择和繁殖产生下一代种群,重复上述选择和繁殖,指导结束条件得到满足。进化过陈过最后一代中的最优解就是用遗传算法最优化问题所得到的最终结果。

多目标优化问题中的多个目标之间通过决策相互制约,对其中一个目标的优化必须以牺牲其他目标为代价,一次通常无法找到一个解同时最优化所有目标,而是找到多个解,这些解间很难客观评价他们的优劣性。即多目标优化问题的解不是唯一的而是存在一个最优解集合。

七最初的结果

多目标优化遗传算法最直接的应用是Pegasus气体涡轮机的优化一个完整的发动机非线性模型(Hancock,1992),被应用于SIMULINK(MATHWORKs,1992b)被用来模仿这个系统,给予初始条件数量和操控者参量集。遗传算法被应用在MATLAB(MATHWORKs,1992a;Fleming ,1993),意味着所有的编码精确地计算环境中运行。

每一个算法的控制者参量都是Gray编码,14个字节一行,串成70个字节长度的染色体。一个自由的初始容量为80和标准两点简化代理交叉算子以及二进制变化的应用。初始目标价值是设定发动机根据一些执行要求。有四个目标被应用。

t T最终输出变化达到70%的时间目标:t T≤0.59s

tδ最终输出变化解决在±10%的时间目标tδ≤1.08s

οδ超越目标,测量最终输出变化相关的值,目标οδ≤10%

ε在这一步骤后测量输出错误4秒,最终输出变化相关。目标:err≤10%

rr

在遗传算法的运行过程中,决策者储存了所有的非支配个体进化到现在的一代。该算法运用一定的选择策略从当前种群中选取两父本,由该父本交叉遗传产生的新个体替换种群中最差的个体,不断重复直到终止条件满足。

图六图7

图8

一个典型的操作图,在40代后达到初始目标,在图形6中体现。在这一阶段为输出误差设置更高的目标在图7中表现,包含了图六中解集的子集。继续运行遗传算法,更多的定义将被达到在这边区域中。见图八。图九表现了解决方法的可选择观点。在上面举例说明。

八结束语

遗传算法通过搜集个体种群适合于多目标优化。它能够找到总体最优条件同时能够处理不连续嘈杂的函数。多目标优化遗传算法的进步表达了人们希望在细节上决定发动机的设计。

从简单的Pareto基础适应任务方法所引出的重要问题是基于非群体小生境多目标优化遗传算法,应用遗传算法解决多目标优化问题时,个体之间的优劣关系如何比较,构成什么样的适度函数是算法最重要最关键的。我们通过将个体的多个目标关系转化为单个可直接比较大小的非线性适应度函数,是算法得到在非劣性概念下的一组非劣最优解或者是有效解。

染色体编码和基因操作本身,在未来有很大继续研究学习的前景。在文中由于时间的关系没有来得及对算子的性能做更深入的研究了解。对特定问题设计的遗传算法,编码表示必须有完备性,和算子搜索能力的完备性,约束处理能力,适应反应问题本质及算子具有良好的探索性和利用性。事实上,利用非劣性集合相关的变化能够区别于怎样决定相关个体间的不同。

鸣谢

首先来自Progtama CIENCIA,Junta Nacional,portugal作者丰富的知识支持

相关文献

数学工程(1992a)。MATLAB相关指导

数学工程(1992b).SIMULINK使用者指导

理查德森,利用处罚函数遗传算法指导。191—197,摩根·卡夫曼

卢卡斯,C和卡特曼,G多种条件目标矢量最优条件利用基因算法,第一部分理论。

范沙德尼亚·R(1991),CACSD运用多目标优化方法。博士命题。英国Wales,Bangor大学

弗莱明,P.J(1985)运用多目标优化进行电子计算机目标程序设计

弗莱明,P.J佛塞卡,C,M,克鲁明,T.P 工具箱与开放结构

遗传算法在多目标优化的应用:公式,讨论,概述总括

遗传算法在多目标优化的应用:公式,讨论,概述/总括 概述 本文主要以适合度函数为基础的分配方法来阐述多目标遗传算法。传统的群落形成方法(niche formation method)在此也有适当的延伸,并提供了群落大小界定的理论根据。适合度分配方法可将外部决策者直接纳入问题研究范围,最终通过多目标遗传算法进行进一步总结:遗传算法在多目标优化圈中为是最优的解决方法,而且它还将决策者纳入在问题讨论范围内。适合度分配方法通过遗传算法和外部决策者的相互作用以找到问题最优的解决方案,并且详细解释遗传算法和外部决策者如何通过相互作用以得出最终结果。 1.简介 求非劣解集是多目标决策的基本手段。已有成熟的非劣解生成技术本质上都是以标量优化的手段通过多次计算得到非劣解集。目前遗传算法在多目标问题中的应用方法多数是根据决策偏好信息,先将多目标问题标量化处理为单目标问题后再以遗传算法求解,仍然没有脱离传统的多目标问题分步解决的方式。在没有偏好信息条件下直接使用遗传算法推求多目标非劣解的解集的研究尚不多见。 本文根据遗传算法每代均产生大量可行解和隐含的并行性这一特点,设计了一种基于排序的表现矩阵测度可行解对所有目标总体表现好坏的向量比较方法,并通过在个体适应度定标中引入该方法,控制优解替换和保持种群多样性,采用自适应变化的方式确定交叉和变异概率,设计了多目标遗传算法(Multi Objective Genetic Algorithm, MOGA)。该算法通过一次计算就可以得到问题的非劣解集, 简化了多目标问题的优化求解步骤。 多目标问题中在没有给出决策偏好信息的前提下,难以直接衡量解的优劣,这是遗传算法应用到多目标问题中的最大困难。根据遗传算法中每一代都有大量的可行解产生这一特点,我们考虑通过可行解之间相互比较淘汰劣解的办法来达到最 后对非劣解集的逼近。 考虑一个n维的多目标规划问题,且均为目标函数最大化, 其劣解可以定义为: f i (x * )≤f i (x t ) i=1,2,??,n (1) 且式(1)至少对一个i取“<”。即至少劣于一个可行解的x必为劣解。 对于遗传算法中产生大量的可行解,我们考虑对同一代中的个体基于目标函数相互比较,淘汰掉确定的劣解,并以生成的新解予以替换。经过数量足够大的种群一定次数的进化计算,可以得到一个接近非劣解集前沿面的解集,在一定精度要求下,可以近似的将其作为非劣解集。 个体的适应度计算方法确定后,为保证能得到非劣解集,算法设计中必须处理好以下问题:(1)保持种群的多样性及进化方向的控制。算法需要求出的是一组不同的非劣解,所以计算中要防止种群收敛到某一个解。与一般遗传算法进化到

多目标遗传算法代码

. % function nsga_2(pro) %% Main Function % Main program to run the NSGA-II MOEA. % Read the corresponding documentation to learn more about multiobjective % optimization using evolutionary algorithms. % initialize_variables has two arguments; First being the population size % and the second the problem number. '1' corresponds to MOP1 and '2' % corresponds to MOP2. %inp_para_definition=input_parameters_definition; %% Initialize the variables % Declare the variables and initialize their values % pop - population % gen - generations % pro - problem number %clear;clc;tic; pop = 100; % 每一代的种群数 gen = 100; % 总共的代数 pro = 2; % 问题选择1或者2,见switch switch pro case 1 % M is the number of objectives. M = 2; % V is the number of decision variables. In this case it is % difficult to visualize the decision variables space while the % objective space is just two dimensional. V = 6; case 2 M = 3; V = 12; case 3 % case 1和case 2 用来对整个算法进行常规验证,作为调试之用;case 3 为本工程所需; M = 2; %(output parameters 个数) V = 8; %(input parameters 个数) K = 10; end % Initialize the population chromosome = initialize_variables(pop,pro); %% Sort the initialized population % Sort the population using non-domination-sort. This returns two columns % for each individual which are the rank and the crowding distance

遗传算法在多目标优化中的作用 调研报告

遗传算法在多目标优化中的作用调研报告 姓名: 学院: 班级: 学号: 完成时间:20 年月日 目录 1 .课题分析................................................................................................................................ 0 2 .检索策略................................................................................................................................ 0 2.1 检索工具的选择................................................................................................................................ ......... 0 2.2 检索词的选择................................................................................................................................ ............. 0 2.3 通用检索式................................................................................................................................ .. 0 3.检索步骤及检索结果 0 3.1 维普中文科技期刊数据库 0 3.2 中国国家知识产权局数据

遗传算法多目标函数优化

多目标遗传算法优化 铣削正交试验结果 说明: 1.建立切削力和表面粗糙度模型 如: 3.190.08360.8250.5640.45410c e p z F v f a a -=(1) a R =此模型你们来拟合(上面有实验数据,剩下的两个方程已经是我帮你们拟合好的了)(2) R a =10?0.92146v c 0.14365f z 0.16065a e 0.047691a p 0.38457 10002/c z p e Q v f a a D π=-????(3) 变量约束范围:401000.020.080.25 1.0210c z e p v f a a ≤≤??≤≤??≤≤? ?≤≤? 公式(1)和(2)值越小越好,公式(3)值越大越好。π=3.14 D=8 2.请将多目标优化操作过程录像(同时考虑三个方程,优化出最优的自变量数值),方便我后续进行修改;将能保存的所有图片及源文件发给我;将最优解多组发给我,类似于下图(黄色部分为达到的要求)

遗传算法的结果:

程序如下: clear; clc; % 遗传算法直接求解多目标优化 D=8; % Function handle to the fitness function F=@(X)[10^(3.19)*(X(1).^(-0.0836)).*(X(2).^0.825).*(X(3).^0.564).*(X(4).^0. 454)]; Ra=@(X)[10^(-0.92146)*(X(1).^0.14365).*(X(2).^0.16065).*(X(3).^0.047691).*( X(4).^0.38457)]; Q=@(X)[-1000*2*X(1).*X(2).*X(3).*X(4)/(pi*D)];

遗传算法程序代码--多目标优化--函数最值问题

函数最值问题:F=X2+Y2-Z2, clear clc %%初始化 pc=0.9; %交叉概率 pm=0.05; %变异概率 popsize=500; chromlength1=21; chromlength2=23; chromlength3=20; chromlength=chromlength1+chromlength2+chromlength3; pop=initpop(popsize,chromlength);% 产生初始种群 for i=1:500 [objvalue]=calobjvalue(pop); %计算目标函数值 [fitvalue]=calfitvalue(objvalue);%计算个体适应度 [newpop]=selection(pop,fitvalue);%选择 [newpop1]=crossover(newpop,pc) ; %交叉 [newpop2]=mutation(newpop1,pm) ;%变异 [newobjvalue]=newcalobjvalue(newpop2); %计算最新代目标函数值 [newfitvalue]=newcalfitvalue(newobjvalue); % 计算新种群适应度值[bestindividual,bestfit]=best(newpop2,newfitvalue); %求出群体中适应值最大的个体及其适应值 y(i)=max(bestfit); %储存最优个体适应值 pop5=bestindividual; %储存最优个体 n(i)=i; %记录最优代位置 %解码 x1(i)=0+decodechrom(pop5,1,21)*2/(pow2(21)-1); x2(i)=decodechrom(pop5,22,23)*6/(pow2(23)-1)-1; x3(i)=decodechrom(pop5,45,20)*1/(pow2(20)-1); pop=newpop2; end %%绘图 figure(1)%最优点变化趋势图 i=1:500; plot(y(i),'-b*') xlabel('迭代次数'); ylabel('最优个体适应值'); title('最优点变化趋势'); legend('最优点');

多目标遗传算法中文【精品毕业设计】(完整版)

一种在复杂网络中发现社区的多目标遗传算法 Clara Pizzuti 摘要——本文提出了一种揭示复杂网络社区结构的多目标遗传算法。该算法优化了两个目标函数,这些函数能够识别出组内节点密集连接,而组间连接稀疏。该方法能产生一系列不同等级的网络社区,其中解的等级越高,由更多的社区组成,被包含在社区较少的解中。社区的数量是通过目标函数更佳的折衷值自动确定的。对合成和真实网络的实验,结果表明算法成功地检测到了网络结构,并且能与最先进的方法相比较。 关键词:复杂网络,多目标聚类,多目标进化算法 1、简介 复杂网络构成了表示组成许多真实世界系统的对象之间关系的有效形式。协作网络、因特网、万维网、生物网络、通信传输网络,社交网络只是一些例子。将网络建模为图,节点代表个体,边代表这些个体之间的联系。 复杂网络研究中的一个重要问题是社区结构[25]的检测,也被称作为聚类[21],即将一个网络划分为节点组,称作社区或簇或模块,组内连接紧密,组间连接稀疏。这个问题,如[21]指出,只有在建模网络的图是稀疏的时候才有意义,即边的数量远低于可能的边数,否则就类似于数据簇[31]。图的聚类不同于数据聚类,因为图中的簇是基于边的密度,而在数据聚类中,它们是与距离或相似度量紧密相关的组点。然而,网络中社区的概念并未严格定义,因为它的定义受应用领域的影响。因此,直观的理解是同一社区内部边的数量应该远多于连接图中剩余节点的边的数量,这构成了社区定义的一般建议。这个直观定义追求两个不同的目标:最大化内部连接和最小化外部连接。 多目标优化是一种解决问题的技术,当多个相互冲突的目标被优化时,成功地找到一组解。通过利用帕累托最优理论[15]获得这些解,构成了尽可能满足所有目标的全局最优解。解决多目标优化问题的进化算法取得成功,是因为它们基于种群的特性,同时产生多个最优解和一个帕累托前沿[5]的优良近似。 因此,社区检测能够被表述为多目标优化问题,并且帕累托最优性的框架可以提供一组解对应于目标之间的最佳妥协以达到最优化。事实上,在上述两个目标之间有一个折衷,因为当整个网络社区结构的外部连接数量为空时,那它就是最小的,然而簇密度不够高。 在过去的几年里,已经提出了许多方法采用多目标技术进行数据聚类。这些方法大部分在度量空间[14], [17],[18], [28], [38], [39], [49], [51]聚集目标,虽然[8]中给出了分割图的一个方法,并且在[12]中描述了网络用户会议的一个图聚类算法。 本文中,一个多目标方法,名为用于网络的多目标遗传算法(MOGA-Net),通过利用提出的遗传算法发现网络中的社区。该方法优化了[32]和[44]中介绍的两个目标函数,它们已被证实在检测复杂网络中模块的有效性。第一个目标函数利用了community score的概念来衡量对一个网络进行社区划分的质量。community score值越高,聚类密度越高。第二个目标函数定义了模块中节点fitness的概念,并且反复迭代找到节点fitness总和最大的模块,以下将这个目标函数称为community fitness。当总和达到最大时,外部连接是最小。两个目标函数都有一个正实数参数控制社区的规模。参数值越大,找到的社区规模越小。MOGA-Net利用这两个函数的优点,通过有选择地探索搜寻空间获得网络中存在的社区,而不需要提前知道确切的社区数目。这个数目是通过两个目标之间的最佳折衷自动确定的。 多目标方法的一个有趣结果是它提供的不是一个单独的网络划分,而是一组解。这些解中的每一个都对应两个目标之间不同的折衷,并对应多种网络划分方式,即由许多不同簇组成。对合成网络和真实网络的实验表明,这一系列帕累托最优解揭示了网络的分层结构,其中簇的数目较多的解包含在社区数目较少的解中。多目标方法的这个特性提供了一个很好的机会分析不同层级

多目标遗传算法代码

% function nsga_2(pro) %% Main Function % Main program to run the NSGA-II MOEA. % Read the corresponding documentation to learn more about multiobjective % optimization using evolutionary algorithms. % initialize_variables has two arguments; First being the population size % and the second the problem number. '1' corresponds to MOP1 and '2' % corresponds to MOP2. %inp_para_definition=input_parameters_definition; %% Initialize the variables % Declare the variables and initialize their values % pop - population % gen - generations % pro - problem number %clear;clc;tic; pop = 100; % 每一代的种群数 gen = 100; % 总共的代数 pro = 2; % 问题选择1或者2,见switch switch pro case 1 % M is the number of objectives. M = 2; % V is the number of decision variables. In this case it is % difficult to visualize the decision variables space while the % objective space is just two dimensional. V = 6; case 2 M = 3; V = 12; case 3 % case 1和case 2 用来对整个算法进行常规验证,作为调试之用;case 3 为本工程所需; M = 2; %(output parameters 个数) V = 8; %(input parameters 个数) K = 10; end % Initialize the population chromosome = initialize_variables(pop,pro); %% Sort the initialized population % Sort the population using non-domination-sort. This returns two columns % for each individual which are the rank and the crowding distance % corresponding to their position in the front they belong. 真是牛X了。 chromosome = non_domination_sort_mod(chromosome,pro); %% Start the evolution process

多目标规划遗传算法

%遗传算法解决多目标函数规划 clear clc syms x; %Function f1=f(x) f1=x(:,1).*x(:,1)/4+x(:,2).*x(:,2)/4; %function f2=f(x) f2=x(:,1).*(1-x(:,2))+10; NIND=100; MAXGEN=50; NV AR=2; PRECI=20; GGPA=0.9; trace1=[]; trace2=[]; trace3=[]; FielD=[rep([PRECI],[1,NV AR]);[1,1;4,2];rep([1;0;1;1],[NV AR])]; Chrom=crtbp(NIND,NV AR*PRECI); v=bs2rv(Chrom,FielD); gen=1; while gen

多变量多目标的遗传算法程序

这是我在解决电梯动力学参数写的简单遗传算法(程序带目标函数值、适应度值计算,但是我的适应度函数因为目标函数的计算很特殊,一起放在了程序外面计算,在此不提供)。 头文件: // CMVSOGA.h : main header file for the CMVSOGA.cpp // 本来想使用链表里面套链表的,程序调试比较麻烦,改为种群用链表表示 //染色体固定为16的方法。 #if !defined(AFX_CMVSOGA_H__45BECA_61EB_4A0E_9746_9A94D1CCF767_ _INCLUDED_) #define AFX_CMVSOGA_H__45BECA_61EB_4A0E_9746_9A94D1CCF767__INCLUDED _ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "Afxtempl.h" #define variablenum 16 class CMVSOGA { public: CMVSOGA(); void selectionoperator(); void crossoveroperator(); void mutationoperator(); void initialpopulation(int, int ,double ,double,double *,double *); //种群初始化 void generatenextpopulation(); //生成下一代种群 void evaluatepopulation(); //评价个体,求最佳个体 void calculateobjectvalue(); //计算目标函数值 void calculatefitnessvalue(); //计算适应度函数值 void findbestandworstindividual(); //寻找最佳个体和最差个体 void performevolution(); void GetResult(double *); void GetPopData(double **); void SetValueData(double *); void maxandexpectation(); private: struct individual { double chromosome[variablenum]; //染色体编码长度应该为变量的个数 double value; double fitness; //适应度 };

相关主题