混沌粒子群优化算法C源程序

合集下载

切比雪夫混沌映射的粒子群算法python实现

切比雪夫混沌映射的粒子群算法python实现

切比雪夫混沌映射的粒子群算法python实现切比雪夫混沌映射是一种用于产生混沌序列的映射方法,它具有良好的遍历性和随机性。

粒子群算法(Particle Swarm Optimization, PSO)是一种基于群体智能的优化算法,通过模拟鸟群觅食行为来寻找问题的最优解。

将切比雪夫混沌映射与粒子群算法结合,可以提高粒子群算法的搜索能力和全局寻优能力。

下面是一个简单的Python实现示例,展示了如何将切比雪夫混沌映射应用于粒子群算法中:pythonimport numpy as np# 切比雪夫混沌映射函数def chebyshev_map(x, a=4):return np.cos(a * np.arccos(x))# 粒子群算法def particle_swarm_optimization(obj_func, dim, pop_size, max_iter, w=0.5, c1=1.5, c2=1.5):# 初始化粒子群pop = np.random.rand(pop_size, dim)vel = np.random.rand(pop_size, dim)pbest = pop.copy()gbest = pop[0]gbest_fit = obj_func(gbest)# 迭代优化for t in range(max_iter):# 更新速度和位置for i in range(pop_size):r1 = np.random.rand()r2 = np.random.rand()pbest_fit = obj_func(pbest[i])vel[i] = w * vel[i] + c1 * r1 * (pbest[i] - pop[i]) + c2 * r2 * (gbest - pop[i])pop[i] += vel[i]# 边界处理pop[i] = np.clip(pop[i], 0, 1)# 更新个体最优和全局最优if obj_func(pop[i]) < pbest_fit:pbest[i] = pop[i]if obj_func(pop[i]) < gbest_fit:gbest = pop[i]gbest_fit = obj_func(gbest)# 使用切比雪夫混沌映射初始化新粒子for i in range(pop_size // 2):x = chebyshev_map(np.random.rand())pop[i] = x * np.ones(dim)return gbest, gbest_fit# 示例目标函数(求最小值)def objective_function(x):return np.sum(x**2)# 运行粒子群算法best_position, best_fit = particle_swarm_optimization(objective_function, dim=10, pop_size=50, max_iter=100)print("最优解:", best_position)print("最优值:", best_fit)这个示例中,particle_swarm_optimization 函数实现了粒子群算法的主要逻辑。

基于混沌搜索的粒子群优化算法

基于混沌搜索的粒子群优化算法

’(’) "$+"&%, "$+/%-" "$-.,.+ %,
*(’) "$-.//+ "$-.... "$-.,/. -"
(! ) 函数 ;! (J;?4D@K@A EFAG4@HA ) :
!
( + <) 1 (+ )
(!#% ) 9%"8, L% L"#$%! !7% *%"GH?
31% 3 3 3 I
群觅食行为的研究, 在求解连续非线性优化问题时有较强的鲁
!+ 。和其它的随机算法比较 Nhomakorabea 棒性 *%, ’() 算法能够在较短的时间
内求得高质量的解而且具有稳定的收敛特性, 已经得到了广泛 进化后期收敛速度慢, 对于 的应用 。 ’() 算法的主要缺点有:
*,+
每个粒子根据公式 (% ) 来更新自己的速度和位 粒子 # 的速度, 置:
表!
算法 变量数 平均 最大 最小
! 和混沌搜索步数 $/ :;<;
随 机 生 成 7 个 粒 子 的 %3 和 8 ( …, , 令 /1 ’456 ! : !, 8) 3 3 1% ,
%
引言
粒子群优化 (’() ) 算法是一种现代启发式算法, 源自对鸟
解。
% ("#%, 表示粒子 # 令 ! 表示搜索空间的维数, "#$ "#!,…, "#!) % 当前的位置, (& #%, …, 表示粒子 # 曾经达到的最好位 & #$ & #!, & #!) % 置, 种群中最优粒子的序号用 ’ 表示, (( #%, …, 表示 ( #$ ( #!, ( #!)

粒子群优化算法 程序

粒子群优化算法 程序

粒子群优化算法程序粒子群优化算法(Particle Swarm Optimization, PSO)是一种基于群体智能的优化算法,它模拟了鸟群或鱼群等生物群体的行为,用于解决各种优化问题。

下面我将从程序实现的角度来介绍粒子群优化算法。

首先,粒子群优化算法的程序实现需要考虑以下几个关键步骤:1. 初始化粒子群,定义粒子的数量、搜索空间的范围、每个粒子的初始位置和速度等参数。

2. 计算适应度,根据问题的特定适应度函数,计算每个粒子的适应度值,以确定其在搜索空间中的位置。

3. 更新粒子的速度和位置,根据粒子的当前位置和速度,以及粒子群的最优位置,更新每个粒子的速度和位置。

4. 更新全局最优位置,根据所有粒子的适应度值,更新全局最优位置。

5. 终止条件,设置终止条件,如最大迭代次数或达到特定的适应度阈值。

基于以上步骤,可以编写粒子群优化算法的程序。

下面是一个简单的伪代码示例:python.# 初始化粒子群。

def initialize_particles(num_particles, search_space):particles = []for _ in range(num_particles):particle = {。

'position':generate_random_position(search_space),。

'velocity':generate_random_velocity(search_space),。

'best_position': None,。

'fitness': None.}。

particles.append(particle)。

return particles.# 计算适应度。

def calculate_fitness(particle):# 根据特定问题的适应度函数计算适应度值。

particle['fitness'] =evaluate_fitness(particle['position'])。

一种改进的混沌粒子群优化算法

一种改进的混沌粒子群优化算法

P S O o r a d j u s t i n g r e l a t i v e p a r a m e t e r s .T o s o l v e t h i s p ob r l e m,t hi s p a p e r p op r o s e s a n i m p ov r e d c h a o s
2 0 1 3 年第 1 0 期
文章编号 : 1 0 0 9— 2 5 5 2 ( 2 0 1 3 ) 1 0— 0 0 0 9—0 4 中图分 类号 : T P 3 0 1 . 6 文献标识码 : A

种 改进 的 混沌 粒 子 群 优化 算 法
汤可宗 ,丰建 文
( 景德镇 陶瓷学院信息工程学院 , 江西 景德镇 3 3 3 0 0 0 )
A b s t r a c t :P a r t i c l e s w a r m o p i t mi z a i t o n( P S O) i s a p o p u l a t i o n — b a s e d s t o c h a s t i c g l o b a l o p i t m i z a t i o n

要 :粒 子群优 化 算法 ( P S O) 自提 出以来 ,已经被 广 泛地 应 用于 求解 各 类复 杂 的优 化 问题 , 过去对粒子群算法的研究主要 集中在融入新的优化方法或对其相 关参数进行调整 ,但这样只会 使得 P S O更加 复 杂。针 对这 一 问题 ,文 中提 出一种 改进 的混沌粒 子群优 化 算法 ( I C P S O) , I C P S O 从粒 子群优 化 算 法的 时间 与寻优 实时角度 出发 ( 即在 较短 的 时间 内获 得 较好 的 解 ) ,对 粒子速 度 更新 算子进 行 了简化 ,每 隔一定代 数 后 ,在 最优 解 邻 近 区域 引入 混 沌扰 动 以避 免 种 群 陷入 局 部 最优 解 。数 值 实验 结果表 明 :提 出的算 法相 对 于文 献给 出的 P S O 改进 算 法 ,不仅 能够 获得 较 好

C++实现粒子群优化算法代码

C++实现粒子群优化算法代码

#include<iostream>#include<cmath>#include<ctime>#include<cstdlib>using namespace std;const int pNum = 10;const int generation = 100;const int dim = 2;const double low = -10;const double high = 10;const double vMax = 10;const double w = 0.5;const double c1 = 2;const double c2 = 2;double p[pNum][dim]; //粒子群体double pv[pNum][dim]; //速度向量double pBest[pNum][dim]; //每个粒子的局部最优向量double pFitness[pNum]; //每个粒子的最优最适值double gFitness; //全局最优适应值double gBest[dim]; //全局最优向量double fitness(double p[]){return p[0] * p[0] + p[1] * p[1]; //根据自己的需要更改函数的适应值}void initialize(){for (int i = 0; i < pNum; i++){for (int j = 0; j < dim; j++){p[i][j] = low + (high - low) * 1.0 * rand() / RAND_MAX;pBest[i][j] = p[1][j];pv[i][j] = -vMax + 2.0 * vMax * rand() / RAND_MAX;}}for (int i = 0; i < pNum; i++)pFitness[i] = fitness(p[i]);gFitness = pFitness[0];for (int i = 0; i < dim; i++){gBest[i] = pBest[0][i];}for (int i = 1; i < pNum; i++){if (gFitness > pFitness[i]){gFitness = pFitness[i];for (int j = 0; j < dim; j++){gBest[j] = pBest[i][j];}}}}void update(){for (int i = 0; i < pNum; i++){for (int j = 0; j < dim; j++){pv[i][j] = w * pv[i][j] + c1 * rand() / RAND_MAX * (pBest[i][j] - p[i][j]) + c2 * rand() / RAND_MAX * (gBest[j] - p[i][j]);if (pv[i][j] < -vMax)pv[i][j] = -vMax;if (pv[i][j] > vMax)pv[i][j] = vMax;p[i][j] = p[i][j] + pv[i][j];if (p[i][j] > high)p[i][j] = high;if (p[i][j] < low)p[i][j] = low;}}}void get_pBest(){for (int i = 0; i < pNum; i++){if (pFitness[i] > fitness(p[i])){pFitness[i] = fitness(p[i]);for (int j = 0; j < dim; j++){pBest[i][j] = p[i][j];}}}}void get_gBest(){for (int i = 0; i < pNum; i++){if (pFitness[i] < gFitness){for (int j = 0; j < dim; j++){gBest[j] = pBest[i][j];}gFitness = pFitness[i];}}}int main(){srand(time(0));initialize();for (int n = 0; n < generation; n++){update();get_pBest();get_gBest();}cout << "gBest is (";for (int i = 0; i < dim - 1; i++)cout << gBest[i] << ",";cout << gBest[dim - 1] << ")" << endl;cout << "the best fitness is " << gFitness << endl;return 0;}。

一种基于混沌优化的混合粒子群算法

一种基于混沌优化的混合粒子群算法

收稿日期:2009-03-12;修回日期:2009-05-29基金项目:辽宁省教育科研计划项目(2004F012)作者简介:邹 毅(1971-),男,辽宁沈阳人,副教授,研究方向为优化算法及智能控制理论。

一种基于混沌优化的混合粒子群算法邹 毅,朱晓萍,王秀平(沈阳工程学院电气工程系,辽宁沈阳110136)摘 要:粒子群算法是一类基于群智能的优化搜索算法。

该算法初期收敛很快,但后期易陷入局部最优点。

为了提高粒子群算法的性能,将粒子群算法全局搜索的快速性和混沌算法的一定范围内的遍历性二者结合,提出一种基于混沌优化的混合粒子群算法。

该算法首先用粒子群算法进行快速搜索,当出现早熟收敛时,对局部较优的部分粒子和全局极值采用混沌优化策略。

对两个典型的测试函数进行仿真表明,该算法能够摆脱局部极值,得到全局最优。

将其用于(N +M )系统费用模型求解,得到最优解,同样验证了该算法搜索效率、精度优于一般的粒子群算法,同时具有较好的收敛稳定性。

关键词:粒子群算法;混沌;优化;混合;(N +M )容错中图分类号:TP306.1 文献标识码:A 文章编号:1673-629X (2009)11-0018-05A H ybrid PSO AlgorithmB ased on Chaos OptimizationZOU Y i ,ZHU Xiao 2ping ,WAN G Xiu 2ping(Department of Electrical Engineering ,Shenyang Institute of Engineering ,Shenyang 110136,China )Abstract :Particle Swarm Optimization (PSO )is a kind of optimizations based on swarm intelligence.The algorithm weaken quickly in ini 2tial stage ,but fall into local extreme value easily in the latter.With PSO algorithm ’s rapid global searching and chaos ’s ergodicity in cer 2tain range ,a hybrid PSO algorithm based on chaos is presented.The algorithm fast search with PSO algorithm first ,then the chaos opti 2mization is adopted for the better part of the particles and global extreme value when the optimization is in premature and convergence.The test of the two functions and solving the optimization of (N +M )fault -tolerant system show that search efficiency ,accuracy of hy 2brid PSO algorithm are better than general PSO algorithm ,while with better convergence stability.K ey w ords :PSO algorithm ;chaos ;optimization ;hybrid ;(N +M )fault -tolerant0 引 言粒子群优化(Particle Swarm Optimization ,PSO )是一类基于群智能的优化搜索算法,是由K ennedy 和E 2berhart 通过对鸟群飞行行为研究,于1995年提出的仿生进化算法[1~3]。

一种速度不完全更新混沌粒子群优化算法

一种速度不完全更新混沌粒子群优化算法

摘要 : 研究优化算法 , 针对粒子群优化算法在搜索过程中容易陷入局部最优 , 而无法搜索 到全局最优值 的早熟 问题 , 将速度 的不完全更新机制引入 到混沌粒子群 中, 出不完全更新混沌粒 子群算法 (U P O 以解决此问题 。将 Lg t 序 列引入到 提 IC S ) o ii sc
粒子群中 , 并将种群分块 。一部分粒子以光学原理中的反射定律更新速度 以开发更广 的可行域 , 另一部分 , 以优 势粒子加 则 细搜索。数值仿真结果表 明,U P O在搜索成功率和对可行域 的开发程度上要优于标准粒子群和混沌粒子群 , 较好地解 IC S 能
P ANG h S u—p n ig
( abnFnni ol e ab el gi g10 0 , hn ) H ri iaca C l g ,H ri H i nj n 5 0 1 C ia l e n o a
AB RACT: o te p e tr r b e ta S a e t p e no t e lc p i n al h e c ig o e ST T h r mau e p o lm h tP O c n b a p d i t h o a o t r l ma a d f i t e s a h n f t s r h
s l e te pr mau epr be o h o v h e tr o lm ft e PSO nd i sa pr cia nd e fci e o tmia in me h d. a ti a tc a fe tv pi z to t o l
KE YW ORDS:UC S I P O;S p ro a t l ;L w fr f ci n u e rp r ce a o l t ;C Байду номын сангаас t e e i i ee o h oi s r s c i

混沌粒子群混合优化算法

混沌粒子群混合优化算法

混沌粒子群混合优化算法王大均,李华平,高兴宝,赵云川四川蜀渝石油建筑安装工程有限责任公司,四川成都(610017)摘 要:粒子群优化算法(PSO )具有收敛速度快但易陷入局部最优点的特点,因此本文将在结合混沌运动的遍历性、伪随机性和对初值的敏感性等特点的基础上,对粒子群优化算法进行了改进,提出了一种基于混沌思想的粒子群优化算法(CPSO ),该算法保持了群体多样性,增强了PSO 算法的全局寻优能力,提高了算法的计算精度,改善了收敛性和鲁棒性,很大程度上避免了算法停滞现象的发生,是一种有效的优化搜索算法。

关键词:混合优化算法;混沌优化算法;粒子群优化算法1. 引言粒子群算法PSO(Particle Swarm Optimization) 是Kennedy J 与Eberhart R 于1995年借鉴鸟群和鱼群捕食过程的社会行为提出的[1]。

该算法具有程序简单、控制参数少、寻优结果与初值无关、且具有一定的并行性等特点,因此从开始研究到现在短短的十年时间里,表现出强大的优化功能,被广泛应用到函数优化、神经网络训练、人工智能、模糊系统控制等领域。

PSO 作为一种更高效的并行搜索算法,非常适于对复杂环境中的优化问题的求解,成为目前进化计算研究的一个热点。

但是标准的粒子群算法表现出强烈的“趋同性”,对于单调函数、严格凸函数或单峰函数,能在初始时很快向最优解靠拢,但在最优解附近收敛较慢,对于多峰函数更易出现早熟现象以及运算量较大等缺点。

混沌学的诞生是20世纪人类科学史上继相对论和量子理论之后的第三次革命,混沌是指在确定性系统中出现的随机状态,为非线性系统的一种演变现象,它不是由随机性外因引起,而由确定性规则导致的对初始条件非常敏感的无固定周期的长期行为[2]。

混沌运动能在一定范围内按其自身不重复地遍历所有状态,初始值条件极其微弱的变化会引起系统行为巨大变化。

因此,本文将在对标准粒子群算法改进的基础上,将混沌思想引入到粒子群算法中,避免了易陷入局部最优值的缺点,大大改善了粒子群算法的优化性能。

混沌粒子群原理+csdn

混沌粒子群原理+csdn

混沌粒子群原理+csdn
混沌粒子群算法(Chaotic Particle Swarm Optimization,CPSO)是一种基于混沌理论和粒子群优化算法的启发式优化算法。

混沌粒子群算法结合了混沌系统的随机性和粒子群算法的协作搜索
机制,能够有效地克服传统粒子群算法的局部收敛问题,提高全局
搜索能力。

在混沌粒子群算法中,混沌系统被引入到粒子群优化的过程中,通过混沌映射生成具有随机性和确定性的序列,用于初始化粒子群
的位置和速度。

这样可以增加粒子群的多样性,有利于跳出局部最
优解,提高全局搜索能力。

同时,混沌系统的非线性特性也有助于
加速收敛过程,提高算法的收敛速度。

CPSO算法的基本原理是模拟鸟群觅食的行为,每个粒子代表一
个潜在的解,粒子根据个体经验和群体协作不断调整自身位置和速度,以寻找最优解。

在混沌粒子群算法中,粒子的位置和速度的更
新公式与传统粒子群算法相似,但是引入了混沌映射生成的随机数,使得粒子在搜索过程中具有更大的多样性和随机性。

CPSO算法在优化问题中具有较好的收敛性和全局搜索能力,尤
其适用于高维、非线性、多峰和多模态的优化问题。

在实际应用中,CPSO算法已经被广泛应用于函数优化、神经网络训练、模式识别、
控制系统等领域,并取得了良好的效果。

关于混沌粒子群算法的更多详细内容,你可以在CSDN等专业技
术平台上查找相关文章和资料,以便深入了解该算法的原理、优缺
点以及应用实例。

希望我的回答能够帮助到你。

基于混沌和差分进化的混合粒子群优化算法

基于混沌和差分进化的混合粒子群优化算法

L gsi p n t e e oui n r r c s ft e p o o e l o t m,i r e i ti e dv ri f h o u a o it ma .I v l t a y p o e s o h r p s d ag r h c h o i n o d rt man an t ie st o e p p l — o h y t
s a pi zt nagr h a rp sd b sdo h o n iee t l v lt n ( D H S w r o t ai l i m w s o oe ae n c a s d d frn a e o i m mi o ot p a f i u o C E P O)t sl e pe o o e t r- v h
vl dit P O a o tm otepe a r p rc s ae na r tr dm n m c ai T er u s hwte o e o S grh rm t e a ie sdo pe ue u g et ehns v n l i fh u tl b ma j m. h sl o e ts h
c mp e n t n o t z t n p o lms i t t e i i a o u ain wa e ea e y t ec a ss q e c a e n o lx f ci pi ai r be .F r l h nt l p lt s g n rtd b h o e u n e b s d o u o mi o s y, i p o h
沌序列引入到种群初始化操作 中。在算法进化过程中, 通过一种粒子早熟判断机制 , 基本 粒子群优化算法 中引入 了差分 在 变异 、 交叉 和选择操作 , 对早熟粒子个体进行差分进化操作 , 从而维持 了种群的多样性并有效避免了算法 陷入局部最优。仿

混沌粒子群算法

混沌粒子群算法

混沌粒子群算法混沌粒子群算法是一种基于混沌理论和粒子群算法的优化算法。

它结合了混沌系统的随机性和粒子群算法的协同搜索能力,能够有效地解决各种优化问题。

混沌粒子群算法的基本思想是通过引入混沌系统的随机性,增加算法的多样性和全局搜索能力。

在算法的初始化阶段,通过混沌映射生成一组随机解,并将其作为粒子的初始位置。

然后,根据粒子的当前位置和速度,利用粒子群算法的思想更新粒子的位置和速度。

在更新的过程中,通过引入混沌映射产生的随机扰动,增加了解的多样性,从而提高了算法的全局搜索能力。

混沌粒子群算法的核心是混沌映射。

混沌映射是一类具有混沌特性的非线性动力系统,具有敏感依赖于初值的特点。

混沌映射产生的随机数序列具有高度的随机性和不可预测性,能够增加算法的多样性。

常用的混沌映射有Logistic映射、Henon映射、Tent映射等。

混沌粒子群算法的具体步骤如下:1. 初始化粒子群的位置和速度,选择合适的参数。

2. 计算每个粒子的适应度值,评估当前解的优劣。

3. 根据适应度值更新粒子的最佳位置和全局最佳位置。

4. 根据粒子的最佳位置和全局最佳位置,更新粒子的速度和位置。

5. 判断终止条件,如果满足则输出全局最佳解,否则返回第3步。

混沌粒子群算法在实际应用中具有广泛的应用价值。

它可以用于解决函数优化问题、组合优化问题、机器学习问题等。

与其他优化算法相比,混沌粒子群算法具有以下优点:1. 全局搜索能力强。

通过引入混沌映射产生的随机扰动,增加了解的多样性,能够更好地避免陷入局部最优解。

2. 收敛速度快。

通过粒子群算法的协同搜索能力,能够快速找到最优解。

3. 参数设置简单。

相对于其他优化算法,混沌粒子群算法的参数设置相对简单,不需要过多的调参工作。

然而,混沌粒子群算法也存在一些不足之处。

例如,算法的收敛性和稳定性还需要进一步的研究和改进。

此外,算法对问题的特征依赖较强,对于不同类型的问题,需要进行适当的算法调整和参数设置。

新的混沌粒子群优化算法

新的混沌粒子群优化算法
(rmation Security Center, Beijing University of Posts and Telecommunications, Beijing 100876, China; 2. National Engineering Laboratory for Disaster Backup and Recovery, Beijing University of Posts and Telecommunications, Beijing 100876, China)
法的启发,并在此基础上改进,结合粒子群算法, 提出了如下混沌粒子群优化系统动力学模型。
vid (t + 1) = w × vid (t) +
c1 × rand ( ) × [ pid (t) − xid (t)] +
c2 × rand ( ) × [ pgd (t) − xid (t)]
(3)
cid (t) = cid (t − 1)(1+rid )
2 PSO 算法基本思想
PSO 算法模拟鸟集群飞行觅食的行为[14]。设搜 索空间为 D 维,总粒子数为 n。第 i 个粒子位置表 示为向量 Xi=(xi1, xi2,…, xiD );第 i 个粒子“飞行” 历史中的过去最优位置为 Pi=( pi1,pi2, …,piD ),整个 种群过去最优位置 Pg 为所有 Pi (i=1, …,n)中的最 优;第 i 个粒子的位置变化率(速度)为向量 Vi=(vi1, vi2,…, viD)。每个粒子的位置按如下公式进行变化:
混沌变量在粒子群运动过程中起到控制粒子 混沌程度的作用。当混沌变量 Cid(t)→1 时,粒子的
·26·
通信学报
第 33 卷

一种改进的混沌粒子群优化混合算法

一种改进的混沌粒子群优化混合算法
p e au ec n e g n e r m t r o v r e c
由 Piel 先提 出的一种基 于种群并 行 随机搜 索 r I cl 首 的新 型进 化算法— —差分 进化算 法 ,对 当前种群进 行 重组 、变异 和选择 操作产 生新一代 种群 ,并 逐步使 种 群进 化 ,实现全局 最优解 的搜索 ,已成功应 用于 函数
收敛速度 陕,但在 进化后期容 易陷入局部 极小点 、收 敛 速度慢 [ ,算法所 能达到 的精度 较差.针对两者 的 引 缺 点 ,笔 者在文献 [】 础上 ,将混沌变 异操作 引入 9的基
中 图 分 类 号 :T 1 P8 文 献 标 志 码 :A 文 章 编 号 : 10 .7 X ( 0 2 1 0 50 0 96 1 2 d a g r t m ft e i pr v d c a tcpa tc e s r p i i a i n h b i l o ih o m h o e h o i r i l wa m o tm z to
粒子群算 法进 行协同进化 ,并且将混沌变异操作引入其 中,加强算法 的局部搜索能力 . 通过对 3个标准 函数进行测
试 ,仿真结果 表明该算 法与差分进化粒子群优化 ( E S 算 法相 比,全局 搜索能力 和抗早熟 收敛性 能大大提高 . D P O) 关键词 :混合算法 ;差 分进 化 ;粒子群优化 ;协同进化 ;混沌变异 ;早熟收敛
OI AN a s a l Xio h n 1 , 1
1 Co l g f h sc l c e c n n i e rn e h o o y Yih n Unv r i , c u 3 0 0 Ch n . l e o y i a i n e a d E g n e g T c n lg , c u i e st Yih n 3 6 0 , i a e P S i y 2 S h o f n o m ai n S in e n i e r g Ce ta o t i e st, a g h 0 8 , i a . c o l I f r t c e c &E g n e n , nr l u h Un v ri Ch n s a41 0 3 Ch n o o i S y

混沌粒子群优化算法

混沌粒子群优化算法

混沌粒子群优化算法¨计算机科学2004V01.31N-o.8高鹰h2谢胜利1(华南理工大学电子与信息学院广州510641)1(广州大学信息机电学院计算机科学与技术系广州510405)2摘要粒子群优化算法是一种新的随机全局优化进化算法。

本文把混沌手优思想引入到粒子群优化算法中,这种方法利用混沌运动的随机性、遍历性和规律性等特性首先对当前粒子群体中的最优粒子进行混池寻优,然后把混沌寻优的结果随机替换粒子群体中的一个粒子。

通过这种处理使得粒子群体的进化速度加快t从而改善了粒子群优化算法摆脱局部极值点的能力,提高了算法的收敛速度和精度。

仿真结果表明混沌粒子群优化算法的收敛性能明显优于粒子群优化算法。

关键词粒子群优化算法。

混沌手优,优化’ChaosParticle SwarmOptimizationAlgorithmGAOYin91”XIESheng—Lil(Collegeof Electronic&InformationEngineeringtSouthChina University ofTechnology,Guangzhou510641)1(Dept.of ComputerScience andTechnology.GuangzhouUniversity·Guangzhou510405)2Abstract Particle swarmoptimizationis anewstochasticglobaloptimization evolutionaryalgorithm.Inthis paper,the chaotic searchis embeddedintooriginalparticleswarmoptimizers.Basedon theergodicity,stochastic propertyandregularityofchaos,fl newsuperiorindividualisreproducedbychaoticsearchingonthecurrentglobalbest individ—ual。

一种混沌编码的粒子群优化算法及其应用

一种混沌编码的粒子群优化算法及其应用
wa s a p p l i e d t o t h e p a r t i c l e s wa r m a l g o r i t h m.T h e lg a o r i t h m s e a r c h e s a l a r g e r a r e a a t i n i t i a l a n d i f n d s t h e g l o b a l o p t i ma l s o l u t i o n mo r e q u i c k l y .C h a o t i c c o d e d p a r t i c l e s w a r m a l g o r i t h m a n d B P a l g o r i t h ms w e r e c o mb i n e d t o o p t i mi z e t h e n e u — r l a n e t wo r k t o s o l v e t h e c l a s s i i f c a t i o n p r o b l e m.C h a o t i c c o d i n g p a r t i c l e s w a m r a l g o r i t h m c a n q u i c k l y i f n d t h e l o c a t i o n o f t h e g l o b a l o p t i mu m i n t h e n e i g h b o r h o o d .T h e n B P a l g o r i t h m c a r r i e s o u t l o c a l s e a r c h a n d i f n d s t h e g l o b a l o p t i mu m p o s i t i o n .T h e s i mu l a t i o n r e s u h s s h o w t h a t c o n v e r g e n c e s p e e d o f t h e n e u r a l n e t wo r k c l a s s i i f c a t i o n b a s e d o n c h a o t i c C O - d e d p a ti r c l e s w a r m i s f a s t e r t h a n t h e o n e b a s e d o n r e l- a c o d e d p a t r i c l e s w a m .T r h e p a p e r v e i r i f e s t h e e f f e c t i v e n e s s o f t h e a l g o r i t h m.

混沌粒子群优化算法研究

混沌粒子群优化算法研究

混沌粒子群优化算法研究田东平【摘要】Particle Swarm Optimization(PSO)is a stochastic global optimization evolutionary algorithm. In this paper, a novel Chaos Particle Swarm Optimization algorithm(CPSO)is proposed in order to overcome the poor stability and the disadvantage of easily getting into the local optimum of the Standard Particle Swarm Optimization(SPSO). On the one hand, the uniform par-ticles are produced by logical self-map function so as to improve the quality of the initial solutions and enhance the stability. On the other hand, two sets of velocity and position strategies are employed, that is to say, the special velocity-position is used for the global particles, while the general velocity-position is used for the rest particles in the swarm so as to prevent the particles from plunging into the local optimum. The CPSO proposed in this paper is applied to four benchmark functions and the experi-mental results show that CPSO can improve the performance of searching global optimum efficiently and own higher stability.% 针对粒子群优化算法稳定性较差和易陷入局部极值的缺点,提出了一种新颖的混沌粒子群优化算法。

粒子群优化算法及其参数设置(程序部分)

粒子群优化算法及其参数设置(程序部分)

附录程序1当22111==c c ,5.12212==c c ,2.1=w 。

a)%主函数源程序()%------基本粒子群算法 (particle swarm optimization ) %------名称: 基本粒子群算法%------初始格式化clear all ; %清除所有变量clc; %清屏format long ; %将数据显示为长整形科学计数 %------给定初始条条件------------------N=40; %³初始化群体个数D=10; %初始化群体维数T=100; %初始化群体最迭代次数 c11=2; %学习因子1c21=2; %学习因子2c12=1.5;c22=1.5;w=1.2; %惯性权重eps=10^(-6); %设置精度(在已知最小值的时候用) %------初始化种群个体(限定位置和速度)------------ x=zeros(N,D);v=zeros(N,D); for i=1:Nfor j=1:Dx(i,j)=randn; %随机初始化位置v(i,j)=randn; %随机初始化速度endend%------显示群位置----------------------figure(1)for j=1:Dif(rem(D,2)>0)subplot((D+1)/2,2,j)elsesubplot(D/2,2,j)endplot(x(:,j),'b*');grid onxlabel('粒子')ylabel('初始位置')tInfo=strcat('第',char(j+48),'维');if(j>9)tInfo=strcat('第',char(floor(j/10)+48),char(rem(j,10)+48),'维');endtitle(tInfo)end%------显示种群速度figure(2)for j=1:Dif(rem(D,2)>0)subplot((D+1)/2,2,j)elsesubplot(D/2,2,j)endplot(x(:,j),'b*');grid onxlabel('粒子')ylabel('初始速度')tInfo=strcat('第,char(j+48),'维');if(j>9)tInfo=strcat('第',char(floor(j/10)+48),char(rem(j,10)+48),'维);endtitle(tInfo)endfigure(3)%第一个图subplot(1,2,1)%------初始化种群个体(在此限定速度和位置)------------x1=x;v1=v;%------初始化个体最优位置和最优值---p1=x1;pbest1=ones(N,1);for i=1:Npbest1(i)=fitness(x1(i,:),D);end%------初始化全局最优位置和最优值---------------g1=1000*ones(1,D);gbest1=1000;for i=1:Nif(pbest1(i)<gbest1)g1=p1(i,:);gbest1=pbest1(i);endendgb1=ones(1,T);%-----浸入主循环,按照公式依次迭代直到满足精度或者迭代次数---for i=1:Tfor j=1:Nif (fitness(x1(j,:),D)<pbest1(j))p1(j,:)=x1(j,:);pbest1(j)=fitness(x1(j,:),D);endif(pbest1(j)<gbest1)g1=p1(j,:);gbest1=pbest1(j);endv1(j,:)=w*v1(j,:)+c11*rand*(p1(j,:)-x1(j,:))+c21*rand*(g1-x1(j,:));x1(j,:)=x1(j,:)+v1(j,:);endgb1(i)=gbest1;endplot(gb1)TempStr=sprintf('c1= %g ,c2=%g',c11,c21);title(TempStr);xlabel('迭代次数');ylabel('适应度值');%第二个图subplot(1,2,2)%-----初始化种群个体(在此限定速度和位置)------------x2=x;v2=v;%-----初始化种群个体最有位置和最优解-----------p2=x2;pbest2=ones(N,1);for i=1:Npbest2(i)=fitness(x2(i,:),D);end%-----初始化种全局最有位置和最优解------g2=1000*ones(1,D);gbest2=1000;for i=1:Nif(pbest2(i)<gbest2)g2=p2(i,:);gbest2=pbest2(i);endendgb2=ones(1,T);%------浸入主循环,按照公式依次迭代直到满足精度或者迭代次数---for i=1:Tfor j=1:Nif (fitness(x2(j,:),D)<pbest2(j))p2(j,:)=x2(j,:);pbest2(j)=fitness(x2(j,:),D);endif (pbest2(j)<gbest2)g2=p2(j,:);gbest2=pbest2(j);endv2(j,:)=w*v2(j,:)+c12*rand*(p2(j,:)-x2(j,:))+c22*rand*(g2-x2(j,:)); x2(j,:)=x2(j,:)+v2(j,:);endgb2(i)=gbest2;endplot(gb2)TempStr=sprintf('c1= %g ,c2=%g',c12,c22);title(TempStr);xlabel('迭代次数');ylabel('适应度值');b )适应度函数%适应度函数()function result=fitness(x,D)sum=0;for i=1:Dsum=sum+x(i)^2;endresult=sum;程序2当22111==c c 于2.1,2,02212===w c c 对比a)%主函数源程序()%------基本粒子群算法 (particle swarm optimization )%------名称: 基本粒子群算法%------初始格式化clear all ; %清除所有变量clc; %清屏format long ; %将数据显示为长整形科学计数%------给定初始条条件------------------N=40; %³初始化群体个数D=10; %初始化群体维数T=100; %初始化群体最迭代次数c11=2; %学习因子1c21=2; %学习因子2c12=0;c22=2;w=1.2; %惯性权重eps=10^(-6); %设置精度(在已知最小值的时候用)%------初始化种群个体(限定位置和速度)------------x=zeros(N,D);v=zeros(N,D);for i=1:Nfor j=1:Dx(i,j)=randn; %随机初始化位置v(i,j)=randn; %随机初始化速度endend%------显示群位置----------------------figure(1)for j=1:Dif(rem(D,2)>0)subplot((D+1)/2,2,j)elsesubplot(D/2,2,j)endplot(x(:,j),'b*');grid onxlabel('粒子')ylabel('初始位置')tInfo=strcat('第',char(j+48),'维');if(j>9)tInfo=strcat('第',char(floor(j/10)+48),char(rem(j,10)+48),'维');endtitle(tInfo)end%------显示种群速度figure(2)for j=1:Dif(rem(D,2)>0)subplot((D+1)/2,2,j)elsesubplot(D/2,2,j)endplot(x(:,j),'b*');grid onxlabel('粒子')ylabel('初始速度')tInfo=strcat('第,char(j+48),'维');if(j>9)tInfo=strcat('第',char(floor(j/10)+48),char(rem(j,10)+48),'维);endtitle(tInfo)endfigure(3)%第一个图subplot(1,2,1)%------初始化种群个体(在此限定速度和位置)------------x1=x;v1=v;%------初始化个体最优位置和最优值---p1=x1;pbest1=ones(N,1);for i=1:Npbest1(i)=fitness(x1(i,:),D);end%------初始化全局最优位置和最优值---------------g1=1000*ones(1,D);gbest1=1000;for i=1:Nif(pbest1(i)<gbest1)g1=p1(i,:);gbest1=pbest1(i);endendgb1=ones(1,T);%-----浸入主循环,按照公式依次迭代直到满足精度或者迭代次数---for i=1:Tfor j=1:Nif (fitness(x1(j,:),D)<pbest1(j))p1(j,:)=x1(j,:);pbest1(j)=fitness(x1(j,:),D);endif(pbest1(j)<gbest1)g1=p1(j,:);gbest1=pbest1(j);endv1(j,:)=w*v1(j,:)+c11*rand*(p1(j,:)-x1(j,:))+c21*rand*(g1-x1(j,:));x1(j,:)=x1(j,:)+v1(j,:);endgb1(i)=gbest1;endplot(gb1)TempStr=sprintf('c1= %g ,c2=%g',c11,c21);title(TempStr);xlabel('迭代次数');ylabel('适应度值');%第二个图subplot(1,2,2)%-----初始化种群个体(在此限定速度和位置)------------x2=x;v2=v;%-----初始化种群个体最有位置和最优解-----------p2=x2;pbest2=ones(N,1);for i=1:Npbest2(i)=fitness(x2(i,:),D);end%-----初始化种全局最有位置和最优解------g2=1000*ones(1,D);gbest2=1000;for i=1:Nif(pbest2(i)<gbest2)g2=p2(i,:);gbest2=pbest2(i);endendgb2=ones(1,T);%------浸入主循环,按照公式依次迭代直到满足精度或者迭代次数---for i=1:Tfor j=1:Nif (fitness(x2(j,:),D)<pbest2(j))p2(j,:)=x2(j,:);pbest2(j)=fitness(x2(j,:),D);endif(pbest2(j)<gbest2)g2=p2(j,:);gbest2=pbest2(j);endv2(j,:)=w*v2(j,:)+c12*rand*(p2(j,:)-x2(j,:))+c22*rand*(g2-x2(j,:));x2(j,:)=x2(j,:)+v2(j,:);endgb2(i)=gbest2;endplot(gb2)TempStr=sprintf('c1= %g ,c2=%g',c12,c22);title(TempStr);xlabel('迭代次数');ylabel('适应度值');b)适应度函数%适应度函数(fitness.m)function result=fitness(x,D)sum=0;for i=1:Dsum=sum+x(i)^2;endresult=sum;程序3当2.1,22111===w c c 于2.1,0,22212===w c c 对比a)%主函数源程序(main.m )%------基本粒子群算法 (particle swarm optimization ) %------名称: 基本粒子群算法%------初始格式化clear all ; %清除所有变量clc; %清屏format long ; %将数据显示为长整形科学计数 %------给定初始条条件------------------N=40; %³初始化群体个数D=10; %初始化群体维数T=100; %初始化群体最迭代次数c11=2; %学习因子1c21=2; %学习因子2c12=2;c22=0;w=1.2; %惯性权重eps=10^(-6); %设置精度(在已知最小值的时候用) %------初始化种群个体(限定位置和速度)------------x=zeros(N,D);v=zeros(N,D);for i=1:Nfor j=1:Dx(i,j)=randn; %随机初始化位置v(i,j)=randn; %随机初始化速度endend%------显示群位置----------------------figure(1)if(rem(D,2)>0)subplot((D+1)/2,2,j)elsesubplot(D/2,2,j)endplot(x(:,j),'b*');grid onxlabel('粒子')ylabel('初始位置')tInfo=strcat('第',char(j+48),'维');if(j>9)tInfo=strcat('第',char(floor(j/10)+48),char(rem(j,10)+48),'维');endtitle(tInfo)end%------显示种群速度figure(2)for j=1:Dif(rem(D,2)>0)subplot((D+1)/2,2,j)elsesubplot(D/2,2,j)endplot(x(:,j),'b*');grid onxlabel('粒子')ylabel('初始速度')tInfo=strcat('第,char(j+48),'维');if(j>9)tInfo=strcat('第',char(floor(j/10)+48), char(rem(j,10)+48),'维);endtitle(tInfo)endfigure(3)subplot(1,2,1)%------初始化种群个体(在此限定速度和位置)------------x1=x;v1=v;%------初始化个体最优位置和最优值---p1=x1;pbest1=ones(N,1);for i=1:Npbest1(i)=fitness(x1(i,:),D);end%------初始化全局最优位置和最优值---------------g1=1000*ones(1,D);gbest1=1000;for i=1:Nif(pbest1(i)<gbest1)g1=p1(i,:);gbest1=pbest1(i);endendgb1=ones(1,T);%-----浸入主循环,按照公式依次迭代直到满足精度或者迭代次数---for i=1:Tfor j=1:Nif (fitness(x1(j,:),D)<pbest1(j))p1(j,:)=x1(j,:);pbest1(j)=fitness(x1(j,:),D);endif(pbest1(j)<gbest1)g1=p1(j,:);gbest1=pbest1(j);endv1(j,:)=w*v1(j,:)+c11*rand*(p1(j,:)-x1(j,:))+c21*rand*(g1-x1(j,:));x1(j,:)=x1(j,:)+v1(j,:);endgb1(i)=gbest1;endplot(gb1)TempStr=sprintf('c1= %g ,c2=%g',c11,c21);title(TempStr);xlabel('迭代次数');ylabel('适应度值');%第二个图subplot(1,2,2)%-----初始化种群个体(在此限定速度和位置)------------x2=x;v2=v;%-----初始化种群个体最有位置和最优解-----------p2=x2;pbest2=ones(N,1);for i=1:Npbest2(i)=fitness(x2(i,:),D);end%-----初始化种全局最有位置和最优解------g2=1000*ones(1,D);gbest2=1000;for i=1:Nif(pbest2(i)<gbest2)g2=p2(i,:);gbest2=pbest2(i);endendgb2=ones(1,T);%------浸入主循环,按照公式依次迭代直到满足精度或者迭代次数---for i=1:Tfor j=1:Nif (fitness(x2(j,:),D)<pbest2(j))p2(j,:)=x2(j,:);pbest2(j)=fitness(x2(j,:),D);endif (pbest2(j)<gbest2)g2=p2(j,:);gbest2=pbest2(j);endv2(j,:)=w*v2(j,:)+c12*rand*(p2(j,:)-x2(j,:))+c22*rand*(g2-x2(j,:)); x2(j,:)=x2(j,:)+v2(j,:);endgb2(i)=gbest2;endplot(gb2)TempStr=sprintf('c1= %g ,c2=%g',c12,c22);title(TempStr);xlabel('迭代次数');ylabel('适应度值');b )适应度函数%适应度函数(fitness.m )function result=fitness(x,D)sum=0;for i=1:Dsum=sum+x(i)^2;endresult=sum;程序4对21c c ≠,21w w ≠分别对其取值1.11=c ,22=c ,2.11=w ,5.12=w 测试函数。

粒子群优化算法 简洁 c语言

粒子群优化算法 简洁 c语言

粒子群优化算法的C代码如下,运行后为什么提示:d:\program files\microsoft visual studio\vc98\include\eh.h(32) : fatal error C1189: #error : "eh.h is only for C++!"费解了。

由于学matlab,我C语言长时间未碰,有点生疏。

还请各位多多指导,真的谢谢了!#include<iostream>#include<fstream>#include<cmath>#include<ctime>#include<string>#include<iomanip>#include<cstdlib>using namespace std;#include"ran_number.h"const double pi=3.1415926;const int num=60; /*粒子群规模*/const int T=2000; /*最大迭代次数*///**************适应度函数*************//double func(double x){double f=x*sin(10*x*pi)+2.0;f=1.0/f;return f;}//----------------主程序----------------//void main(int argc,char* argv[]){double ran; //随机变量RandomNumber rand;double c1=2.05,c2=2.05; //学习因子double d1=0.2,d2=0.7; //控制因子double ws=0.9,we=0.4; //最大最小惯性权重double x_down=-1.0,x_up=2.0; //粒子空间上下界double w; //惯性权重int m=2;double Vmax; //粒子最大速度double x[num]; //粒子位置(控制参数)double v[num]; //粒子速度double g[num]; //粒子适应度double pbest[num]; //粒子个体最好值double pbest_x[num]; //粒子个体最好位值double gbest; //粒子群体最好值double gbest_x; //粒子群体最好位置Vmax=(x_up-x_down)/8;//--初始化粒子群:位置、速度、个体最优值for(int i=0;i<num;i++){pbest[i]=0.0;ran=rand.fRandom();x[i]=x_down+(x_up-x_down)*ran;v[i]=Vmax*(2*ran-1); //初始化粒子速度pbest[i]=func(x[i]);pbest_x[i]=x[i];}gbest=pbest[0];gbest_x=x[0];//--------------第一次迭代得到的群体最优----------//for(i=0;i<num;i++) // for 粒子数循环{if(pbest[i]<gbest){gbest=pbest[i];gbest_x=pbest_x[i];}}//---------------共T次迭代过程---------------//while(m<=T) //迭代次数循环{w=(ws-we-d1)*exp(1/(1+d2*(m-1)/t)); //惯性权重for(i=0;i<num;i++) //粒子数循环{g[i]=0.0;ran=rand.fRandom();v[i]=w*v[i]+c1*ran*(pbest_x[i]-x[i])+c2*ran*(gbest_x-x[i]);x[i]+=v[i];if(x[i]<x_down){x[i]=x_down;} //保证粒子位置不能超越下界if(x[i]>x_up){x[i]=x_up;} //保证粒子位置不能超出上界g[i]=func(x[i]);if(pbest[i]>g[i]){pbest[i]=g[i];pbest_x[i]=x[i];}if(pbest[i]<gbest){gbest=pbest[i];gbest_x=pbest_x[i];}printf("第%d次迭代的群体最优值及最优位置为%lf %lf ",m,gbest,gbest_x); //输出第m次迭代的群体最优值及最优位置} //结束for循环m=m+1;} //结束while循环printf("全局最优解及全局最优位置为%lf %lf ",gbest,gbest_x);下面为改正点:注意: vc在处理.c 文件是按C 语言编译的,所以假如有以下文件: 1.c#include <fstream>int main(int argc, char* argv[]){return 0;}那么编译时就会出错:fatal error C1189: #error : "eh.h is only for C++!"这是因为fstream标准库要求用到eh.h文件,而Exception Handling的实现需要c++支持。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for(int d=0;d<N;d++)
chaos(ps,psbest,d,xmax,xmin);
}
cout<<"收敛结果是"<<psbest<<endl;
}
#define M 20 //粒子的个数
#define D 500 //迭代次数
#define rmax RAND_MAX
typedef struct particle //粒子的结构(包含n维的位置x,速度v,最优位置p,适应度pbest)
{
double x[N];
if((pts[i].x[j]>xmax[j])||(pts[i].x[j]<xmin[j]))
pts[i].x[j]=(xmax[j]-xmin[j])*(double)rand()/(double)RAND_MAX+xmin[j];
}
if(f(pts[i].x)>pts[i].pbest)
for(int i=0;(i<D)&&(psbest<fmin);i++)
{
update(pts,ps,psbest,k,xmax,xmin,vmax,vmin); //更新粒子群
p=1-1/(1+log(k));
if(p>=((double)rand()/(double)RAND_MAX)) //满足混沌搜索的条件
#include<iostream.h>
#include <math.h>
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
#define c1 2 //学习因子
#define c2 2 //学习因子
#define b 0.01 //混沌搜索常量
for(int i=0;i<M;i++)
{
for(int j=0;j<N;j++)
{
pts[i].v[j]=w*pts[i].v[j]+c1*((double)rand()/(double)RAND_MAX)*(pts[i].p[j]-pts[i].x[j])+c2*((double)rand()/(double)RAND_MAX)*(pts[i].p[j]-pts[i].x[j]);
}
}
void update(ptc *pts,double *ps,double &psbest,int &k,double *xmax,double *xmin,double *vmax,double *vmin) //对粒子群进行更新
{
double w;
w=wmax-(wmax-wmin)*k/(D-1);//惯性因子改变,增加搜索的伸缩性
{
pts[i].pbest=f(pts[i].x);
pts[i].p[0]=pts[i].x[0];pts[i].p[1]=pts[i].x[1];
}
if(pts[i].pbest>psbest)
{
psbest=pts[i].pbest;
ps[0]=pts[i].p[0];ps[1]=pts[i].p[1];
#define ckmax 15 //混沌搜索最大步长
#define wmin 0.4 //最小惯性因子
#define wmax 0.9 //最大惯性因子
#define fmin 0.398 //给定的函数阀值
#define N 2 //粒子的维数
pts[i].x[j]=pts[i].v[j]+pts[i].x[j]; //粒子群算法对粒子的速度和位置进行更新
if(pts[i].v[j]>vmax[i])
pts[i].v[j]=vmax[j];
if(pts[i].v[j]<vmin[j])
pts[i].v[j]=vmin[j];
vmax[i]=xmax[i]/5;
}
srand((unsigned)time(NULL));
for(int j=0;j<N;j++)
{
for(int i=0;i<M;i++)
{
pts[i].x[j]=(xmax[j]-xmin[j])*(double)rand()/(double)RAND_MAX+xmin[j]; //初始化粒子的位置
}
psbest=fitness(ps);
for(i=0;i<M;i++)
{
pts[i].pbest=fitness(pts[i].x);
if(pts[i].pbest>psbest)
psbest=pts[i].pbest;
{
double ps[N]; //全局最优位置
double psbest; //全局最优适应度
int k; //进化当前的代数
double p; //混沌搜索的判断标准
double xmax[N];
double xmin[N]; //每个粒子位置变量的最值
h=pow(2.0*x[1]-3.0*x[2],2.0)*(18.0-32.0*x[1]+12.0*x[1]*x[1]+48.0*x[2]-36.0x[1]*x[2]+27.0*x[2]*x[2])+30.0;
k=s*h;
return k;
}
void init(ptc *pts,double *ps,double &psbest,int &k,double *xmax,double *xmin,double *vmax,double *vmin) //初始化粒子群
double v[N];
double p[N];
double pbest;
}ptc;
double fitness(double *x)
{ //测试函数
double k,s,h;
s=pow(x[1]+x[2]+1,2.0)*(19.0-14.0*x[1]+3*x[1]*x[1]-14.0*x[2]+6.0*x[1]*x[2]+3.0*x[2]*x[2])+1.0;
}
cout<<i<<pts[i].pbest ;
}
k=k+1;
}
void chaos(double *ps,double &psbest,int &d,double *xmax,double *xmin)
{ //混沌搜索算法,对ps即全局最优粒子的第d维函数进行优化
double rx;
for(int l=0;l<ckmax;l++)
{
rx=ps[d];
ps[d]=ps[d]+b*ps[d];
if(f(ps)>psbest)
psbest=f(ps); else ps[d]=rx;
ps[d]=(ps[d]-xmin[d])/(xmax[d]-xmin[d]);
pts[i].v[j]=(vmax[j]-vmin[j])*(double)rand()/(double)RAND_MAX+vmin[j];//初始化粒子的速度
pts[i].p[j]=pts[i].x[j];//初始化粒子的最优位置
}
ps[j]=pts[0].x[j]; //初始化粒子群的全局最优并且设置第一个粒子为最优
ps[d]=4*ps[d]*(1-ps[d]);
if((ps[d]=0)||(ps[d]=0.25)||(ps[d]=0.75)||(ps[d]=1))
l=ckmax;
else
ps[d]=xmin[d]+(xmax[d]-xmin[d])*ps[d];
}
}
void main()
{
psbest=0;
for(int i=0;i<N;i++)
cout<<"输入粒子位置第"<<i<<"的最小值:";
cin>>xmin[i];
cout<<"输入粒子位置第"<<i<<"的最大值:";
cin>>xmax[i];
vmin[i]=xmin[i]/5;
double vmax[N];
double vmin[N]; //每个粒子中速度变量的最值
ptc *pts=new ptc[M]; //粒子群的结构(包含m个粒子)
init(pts,ps,psbest,k,xmax,xmin,vmax,vmin); //初始化粒子群
相关文档
最新文档