基于多目标粒子群优化算法的冷热电联供型综合能源系统运行优化附Matlab代码

news2025/2/28 5:20:11

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测 雷达通信  无线传感器

信号处理 图像处理 路径规划 元胞自动机 无人机  电力系统

⛄ 内容介绍

为了解决现有冷热电联供型综合能源系统大多只单一考虑系统机组投资成本或系统环境污染,影响系统整体优化运行的问题,以系统经济性和环保性为目标,对冷热电联供系统进行研究分析。构建含燃气轮机、燃气锅炉、电制冷机等机组 的冷热电联供系统优化模型并建立约束条件。结果表明粒子群算法能够同时兼顾系统的经济性和环保性,使系统运行更加优化,为之后的能源供给系统的规划提供前期依据。

⛄ 部分代码

classdef Repository

    properties

        swarm

        rep_size

        Grid

        grid_size

        alpha

        beta

        gamma

    end

    

    methods

        function obj = Repository(swarm,rep_size,grid_size,alpha,beta,gamma)

            if nargin>0

                obj.rep_size = rep_size;

                swarm = Particle.updateDomination(swarm);

                obj.swarm = swarm(~[swarm.isDominated]);

                obj.grid_size=grid_size;

                obj.alpha=alpha;

                obj.beta = beta;

                obj.gamma = gamma;

                obj.Grid=obj.grid();

                for i = 1:length(obj.swarm)

                    obj.swarm(i) = obj.swarm(i).updateGridIndex(obj.Grid);

                end

            end

        end

        function Grid = grid(obj)

            C = vertcat(obj.swarm.cost);

            cmin = min(C,[],1);

            cmax = max(C,[],1);

            dc = cmax - cmin;

            cmin = cmin - obj.alpha * dc;

            cmax = cmax + obj.alpha * dc;

            nObj = size(C,2);

            empty_grid.LB = [];

            empty_grid.UB = [];

            Grid = repmat(empty_grid,nObj,1);

            for j = 1:nObj

                cj = linspace(cmin(j),cmax(j),obj.grid_size+1);

                Grid(j).LB = [-inf, cj];

                Grid(j).UB = [cj, +inf];

            end

        end

        function leader = SelectLeader(obj)

            GI = [obj.swarm.GridIndex];

            OC = unique(GI);

            N = zeros(size(OC));

            for k = 1:length(OC)

                N(k) = length(find(GI==OC(k)));

            end

            P = exp(-obj.beta*N);

            P = P/sum(P);

            sci = Repository.RouletteWheelSelection(P);

            sc = OC(sci);

            SCM = find(GI==sc);

            smi = randi([1 length(SCM)]);

            sm = SCM(smi);

            leader = obj.swarm(sm);

        end

        function obj = DeleteOneRepMemebr(obj)

            GI=[obj.swarm.GridIndex];

            OC=unique(GI);

            N=zeros(size(OC));

            for k=1:length(OC)

                N(k)=length(find(GI==OC(k)));

            end

            P=exp(obj.gamma*N);

            P=P/sum(P);

            sci=Repository.RouletteWheelSelection(P);

            sc=OC(sci);

            SCM=find(GI==sc);

            smi=randi([1 length(SCM)]);

            sm=SCM(smi);

            obj.swarm(sm)=[];

        end

        function obj = update(obj,swarm)

            swarm = Particle.updateDomination(swarm);

            obj.swarm = [obj.swarm,swarm(~[swarm.isDominated])];

            obj.swarm = Particle.updateDomination(obj.swarm);

            obj.swarm = obj.swarm(~[obj.swarm.isDominated]);

            obj.Grid=obj.grid();

            for i = 1:length(obj.swarm)

                obj.swarm(i) = obj.swarm(i).updateGridIndex(obj.Grid);

            end

            Extra=length(obj.swarm)-obj.rep_size;

            for e=1:Extra

                obj=obj.DeleteOneRepMemebr();

            end

        end

    end

    methods (Static)

        function i = RouletteWheelSelection(P)

            i = find(rand<=cumsum(P),1,'first');

        end

    end

end

⛄ 运行结果

⛄ 参考文献

[1]李海平, 齐卓砾, 胡君朋. 基于FFT-DBN的行星齿轮箱齿面磨损故障智能判定方法研究[J]. 测控技术, 2020, 39(12):6.

⛄ Matlab代码关注

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

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

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

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

相关文章

acm退役小记

本人大学是接近一本线的二本大学&#xff0c;目前能打的区域赛场基本打完了&#xff0c;桂林rank105和沈阳rank140是有两个区域赛铜。如果我是强校的话&#xff0c;也会说下只能拿废物铜耻辱退役 这里简单记下我的acm生涯 其实我一直觉得对于我们这种弱校&#xff0c;虽然打a…

delete删除后怎么恢复文件?四种方法进行找回

演示机型&#xff1a;技嘉 H310M HD22.0 系统版本&#xff1a;Windows 10 专业版 很多小伙伴在日常工作或生活中&#xff0c;喜欢通过delete键进行删除文件&#xff0c;虽然这种删除方式快捷方便&#xff0c;但是也容易出现误删的情况&#xff0c;那么用delete键删除的文件可以…

【语音识别】高斯混合模型(GMM)说话人识别【含Matlab源码 574期】

⛄一、高斯混合模型简介 GMM基本框架 类似的还有GMM-UBM(Universal background model)算法&#xff0c;其与GMM的区别在于&#xff1a;对L类整体样本训练一个大的GMM&#xff0c;而不像GMM对每一类训练一个GMM模型。SVM的话MFCC作为特征&#xff0c;每一帧作为一个样本&#…

golang的new和make

golang 变量定义的方式 可以通过 var变量名称变量类型 进行声明变量&#xff0c;当我们没有给它赋值的时候&#xff0c;它们的结果是变量类型的零值&#xff0c;例如&#xff1a; string 的零值是"",int 的零值是0&#xff0c;引用类型的零值是nil。 前面两种类型…

Android加载第三方so库

本篇文章使用的android studio版本是:Android Studio Bumblebee | 2021.1.1 Patch 2 上一篇文章&#xff1a;Android开发java调用C简单示例 演示了java调C&#xff0c;那么so文件能否复用到别的项目了&#xff1f; 这次我们尝试用上一篇文章生成的so库&#xff0c;调用里面的…

APK 签名 v1 v2 步骤

APK 签名 v1 v2 步骤 需要工具 **apksigner.jar jarsinger.exe keytool.exe zipalign.exe ** 1.生成 keystore keytool -genkey -v -keystore my.keystore -alias liuhan -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -dname "cnTest,ouTest,cCA" -validity …

【机器学习入门项目10例】(六):KMeans聚类

💥 项目专栏:【机器学习入门项目10例】 文章目录 一、KMeans聚类二、数据集介绍三、KMeans聚类算法介绍四、定义KMeans模型4.1 kmeans算法入口4.2 初始化簇4.3 计算DBI优化指标4.4 计算每个样本到簇中心的距离4.5 更新每个样本所属的簇分类4.6 更新每个簇的中心4.7 官方实现…

百行代码实现VLC简易视频播放器【详细环境配置过程+可执行源码注释完整】

文章目录❓什么是VLC&#x1f680;VLC 库的集成⭐VLC环境配置演示【win10系统vs2017win64】&#x1f34e;VLC 库的基本使用&#x1f382;视频播放器实现⭐自定义函数Unicode2Utf8讲解&#x1f3e0;总结❓什么是VLC VLC 是 Video Lan Client 的缩写&#xff0c;原先是几个法国的…

学生HTML网页作业作品:HTML+CSS网站设计与实现【红色喜庆邀请函 3页】

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

朗道-西格尔零点猜想(the Landau-Siegel Zeros Conjecture)

1 简介 朗道-西格尔零点猜想&#xff08;the Landau-Siegel Zeros Conjecture&#xff09;&#xff0c;是一个数学难题。 要理解朗道-西格尔零点猜想&#xff0c;首先需要理解黎曼猜想&#xff0c;进而需理解广义黎曼猜想&#xff0c;以及狄利克雷L函数。断言L函数没有异常零…

【OneDrive篇】OneDrive禁用个人保管库(网页端)

【OneDrive篇】OneDrive禁用"个人保管库"&#xff08;网页端&#xff09; 最近OneDrive个人保管库一直同步出错&#xff0c;把文件全部移出来还是一样&#xff0c;就选择直接禁用"个人保管库"功能了—【蘇小沐】 文章目录【OneDrive篇】OneDrive禁用"…

Windowns编译OpenSSL

前言 开发过程中需要上传数据&#xff0c;URL是https的&#xff0c;Qt默认是http网络请求&#xff0c;访问https需要用到SSL认证&#xff0c;而Qt默认不支持&#xff0c;需要自己编译OpenSSL库。 一、下载OpenSSL 环境&#xff1a;Qt 5.12.2 MSVC 2017,32bit ,可通过下面代码…

[附源码]Python计算机毕业设计高校国防教育管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

关于webpack(v5.74.0)的钩子在插件中的应用

常用监听钩子 compiler 钩子 compiler.hooks.entryOption 在 webpack 选项中的 entry 被处理过之后调用。一般用来获取入口。 compiler.hooks.compile beforeCompile 之后立即调用&#xff0c;但在一个新的 compilation 创建之前。这个钩子 不会 被复制到子编译器。能获取…

C++智能指针之shared_ptr

C智能指针之shared_ptr前言一、Shared_ptr1.1 shared_ptr类的操作1.2 make_shared函数1.3 shared_ptr的拷贝赋值1.4 shared_ptr的自动销毁对象内存机制1.5 使用动态生存期的资源的类1.6 shared_ptr与new结合使用1.7 不要混合使用普通/智能指针1.8 不要使用 get 初始化另一个智能…

Keras深度学习实战(38)——图像字幕生成

Keras深度学习实战&#xff08;38&#xff09;——图像字幕生成0. 前言1. 模型与数据集分析1.1 数据集分析1.2 模型分析2. 实现图像字幕生成模型2.1 数据集加载与预处理2.2 模型构建与训练3. 使用束搜索生成字幕3.1 束搜索原理3.2 利用束搜索改进预测结果小结系列链接0. 前言 …

Springboot——Controller层开发、请求与响应、RESTful开发规范

目录 一、入门案例&#xff08;小了解&#xff0c;没啥用&#xff09; 1.1 创建Springboot工程 1.2 导入maven坐标 1.3 controller层代码 1.4 postman测试 二、 REST常用注解 2.1 Controller 2.2 RequestMapping&#xff08;请求映射路径&#xff09; 2.3 Response…

Python学习基础笔记十三——函数

1、函数的定义&#xff1a; 函数是一段具有特定功能的、可重用的语句组。 说明&#xff1a;过程语言&#xff0c;程序员是按照顺序一行一行的编写代码&#xff0c;然后是顺序执行&#xff0c;很容易出现大量重复的代码行&#xff0c;那么有人就考虑将相同的代码提取出来&…

Mybatis源码解析(六):查询数据库主流程

Mybatis源码系列文章 手写源码&#xff08;了解源码整体流程及重要组件&#xff09; Mybatis源码解析(一)&#xff1a;环境搭建 Mybatis源码解析(二)&#xff1a;全局配置文件的解析 Mybatis源码解析(三)&#xff1a;映射配置文件的解析 Mybatis源码解析(四)&#xff1a;s…

.NET 6 支持Cookie与JWT混合认证、授权的方法

从.NET 5开始&#xff0c;.Net Core 与.NET Fremework 合并成了 .NET 5&#xff0c;所以标题也很让人尴尬&#xff0c;不知道该写成是.NET Core还是.NET X。因为这个方法支持.NET 5、6、7。 目录前言Cookie 认证JWT认证总结前言 不知道大家有没有过这样的需求&#xff0c;为了…