【更新】一次“问题反馈”,下定决心做了多约束多目标智能算法的“模板”

目录

1 主要内容

2 部分代码

3 程序结果

4 下载链接


主要内容

关注该代码的同学应该清楚,这个代码已经免费更新了两版了,修复和增加了一些约束内容,本次增加蓄电池初始时刻和终止时刻容量一致约束,可别小瞧这么简单的增加约束,相当于蓄电池除了有出力约束、soc约束外,又增加了一个约束,在增加该约束的过程中,会出现出力越限、等式约束偏差大等问题,本次更新的代码完全实现了该部分功能。

(之前购买该代码的同学可补差价获取

之前发布代码的内容介绍如下:

之前分享的程序【勘误】基于多目标粒子群算法的微电网优化调度【风光、储能、柴油、燃气、电网交互】对多目标粒子群算法中出现的功率不平衡问题进行了勘误,有个同学购买程序后反馈约束部分和原程序存在偏差,对联络线功率部分约束进行了“阉割”,导致虽然功率平衡条件满足了,但是自己修改代码过程中对新增约束部分仍然茫然。

上面的问题确实存在,勘误的程序代码将联络线功率作为平衡项,没有为其增加约束。就像我们在计算潮流计算过程中,需要通过“平衡节点”来达到功率平衡一样,这里需要有个“桥梁”来实现功率平衡条件,一般都通过联络线功率作为这个“桥梁”,回到这个问题本身,有没有可能给这个“桥梁”增加约束呢?答案是肯定的。

为了更好的让大家了解多约束多目标智能算法优化机理,方便大家修改代码,我决定做一个“模板”,具体完善内容有一下几点:

1.利用好“可行状态”标志,在目标函数子程序(fitness)中集中将爬坡约束、soc约束、联络线功率约束等做成模板形式,只要是增加/修改约束,就在这部分按照同样的格式就轻松搞定。
2.固化无需修改的子函数,由于程序涉及到多个子函数,而且采用结构变量形式,调试难度比较大,因此,对这些子程序进行完善固化,只需要了解每个模块的功能即可,无需进行修改。

程序已经上传至原链接,之前付款的同学可以免费下载!

部分代码

function [REP]= mopso(c,iw,max_iter,lower_bound,upper_bound,swarm_size,rep_size,grid_size,alpha,beta,gamma,mu,problem)
%mopso 是多目标粒子群优化的实现
% 最小化问题的技术
%% 初始化参数
global PV;
global WT;
%蓄电池最大放电功率(正表示为电负荷供电,即放电)
BESSMax_dischar=30;
%蓄电池最大充电功率
BESSMax_char=-30;
%柴油机最大发电功率
DEMax=30;
%柴油机最小发电功率
DEMin=6;
%燃气轮机最大发电功率
MTMax=30;
%燃气轮机最小发电功率
MTMin=3;
%主网交互最大功率(正表示为电负荷供电)
GridMax=30;
%主网交互最小功率
GridMin=-30;
%% 种群初始化
if nargin==0  %nargin是判断输入变量个数的函数c = [0.1,0.2]; % 加速因子iw = [0.5 0.001]; % 惯性因子max_iter =100; % 最大迭代次数%各设备出力约束for n=1:144 %粒子长度为144(光伏,风电,储能,柴油,燃气轮机,主网的6*24个小时出力)if n<25lower_bound(n)=0;upper_bound(n) =PV(n);endif n>24&&n<49lower_bound(n)=0;upper_bound(n) =WT(n-24);endif n>48&&n<73lower_bound(n)=BESSMax_char;upper_bound(n) =BESSMax_dischar;endif n>72&&n<97lower_bound(n)=DEMin;upper_bound(n) =DEMax;endif n>96&&n<121lower_bound(n)=MTMin;upper_bound(n) =MTMax;endif n>120lower_bound(n)=GridMin;upper_bound(n) =GridMax;endendswarm_size=100; % 种群个数rep_size=100; % 存档库大小grid_size=7; % 每个维度的网格数alpha=0.1; % 通货膨胀率beta=2; % 领导人选择压力gamma=2; % 删除选择压力mu=0.1; % 变异速率problem=@prob; % 创建函数句柄为problem,函数为pro,可以简单理解为调用
end
%% 初始化粒子
fprintf('初始化种群中\n')
w = @(it) ((max_iter - it) - (iw(1) - iw(2)))/max_iter + iw(2); %更新惯性因子--改进粒子群算法
pm = @(it) (1-(it-1)/(max_iter-1))^(1/mu); %类比遗传算法引入变异操作,更新变异速率,在particle函数的78-84行
swarm(1,swarm_size) = Particle(); %调用Particle函数,从obj中得到swarm_size
for i = 1:swarm_sizeswarm(i)=Particle(lower_bound,upper_bound,problem);%调用Particle函数retry = 0;while swarm(i).infeasablity > 0 && retry < 100 %循环条件为:无不可行解且次数低于100swarm(i)=Particle(lower_bound,upper_bound,problem);%调用Particle函数retry = retry + 1;end
end

程序结果

4 下载链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/18801.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工控一体机10.1寸显示器电容触摸屏(YA05WK)产品规格说明书

如果您对工控一体机有任何疑问或需求&#xff0c;或者对如何集成工控一体机到您的业务感兴趣&#xff0c;可移步控芯捷科技。 一、硬件功能介绍 YA05WK是我公司推出的一款新型安卓屏&#xff0c;4核Cortex-A7 架构&#xff0c;主频1.2GHz的CPU。采用12V供电&#xff0c;标配5寸…

2024.05.13 校招 实习 内推 面经

绿*泡*泡VX&#xff1a; neituijunsir 交流*裙 &#xff0c;内推/实习/校招汇总表格 1、实习 | 宁德新能源2025实习生招聘全面启动 实习 | 宁德新能源2025实习生招聘全面启动 2、实习 | 中国工业和信息化部电子第五研究所- 2025届薪火计划OFFER快捷通道正式开启 实习 | 中…

深入理解深度学习中的激活层:Sigmoid和Softmax作为非终结层的应用

深入理解深度学习中的激活层&#xff1a;Sigmoid和Softmax作为非终结层的应用Sigmoid 和 Softmax 激活函数简介Sigmoid函数Softmax函数 Sigmoid 和 Softmax 作为非终结层多任务学习特征变换增加网络的非线性实际案例 注意事项结论 深入理解深度学习中的激活层&#xff1a;Sigmo…

云联网驱动的全球智能网络

在当今这个全球一体化加速的时代&#xff0c;企业网络的边界正被无限扩展&#xff0c;跨国运营、多云环境和远程工作模式已经成为常态。中国联通依托其强大的全球网络资源&#xff0c;推出了以云联网为核心技术的全球化智能组网方案&#xff0c;旨在为全球企业提供前所未有的灵…

什么是DELINS交货指示?

DELINS 是指 Delivery Instruction&#xff08;交货指示&#xff09;报文&#xff0c;用于在供应链管理中传递交货指令和相关信息。该报文用于在供应链中的不同合作伙伴之间交换关于交货的详细信息。 DELINS 报文的主要功能 交货指示&#xff1a;传达具体的交货指令&#xff…

如何评价GPT-4o

对比分析&#xff1a;GPT-4o与GPT-4 在人工智能领域的浪潮中&#xff0c;OpenAI的GPT系列模型一直是备受瞩目的焦点。GPT-4o作为GPT系列的最新成员&#xff0c;相较于其前代GPT-4&#xff0c;无疑带来了许多值得关注的改进和变化。 首先&#xff0c;从版本更迭的角度来看&#…

【Python】 深入理解 Python 包管理器:pip vs conda

基本原理 在Python编程世界中&#xff0c;包管理器是一个不可或缺的工具。它帮助开发者安装、更新和管理Python库。目前&#xff0c;最流行的两个包管理器是pip和conda。了解它们之间的区别&#xff0c;对于Python开发者来说至关重要。 pip pip是Python的官方包管理器&#…

智慧农田视频监控技术应用:智能监管引领农业新时代

据新闻报道&#xff0c;5月24日合肥市公安局接到群众报警&#xff0c;反映自己辛苦种植的小麦有几十亩地被人偷偷用收割机盗割。公安机关迅速出警并立案侦查&#xff0c;通过查看监控视频得知&#xff0c;用户所在的公司租用了几千亩土地进行农业种植&#xff0c;因公司与村民之…

Day26

Day26 注解 什么是注解 java.annotation包Annotation是从JDK1.5开始引入的新技术&#xff0c;注解即可以对程序员解释又可以对程序解释 注解与注释的区别 注释&#xff1a;对程序员解释代码信息注解&#xff1a;对程序和程序员解释代码信息 注解的所用 不是程序本身&#xff0…

【C语言】9.C语言函数栈帧的创建和销毁

C语言函数栈帧的创建和销毁 看完本文你能了解什么? 局部变量是怎么创建的&#xff1f;为什么局部变量的值是随机值&#xff1f;函数是怎么传参的&#xff1f;传参的顺序是怎么样的&#xff1f;实参和形参是什么关系&#xff1f;函数调用是怎么做的&#xff1f;函数调用结束后怎…

LeetCode hot100-57-G

17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。不会&#xff0c;放IDEA里执行了一下大概理解了流程 …

『大模型笔记』KV缓存:Transformer中的内存使用!

『大模型笔记』KV缓存:Transformer中的内存使用! 文章目录 一. KV缓存:Transformer中的内存使用!1.1. 介绍1.2. 自注意力机制回顾1.3. KV 缓存的工作原理1.4. 内存使用和示例1.4.1. 存储键值缓存需要多少内存1.4.2. Example: OPT-30B(300亿参数)四. 参考文献进一步阅读:…

深圳比创达电子|EMC与EMI滤波器:电子设备的“电磁防护罩”

在电子科技日新月异的今天&#xff0c;电磁兼容性&#xff08;EMC&#xff09;问题越来越受到工程师和技术人员的关注。其中&#xff0c;电磁干扰&#xff08;EMI&#xff09;和电磁干扰抑制&#xff08;即EMI滤波器&#xff09;是实现良好EMC性能的关键技术之一。 一、EMC与E…

KineFX —— 简介

KineFX是绑定和动画的框架和工具集&#xff0c;可在SOP级别创建和编辑角色&#xff1b;可从头创建自己的KineFX角色&#xff0c;或使用特定的KineFX SOP和常规的SOP去编辑导入的角色和动画&#xff1b; 程序化绑定 KineFX构建与程序化绑定的原则上&#xff0c;可快速非破坏性迭…

AI绘画Stable Diffusion【艺术写真】:蒙版法图生图,局部重绘实现AI艺术写真

大家好&#xff0c;我是设计师阿威 之前我分享过几篇使用SD插件换脸方式实现AI写真的教程&#xff0c;主要存在2个大的问题。 &#xff08;1&#xff09;人脸相似度 &#xff08;2&#xff09;生成的图片整体色调有时候会比较怪异 对于上面的问题&#xff0c;在对图片质量要…

一些图形界面的工具可以帮助你模拟点击和进行其他浏览器自动化操作

1. Selenium IDE Selenium IDE 是一个用于记录、编辑和调试测试的集成开发环境。它有一个图形界面,允许你通过点击和录制来创建测试用例。它支持Chrome和Firefox浏览器。 安装和使用步骤: 在Chrome或Firefox的扩展商店中搜索“Selenium IDE”并安装。打开Selenium IDE扩展。…

每天写两道(二)LRU缓存、数组中最大的第k个元素

146.LRU 缓存 . - 力扣&#xff08;LeetCode&#xff09; 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存…

类中使用QtConcurrent::run

在QtConcurrent::run中调用类的成员函数时&#xff0c;你需要注意几个关键点&#xff1a; 对象生命周期&#xff1a;你需要确保在QtConcurrent::run调用的整个期间&#xff0c;类对象都是有效的。如果对象在成员函数执行期间被销毁&#xff0c;将会导致未定义行为。成员函数访…

在table表格中如何给tr的每一个子元素加haver效果

效果图&#xff1a; 核心代码&#xff1a; tbody tr :hover {background-color: #d5d5d5; } 改变子元素 tbody tr:hover {background-color: #d5d5d5; } 改变父元素 两段代码看起来一样&#xff0c;其实不一样&#xff0c;其中差了一个空格字符 希望可以帮到大家

多线程新手村3--多线程代码案例

1.1 单例模式 单例模式是设计模式中非常经典的一种。那么有同学肯定就会好奇了&#xff0c;什么是设计模式呢&#xff1f; 设计模式简单的说就是程序员的“棋谱”&#xff0c;我们下象棋时肯定或多或少都背过棋谱&#xff0c;例如当头炮、马后炮等&#xff0c;设计模式也是这…