搜档网
当前位置:搜档网 › 基于多目标混沌云粒子群算法的泊位-岸桥分配研究

基于多目标混沌云粒子群算法的泊位-岸桥分配研究

基于多目标混沌云粒子群算法的泊位-岸桥分配研究
基于多目标混沌云粒子群算法的泊位-岸桥分配研究

2014 年 1 月

第 1 期 总第 487 期

水运工程

Port & Waterway Engineering

Jan. 2014

No. 1 Serial No. 487

泊位-岸桥的合理配置优化能够有效提高集装箱码头资源的利用率、缩短船舶在港等待时间、

基于多目标混沌云粒子群算法的

泊位-岸桥分配研究

*

李明伟1,2,康海贵2,耿 静1,3,周鹏飞2

( 1. 哈尔滨工程大学船舶工程学院,黑龙江 哈尔滨 150001;2.大连理工大学海岸和近海工程国家重点实验室,辽宁 大连 116023; 3. 大连中交理工交通技术研究院有限公司,辽宁 大连 116023)

摘要:为了提高集装箱港口泊位-岸桥分配效果和优化效率,以集卡运距和船舶在港时间最小为优化目标,建立了多目标离散泊位-岸桥分配模型,利用混沌云粒子群算法对泊位-岸桥分配模型进行求解,开发了粒子可行-整数化处理模块,内嵌于混沌云粒子群算法进化中,制定了粒子编码规则,设计了多目标函数的粒子历史极值和全局极值的计算方法,提出了基于混沌云粒子群优化算法求解多目标离散泊位-岸桥分配模型的新方法,数值算例结果证明了该模型和算法的可行性和实用性。

关键词:泊位-岸桥分配;粒子群算法;多目标优化;混沌理论;云模型

中图分类号:U 691.6 文献标志码:A 文章编号:1002-4972(2014)01

-0090-07

改善港口服务水平,是增强集装箱码头竞争力的关键[1]。国内外专家对泊位-岸桥调度优化问题进

Berth and quay-crane allocation

based on multi-objective chaos cloud particle swarm optimization algorithm

LI Ming-wei 1,2, KANG Hai-gui 2, GENG Jing 1,3, ZHOU Peng- fei 2

(1. Ship Institute of Harbin Engineering University, Harbin 150001, China;

2. State Key Lab of Coastal and Offshore Engineering, Dalian University of Technology, Dalian 116023, China;

3. CCCC&DIUT Institute of Communication Technology Co., Ltd., Dalian 116023, China)

Abstract: To improve allocation effectiveness and optimize efficiency of the berth and quay-crane in

container terminal, a multi-objective berth and quay-crane allocation mode is established, so as to minimize the

transportation distance of container truck and stay time of ships in terminal, and the Chaos Cloud Particle Swarm Optimization (CCPSO) algorithm is used to solve the new model. The feasible-integer processing module for particles is designed, and embedded in the CCPSO algorithm. Devising the rules of particles encoding and calculation method of the historical extremum and the global extremum of particles, a new multi-objective berth and quay-crane allocation mode optimized by the CCPSO algorithm is proposed. Numerical example result shows that the proposed

model and algorithm has certain the practicability and effectiveness.Key words: berth-quay crane allocation; particle swarm optimization; multi-objective optimization; chaos

theory; cloud model

收稿日期:2013-04-22

*基金项目: 国家自然科学基金(50679008);教育部博士点专项基金(200901411105); 河南省交通厅科技计划项

目(2010D107-4)

作者简介:李明伟 (1984—),男,博士研究生,主要研究方向为港口物流与智能优化研究。

?91 ?第 1 期

行了广泛研究,提出了多种预测模型。在已有模型中,用于求解调度优化模型的方法主要分为2类,一类是基于实际经验和数学算法而制定的启发式算法[2-5],另一类是以遗传算法为代表的全局搜索进化算法[6-9]。启发式算法实现容易、计算速度快,但精度不高;以遗传算法为代表的进化算法基于生物进化机制,能够搜索到理论最优解,在一定程度上提高了求解精度,但算法本身存在着易陷入局部极值、进化后期收敛速度慢的不足,用于调度优化模型的求解难以保证得到全局最优的分配方案。

考虑船舶在靠泊时应尽可能靠近偏好泊位、减少集卡运距、缩短船舶在港时间,从而能够提高码头运营效率和顾客满意度、提升港口竞争力,本文以船舶未按偏好泊位靠泊而产生的额外集卡运距和船舶在港时间最小为优化目标,建立了离散泊位-岸桥分配模型。

针对已有求解算法的不足,为了进一步提高优化模型的求解效率和分配效果,尝试利用性能更优的混沌云粒子群算法[10]对模型进行求解,考虑混沌云粒子群算法在进化过程中粒子只能以实数形式实现进化和优化模型约束的特点,开发了粒子可行-整数化处理模块,内嵌于混沌云粒子群算法进化中,用于子代粒子所包含分配信息的可行性及整数化处理,提出了基于混沌云粒子群算法求解调度优化模型的新方法,通过数值算例对提出算法的可行性和实用进行了分析。

1 泊位-岸桥分配优化模型

集装箱码头多目标离散泊位-岸桥分配模型基于以下假设条件:1)船舶靠泊方式为离散型;2)停泊的物理条件(水深和船长)均满足相应的船舶要求;3)船舶不可移泊,每艘船舶只能靠泊一次;4)船舶靠泊开始装卸后,分配岸桥个数不变;5)船舶分配的岸桥数不得大于船舶允许的最大岸桥数;6)不考虑岸桥移动的时间;7)岸桥不准跨越移动。

分配模型参数设置如下:到港船舶(V e s s e l,V={1,2,…,v}),泊位(B e r t h,B={1,2,…,b}),岸桥(Crane,C={1,2,…,c});VO 为船舶靠泊顺序集;VB为船舶靠泊泊位集;VC为船舶作业岸桥数目集;VO i为船舶i靠泊顺序;VB i 为船舶i靠泊泊位;VC i为船舶i分配的岸桥数目;TA i为船舶i到港时间;TB i为船舶i靠泊时间;TS i为船舶i开始装卸作业时间;TF i为船舶i离港时间;VP i为船舶i的偏好靠泊泊位;VCm i为船舶i可接受的最小岸桥数;VCM i为船舶i可接受的最大岸桥数;VL i为船舶i的安全船长(含横向安全预留距离);VD i为船舶i的安全水深(含纵向安全预留距离);VE i为船舶i的装卸箱量;TD i为船舶i实际靠泊泊位与偏好泊位间的距离;BL j为泊位j的长度;BD j为泊位j的前沿水深;CE0为单个岸桥装卸效率;TYM i为船舶i可接受的最大延误时间;x ijk和q in为定义变量,按以下方式确定:

1f

else

x

i

ijk='船舶i在泊位j上按次序k被服务1

q if

else

in='岸桥n为船舶i服务

本文将因船舶实际靠泊泊位与偏好泊位不同而产生的集卡运距最小作为第1个目标函数F1,将船舶在港时间最小作为第2个目标函数F2,此时,F1和F2可由下式计算:

min

F v VE TD

1

i i

i

v

1

1

:

=

=

;E

/(1)

min

F v TF TA

1

i i

i

v

2

1

=-

=^

h

;E

/(2)

约束条件为:TB i≥TA i,6i∈V(3)

TS i≥TB i, 6i∈V (4)

TB i≥TF i-1, 6i∈V(5)

01,

q n C

in

i

v

1

6

G G!

!

/(6)

,,

x j B k VO

1

ijk

i V

66

G!!

!

/(7)

,

q VC i v

in i

n

c

1

6!

=

!

/(8)

,

VCm q VC M i V

i in

n

c

i

1

6

G G!

!

/(9)

VCm i≤VC i≤VCM i,6i∈V(10)

q c

in

n

c

i

v

1

1

G

=

=

/

/(11)

李明伟,等:基于多目标混沌云粒子群算法的泊位-岸桥分配研究*

? 92 ?

水运工程2014 年

TF i -TS i =VE i /(CE 0·

VC i ), 6i ∈V (12)TA i ≤TB i , 6i ∈V (13)

,

x

BD VD i V ijk

j i k VO j B :6H !!=^h // (14).

x

BL VL i V ijk

j i k VO

j B :6H !!=^h // (15)

,

x

i V 1ijk

K VO

j B 6!=!=// (16)

TS i -TA i ≤TYM i , 6i ∈V (17)

,;,,q q q i V n n n C

1

0111

i n i n in 116!!+-=--++-^^h h *(18)

q in ∈{0,1},i ∈V ,n ∈C (19)约束(3)表示船舶靠泊时间大于其到港时间;约束(4)表示船舶开始装卸时间大于其靠泊时间;约束(5)表示船舶靠泊时间大于其靠泊泊位前一艘船舶的离港时间;约束(6)表示每个岸桥最多只能为一艘船舶服务;约束(7)表示同一时刻同一泊位只能有一艘船舶靠泊;约束(8)表示分配的岸桥数与q in 之间的关系;约束(9)和(10)表示实际装卸过程中和分配岸桥资源时,分配给船舶的岸桥数应大于最小岸桥数VCm i 并且小于最大岸桥数VCM i ;约束(11)表示作业的岸桥数应小于等于岸桥总数;约束(12)表示船舶港装卸作业时间等于船舶装卸箱量与分配岸桥数和岸桥装卸效率之积的比值;约束(13)保证船舶到达后才可以被服务;约束(14)和(15)表示为船舶分配的靠泊泊位的水深和长度条件应满足要求;约束(16)表示船舶i 在泊位j 上靠泊,并以服务顺序k 被服务的次数有且只有一次;约束(17)表示船舶的等待时间应小于或等于其可接受的最大等待时间;约束(18)表示岸桥在服务过程中只能在同一轨道上移动,不能跨越,并且服务的岸桥必须是连续的;约束(19)声明决策变量x ijk 和q in 为0-1变量。

2 基于多目标CCPSO 离散泊位-岸桥分配模型求解2.1 混沌云粒子群算法

PSO 算法原理是由算法产生一组随机的粒子

(随机解),通过粒子在解空间中的运动来寻找最优

解,设每个粒子的位置为x i ={x 1, x 2, …, x Q },相应速

度为v i ={v 1, v 2,…, v Q },其中i =1,2,…, N, j =1,2,…, Q ,

在每次迭代中,每个粒子都需要通过与其他粒子的交流和自身的经验来确定下一次搜索的速度和起始位置。

设由N 个粒子组成的群体对Q 维空间进行搜索,则第i 个粒子根据该粒子在前G 次搜索到的第d

维最优位置p G

i 和整个粒子群在前G 次搜索到的第d

维最优位置P G g 更新下一代的速度v id G +1和位置x id G +1的迭代操作如下:

v v P x P x c r c r id G id G id G id G gd G id

G

11122=+-+-~+^^h h (20)x x v id G id G id G 11

=+++ (21)

式中:ω是惯性权重;c 1和c 2为学习因子;r 1和r 2是均匀分布在(0,1)区间的随机数。

针对PSO 算法在收敛后期粒子多样性减弱和收敛速度慢的不足,基于Cat 映射的混沌遍历性和云模型的随机性和稳定倾向性的特点,通过引入混合控制参数mix _gen 和种群分配系数pop _dist ,将粒子群算法Cat 映射和云模型进行混合,提出了混沌云-粒子群混合优化算法[11]。笔者在文献[11]中对混沌云粒子群混合优化算法的Cat 映射混沌特性、云模型的遍历性和稳定倾向性以及算法中混合控制参数和种群分配系数建议取值进行了详细讨论,在此不再详述。2.2 粒子编码设计

本文采用矩阵编码方式表示粒子个体,矩阵中各编码均采用自然数,矩阵列数为抵港船舶数量,共3行,第1行为船舶靠泊次序(VO ),第2行表示靠泊泊位编号(VB ),第3行为分配岸桥数(VC )。表1给出了6艘需要进行装卸作业船舶的对应粒子编码,以粒子编码矩阵的第1列为例,抵港船舶1的靠泊次序为3,靠泊泊位为2,分配装卸岸桥数为5。

表1 粒子编码原理

矩阵说明

粒子编码矩阵抵港船舶编号V

123456第一行(pop [m ,1,j ]):船舶靠泊次序VO 321465第二行(pop [m ,2,j ]):靠泊泊位编号VB 234124第三行(pop [m ,3,j ]):分配岸桥数VC

5

3

2

4

5

3

?93 ?第 1 期

2.3 粒子可行-整数化处理模块设计

在混沌云粒子群算法进化中,不论是粒子速度和位置更新以及全局混沌扰动和局部细粒度搜索都是以实数形式进行的,得到的子代粒子pop[m,i,j]也是以实数形式表示的,所以,由混沌粒子群算法优化得到的粒子pop[m,i,j]不能保证上述约束条件,因此,需对子代粒子pop[m,i,j]进行可行-整数化处理,可行-整数化处理模块设计如下:

Step1:令m=1,转入Step2;

Step2:将粒子m的第1行pop[m,1,:]按从小到大进行排列,得到pop1[m,1,:],如果pop1[m,1,:]中各值均不相等,则转到Step3,否则转到Step4;Step3:将pop1[m,1,:]中的每个船舶对应数值的排列顺序作为每个船舶靠泊顺序pop2[m,1,:],令pop_new[m,1,:]=pop2[m,1,:],转入Step5;Step4:对于在pop1[m,1,:]中所对应数值相等的船舶,通过参考这些船舶在进化前相应父代个体中的靠泊前后顺序来确定子代个体中的船舶靠泊顺序pop2[m,1,:],令pop_new[m,1,:]=pop2[m,1,:],转入Step5;

Step5:令j=1,转入Step6;

Step6:对粒子m中第j艘船舶的靠泊泊位pop [m,2,j]值进行四舍五入整数化,得到pop1[m,2,j],然后判断pop1[m,2,j]是否满足船舶j的靠泊约束,若满足,令pop_new[m,2,j]=pop1[m,2,j],否则,在满足船舶j靠泊约束条件下随机选取靠泊泊位pop2[m,2,j],令pop_new[m,2,j]=pop2[m,2,j],转入Step7;

Step7:若j≥v转到Step9,否则转到Step8; Step8:令j=j+1,转到Step6;

Step9:令j=1,转入Step10;

S t e p10:对粒子m中第j艘船舶的分配岸桥数pop[m,3,j]值进行四舍五入整数化,得到pop1[m,3,j],然后判断pop1[m,3,j]是否满足船舶j的岸桥约束,若满足令pop_new[m,3,j]= pop1[m,3,j],否则,在满足船舶j的岸桥数约束条件下随机形成pop2[m,3,j],令pop_new[m,3,j]=pop2[m,3,j],转入Step11;

Step11:若j≥v转到Step13,否则转到Step12;

Step12:令j=j+1,转到Step10;

Step13:按粒子m对应的分配方案计算从属变量,如果每艘船舶延误均满足其延误约束(17),转入Step15,否则转入Step14;

Step14:若粒子m的船舶延误可行性处理次数小于延误可行性处理最大次数,则在满足船舶靠泊约束和岸桥约束下随机分配靠泊泊位pop_ new[m,2,:]和分配岸桥pop_new[m,3,:],否则,随机选取已有可行粒子作为粒子m的分配方案,转入Step13;

Step15:若m≥pop_size转到Step17,否则转到Step16;

Step16:令m=m+1, 转到Step2;

Step17:完成种群规模为pop_size的粒子可行-整数化处理。

2.4 基于多目标函数粒子历史极值pbest[i]和全局极值gbest的计算

文中选取原始目标值作为适应度函数,为了保证两个目标函数的影响权重相当,引入平衡系数进行处理,平衡系数通过对具体算例中两个目标函数取值量级的分析进行确定。经分析,本文算例中平衡系数取值为10-4,此时,目标函数F1, F2的多目标适应度函数计算公式如下:

Fitness1[i]=10-4×F1[x] (22)

Fitness2[i]=F2[x] (23)粒子的局部极值和全局极值应根据两个目标函数计算的适应度值协同确定[9],粒子的历史极值和全局极值计算方法如下:

Step1:按式(22)和(23)分别计算每个粒子的两个适应度值Fitness l[i]和Fitness2[i]。

Step2:分别计算每个粒子的历史极值p best[1,i]和p best[2,i]及全局极值g best[1]和g best[2]。

Step3:将种群两个全局极值g best[1]和g best[2]的平均值g best作为全局极值。

[1][2]

g g g

2

best

best best

=

+(24)Step4:计算种群中两个全局极值的g best[1]和g best[2]的距离Dg best。

Dg best=distance(g best[1], g best[2])(25)Step5: 计算种群中每个粒子的两个历史极值

李明伟,等:基于多目标混沌云粒子群算法的泊位-岸桥分配研究*

? 94 ?

水运工程2014 年

p best [1,i ]和p best [2,i ]之间的距离Dp best 。

Dp best (i )=distance (p best [1,i ], p best [2,i ]) (26)

Step6:基于全局极值距离Dg best ,历史极值距离

Dp best 和各粒子的历史极值p best [1,i ]和p best [2,i ],计算用于粒子i 位置和速度更新的最终历史极值p best [i ]。Dg Dg ,,,,,,p i average p i p i Dp i randslect p i p i Dp i 1212best best best best best

best best best best

=1H 666666666@@@@@@@@@)(27)

2.5 基于CCPSO 算法求解多目标离散泊位-岸桥分配模型的流程设计

利用CCPSO 算法求解分配模型计算流程如下:Step1: 设定粒子群规模pop _size ,加速常数

c 1和c 2,最大进化代数gen ,种群分配系数pop _

distr ,混合控制参数mix _gen ,船舶数目v ,泊位数目为b ,岸桥数目为c ;

step2: 为了体现种群初始化的多样性,随机

生成种群规模为pop _size 的初始种群,转到step3;

Step3: 令G =1,GG =1;Step4: 如果G ≤gen ,进入Step8,否则转入Step5;

Step5: 如果GG ≤mix _gen *gen ,进入Step6,否则转Step7;

Step6: 更新粒子群每个粒子的速度和位置,

将获得新粒子群输入粒子可行-整数化处理模块,进行可行-整数化处理,得到具有可行解的新的粒子群pop _new [:,:,:],计算所有粒子pop _new [:,:,:]的

适应度值,更新pop _size 粒子的当前最优位置P G

i 和

全局最优位置P G g ,G =G +1,GG =GG +1, 转入Step4;

Step7: 将每个粒子的当前最优位置P G i 组成

新的种群,并按粒子的适应度值进行排序,将整个种群分为pop _distr *pop _size 个优秀个体和(1-pop _distr )*pop _size 个较差个体两个部分,对

pop _distr *pop _size 个较优个体进行小生境局部搜索,得到新的pop _distr *pop _size 个优秀个体,对(1-pop _distr )*pop _size 个较差个体进行全局混沌扰动,得到新的(1-pop _distr )*pop _size 扰动后的优秀个体,组成种群数量为pop _size 的精英种群,将获得精英种群输入粒子可行-整数化处理模块,进行可行整数化处理,得到具有可行解的新的精英种

群pop _new [:,:,:],计算pop _size 个精英个体的适应

度值,更新种群历史最优位置P G

i 和全局最优位置

P G g ,G =G +1,GG =0,转入Step4;Step8: 输出最优解P G g =pop _new [:,:,:],作为优

化后的最优调度方案。

3 数值试验与结果分析3.1 试验设计

根据集装箱码头船舶到达统计规律和码头装卸设备的技术参数设计试验算例,以评估建立模型和算法的可行性和优越性。以4个泊位和12个岸桥的集装箱码头为例进行数值试验,1#~4#泊位长

度分别为400,400,300,200 m 。设船舶到港时间服从均值为λ的泊松分布,船型分为I 类、II 类、III 类,到港后船舶的装卸箱量,根据船型随机确定(I 类:100~300,II 类:300~600,III 类:600~1200),船舶吃水深度和船长按照船型确定,船舶最大可接受等待时间从4~9 h 中随机确定,船舶停靠的偏好泊位满足泊位约束下随机确定,岸桥装卸效率为35 TEU/(台·h),船舶可靠泊泊位及可接受的最大岸桥数量依据船型确定,I 类:可靠泊泊位1#~4#泊位,可接受最大岸桥数量为3;II 类:可靠泊泊位1#~3#泊位,可接受最大岸桥数量为4;III 类:可靠泊泊位1#~2#泊位,可接受最大岸桥数量为5。数值计算利用Matlab 7.1编制程序,运行环境为: Core(TM)2CPU,1.81 MHz, 2 GB

内存的微机,操作系统为WindowsXP 。

利用均值为λ分别为3,5的泊松分布,生成抵港船舶数量为25,50,75,100,两两组合共8组算例进行数值试验。同时选用文献[8]中基于整数进化策略的GA 算法(I-GA ),文献[12]中基于整数进化策略的PSO 算法(I-PSO )、基于粒子可行-整数处理模块进化策略的PSO 算法(M-PSO)和基于粒子可行-整数处理模块进化策略的CCPSO 算法(M-CCPSO)对分配模型进行求解。3.2 试验结果分析与评价

考虑到算法参数的设置不同也会影响算法性能,所以经试算后,选择各算法的最佳参数进行计算。GA 算法参数:种群规模pop _size =100,

? 95 ?

第 1 期

李明伟,等:基于多目标混沌云粒子群算法的泊位-岸桥分配研究*

交叉概率P c =0.18,变异概率P m =0.10,最大迭代次数gen =2 000;PSO 算法参数:pop _size =100,gen =10 000,c 1=c 2=2.0;CCPSO 算法参数:pop _

size =100,gen =2 000,c 1=c 2=2.0,mix _gen =0.7,

pop _distr =0.7。基于上述参数设置,利用4种算法随机求解20次,得到各模型最优解平均值对比结果见表2。

由表2中最优解质量分析得出,M-PSO 算法

表2 4种模型最优解平均值对比结果

试验(进化1 000代)平均达到间隔/h 船舶数/

船舶平均在港时间F 1/h M-CCPSO 较I-GA 优化程度/%集卡平均运距F 2/(10 km)

M-CCPSO 较I-GA 优化程度/%算法算法算法算法算法算法算法算法

1

5

25

10.32

10.78

11.56

9.47

8.23

37.83

38.1538.28

32.03

15.31255010.8611.2712.239.839.4540.2440.88

41.1233.2517.36

3

5

75

11.43

11.89

13.02

10.26

10.1642.1543.0643.4133.93

19.484

5

10011.95

12.36

13.68

10.54

11.7844.68

45.9146.38

34.51

22.76

5

3

25

13.42

13.86

14.92

12.02

10.37

41.6342.2842.5333.11

20.456

3

5014.21

14.68

16.02

12.51

11.9644.91

46.14

46.60

34.57

23.01

7

3

75

14.91

15.35

17.06

13.06

12.3847.8249.58

50.2735.21

26.358

3

100

15.43

15.78

17.84

13.35

13.4651.23

53.47

54.40

35.65

30.41

表3 算法稳定性分析结果

试验编号

/h 集卡平均运距F /(10 km)I-GA 算法M-CCPSO 算法

I-GA 算法M-CCPSO 算法

最大值

平均值最小值最大值平均值最小值最大值平均值最小值最大值平均值最小值1

12.90

10.32

8.73

10.65

9.47

8.39

41.70

37.83

33.89

36.03

32.03

28.37

211.9710.869.2911.259.838.2743.9840.2433.6037.0733.2528.983

12.34

11.43

9.63

11.31

10.26

9.36

49.50

42.15

36.37

37.47

33.93

28.59

4

13.79

11.95

9.99

11.74

10.54

8.92

49.33

44.68

37.42

38.44

34.51

30.61

5

15.41

13.42

11.27

14.01

12.02

10.95

44.93

41.63

35.06

37.12

33.11

28.50

6

16.62

14.21

12.33

13.41

12.51

11.35

52.45

44.91

37.22

37.00

34.57

32.05

7

17.48

14.91

12.88

14.22

13.06

11.84

56.13

47.82

42.00

38.14

35.21

31.58

8

16.64

15.43

14.20

14.32

13.35

12.34

59.08

51.23

47.11

41.40

35.65

31.17

在F 1和F 2两个目标函数的求解精度稍劣于I-GA 算法和I-PSO 算法,说明了M-PSO 算法中基于可行-整数化模块进行粒子处理是可行的;与其他3种算法相比,M-CCPSO 算法所得最优解的质量都有不同程度的提高,与M-PSO 算法的最优解相比船舶平均在港时间减少1 h26 min ,平均优化程度提高10.97%;集卡运距平均减少97.73 km, 平均优化程度提高21.89%,并随着优化问题规模和复杂度的增大,优化程度有增加的趋势,说明将CCPSO 算法用于分配模型求解,在求解精度方

面达到了预期。

表3为I-GA 算法和M-CCPSO 算法对8组试验求解20次中得到最优解的最小值、平均值和最大值统计结果。由表3解的稳定性分析可知,I-GA 算法

和M-CCPSO 算法得到的最优解中,对于目标值F 1的最大值与平均值相比,最多分别高出了17.24%和16.63%,最少分别高出了7.86%和7.25%,平均高出了13.49%和11.09 %;最小值与平均值相比,最多分别降低了16.37%和15.82%,最少分别降低了7.92%和7.54%,平均降低了14.08%和10.77%;对于目标值F 2的最大值与平均值相比,

两算法最多分别高出了17.45%和16.14%,最少分别高出了7.95%和7.03%,平均高出了13.11%和11.19%;最小值与平均值相比,两算法最多分别降低了16.56%和15.74%,最少分别降低了8.03%和7.28%,平均降低了13.74%和11.91%。分析结果表明本文提出算法获得的最优解的波动较小,求解精度相对稳定。

?96 ?水运工程2014 年

4 结论

本文提出了基于混沌云粒子群算法求解的多目标离散泊位-岸桥分配模型。通过数值算例对提出模型和算法的求解质量和稳定性进行了分析,结果表明新模型在算例优化过程中与其他对比模型相比减少了集卡运输距离、降低了船舶在港服务时间、获得了更好的分配方案,模型求解稳定性分析表明,新模型求解波动较小、求解稳定性优于对比模型,证明了提出模型和算法的可行性和实用性。将本文提出的分配模型及其求解算法,应用于港口实际调度中能够有效提高港口资源的利用率、提升港口综合竞争力,具有一定的使用价值。需指出的是本文考虑的集卡运距和船舶在港时间两个优化目标未能充分反映码头生产的全部决策需求,在实际生产过程中,还应考虑作业安全质量、船公司要求满足程度、突发事件反应速度、船舶和后方堆场衔接等因素。

参考文献:

[1] 韩骏, 孙晓娜, 靳志宏. 集装箱码头泊位与岸桥协调

调度优化[J]. 大连海事大学学报: 自然科学版, 2008, 34(2): 117-121.

[2] Lai K K, Shih K. A study of container berth allocation [J]. Journal of Advanced Transportation, 1992, 26: 45-60.

[3] Guan Y P , Cheung R K . The berth allocation problem :Models and solution methods[J]. OR Spectrum, 2004 , 26(1): 75-92. [4] 杨春霞, 王诺, 杨华龙. 集装箱码头泊位-岸桥分配耦合

优化[J]. 计算机集成制造系统, 2010, 17(10): 161-168.

[5] Akio I, Hsieh C C, Etsuko N, et al. The simultaneous berth and quay crane allocation problem[J] . Transportation Research: Part E, 2008, 44 (5): 900- 920.

[6] 周鹏飞, 康海贵. 面向随机环境的集装箱码头泊位-岸

桥分配方法[J]. 系统工程理论与实践, 2008, 28(1): 161-169.

[7] Liang C, Huang Y, Yang Y. A quay crane dynamic scheduling problem by hybrid evolutionary algorithm for berth allocation planning[J]. Computers & Industrial Engineering, 2009, 56(3): 1 021-1 028.

[8] 杨春霞, 王诺. 基于多目标遗传算法的集装箱码头

泊位-岸桥分配问题研究[J]. 计算机应用研究, 2010, 27(13): 1 721-1 725.

[9] 张红菊, 乐美龙. 基于多目标粒子群算法的泊位-岸桥

分配研究[J]. 武汉理工大学学报, 2012, 34(2): 59-64. [10] Li Mingwei, Hong Weichiang, Kang Haigui. Urban traffic flow forecasting using Gauss-SVR with cat mapping, cloud model and PSO hybrid algorithm[J]. Neurocomputing, 2013, 99: 230-240.

[11] Li Mingwei, Kang Haigui, Zhou Pengfei, et al. Hybrid optimization algorithm based on chaos, cloud and particle swarm optimization algorithm[J]. Journal of Systems Engineering and Electronics, 2013, 24(2): 324-334. [12] 薛峰, 陈刚, 高尚. 求解0-1整数规划的混合粒子群优化

算法[J]. 计算技术与自动化, 2011, 30(1): 86-89.

(本文编辑武亚庆)

[4] 刘敬贤, 李昌伟, 刘文. 基于排队论的锚地规模论证分

析[J]. 船海工程, 2009, 38(4): 158-161.

[5] 米小亮, 杨星, 刘克中. 基于多级排队模型的锚地规模

仿真研究[J]. 武汉理工大学学报:交通科学与工程版, 2012, 36(3): 594-598.

[6] 王文渊, 唐国磊, 宋向群, 等. 沿海集装箱港区港内锚地

面积确定方法[J]. 中国港湾建设, 2011(6): 6-8. [7] 郭子坚, 王文渊, 唐国磊, 等. 基于港口服务水平的沿海

港口航道通过能力[J]. 中国港湾建设, 2010 (S1): 46-48.[8] 郭子坚, 陈琦, 唐国磊, 等. 船舶进出港安全时距对沿海

散货港区航道通过能力的影响[J]. 水运工程, 2011(7): 136-140.

[9] 宋向群, 付超, 郭子坚, 等. 沿海集装箱港区单向航道服

务水平研究[J]. 水运工程, 2010(7): 107-111. [10] 杜安民. 基于标准船型的港口航道通过能力研究[D]. 大

连: 大连理工大学, 2008.

(本文编辑武亚庆)

(上接第89页)

(完整word版)基本粒子群算法的原理和matlab程序

基本粒子群算法的原理和matlab程序 作者——niewei120(nuaa) 一、粒子群算法的基本原理 粒子群优化算法源自对鸟群捕食行为的研究,最初由Kennedy和Eberhart提出,是一种通用的启发式搜索技术。一群鸟在区域中随机搜索食物,所有鸟知道自己当前位置离食物多远,那么搜索的最简单有效的策略就是搜寻目前离食物最近的鸟的周围区域。PSO 算法利用这种模型得到启示并应用于解决优化问题。PSO 算法中,每个优化问题的解都是粒子在搜索 空间中的位置,所有的粒子都有一个被优化的目标函数所决定的适应值,粒子还有一个速度值决定它们飞翔的方向和距离,然后粒子群就追随当前的最优粒子在解空间中搜索。 PSO 算法首先在给定的解空间中随机初始化粒子群,待优化问题的变量数决定了解空间的维数。每个粒子有了初始位置与初始速度。然后通过迭代寻优。在每一次迭代中,每个粒子通过跟踪两个“极值”来更新自己在解空间中的空间位置与飞翔速度。第一个极值就是单个粒子本身在迭代过程中找到的最优解粒子,这个粒子叫做个体极值。另一个极值是种群所有粒子在迭代过程中所找到的最优解粒子,这个粒子是全局极值。上述的方法叫全局粒子群算法。如果不用种群所有粒子而只用其中一部分作为该粒子的邻居粒子,那么在所有邻居粒子中的极值就是局部极值,该方法称为局部PSO 算法。 速度、位置的更新方程表示为: 每个粒子自身搜索到的历史最优值p i ,p i=(p i1,p i2,....,p iQ),i=1,2,3,....,n。所有粒子搜索到的最优值p g,p g=(p g1,p g2,....,p gQ),注意这里的p g只有一个。 是保持原来速度的系数,所以叫做惯性权重。 是粒子跟踪自己历史最优值的权重系数,它表示粒子自身的认识,所以叫“认知”。通常设置为2。 是粒子跟踪群体最优值的权重系数,它表示粒子对整个群体知识的认识,所以叫做“社会知识”,经常叫做“社会”。通常设置为2。 是[0,1]区间内均匀分布的随机数。 是对位置更新的时候,在速度前面加的一个系数,这个系数我们叫做约束因子。通常设 置为1 。

基本粒子群算法的matlab源程序

主函数源程序(main.m) %------基本粒子群优化算法(Particle Swarm Optimization)-----------%------名称:基本粒子群优化算法(PSO) %------作用:求解优化问题 %------说明:全局性,并行性,高效的群体智能算法 %------初始格式化--------------------------------------------------clear all; clc; format long; %------给定初始化条件---------------------------------------------- c1=1.4962;%学习因子1 c2=1.4962;%学习因子2 w=0.7298;%惯性权重 MaxDT=1000;%最大迭代次数 D=10;%搜索空间维数(未知数个数) N=40;%初始化群体个体数目 eps=10^(-6);%设置精度(在已知最小值时候用) %------初始化种群的个体(可以在这里限定位置和速度的范围)------------for i=1:N for j=1:D x(i,j)=randn;%随机初始化位置 v(i,j)=randn;%随机初始化速度 end end %------先计算各个粒子的适应度,并初始化Pi和Pg----------------------for i=1:N p(i)=fitness(x(i,:),D); y(i,:)=x(i,:); end pg=x(1,:);%Pg为全局最优 for i=2:N if fitness(x(i,:),D) pg=x(i,:); end end %------进入主要循环,按照公式依次迭代,直到满足精度要求------------for t=1:MaxDT for i=1:N v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:)); x(i,:)=x(i,:)+v(i,:); if fitness(x(i,:),D) p(i)=fitness(x(i,:),D); y(i,:)=x(i,:);

用粒子群算法求解多目标优化问题的Pareto解

粒子群算法程序 tic D=10;%粒子群中粒子的个数 %w=0.729;%w为惯性因子 wmin=1.2; wmax=1.4; c1=1.49445;%正常数,成为加速因子 c2=1.49445;%正常数,成为加速因子 Loop_max=50;%最大迭代次数 %初始化粒子群 for i=1:D X(i)=rand(1)*(-5-7)+7; V(i)=1; f1(i)=X(i)^2; f2(i)=(X(i)-2)^2; end Loop=1;%迭代计数器 while Loop<=Loop_max%循环终止条件 %对粒子群中的每个粒子进行评价 for i=1:D k1=find(1==Xv(i,:));%找出第一辆车配送的城市编号 nb1=size(k1,2);%计算第一辆车配送城市的个数 if nb1>0%判断第一辆车配送城市个数是否大于0,如果大于0则 a1=[Xr(i,k1(:))];%找出第一辆车配送城市顺序号 b1=sort(a1);%对找出第一辆车的顺序号进行排序 G1(i)=0;%初始化第一辆车的配送量 k51=[]; am=[]; for j1=1:nb1 am=find(b1(j1)==Xr(i,:)); k51(j1)=intersect(k1,am);%计算第一辆车配送城市的顺序号 G1(i)=G1(i)+g(k51(j1)+1);%计算第一辆车的配送量 end k61=[]; k61=[0,k51,0];%定义第一辆车的配送路径 L1(i)=0;%初始化第一辆车的配送路径长度 for k11=1:nb1+1 L1(i)=L1(i)+Distance(k61(k11)+1,k61(k11+1)+1);%计算第一辆车的配送路径长度end else%如果第一辆车配送的城市个数不大于0则 G1(i)=0;%第一辆车的配送量设为0 L1(i)=0;%第一辆车的配送路径长度设为0 end

(完整word版)基本粒子群算法的原理和matlab程序.doc

基本粒子群算法的原理和matlab 程序 作者—— niewei120 (nuaa) 一、粒子群算法的基本原理 粒子群优化算法源自对鸟群捕食行为的研究,最初由Kennedy 和 Eberhart 提出,是一种通 用的启发式搜索技术。一群鸟在区域中随机搜索食物,所有鸟知道自己当前位置离食物多远, 那么搜索的最简单有效的策略就是搜寻目前离食物最近的鸟的周围区域。PSO 算法利用这种模型得到启示并应用于解决优化问题。PSO 算法中,每个优化问题的解都是粒子在搜索 空间中的位置,所有的粒子都有一个被优化的目标函数所决定的适应值,粒子还有一个速度值决定它们飞翔的方向和距离,然后粒子群就追随当前的最优粒子在解空间中搜索。 PSO 算法首先在给定的解空间中随机初始化粒子群,待优化问题的变量数决定了解空间的维数。每个粒子有了初始位置与初始速度。然后通过迭代寻优。在每一次迭代中,每个粒子通过跟踪两个“极值”来更新自己在解空间中的空间位置与飞翔速度。第一个极值就是单个粒子本身在迭代过程中找到的最优解粒子,这个粒子叫做个体极值。另一个极值是种群所有粒子在迭代过程中所找到的最优解粒子,这个粒子是全局极值。上述的方法叫全局粒子群算法。如果不用种群所有粒子而只用其中一部分作为该粒子的邻居粒子,那么在所有邻居粒子中的极值就是局部极值,该方法称为局部PSO 算法。 速度、位置的更新方程表示为: 每个粒子自身搜索到的历史最优值p i,p i=(p i1 ,p i2 ,....,p iQ ), i=1,2,3,....,n 。所有粒子搜索到的最优值p g, p g=(p g1 ,p g2,....,p gQ ),注意这里的p g只有一个。 是保持原来速度的系数,所以叫做惯性权重。 是粒子跟踪自己历史最优值的权重系数,它表示粒子自身的认识,所以叫“认知”。通常设置为 2 。 是粒子跟踪群体最优值的权重系数,它表示粒子对整个群体知识的认识,所以叫做“社会知识”,经常叫做“社会”。通常设置为2。 是[0,1] 区间内均匀分布的随机数。 是对位置更新的时候,在速度前面加的一个系数,这个系数我们叫做约束因子。通常设 置为 1 。

粒子群优化算法介绍及matlab程序

粒子群优化算法(1)—粒子群优化算法简介 PSO算法就是模拟一群鸟寻找食物的过程,每个鸟就是PSO中的粒子,也就是我们需要求解问题的可能解,这些鸟在寻找食物的过程中,不停改变自己在空中飞行的位置与速度。大家也可以观察一下,鸟群在寻找食物的过程中,开始鸟群比较分散,逐渐这些鸟就会聚成一群,这个群忽高忽低、忽左忽右,直到最后找到食物。这个过程我们转化为一个数学问题。寻找函数y=1-cos(3*x)*exp(-x)的在[0,4]最大值。该函数的图形如下: 当x=0.9350-0.9450,达到最大值y=1.3706。为了得到该函数的最大值,我们在[0, 4]之间随机的洒一些点,为了演示,我们放置两个点,并且计算这两个点的函数值,同时给这两个点设置在[0, 4]之间的一个速度。下面这些点就会按照一定的公式更改自己的位置,到达新位置后,再计算这两个点的值,然后再按照一定的公式更新自己的位置。直到最后在y=1.3706这个点停止自己的更新。这个过程与粒子群算法作为对照如下: 这两个点就是粒子群算法中的粒子。 该函数的最大值就是鸟群中的食物。 计算两个点函数值就是粒子群算法中的适应值,计算用的函数就是粒子群算法中的适应度函数。 更新自己位置的公式就是粒子群算法中的位置速度更新公式。 下面演示一下这个算法运行一次的大概过程: 第一次初始化 第一次更新位置

第二次更新位置 第21次更新 最后的结果(30次迭代) 最后所有的点都集中在最大值的地方。

粒子群优化算法(2)—标准粒子群优化算法 在上一节的叙述中,唯一没有给大家介绍的就是函数的这些随机的点(粒子)是如何运动的,只是说按照一定的公式更新。这个公式就是粒子群算法中的位置速度更新公式。下面就介绍这个公式是什么。在上一节中我们求取函数y=1-cos(3*x)*exp(-x)的在[0, 4]最大值。并在[0,4]之间放置了两个随机的点,这些点的坐标假设为x1=1.5,x2=2.5;这里的点是一个标量,但是我们经常遇到的问题可能是更一般的情况—x 为一个矢量的情况,比如二维z=2*x1+3*x22的情况。这个时候我们的每个粒子均为二维,记粒子P1=(x11,x12),P2=(x21,x22),P3=(x31,x32),......Pn=(xn1,xn2)。这里n 为粒子群群体的规模,也就是这个群中粒子的个数,每个粒子的维数为2。更一般的是粒子的维数为q ,这样在这个种群中有n 个粒子,每个粒子为q 维。 由n 个粒子组成的群体对Q 维(就是每个粒子的维数)空间进行搜索。每个粒子表示为:x i =(x i1,x i2,x i3,...,x iQ ),每个粒子对应的速度可以表示为v i =(v i1,v i2,v i3,....,v iQ ),每个粒子在搜索时要考虑两个因素: 1. 自己搜索到的历史最优值 p i ,p i =(p i1,p i2,....,p iQ ),i=1,2,3,....,n ; 2. 全部粒子搜索到的最优值p g ,p g =(p g1,p g2,....,p gQ ),注意这里的p g 只有一个。 下面给出粒子群算法的位置速度更新公式: 112()()()()k k k k i i i i v v c rand pbest x c rand gbest x ω+=+??-+??-, 11k k k i i i x x av ++=+. 这里有几个重要的参数需要大家记忆,因为在以后的讲解中将会经常用到,它们是: ω是保持原来速度的系数,所以叫做惯性权重。1c 是粒子跟踪自己历史最优值的权重系数,它表示粒子自身的认识,所以叫“认知”。通常设置为2。2c 是粒子跟踪群体最优值的权重系数,它表示粒子对整个群体知识的认识,所以叫做“社会知识”,经常叫做“社会”。通常设置为2。()rand 是[0,1]区间内均匀分布的随机数。a 是对位置更新的时候,在速度前面加的一个系数,这个系数我们叫做约束因子。通常设置为1。这样一个标准的粒子群算法就介绍结束了。下图是对整个基本的粒子群的过程给一个简单的图形表示。 判断终止条件可是设置适应值到达一定的数值或者循环一定的次数。 注意:这里的粒子是同时跟踪自己的历史最优值与全局(群体)最优值来改变自己的位置预速度的,所以又叫做全局版本的标准粒子群优化算法。

c语言实现的粒子群算法代码及解释

//粒子群PSO算法 #include #include #include #include #define PI 3.141592653589 /* */ #define P_num 200 //粒子数目 #define dim 50 #define low -100 //搜索域范围 #define high 100 #define iter_num 1000 #define V_max 20 //速度范围 #define c1 2 #define c2 2 #define w 0.5 #define alp 1 double particle[P_num][dim]; //个体集合 double particle_loc_best[P_num][dim]; //每个个体局部最优向量 double particle_loc_fit[P_num]; //个体的局部最优适应度,有局部最优向量计算而来double particle_glo_best[dim]; //全局最优向量 double gfit; //全局最优适应度,有全局最优向量计算而来double particle_v[P_num][dim]; //记录每个个体的当前代速度向量 double particle_fit[P_num]; //记录每个粒子的当前代适应度 double Sphere(double a[]) { int i; double sum=0.0; for(i=0; i

6种粒子群算法程序

程序1 当22111==c c ,5.12212==c c ,2.1=w 。 a)%主函数源程序(main.m ) %------基本粒子群算法 (particle swarm optimization ) %------名称: 基本粒子群算法 %------初始格式化 clear all ; %清除所有变量 clc; %清屏 format long ; %将数据显示为长整形科学计数 %------给定初始条条件------------------ N=40; %3初始化群体个数 D=10; %初始化群体维数 T=100; %初始化群体最迭代次数 c11=2; %学习因子1 c21=2; %学习因子2 c12=1.5; c22=1.5; w=1.2; %惯性权重 eps=10^(-6); %设置精度(在已知最小值的时候用) %------初始化种群个体(限定位置和速度)------------ x=zeros(N,D); v=zeros(N,D); for i=1:N for j=1:D x(i,j)=randn; %随机初始化位置 v(i,j)=randn; %随机初始化速度 end end %------显示群位置---------------------- figure(1) for j=1:D if (rem(D,2)>0)

subplot((D+1)/2,2,j) else subplot(D/2,2,j) end plot(x(:,j),'b*');grid on xlabel('粒子') ylabel('初始位置') tInfo=strcat('第',char(j+48),'维'); if(j>9) tInfo=strcat('第',char(floor(j/10)+48),char(rem(j,10)+48),'维'); end title(tInfo) end %------显示种群速度 figure(2) for j=1:D if(rem(D,2)>0) subplot((D+1)/2,2,j) else subplot(D/2,2,j) end plot(x(:,j),'b*');grid on xlabel('粒子') ylabel('初始速度') tInfo=strcat('第,char(j+48),'维'); if(j>9) tInfo=strcat('第',char(floor(j/10)+48), char(rem(j,10)+48),'维); end title(tInfo) end figure(3) %第一个图 subplot(1,2,1)

粒子群算法原理及在函数优化中的应用(附程序)

粒子群算法原理及其在函数优化中的应用 1粒子群优化(PSO)算法基本原理 1.1标准粒子群算法 假设在一个D 维的目标搜索空间中,有 m 个代表问题潜在解的粒子组成一 个种群x [X i ,X 2,...,X m ],第i 个粒子的信息可用D 维向量表示为 X i [X ii , X i2,..., X iD ]T ,其速度为V i [V ii ,V i2,...,V iD ]T 。算法首先初始化m 个随机粒 子,然后通过迭代找到最优解。每一次迭代中,粒子通过跟踪2个极值进行信息 交流,一个是第i 个粒子本身找到的最优解,称之为个体极值,即 P i [P il , P i2,...,厢]丁 ;另一个是所有粒子目前找到的最优解,称之为群体极值, 即P g [P gi ,P g2,..., P gD 「。粒子在更新上述2个极值后,根据式(1)和式(2)更新自 己的速度和位置。 t 1 t t t t t\ V i WV i C 1「1(P i X i ) C 2「2(P g X i ) 式中,t 代表当前迭代次数,「1,「2是在[0,1]之间服从均匀分布的随机数,C 1,C 2 称为学习因子,分别调节粒子向个体极值和群体极值方向飞行的步长, w 为惯性 权重,一般在0.1~0.9之间取值。在标准的PSO 算法中,惯性权重w 被设为常数, 通常取w 0.5。在实际应用中,x 需保证在一定的范围内,即x 的每一维的变化 范围均为[X min ,X max ],这在函数优化问题中相当丁自变量的定义域 1.2算法实现步骤 步骤1:表示出PSO 算法中的适应度函数fitness(x);(编程时最好以函数的 形式保存,便丁多次调用。) 步骤2:初始化PSO 算法中各个参数(如粒子个数,惯性权重,学习因子, 最大迭代次数等),在自变量x 定义域内随机初始化x ,代入fitness(x)求得适应 度值,通过比较确定起始个体极值P i 和全局极值P g 。 步骤3:通过循环迭代更新x 、p i 和p g : ① 确定惯性权重w 的取值(当w 不是常数时)。 ② 根据式(1)更新粒子的速度V :1,若速度中的某一维超过了 V max ,则取为 V max - ③ 根据式(2)更新自变量x ,若x 的取值超过其定义域,则在其定义域内重新 初t 1 X i t t 1 X i V i

粒子群算法通用matlab程序

% 优化函数以m文件的形式放在fitness.m里面,对不同的优化函数只要修改fitness.m 就可 %------基本粒子群优化算法(Particle Swarm Optimization, PSO)----------- %------初始格式化-------------------------------------------------- clear all; clc; format long; %------给定初始化条件---------------------------------------------- c1=1.4962; %学习因子1 c2=1.4962; %学习因子2 w=0.7298; %惯性权重 MaxDT=1000; %最大迭代次数 D=4; %搜索空间维数(未知数个数) N=10; %初始化群体个体数目 eps=10^(-6); %设置精度(在已知最小值时候用) %------初始化种群的个体(可以在这里限定位置和速度的范围)------------ x=0:0.1:1,y=[-.447,1.978,3.11,5.25,5.02,4.66,4.01,4.58,3.45,5.35,9.22] %------先计算各个粒子的适应度,并初始化Pi和Pg---------------------- for i=1:N p(i)=fitness(x(i,:),D); y(i,:)=x(i,:); end pg=x(1,:); %Pg为全局最优 for i=2:N if fitness(x(i,:),D)

粒子群算法详解-附matlab代码说明

粒子群算法(1)----粒子群算法简介 一、粒子群算法的历史 粒子群算法源于复杂适应系统(Complex Adaptive System,CAS)。CAS理论于1994年正式提出,CAS中的成员称为主体。比如研究鸟群系统,每个鸟在这个系统中就称为主体。主体有适应性,它能够与环境及其他的主体进行交流,并且根据交流的过程“学习”或“积累经验”改变自身结构与行为。整个系统的演变或进化包括:新层次的产生(小鸟的出生);分化和多样性的出现(鸟群中的鸟分成许多小的群);新的主题的出现(鸟寻找食物过程中,不断发现新的食物)。 所以CAS系统中的主体具有4个基本特点(这些特点是粒子群算法发展变化的依据): 首先,主体是主动的、活动的。 主体与环境及其他主体是相互影响、相互作用的,这种影响是系统发展变化的主要动力。 环境的影响是宏观的,主体之间的影响是微观的,宏观与微观要有机结合。 最后,整个系统可能还要受一些随机因素的影响。 粒子群算法就是对一个CAS系统---鸟群社会系统的研究得出的。 粒子群算法(Particle Swarm Optimization, PSO)最早是由Eberhart和Kennedy于1995年提出,它的基本概念源于对鸟群觅食行为的研究。设想这样一个场景:一群鸟在随机搜寻食物,在这个区域里只有一块食物,所有的鸟都不知道食物在哪里,但是它们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢?最简单有效的就是搜寻目前离食物最近的鸟的周围区域。 PSO算法就从这种生物种群行为特性中得到启发并用于求解优化问题。在PSO中,每个优化问题的潜在解都可以想象成d维搜索空间上的一个点,我们称之为“粒子”(Particle),所有的粒子都有一个被目标函数决定的适应值(Fitness Value ),每个粒子还有一个速度决定他们飞翔的方向和距离,然后粒子们就追随当前的最优粒子在解空间中搜索。Reynolds对鸟群飞行的研究发现。鸟仅仅是追踪它有限数量的邻居但最终的整体结果是整个鸟群好像在一个中心的控制之下.即复杂的全局行为是由简单规则的相互作用引起的。 二、粒子群算法的具体表述 上面罗嗦了半天,那些都是科研工作者写论文的语气,不过,PSO的历史就像上面说的那样。下面通俗的解释PSO算法。 PSO算法就是模拟一群鸟寻找食物的过程,每个鸟就是PSO中的粒子,也就是我们需要求解问题的可能解,这些鸟在寻找食物的过程中,不停改变自己在空中飞行的位置与速度。大家也可以观察一下,鸟群在寻找食物的过程中,开始鸟群比较分散,逐渐这些鸟就会聚成一群,这个群忽高忽低、忽左忽右,直到最后找到食物。这个过程我们转化为一个数学问题。寻找函数y=1-cos(3*x)*exp(-x)的在[0,4]最大值。该函数的图形如下:

粒子群优化算法Matlab源程序

clear all; clc; format long; %------给定初始化条件---------------------------------------------- c1=1.4962; %学习因子1 c2=1.4962; %学习因子2 w=0.7298; %惯性权重 MaxDT=1000; %最大迭代次数 D=10; %搜索空间维数(未知数个数) N=40; %初始化群体个体数目 eps=10^(-6); %设置精度(在已知最小值时候用) %------初始化种群的个体(可以在这里限定位置和速度的范围)------------ for i=1:N for j=1:D x(i,j)=randn; %随机初始化位置 v(i,j)=randn; %随机初始化速度 end end %------先计算各个粒子的适应度,并初始化Pi和Pg---------------------- for i=1:N p(i)=fitness(x(i,:),D); y(i,:)=x(i,:);

end pg=x(1,:); %Pg为全局最优 for i=2:N if fitness(x(i,:),D)

粒子群算法源程序

二维粒子群matlab源程序 %function [pso F] = pso_2D() % FUNCTION PSO --------USE Particle Swarm Optimization Algorithm % global present; % close all; clc; clear all; pop_size = 10; % pop_size 种群大小 ///粒子数量 part_size = 2; % part_size 粒子大小 ///粒子的维数gbest = zeros(1,part_size+1); % gbest 当前搜索到的最小的值 max_gen = 200; % max_gen 最大迭代次数 %best=zeros(part_size,pop_size*part_size);%xuan region=zeros(part_size,2); % 设定搜索空间范围->解空间 region=10*[-3,3;-3,3;-3,3;-3,3;-3,3;-3,3;-3,3;-3,3;-3,3;-3,3]; % 每一维设定不同范围(称之为解空间,不是可行域空间) rand('state',sum(100*clock)); % 重置随机数发生器状态 %当前种群的信息矩阵,逐代进化的群体 % 当前位置,随机初始化 % 一个10*3的随机的矩阵(初始化所有粒子的所有维数的位置值),其中最后一列为 arr_present = ini_pos(pop_size,part_size); % 初始化当前速度 % 一个10*2的随机的矩阵(初始化所有粒子的所有维数的速度值) v=ini_v(pop_size,part_size); %不是当前种群,可看作是一个外部的记忆体,存储每个粒子历史最优值(2维数值):根据适应度更新!

粒子群算法matlab代码___吐血推荐

粒子群算法(1)----粒子群算法简介 二、粒子群算法的具体表述 上面罗嗦了半天,那些都是科研工作者写论文的语气,不过,PSO的历史就像上面说的那样。下面通俗的解释PSO算法。 PSO算法就是模拟一群鸟寻找食物的过程,每个鸟就是PSO中的粒子,也就是我们需要求解问题的可能解,这些鸟在寻找食物的过程中,不停改变自己在空中飞行的位置与速度。大家也可以观察一下,鸟群在寻找食物的过程中,开始鸟群比较分散,逐渐这些鸟就会聚成一群,这个群忽高忽低、忽左忽右,直到最后找到食物。这个过程我们转化为一个数学问题。寻找函数y=1-cos(3*x)*exp(-x)的在[0,4]最大值。该函数的图形如下: 当x=0.9350-0.9450,达到最大值y=1.3706。为了得到该函数的最大值,我们在[0,4]之间随机的洒一些点,为了演示,我们放置两个点,并且计算这两个点的函数值,同时给这两个点设置在[0,4]之间的一个速度。下面这些点就会按照一定的公式更改自己的位置,到达新位置后,再计算这两个点的值,然后再按照一定的公式更新自己的位置。直到最后在y=1.3706这个点停止自己的更新。这个过程与粒子群算法作为对照如下: 这两个点就是粒子群算法中的粒子。 该函数的最大值就是鸟群中的食物 计算两个点函数值就是粒子群算法中的适应值,计算用的函数就是粒子群算法中的适应度函数。 更新自己位置的一定公式就是粒子群算法中的位置速度更新公式。 下面演示一下这个算法运行一次的大概过程: 第一次初始化

第一次更新位置 第二次更新位置

第21次更新 最后的结果(30次迭代) 最后所有的点都集中在最大值的地方。

基本粒子群算法的matlab源程序

基本粒子群算法的matlab源程序 Posted on 2008-05-07 09:09 realghost 阅读(840) 评论(2)收藏 主函数源程序(main.m) %------基本粒子群优化算法(Particle Swarm Optimization)----------- %------名称:基本粒子群优化算法(PSO) %------作用:求解优化问题 %------说明:全局性,并行性,高效的群体智能算法 %------作者:孙明杰(dreamsun2001@https://www.sodocs.net/doc/d41936831.html,) %------单位:中国矿业大学理学院计算数学硕2005 %------时间:2006年8月17日 %------------------------------------------------------------------ %------初始格式化-------------------------------------------------- clear all; clc; format long; %------给定初始化条件---------------------------------------------- c1=1.4962; %学习因子1 c2=1.4962; %学习因子2 w=0.7298; %惯性权重 MaxDT=1000; %最大迭代次数 D=10; %搜索空间维数(未知数个数) N=40; %初始化群体个体数目 eps=10^(-6); %设置精度(在已知最小值时候用) %------初始化种群的个体(可以在这里限定位置和速度的范围)------------ for i=1:N for j=1:D x(i,j)=randn; %随机初始化位置 v(i,j)=randn; %随机初始化速度 end end %------先计算各个粒子的适应度,并初始化Pi和Pg---------------------- for i=1:N p(i)=fitness(x(i,:),D); y(i,:)=x(i,:); end pg=x(1,:); %Pg为全局最优 for i=2:N if fitness(x(i,:),D) pg=x(i,:); end end %------进入主要循环,按照公式依次迭代,直到满足精度要求------------ for t=1:MaxDT

粒子群算法原理及在函数优化中的应用(附程序)

粒子群算法原理及其在函数优化中的应用 1 粒子群优化(PSO )算法基本原理 1.1 标准粒子群算法 假设在一个D 维的目标搜索空间中,有m 个代表问题潜在解的粒子组成一个种群12[,,...,]m =x x x x ,第i 个粒子的信息可用D 维向量表示为 12[,,...,]T i i i iD x x x =x ,其速度为12[,,...,]T i i i iD v v v =v 。算法首先初始化m 个随机粒 子,然后通过迭代找到最优解。每一次迭代中,粒子通过跟踪2个极值进行信息交流,一个是第i 个粒子本身找到的最优解,称之为个体极值,即 12[,,...,]T i i i iD p p p =p ;另一个是所有粒子目前找到的最优解,称之为群体极值, 即12[,,...,]T g g g gD p p p =p 。粒子在更新上述2个极值后,根据式(1)和式(2)更新自己的速度和位置。 11122()()t t t t t t i i i i g i w c r c r +=+-+-v v p x p x (1) 11t t t i i i ++=+x x v (2) 式中,t 代表当前迭代次数,12,r r 是在[0,1]之间服从均匀分布的随机数,12 ,c c 称为学习因子,分别调节粒子向个体极值和群体极值方向飞行的步长,w 为惯性权重,一般在0.1~0.9之间取值。在标准的PSO 算法中,惯性权重w 被设为常数,通常取0.5w =。在实际应用中,x 需保证在一定的围,即x 的每一维的变化围均为min max [,]X X ,这在函数优化问题中相当于自变量的定义域。 1.2 算法实现步骤 步骤1:表示出PSO 算法中的适应度函数()fitness x ;(编程时最好以函数的形式保存,便于多次调用。) 步骤2:初始化PSO 算法中各个参数(如粒子个数,惯性权重,学习因子,最大迭代次数等),在自变量x 定义域随机初始化x ,代入()fitness x 求得适应度值,通过比较确定起始个体极值i p 和全局极值g p 。 步骤3:通过循环迭代更新x 、i p 和g p : ①确定惯性权重w 的取值(当w 不是常数时)。 ②根据式(1)更新粒子的速度1k i +v ,若速度中的某一维超过了max V ,则取为 max V 。 ③根据式(2)更新自变量x ,若x 的取值超过其定义域,则在其定义域重新初

二维粒子群算法的matlab源程序

%function [pso F] = pso_2D() % FUNCTION PSO --------USE Particle Swarm Optimization Algorithm % global present; % close all; clc; clear all; pop_size = 10; % pop_size 种群大小///粒子数量 part_size = 2; % part_size 粒子大小///粒子的维数 gbest = zeros(1,part_size+1); % gbest 当前搜索到的最小的值 max_gen = 200; % max_gen 最大迭代次数 %best=zeros(part_size,pop_size*part_size);%xuan region=zeros(part_size,2); % 设定搜索空间范围->解空间 region=10*[-3,3;-3,3;-3,3;-3,3;-3,3;-3,3;-3,3;-3,3;-3,3;-3,3]; % 每一维设定不同范围(称之为解空间,不是可行域空间) rand('state',sum(100*clock)); % 重置随机数发生器状态 %当前种群的信息矩阵,逐代进化的群体% 当前位置,随机初始化 % 一个10*3的随机的矩阵(初始化所有粒子的所有维数的位置值),其中最后一列为arr_present = ini_pos(pop_size,part_size); % 初始化当前速度 % 一个10*2的随机的矩阵(初始化所有粒子的所有维数的速度值) v=ini_v(pop_size,part_size); %不是当前种群,可看作是一个外部的记忆体,存储每个粒子历史最优值(2维数值):根据适应度更新!

标准粒子群算法PSO及其Maab程序和常见改进算法

一、粒子群算法概述 粒子群优化算法(PSO)是一种进化计算技术(evolutionarycomputation),1995年由Eberhart博士和kennedy博士提出,源于对鸟群捕食的行为研究。该算法最初是受到飞鸟集群活动的规律性启发,进而利用群体智能建立的一个简化模型。粒子群算法在对动物集群活动行为观察基础上,利用群体中的个体对信息的共享使整个群体的运动在问题求解空间中产生从无序到有序的演化过程,从而获得最优解。? PSO中,每个优化问题的解都是搜索空间中的一只鸟。我们称之为“粒子”。所有的粒子都有一个由被优化的函数决定的适应值(fitnessvalue),每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。? PSO初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个”极值”来更新自己。第一个就是粒子本身所找到的最优解,这个解叫做个体极值pBest。另一个极值是整个种群目前找到的最优解,这个极值是全局极值gBest。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。 二、算法原理 粒子群算法采用常数学习因子,及惯性权重,粒子根据如下的公式更新自己的速度和位置。? V ki=ωk V i?1i+c1r1(Q bi?Q k?1i)+c2r2(Q bg?Q k?1i)Q ki=Q k?1i+V ki 三、算法步骤 1、随机初始化种群中各微粒的位置和速度;? 2、评价个粒子的适应度,将各粒子的位置和适应度储存在各微粒的pbest(Q bi)中,将所有pbest中适应度最优的个体的位置和适应度存储在gbest(Q bg)中。? 3、更新粒子的速度和位移。? V ki=ωk V i?1i+c1r1(Q bi?Q k?1i)+c2r2(Q bg?Q k?1i)Q ki=Q k?1i+V ki

6种粒子群算法程序

6种粒子群算法程序

程序1 当22111==c c ,5.12212==c c ,2.1=w 。 a)%主函数源程序(main.m ) %------基本粒子群算法 (particle swarm optimization ) %------名称: 基本粒子群算法 %------初始格式化 clear all ; %清除所有变量 clc; %清屏 format long ; %将数据显示为长整形科学计数 %------给定初始条条件------------------ N=40; %3初始化群体个数 D=10; %初始化群体维数 T=100; %初始化群体最迭代次数 c11=2; %学习因子1 c21=2; %学习因子2 c12=1.5; c22=1.5; w=1.2; %惯性权重 eps=10^(-6); %设置精度(在已知最小值的时候用) %------初始化种群个体(限定位置和速度)------------ x=zeros(N,D); v=zeros(N,D); for i=1:N for j=1:D x(i,j)=randn; %随机初始化位置 v(i,j)=randn; %随机初始化速度 end end %------显示群位置---------------------- figure(1) for j=1:D if (rem(D,2)>0)

%------初始化种群个体(在此限定速度和位置)------------ x1=x; v1=v; %------初始化个体最优位置和最优值--- p1=x1; pbest1=ones(N,1); for i=1:N pbest1(i)=fitness(x1(i,:),D); end %------初始化全局最优位置和最优值--------------- g1=1000*ones(1,D); gbest1=1000; for i=1:N if(pbest1(i)

粒子群算法程序(各段路的速度不同)

1.用粒子群算法求解路径最短时的路径 tic K=3;%车辆数 D=200;%粒子群中粒子的个数 Q=1000;%每辆车的容量 w=0.729;%w为惯性因子 c1=1.49445;%正常数,称为加速因子 c2=1.49445;%正常数,称为加速因子 Loop_max=50;%最大迭代次数 %初始化城市坐标 City=[18,54;22,60;58,69;71,71;83,46;91,38;24,42;18,40]; n=size(City,1);%城市个数,包含中心仓库 N=n-1;%发货点任务数 for i=1:n for j=1:n Distance(i,j)= sqrt((City(i,1)-City(j,1))^2+(City(i,2)-City(j,2))^2);%各城市节点之间的距离矩阵end end v=[20,20,20,21,21,19,20,20;20,20,19,20,19,21,20,21;20,19,20,20,20,20,21,20;21,20,20,19,20,21, 21,21;21,19,20,20,20,21,21,20;19,21,20,21,21,20,20,21;20,20,21,21,21,20,19,20;20,21,20,21,20, 21,20,20]; for i=1:8 for j=1:8 if i==j v(i,j)=0; end end end g=[0, 890,140,280,330,210,410,570];%各发货点的货运量 %初始化粒子群 for i=1:D for j=1:N Xv(i,j)=randi(K,1);%初始化粒子群中粒子的位置 Vv(i,j)=randi(2*K-1,1)-K;%初始化粒子群中粒子的位置变化率 Vr(i,j)=randi(2*N-1,1)-N;%初始化粒子群中离子的位置变化率 Xvl(i,j)=Xv(i,j);%初始化粒子群中每个粒子的最优位置 end end for i=1:D a=randperm(N); for j=1:N Xr(i,j)=a(j);%初始化粒子群中粒子的位置 Xrl(i,j)=Xr(i,j);%初始化粒子群中每个粒子的最优位置

相关主题