当前位置: 首页 > news >正文

基于粒子群优化算法的的微电网多目标优化调度----算法改进

前言:

        当阅读过前一篇我的博客之后,并且认真去读懂了那篇文章末尾的代码,那么,后续的算法改进对于你来说应当是很容易的了。前文中提及过,粒子群在进行迭代时,每迭代一次,都会根据自己个体最优值,全局最优值,自身惯性三个因子,来决定粒子下一次的飞行方向。传统的粒子群算法为什么是传统,就是他这三个因子,都是保持的一个常数值,缺乏适应性,这也就是为什么需要进行改进粒子群算法。

本文的目标:

1.解释如何对传统粒子群优化进行简单改进,与第一篇文章结果进行对比;

2.通过改变粒子群中粒子的数量,存档库的大小,迭代次数,观察算法效果。

基础知识:

1.传统型粒子群算法更新粒子的方式-------请看下面这篇博文,讲解十分精炼(基于Python实现)粒子群算法(Particle Swarm Optimization)超详细解析+入门代码实例讲解-CSDN博客

先看上边这个公式1(红圈),表示第n个粒子,在k+1次迭代时候的位置=第k次迭代时的位置+即将移动的速度(第k+1次的移动速度)。需要注意,粒子的位置使用一组数值来表示的,速度是对粒子位置进行增减,也是和前者尺寸长度相同的一组数值。所以,粒子的位置实际上就是代表问题的一组解。下面这个公式2(红圈)是在计算k+1次时候的速度,这个速度由粒子自身惯性(鸟飞行时的惯性)、个体最优值(这只鸟自己飞行时候遇见的最佳历史值)、群体最优值(整个鸟群飞行时候遇见的最佳历史值)共同决定。w'是粒子本身惯性权重因子,c1'和c2'是学习因子,r1'和r2'是分布在[0,1]区间内的随机数。以上w',c1',c2'都是保持一个恒定值,这样子求解容易出现局部最优解的情况,无法探索更大的空间。---------------传统型PSO的特点,恒定值导致的定步长,使得搜索成本增加,且不一定能够搜索到最优(这一点可以去哔哩哔哩上看动画演示)

2.粒子群群里粒子的数量越多,也就是每次参与寻找食物的鸟的数量越多,在同样的迭代次数下,寻找到全局最优的可能性越大,而且更加趋于收敛。在粒子群群里粒子数量一定的情况下,延长迭代次数,也可以达到寻找全局最优的效果,但是收敛的时间可能会比较漫长。毫无疑问,更大的粒子数量和迭代次数,都会导致搜索时间成本的增加,所以需要慎重选择二者间的平衡。

3.改进后的粒子群算法更新粒子方式---------------------将定步长修改为变步长

大致意思就是:在开始迭代的时候,粒子的迭代策略更加注重自身的最优解,以达到增大全局探索能力的目的。迭代次数过半的时候,开始逐渐将重点放在全局最优解,寻求一个稳定的收敛。

改进后的粒子群算法更新方式如下:

只对原来的恒定值做了更新,让其随着迭代次数的逐渐增加而C1数值逐渐减小,C2逐渐增大。

IT 是当前迭代次数; MI 是总迭代次数; w s 和 w e 是惯性权重因子的初始值和终止值。在迭代
初期,较大的 w 使算法不宜陷入局部极小值,便 于全局搜索[14] 。在迭代后期,较小的 w 有利于局 部搜索,有利于算法的收敛;c 1s c 1e c 1 的初 始值和停止值,c 1s 大于 c 1e c 2s c 2e 是的初始值和停止值,c 2s 小于 c 2e 。在迭代初期,大 c 1 和小 c 2 使粒子具有较好的自学习能力和较差的社会学 习能力,有利于全局搜索。在迭代后期,小 c 1 和 大 c 2 使粒子具有较强的社会学习能力和较差的自 学习能力,有利于算法的收敛。

代码实现:

定义了两个匿名函数w和pm用于对原来恒定常数值的动态更新。
这里使用了一个Matlab的语法,wc=w(it),和pc=pm(it),调用了两个匿名函数,使用w(it)就能调用66行定义的函数公式。这样在每一次群体迭代过程中,都会先计算一下本次迭代的最新权重系数值,然后再针对每个粒子去更新位置。这样更加保证搜索到全局最优(可以多次实验记录一下)
其余部分和传统型粒子群算法完全一样。

调整迭代次数和粒子个数

设置迭代次数为200,粒子个数为500,存档库的大小为500,点击运行代码即可。最直观的感受是,单次运算速度相比之前(迭代次数100,粒子个数100,存档库100)慢了很多,在视图上可以看见更多的粒子在动态搜索。下图为最新粒子个数

下面这个是迭代次数设置为100,粒子个数为100时候的对比

能够很明显看到,粒子数为500时候对应的界面更加密集。

改进粒子群算法代码如下:

链接:https://pan.baidu.com/s/1LmaxCCHlg-HhtaYZThoi9Q 
提取码:3333

搭配复现的论文PDF:

链接:https://pan.baidu.com/s/1tbuboB1sI6wIzMlkZdK7iw 
提取码:2222

暂时先告一段落啦,休息一会儿。

相关文章:

基于粒子群优化算法的的微电网多目标优化调度----算法改进

前言: 当阅读过前一篇我的博客之后,并且认真去读懂了那篇文章末尾的代码,那么,后续的算法改进对于你来说应当是很容易的了。前文中提及过,粒子群在进行迭代时,每迭代一次,都会根据自己个体最优值…...

计算机网络 —— 网络层 (路由协议)

计算机网络 —— 网络层 (路由协议) 什么是路由协议内部网关协议RIP关键特性 OSPF主要特点 外部网关协议BGP关键特性 我们今天来看路由协议: 什么是路由协议 路由协议是网络设备(主要是路由器)用来决定数据包在网络中…...

HCIA 15 AC+FIT AP结构WLAN基础网络

本例配置ACFIT,即瘦APAC组网。生活中家庭上网路由器是胖AP,相当于ACFIT二合一集成到一个设备上。 1.实验介绍及拓扑 某企业网络需要用户通过 WLAN 接入网络,以满足移动办公的最基本需求。 1. AC 采用旁挂核心组网方式,AC 与AP …...

给Windows软件添加异常捕获模块生成dump文件(附源码)

软件在运行过程中会时常发生内存越界、内存访问为例、stack overflow线程栈溢出、空指针与野指针等异常崩溃,仅仅是依靠Debug和Release下的调试是远远不够的,因为有些崩溃不是必现的,或者是Debug下很难出现的。所以我们需要在软件中添加异常捕获的模块,在捕获到异常时生成包…...

C语言| 数组

直接定义一个数组&#xff0c;并给所有元素赋值。 数组的下标从0开始&#xff0c;下标又表示数组的长度。 【程序代码】 #include <stdio.h> int main(void) { int a[5] {1, 2, 3, 4, 5}; int i; for(i0; i<5; i) { printf("a[%d] %d\…...

upload-labs第八关教程

upload-labs第八关教程 一、源代码分析代码审计 二、绕过分析点绕过上传eval.php使用burp suite进行抓包修改放包&#xff0c;查看是否上传成功使用中国蚁剑进行连接 一、源代码分析 代码审计 $is_upload false; $msg null; if (isset($_POST[submit])) {if (file_exists(U…...

平板消解加热台-温度均匀,防腐蚀-实验室化学分析

DBF系列防腐电热板 是精致路合金加热板块表面经进口高纯实验级PFATeflon氟塑料防腐不粘处理&#xff0c;专为实验室设计的电加热产品&#xff0c;是样品前处理中&#xff0c;加热、消解、煮沸、蒸酸、赶酸等处理的得力助手。可以满足物理、化学、生物、环保、制药、食品、饮品…...

Ubuntu基础-vim编辑器

目录 前言: 一. 安装 二. 配置 三. 基本使用 1.使用 Vim 编辑文本文件 2.代码编辑 3.多窗口编辑 四. 总结 前言: Vim 是从 VI 发展出来的一个文本编辑器&#xff0c;具有代码补充、错误跳转等功能&#xff0c;在程序员中被广泛使用。它的设计理念是命令的组合&#xff…...

Java 网站开发入门指南:如何用java写一个网站

Java 网站开发入门指南&#xff1a;如何用java写一个网站 Java 作为一门强大的编程语言&#xff0c;在网站开发领域也占据着重要地位。虽然现在 Python、JavaScript 等语言在网站开发中越来越流行&#xff0c;但 Java 凭借其稳定性、可扩展性和丰富的生态系统&#xff0c;仍然…...

Armbian OS(基于ubuntu24) 源码编译mysql 5.7

最近弄了个S905X3的盒子刷完Armbian OS &#xff08;基于ubuntu24&#xff09;&#xff0c;开始折腾Arm64之旅。第一站就遇到了MySQL的问题&#xff0c;由于MySQL没有提供Arm64版本&#xff0c;又不想塞Docker镜像&#xff0c;因此选择源码来编译MySQL5.7。下面记录详细过程和遇…...

React+TS前台项目实战(六)-- 全局常用组件Button封装

文章目录 前言Button组件1. 功能分析2. 代码注释说明3. 使用方式4. 效果展示&#xff08;1&#xff09;有加载动画&#xff0c;执行promise函数&#xff08;2&#xff09;无加载动画&#xff0c;执行click事件 总结 前言 今天这篇主要讲全局按钮组件封装&#xff0c;可根据UI设…...

Vite支持的React项目使用SASS指南

前言 在现代前端开发中&#xff0c;SASS是一种广受欢迎的CSS扩展语言&#xff0c;它提供了许多实用功能&#xff0c;如变量、嵌套、部分和混合等。 本教程将指导您在一个使用Vite作为构建工具的React项目中如何配置和使用SASS。 使用步骤 1、创建一个Vite React项目 首先确…...

实验12 路由重分布

实验12 路由重分布 一、 原理描述二、 实验目的三、 实验内容四、 实验配置五、 实验步骤 一、 原理描述 在大型网络的组建过程中&#xff0c;隶属不同机构的网络部分往往会根据自身的实际情况来选用路由协议。例如&#xff0c;有些网络规模很小&#xff0c;为了管理简单&…...

version-manager最好用的SDK版本管理器,v0.6.2发布

项目地址&#xff1a;https://github.com/gvcgo/version-manager 中文文档&#xff1a;https://gvcgo.github.io/vdocs/#/zh-cn/introduction 功能特点&#xff1a; 跨平台&#xff0c;支持Windows&#xff0c;Linux&#xff0c;MacOS支持多种语言和工具&#xff0c;省心受到…...

MFC工控项目实例之三theApp变量传递对话框参数

承接专栏《MFC工控项目实例之二主菜单制作》 用theApp变量传递对话框参数实时改变iPlotX坐标轴最小值、最大值。 1、新建IDD_SYS_DATA对话框&#xff0c;类名SYS_DATA。 三个编辑框IDC_EDIT1、IDC_EDIT2、IDC_EDIT3变量如图 2、SEAL_PRESSURE.h中添加代码 #include "re…...

C# OpenCvSharp 图像处理函数-图像拼接-hconcat、vconcat、Stitcher

在图像处理和计算机视觉领域,图像拼接是一个常见的操作。OpenCvSharp是一个用于.NET平台的OpenCV封装库,可以方便地进行图像处理。本文将详细介绍如何使用OpenCvSharp中的hconcat、vconcat函数以及Stitcher类进行图像拼接,并通过具体示例帮助读者理解和掌握这些知识点。 函…...

软件方案评审与模块优化:从FOC模块出发的电控平台建设

一、背景 洞悉模块发展趋势&#xff0c;定制行业应用特点&#xff0c;明确优化方向与阶段性目标 随着科技进步的飞速发展&#xff0c;模块化设计已成为众多行业产品开发的核心理念。无论是软件系统、硬件组件&#xff0c;还是复杂系统中的功能模块&#xff0c;都需要对其发展…...

emoji_call_read

这道题我觉得可以记录一下。 主要函数&#xff0c;一样&#xff0c;先考虑怎么泄露libc基址。 但&#xff0c;0x20实在太小&#xff0c;组成不了连续3个ret syscall。 而且文件中也没pop rdi;ret这个gadget&#xff0c;只能另寻他法。 我们注意到&#xff1a; main函数中的这…...

一键自动粘贴,高效处理邮箱地址,让你的工作效率翻倍提升!

在信息爆炸的时代&#xff0c;邮箱地址已成为我们日常工作和生活中的必备元素。无论是商务沟通、报名注册还是信息传递&#xff0c;邮箱地址都扮演着至关重要的角色。然而&#xff0c;手动复制粘贴邮箱地址的繁琐操作往往让人头疼不已&#xff0c;不仅效率低下&#xff0c;还容…...

【Java】Java 使用 Graphics2D 在图片上添加文字,并解决图片变红问题

文章目录 【Java】Java 使用 Graphics2D 在图片上添加文字&#xff0c;并解决图片变红问题完整案例 【Java】Java 使用 Graphics2D 在图片上添加文字&#xff0c;并解决图片变红问题 完整案例 public static void main(String[] args) {try {String filePath "D:\\Works…...

淘金币自动化脚本:3分钟完成淘宝全任务,每天节省20分钟

淘金币自动化脚本&#xff1a;3分钟完成淘宝全任务&#xff0c;每天节省20分钟 【免费下载链接】taojinbi 淘宝淘金币自动执行脚本&#xff0c;包含蚂蚁森林收取能量&#xff0c;芭芭农场全任务&#xff0c;解放你的双手 项目地址: https://gitcode.com/gh_mirrors/ta/taojin…...

喜马拉雅音频本地化实战:绕过xm格式,直接获取mp3文件的两种方法对比

喜马拉雅音频本地化实战&#xff1a;两种高效获取MP3文件的技术方案深度评测 作为国内领先的音频分享平台&#xff0c;喜马拉雅拥有海量优质内容&#xff0c;但其特有的XM格式却给用户跨平台使用带来了困扰。许多技术爱好者尝试过各种转换工具&#xff0c;却发现市面上几乎没有…...

【JVM】面试题-有哪些垃圾回收器

【JVM】面试题-有哪些垃圾回收器 在JVM的内存管理中&#xff0c;垃圾收集算法是内存回收的核心逻辑与方法论&#xff0c;而垃圾收集器则是将这套方法论落地实现的具体工具。 不同的垃圾收集器针对JVM堆的不同分代&#xff08;新生代、老年代&#xff09;设计&#xff0c;具备不…...

网站国产化改造怎么做?深度解读国产化替代路径与CMS推荐

在近年来科技领域的舆论场中&#xff0c;“国产化”无疑是出现频率最高的关键词之一。从芯片到操作系统&#xff0c;从数据库到办公软件&#xff0c;再到企业对外展示的门户——网站&#xff0c;国产化替代已从“可选项”变成了很多行业的“必答题”。但国产化仅仅是“换个牌子…...

AI模型Docker镜像构建指南:从环境封装到生产部署

1. 项目概述&#xff1a;一个AI模型镜像的诞生与价值最近在开发者社区里&#xff0c;看到不少朋友在讨论一个名为xianyu110/claude4.5的镜像。乍一看这个标题&#xff0c;很多刚接触的朋友可能会有点懵&#xff1a;这到底是啥&#xff1f;是一个新的开源项目&#xff0c;还是一…...

MagiskBoot:Android启动镜像解构与重构引擎深度解析

MagiskBoot&#xff1a;Android启动镜像解构与重构引擎深度解析 【免费下载链接】Magisk The Magic Mask for Android 项目地址: https://gitcode.com/GitHub_Trending/ma/Magisk MagiskBoot作为Magisk生态系统的核心组件&#xff0c;专门负责Android启动镜像的多格式解…...

ROS2导航SLAM建图实战:从Gazebo仿真到真实地图构建

1. 环境准备与基础配置 第一次接触ROS2导航和SLAM建图的朋友可能会觉得配置环境很复杂&#xff0c;其实只要跟着步骤一步步来&#xff0c;半小时就能搞定。我用的是一台装了Ubuntu 20.04的笔记本&#xff0c;ROS2版本选择Foxy&#xff0c;这个组合最稳定。记得先更新系统&#…...

EdgeDB监控告警:生产环境运维监控体系构建终极指南

EdgeDB监控告警&#xff1a;生产环境运维监控体系构建终极指南 【免费下载链接】edgedb Gel supercharges Postgres with a modern data model, graph queries, Auth & AI solutions, and much more. 项目地址: https://gitcode.com/gh_mirrors/ed/edgedb EdgeDB是一…...

WeChatMsg:如何用开源工具构建你的个人数字记忆库

WeChatMsg&#xff1a;如何用开源工具构建你的个人数字记忆库 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg…...

从数据模型到领域驱动设计:数据库抽象与微服务实践的演进

在软件开发的漫长历史中,如何有效地对现实世界进行建模,始终是核心挑战之一。从早期的层次数据库到当今的微服务架构,数据模型作为连接业务需求与技术实现的桥梁,经历了深刻的演变。本文基于对概念数据模型、基本数据模型和面向对象模型的系统探讨,进一步延伸到领域驱动设…...