基于遗传算法和粒子群算法的潮流计算比较附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。

🍎 往期回顾关注个人主页:Matlab科研工作室

🍊个人信条:格物致知,完整Matlab代码及仿真咨询内容私信。

🔥 内容介绍

在电力系统分析中,潮流计算是一项至关重要的基础工作,其主要目的是求解电力系统在给定运行条件下的各节点电压、有功功率和无功功率等参数,为电力系统的规划、运行和控制提供依据。随着智能优化算法的不断发展,遗传算法和粒子群算法在潮流计算中得到了广泛应用。本文将对这两种算法在潮流计算中的应用进行比较分析。

一、遗传算法在潮流计算中的应用

(一)基本原理

遗传算法是一种模拟生物进化过程的随机搜索算法,它将潮流计算问题的解表示为染色体,通过选择、交叉和变异等遗传操作,在解空间中进行搜索,逐步逼近最优解。在潮流计算中,染色体通常代表各节点的电压幅值和相位角等变量。

(二)实现步骤

  1. 编码:将潮流计算中的变量(如节点电压幅值、相位角等)进行编码,形成染色体。常用的编码方式有二进制编码和实数编码,在潮流计算中,由于变量多为连续值,实数编码更为常用。
  1. 初始化群体:随机生成一定数量的染色体,组成初始群体。初始群体的规模需要根据问题的复杂程度进行合理选择。
  1. 适应度函数设计:适应度函数用于评价染色体的优劣,在潮流计算中,通常以潮流方程的误差平方和作为适应度函数,误差越小,适应度值越高。
  1. 遗传操作:包括选择、交叉和变异。选择操作根据染色体的适应度值,选择优秀的染色体进入下一代群体;交叉操作将两个父代染色体进行组合,生成新的子代染色体;变异操作对染色体的某些基因进行随机改变,以增加群体的多样性。
  1. 终止条件判断:当算法满足预设的终止条件时,如达到最大进化代数、适应度值达到预设精度等,停止运行,并输出最优解。

(三)优缺点

  • 优点:具有全局搜索能力强、能够处理非线性和多峰问题等优点,在潮流计算中能够较好地避免陷入局部最优解。
  • 缺点:收敛速度相对较慢,计算时间较长,对于大规模电力系统的潮流计算,效率有待提高。

二、粒子群算法在潮流计算中的应用

(一)基本原理

粒子群算法是一种模拟鸟群觅食行为的优化算法,它将每个解视为一个粒子,粒子在解空间中飞行,通过跟踪个体极值和群体极值来更新自己的位置和速度,从而寻找最优解。在潮流计算中,粒子的位置代表各节点的电压幅值和相位角等变量。

(二)实现步骤

  1. 初始化粒子群:随机生成一定数量的粒子,每个粒子包括位置和速度两个属性,位置代表潮流计算问题的一个解,速度决定粒子的飞行方向和距离。
  1. 计算适应度值:根据粒子的位置,计算其对应的潮流方程误差平方和,作为粒子的适应度值。
  1. 更新个体极值和群体极值:每个粒子将自己当前的适应度值与个体极值进行比较,如果更优则更新个体极值;将所有粒子的个体极值进行比较,选出最优的作为群体极值。
  1. 更新粒子位置和速度:根据个体极值和群体极值,按照一定的公式更新粒子的速度和位置。
  1. 终止条件判断:当满足终止条件时,停止运行,输出群体极值对应的解。

(三)优缺点

  • 优点:收敛速度快,计算效率高,算法实现简单,参数调整方便,适用于大规模电力系统的潮流计算。
  • 缺点:全局搜索能力相对较弱,在处理复杂的潮流计算问题时,容易陷入局部最优解。

三、两种算法的比较

(一)收敛速度

粒子群算法的收敛速度明显快于遗传算法。这是因为粒子群算法通过跟踪个体极值和群体极值,能够快速向最优解方向移动,而遗传算法需要通过遗传操作逐步进化,过程相对较慢。在大规模电力系统的潮流计算中,粒子群算法的优势更为明显。

(二)计算精度

在计算精度方面,遗传算法和粒子群算法各有优劣。对于简单的潮流计算问题,两种算法都能够达到较高的精度;但对于复杂的、具有多峰特性的潮流计算问题,遗传算法由于全局搜索能力强,往往能够找到更优的解,计算精度更高。

(三)鲁棒性

鲁棒性是指算法在面对不同问题和初始条件时的稳定性和可靠性。遗传算法由于具有较强的全局搜索能力和群体多样性,鲁棒性相对较强,在不同的潮流计算场景下都能够保持较好的性能。粒子群算法在处理某些复杂问题时,容易受到初始条件的影响,鲁棒性相对较弱。

(四)计算复杂度

遗传算法的计算复杂度相对较高,因为它涉及到编码、解码以及复杂的遗传操作。粒子群算法的计算过程相对简单,不需要进行编码和解码操作,计算复杂度较低,更适合实时性要求较高的潮流计算场景。

(五)适用场景

  • 遗传算法:适用于处理复杂的、具有多峰特性的潮流计算问题,以及对计算精度要求较高的场景,如电力系统规划中的潮流计算。
  • 粒子群算法:适用于大规模电力系统的潮流计算,以及对实时性要求较高的场景,如电力系统运行中的在线潮流计算。

四、结论

遗传算法和粒子群算法在潮流计算中都具有各自的优势和不足。遗传算法全局搜索能力强、计算精度高,但收敛速度慢、计算复杂度高;粒子群算法收敛速度快、计算效率高、实现简单,但全局搜索能力相对较弱。

在实际应用中,应根据具体的潮流计算问题特点和要求,选择合适的算法。对于复杂的、对精度要求高的问题,可优先考虑遗传算法;对于大规模、对实时性要求高的问题,粒子群算法更为合适。此外,还可以将两种算法进行融合,形成混合算法,以充分发挥各自的优势,提高潮流计算的性能。

⛳️ 运行结果

图片

图片

🔗 参考文献

[1] 赵波,郭创新,曹一家Zhao,等.基于粒子群优化算法和动态调整罚函数的最优潮流计算(英文)[J].电工技术学报, 2004, 19(5):8.DOI:CNKI:SUN:DGJS.0.2004-05-009.

[2] 赵波,郭创新,曹一家.基于粒子群优化算法和动态调整罚函数的最优潮流计算[J].电工技术学报, 2004, 019(005):47-54.

[3] 李倩倩,李绍铭,闫成忍.基于改进粒子群和遗传算法的配电网重构研究[J].洛阳理工学院学报:自然科学版, 2018, 28(4):7.DOI:CNKI:SUN:LYGY.0.2018-04-009.

📣 部分代码

🎈 部分理论引用网络文献,若有侵权联系博主删除

 👇 关注我领取海量matlab电子书和数学建模资料 

🏆团队擅长辅导定制多种科研领域MATLAB仿真,助力科研梦:

🌈 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱调度、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化、CVRP问题、VRPPD问题、多中心VRP问题、多层网络的VRP问题、多中心多车型的VRP问题、 动态VRP问题、双层车辆路径规划(2E-VRP)、充电车辆路径规划(EVRP)、油电混合车辆路径规划、混合流水车间问题、 订单拆分调度问题、 公交车的调度排班优化问题、航班摆渡车辆调度问题、选址路径规划问题、港口调度、港口岸桥调度、停机位分配、机场航班调度、泄漏源定位
🌈 机器学习和深度学习时序、回归、分类、聚类和降维

2.1 bp时序、回归预测和分类

2.2 ENS声神经网络时序、回归预测和分类

2.3 SVM/CNN-SVM/LSSVM/RVM支持向量机系列时序、回归预测和分类

2.4 CNN|TCN|GCN卷积神经网络系列时序、回归预测和分类

2.5 ELM/KELM/RELM/DELM极限学习机系列时序、回归预测和分类
2.6 GRU/Bi-GRU/CNN-GRU/CNN-BiGRU门控神经网络时序、回归预测和分类

2.7 ELMAN递归神经网络时序、回归\预测和分类

2.8 LSTM/BiLSTM/CNN-LSTM/CNN-BiLSTM/长短记忆神经网络系列时序、回归预测和分类

2.9 RBF径向基神经网络时序、回归预测和分类

2.10 DBN深度置信网络时序、回归预测和分类
2.11 FNN模糊神经网络时序、回归预测
2.12 RF随机森林时序、回归预测和分类
2.13 BLS宽度学习时序、回归预测和分类
2.14 PNN脉冲神经网络分类
2.15 模糊小波神经网络预测和分类
2.16 时序、回归预测和分类
2.17 时序、回归预测预测和分类
2.18 XGBOOST集成学习时序、回归预测预测和分类
2.19 Transform各类组合时序、回归预测预测和分类
方向涵盖风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、用电量预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
🌈图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
🌈 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、 充电车辆路径规划(EVRP)、 双层车辆路径规划(2E-VRP)、 油电混合车辆路径规划、 船舶航迹规划、 全路径规划规划、 仓储巡逻
🌈 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配、无人机安全通信轨迹在线优化、车辆协同无人机路径规划
🌈 通信方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化、水声通信、通信上传下载分配
🌈 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化、心电信号、DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测
🌈电力系统方面
微电网优化、无功优化、配电网重构、储能配置、有序充电、MPPT优化、家庭用电
🌈 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长 金属腐蚀
🌈 雷达方面

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。

🍎 往期回顾关注个人主页:Matlab科研工作室

🍊个人信条:格物致知,完整Matlab代码及仿真咨询内容私信。

🔥 内容介绍

在电力系统分析中,潮流计算是一项至关重要的基础工作,其主要目的是求解电力系统在给定运行条件下的各节点电压、有功功率和无功功率等参数,为电力系统的规划、运行和控制提供依据。随着智能优化算法的不断发展,遗传算法和粒子群算法在潮流计算中得到了广泛应用。本文将对这两种算法在潮流计算中的应用进行比较分析。

一、遗传算法在潮流计算中的应用

(一)基本原理

遗传算法是一种模拟生物进化过程的随机搜索算法,它将潮流计算问题的解表示为染色体,通过选择、交叉和变异等遗传操作,在解空间中进行搜索,逐步逼近最优解。在潮流计算中,染色体通常代表各节点的电压幅值和相位角等变量。

(二)实现步骤

  1. 编码:将潮流计算中的变量(如节点电压幅值、相位角等)进行编码,形成染色体。常用的编码方式有二进制编码和实数编码,在潮流计算中,由于变量多为连续值,实数编码更为常用。
  1. 初始化群体:随机生成一定数量的染色体,组成初始群体。初始群体的规模需要根据问题的复杂程度进行合理选择。
  1. 适应度函数设计:适应度函数用于评价染色体的优劣,在潮流计算中,通常以潮流方程的误差平方和作为适应度函数,误差越小,适应度值越高。
  1. 遗传操作:包括选择、交叉和变异。选择操作根据染色体的适应度值,选择优秀的染色体进入下一代群体;交叉操作将两个父代染色体进行组合,生成新的子代染色体;变异操作对染色体的某些基因进行随机改变,以增加群体的多样性。
  1. 终止条件判断:当算法满足预设的终止条件时,如达到最大进化代数、适应度值达到预设精度等,停止运行,并输出最优解。

(三)优缺点

  • 优点:具有全局搜索能力强、能够处理非线性和多峰问题等优点,在潮流计算中能够较好地避免陷入局部最优解。
  • 缺点:收敛速度相对较慢,计算时间较长,对于大规模电力系统的潮流计算,效率有待提高。

二、粒子群算法在潮流计算中的应用

(一)基本原理

粒子群算法是一种模拟鸟群觅食行为的优化算法,它将每个解视为一个粒子,粒子在解空间中飞行,通过跟踪个体极值和群体极值来更新自己的位置和速度,从而寻找最优解。在潮流计算中,粒子的位置代表各节点的电压幅值和相位角等变量。

(二)实现步骤

  1. 初始化粒子群:随机生成一定数量的粒子,每个粒子包括位置和速度两个属性,位置代表潮流计算问题的一个解,速度决定粒子的飞行方向和距离。
  1. 计算适应度值:根据粒子的位置,计算其对应的潮流方程误差平方和,作为粒子的适应度值。
  1. 更新个体极值和群体极值:每个粒子将自己当前的适应度值与个体极值进行比较,如果更优则更新个体极值;将所有粒子的个体极值进行比较,选出最优的作为群体极值。
  1. 更新粒子位置和速度:根据个体极值和群体极值,按照一定的公式更新粒子的速度和位置。
  1. 终止条件判断:当满足终止条件时,停止运行,输出群体极值对应的解。

(三)优缺点

  • 优点:收敛速度快,计算效率高,算法实现简单,参数调整方便,适用于大规模电力系统的潮流计算。
  • 缺点:全局搜索能力相对较弱,在处理复杂的潮流计算问题时,容易陷入局部最优解。

三、两种算法的比较

(一)收敛速度

粒子群算法的收敛速度明显快于遗传算法。这是因为粒子群算法通过跟踪个体极值和群体极值,能够快速向最优解方向移动,而遗传算法需要通过遗传操作逐步进化,过程相对较慢。在大规模电力系统的潮流计算中,粒子群算法的优势更为明显。

(二)计算精度

在计算精度方面,遗传算法和粒子群算法各有优劣。对于简单的潮流计算问题,两种算法都能够达到较高的精度;但对于复杂的、具有多峰特性的潮流计算问题,遗传算法由于全局搜索能力强,往往能够找到更优的解,计算精度更高。

(三)鲁棒性

鲁棒性是指算法在面对不同问题和初始条件时的稳定性和可靠性。遗传算法由于具有较强的全局搜索能力和群体多样性,鲁棒性相对较强,在不同的潮流计算场景下都能够保持较好的性能。粒子群算法在处理某些复杂问题时,容易受到初始条件的影响,鲁棒性相对较弱。

(四)计算复杂度

遗传算法的计算复杂度相对较高,因为它涉及到编码、解码以及复杂的遗传操作。粒子群算法的计算过程相对简单,不需要进行编码和解码操作,计算复杂度较低,更适合实时性要求较高的潮流计算场景。

(五)适用场景

  • 遗传算法:适用于处理复杂的、具有多峰特性的潮流计算问题,以及对计算精度要求较高的场景,如电力系统规划中的潮流计算。
  • 粒子群算法:适用于大规模电力系统的潮流计算,以及对实时性要求较高的场景,如电力系统运行中的在线潮流计算。

四、结论

遗传算法和粒子群算法在潮流计算中都具有各自的优势和不足。遗传算法全局搜索能力强、计算精度高,但收敛速度慢、计算复杂度高;粒子群算法收敛速度快、计算效率高、实现简单,但全局搜索能力相对较弱。

在实际应用中,应根据具体的潮流计算问题特点和要求,选择合适的算法。对于复杂的、对精度要求高的问题,可优先考虑遗传算法;对于大规模、对实时性要求高的问题,粒子群算法更为合适。此外,还可以将两种算法进行融合,形成混合算法,以充分发挥各自的优势,提高潮流计算的性能。

⛳️ 运行结果

图片

图片

🔗 参考文献

[1] 赵波,郭创新,曹一家Zhao,等.基于粒子群优化算法和动态调整罚函数的最优潮流计算(英文)[J].电工技术学报, 2004, 19(5):8.DOI:CNKI:SUN:DGJS.0.2004-05-009.

[2] 赵波,郭创新,曹一家.基于粒子群优化算法和动态调整罚函数的最优潮流计算[J].电工技术学报, 2004, 019(005):47-54.

[3] 李倩倩,李绍铭,闫成忍.基于改进粒子群和遗传算法的配电网重构研究[J].洛阳理工学院学报:自然科学版, 2018, 28(4):7.DOI:CNKI:SUN:LYGY.0.2018-04-009.

📣 部分代码

🎈 部分理论引用网络文献,若有侵权联系博主删除

 👇 关注我领取海量matlab电子书和数学建模资料 

🏆团队擅长辅导定制多种科研领域MATLAB仿真,助力科研梦:

🌈 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱调度、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化、CVRP问题、VRPPD问题、多中心VRP问题、多层网络的VRP问题、多中心多车型的VRP问题、 动态VRP问题、双层车辆路径规划(2E-VRP)、充电车辆路径规划(EVRP)、油电混合车辆路径规划、混合流水车间问题、 订单拆分调度问题、 公交车的调度排班优化问题、航班摆渡车辆调度问题、选址路径规划问题、港口调度、港口岸桥调度、停机位分配、机场航班调度、泄漏源定位
🌈 机器学习和深度学习时序、回归、分类、聚类和降维

2.1 bp时序、回归预测和分类

2.2 ENS声神经网络时序、回归预测和分类

2.3 SVM/CNN-SVM/LSSVM/RVM支持向量机系列时序、回归预测和分类

2.4 CNN|TCN|GCN卷积神经网络系列时序、回归预测和分类

2.5 ELM/KELM/RELM/DELM极限学习机系列时序、回归预测和分类
2.6 GRU/Bi-GRU/CNN-GRU/CNN-BiGRU门控神经网络时序、回归预测和分类

2.7 ELMAN递归神经网络时序、回归\预测和分类

2.8 LSTM/BiLSTM/CNN-LSTM/CNN-BiLSTM/长短记忆神经网络系列时序、回归预测和分类

2.9 RBF径向基神经网络时序、回归预测和分类

2.10 DBN深度置信网络时序、回归预测和分类
2.11 FNN模糊神经网络时序、回归预测
2.12 RF随机森林时序、回归预测和分类
2.13 BLS宽度学习时序、回归预测和分类
2.14 PNN脉冲神经网络分类
2.15 模糊小波神经网络预测和分类
2.16 时序、回归预测和分类
2.17 时序、回归预测预测和分类
2.18 XGBOOST集成学习时序、回归预测预测和分类
2.19 Transform各类组合时序、回归预测预测和分类
方向涵盖风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、用电量预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
🌈图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
🌈 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、 充电车辆路径规划(EVRP)、 双层车辆路径规划(2E-VRP)、 油电混合车辆路径规划、 船舶航迹规划、 全路径规划规划、 仓储巡逻
🌈 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配、无人机安全通信轨迹在线优化、车辆协同无人机路径规划
🌈 通信方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化、水声通信、通信上传下载分配
🌈 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化、心电信号、DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测
🌈电力系统方面
微电网优化、无功优化、配电网重构、储能配置、有序充电、MPPT优化、家庭用电
🌈 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长 金属腐蚀
🌈 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合、SOC估计、阵列优化、NLOS识别
🌈 车间调度
零等待流水车间调度问题NWFSP 、 置换流水车间调度问题PFSP、 混合流水车间调度问题HFSP 、零空闲流水车间调度问题NIFSP、分布式置换流水车间调度问题 DPFSP、阻塞流水车间调度问题BFSP

👇

卡尔曼滤波跟踪、航迹关联、航迹融合、SOC估计、阵列优化、NLOS识别
🌈 车间调度
零等待流水车间调度问题NWFSP 、 置换流水车间调度问题PFSP、 混合流水车间调度问题HFSP 、零空闲流水车间调度问题NIFSP、分布式置换流水车间调度问题 DPFSP、阻塞流水车间调度问题BFSP

👇

本框架提供了有关粒子群算法(PSO)遗传算法(GA)的完整实现,以及一套关于改进、应用、测试、结果输出的完整框架。 本框架对粒子群算法遗传算法进行逻辑解耦,对其中的改进点予以封装,进行模块化,使用者可以采取自己对该模块的改进替换默认实现组成新的改进算法与已有算法进行对比试验。试验结果基于Excel文件输出,并可通过设定不同的迭代结束方式选择试验数据的输出方式,包括: 1. 输出随迭代次数变化的平均达优率数据(设定终止条件区间大于0)。 2. 输出随迭代次数变化的平均最优值数据(设定终止条件区间等于0)。 本框架了包含了常用基准函数的实现以及遗传算法粒子群算法对其的求解方案实现对比,如TSP,01背包,Banana函数,Griewank函数等。并提供大量工具方法,如KMeans,随机序列生成与无效序列修补方法等等。 对遗传算法的二进制编码,整数编码,实数编码,整数序列编码(用于求解TSP等),粒子群算法的各种拓扑结构,以及两种算法的参数各种更新方式均有实现,并提供接口供使用者实现新的改进方式并整合入框架进行试验。 其中还包括对PSO进行离散化的支持接口,自己的设计一种离散PSO方法及其用以求解01背包问题的实现样例。 欢迎参考并提出宝贵意见,特别欢迎愿意协同更新修补代码的朋友(邮箱starffly@foxmail.com)。 代码已作为lakeast项目托管在Google Code: http://code.google.com/p/lakeast http://code.google.com/p/lakeast/downloads/list 某些类的功能说明: org.lakest.common中: BoundaryType定义了一个枚举,表示变量超出约束范围时为恢复到约束范围所采用的处理方式,分别是NONE(不处理),WRAP(加减若干整数个区间长度),BOUNCE(超出部分向区间内部折叠),STICK(取超出方向的最大限定值)。 Constraint定义了一个代表变量约束范围的类。 Functions定义了一系列基准函数的具体实现以供其他类统一调用。 InitializeException定义了一个代表程序初始化出现错误的异常类。 Randoms类的各个静态方法用以产生各种类型的随机数以及随机序列的快速产生。 Range类的实现了用以判断变量是否超出约束范围以及将超出约束范围的变量根据一定原则修补到约束范围的方法。 ToStringBuffer是一个将数组转换为其字符串表示的类。 org.lakeast.ga.skeleton中: AbstractChromosome定义了染色体的公共方法。 AbstractDomain是定义问题域有关的计算与参数的抽象类。 AbstractFactorGenerator定义产生交叉概率变异概率的共同方法。 BinaryChromosome是采用二进制编码的染色体的具体实现类。 ConstantFactorGenerator是一个把交叉概率变异概率定义为常量的参数产生器。 ConstraintSet用于在计算过程中保存获取应用问题的各个维度的约束。 Domain是遗传算法求解中所有问题域必须实现的接口。 EncodingType是一个表明染色体编码类型的枚举,包括BINARY(二进制),REAL(实数),INTEGER(整型)。 Factor是交叉概率变异概率的封装。 IFactorGenerator参数产生器的公共接口。 Population定义了染色体种群的行为,包括种群的迭代,轮盘赌选择交叉以及最优个体的保存。 org.lakeast.ga.chromosome中: BinaryChromosome二进制编码染色体实现。 IntegerChromosome整数编码染色体实现。 RealChromosome实数编码染色体实现。 SequenceIntegerChromosome整数序列染色体实现。 org.lakeast.pso.skeleton中: AbstractDomain提供一个接口,将粒子的位置向量解释到离散空间,同时不干扰粒子的更新方式。 AbstractFactorGenerator是PSO中参数产生器的公共抽象类。 AbstractParticle定义了PSO种群中粒子的基本行为,最主要是实现了如何根据现有位置计算得到下一代粒子的位置的合法值。 ConstraintSet用于在粒子迭代过程中保存获取应用问题的各个维度的约束。 AbstractSwarm.java各种拓扑结构的PSO种群的抽象父类,主要实现了种群迭代过程中计算流程的定义以及中间数据被如何输出到测试工具类。 Domain是PSO算法求解中所有问题域必须实现的接口。 DynamicFatorGenerator若种群在迭代过程中,w,c1,c2随迭代次数发生变化,那么它们的产生器需要继承这个抽象类。 Factor封装了w,c1,c2三个参数的字面值。 Location用于保存获取迭代中粒子的位置速度向量的数值。 NeighborhoodBestParticle定义了采用邻域版本的PSO算法的具体实现。主要是实现了如何根据邻域版本的PSO算法计算下一迭代中的粒子速度。 RingTopoSwarm定义环拓扑结构的具体实现,主要是定义了如何获取粒子的邻域粒子的方法。 StaticTopoSwarm静态拓扑结构的PSO算法的抽象父类。 org.lakeast.pso.swarm中包含粒子群拓扑结构的各种实现,基本见名知意。 对各种问题的求解样例位于org.lakeast.main包中,以...TaskTest结尾,基本见名知意。 以ShafferF6DomainTaskTes对ShafferF6函数进行求解(采用的是PSO,遗传算法样例参见TSPValueTaskTest)为例说明求解过程如下: 1. 入口函数位于org.lakeast.main.ShafferF6DomainTaskTest中,go函数执行。 2. 在go函数中,首先指定迭代次数(numberOfIterations),测试多少轮(testCount,多次运行以得到平均达优值),种群大小(popSize),邻域大小(neighborhoodSize),迭代结束条件(exitCondition,由于制定了迭代次数,所以设定为[0,0],也就是只有达到指定迭代次数才退出)。 3. 以testCount,numberOfIterations以及迭代结束条件exitCondition为参数构建TestBatch类的实例batch。这个类用来进行管理参与测试的各种具体算法,且把数据结果按指定的格式输出为Excel文件。 4. 指定PSO中的因子产生方法,采用ExponentFactorGeneratorConstrictFactorGenerator两种方式(实现位于org.lakeast.pso.gen包)。 5. Y表示参与测试的算法数目。 6. Testable是所有可以被TestBatch测试的类需要实现的接口,以提供TestBatch生成结果Excel文件所需要的数据。 7. Domain接口是所有可以被算法解决的问题所需要实现的接口,比如说明该问题所需要的粒子位置约束范围,速度约束范围,以及适值评估的公司等。这里的Domain被实例化为ShafferF6Domain,也就是按照ShafferF6函数评估适值。 8. RingTopoSwarm是用来封装环拓扑邻域结构的类,NeighboordBestParticle是配合该类来实现按邻域最优更新速度而不是全局最优来更新。 9. 各个测试算法都被加入到TestBatch以后,batch.run()开始执行算法比较过程并输出结果Excel文件到C盘根目录(输出路径可在Testable接口中配置,除了生成Excel文件外,还可以通过修改log4j.properties在制定的位置产生运行结果日志)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值