数学建模——智能优化之粒子群模型详解Python代码

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3Ddef fit_fun(x):  # 适应函数return sum(100.0 * (x[0][1:] - x[0][:-1] ** 2.0) ** 2.0 + (1 - x[0][:-1]) ** 2.0)class Particle:# 初始化def __init__(self, x_max, max_vel, dim):self.__pos = np.random.uniform(-x_max, x_max, (1, dim))  # 粒子的位置self.__vel = np.random.uniform(-max_vel, max_vel, (1, dim))  # 粒子的速度self.__bestPos = np.zeros((1, dim))  # 粒子最好的位置self.__fitnessValue = fit_fun(self.__pos)  # 适应度函数值def set_pos(self, value):self.__pos = valuedef get_pos(self):return self.__posdef set_best_pos(self, value):self.__bestPos = valuedef get_best_pos(self):return self.__bestPosdef set_vel(self, value):self.__vel = valuedef get_vel(self):return self.__veldef set_fitness_value(self, value):self.__fitnessValue = valuedef get_fitness_value(self):return self.__fitnessValueclass PSO:def __init__(self, dim, size, iter_num, x_max, max_vel, tol, best_fitness_value=float('Inf'), C1=2, C2=2, W=1):self.C1 = C1self.C2 = C2self.W = Wself.dim = dim  # 粒子的维度self.size = size  # 粒子个数self.iter_num = iter_num  # 迭代次数self.x_max = x_maxself.max_vel = max_vel  # 粒子最大速度self.tol = tol  # 截至条件self.best_fitness_value = best_fitness_valueself.best_position = np.zeros((1, dim))  # 种群最优位置self.fitness_val_list = []  # 每次迭代最优适应值# 对种群进行初始化self.Particle_list = [Particle(self.x_max, self.max_vel, self.dim) for i in range(self.size)]def set_bestFitnessValue(self, value):self.best_fitness_value = valuedef get_bestFitnessValue(self):return self.best_fitness_valuedef set_bestPosition(self, value):self.best_position = valuedef get_bestPosition(self):return self.best_position# 更新速度def update_vel(self, part):vel_value = self.W * part.get_vel() + self.C1 * np.random.rand() * (part.get_best_pos() - part.get_pos()) \+ self.C2 * np.random.rand() * (self.get_bestPosition() - part.get_pos())vel_value[vel_value > self.max_vel] = self.max_velvel_value[vel_value < -self.max_vel] = -self.max_velpart.set_vel(vel_value)# 更新位置def update_pos(self, part):pos_value = part.get_pos() + part.get_vel()part.set_pos(pos_value)value = fit_fun(part.get_pos())if value < part.get_fitness_value():part.set_fitness_value(value)part.set_best_pos(pos_value)if value < self.get_bestFitnessValue():self.set_bestFitnessValue(value)self.set_bestPosition(pos_value)def update_ndim(self):for i in range(self.iter_num):for part in self.Particle_list:self.update_vel(part)  # 更新速度self.update_pos(part)  # 更新位置self.fitness_val_list.append(self.get_bestFitnessValue())  # 每次迭代完把当前的最优适应度存到列表print('第{}次最佳适应值为{}'.format(i, self.get_bestFitnessValue()))if self.get_bestFitnessValue() < self.tol:breakreturn self.fitness_val_list, self.get_bestPosition()if __name__ == '__main__':# test 香蕉函数pso = PSO(4, 5, 10000, 30, 60, 1e-4, C1=2, C2=2, W=1)fit_var_list, best_pos = pso.update_ndim()print("最优位置:" + str(best_pos))print("最优解:" + str(fit_var_list[-1]))plt.plot(range(len(fit_var_list)), fit_var_list, alpha=0.5)

数学建模——智能优化之粒子群模型详解Python代码相关推荐

  1. 数学建模——一维、二维插值模型详解Python代码

    数学建模--一维.二维插值模型详解Python代码 一.一维插值 # -*-coding:utf-8 -*- import numpy as np from scipy import interpol ...

  2. 数学建模——智能优化之模拟退火模型详解Python代码

    数学建模--智能优化之模拟退火模型详解Python代码 #本功能实现最小值的求解#from matplotlib import pyplot as plt import numpy as np imp ...

  3. 数学建模——支持向量机模型详解Python代码

    数学建模--支持向量机模型详解Python代码 from numpy import * import random import matplotlib.pyplot as plt import num ...

  4. 数学建模——线性规划模型详解Python代码

    数学建模--线性规划模型详解Python代码 标准形式为: min z=2X1+3X2+x s.t x1+4x2+2x3>=8 3x1+2x2>=6 x1,x2,x3>=0 上述线性 ...

  5. 数学建模_随机森林分类模型详解Python代码

    数学建模_随机森林分类模型详解Python代码 随机森林需要调整的参数有: (1) 决策树的个数 (2) 特征属性的个数 (3) 递归次数(即决策树的深度)''' from numpy import ...

  6. 智能优化算法——粒子群算法原理(附代码)

    目录 基本概念 算法实现 粒子群算法的构成要素分析 C++程序测试Sphere函数 总结 visual studio2017c++源代码 源文件下载地址 基本概念 粒子群优化算法(particle s ...

  7. 【自然语言处理】Word2Vec 词向量模型详解 + Python代码实战

    文章目录 一.词向量引入 二.词向量模型 三.训练数据构建 四.不同模型对比 4.1 CBOW 4.2 Skip-gram 模型 4.3 CBOW 和 Skip-gram 对比 五.词向量训练过程 5 ...

  8. 【学习笔记】【算法】【智能优化】粒子群优化(PSO)

    [学习笔记][算法][智能优化]粒子群优化(PSO) 文章目录 [学习笔记][算法][智能优化]粒子群优化(PSO) 1 算法背景 1.1 背景 1.2 基础知识 2 算法原理 2.1 基本原理 2. ...

  9. 数学建模——智能优化之遗传算法详解Python代码

    数学建模--智能优化之遗传算法详解Python代码 import numpy as np import matplotlib.pyplot as plt from matplotlib import ...

最新文章

  1. Mysqldump备份和恢复
  2. 看图识物_看图识物:下面图里是什么植物呢?请朋友们评论区留言
  3. 我,35岁,程序员,华为工作10年,上个月公司说不再续约
  4. MyEclipse 10, 2013, 2014 破解、注册码
  5. android 多媒体文件信息,Android如何获取多媒体文件信息
  6. 微服务和数据库到底是什么关系?
  7. your ps needs to be repaired_同一张人像照片,25 个国家的PS后!!!
  8. centos7下给bond网卡配置bridge桥接
  9. javaIO流-IO基础知识指南
  10. 计算机网络-UDP和TCP套接字编程
  11. chrome 浏览器中印象笔记·剪藏插件无法登陆问题
  12. 2021年7月最新iOS面试题总结(答案篇)
  13. IDEA 关于两个分支代码合并的操作
  14. 如何先梳理业务逻辑再写代码
  15. hx711c语言程序,STM32写的HX711程序
  16. java 文字转换成语音 代码_java文字转语音播报功能的实现方法
  17. 配置SQLServer允许远程连接
  18. 具有可视化的功能的一款开源软件Gource
  19. 2023年医疗器械维修培训计划
  20. 发布在即,全新 EMQX v5.0 抢先看

热门文章

  1. h5中的结构元素header、nav、article、aside、section、footer详解
  2. 用java写游戏_用java写的扫雷游戏
  3. javafx 安装_JDK安装教程及环境配置
  4. 四部门发文!坚决避免数据中心盲目无序发展
  5. 数据中心基础设施:建设与设计
  6. dcdc模块降额设计_模块电源应用设计的可靠性和注意事项
  7. ML之catboost:基于自定义数据集利用catboost 算法实现回归预测(训练采用CPU和GPU两种方式)
  8. ML之回归预测:利用Lasso、ElasticNet、GBDT等算法构建集成学习算法AvgModelsR对国内某平台上海2020年6月份房价数据集【12+1】进行回归预测(模型评估、模型推理)
  9. Paper:《Graph Neural Networks: A Review of Methods and Applications》翻译与解读
  10. MAT之ELM:ELM实现鸢尾花(iris数据集)种类测试集预测识别正确率(better)结果对比