含电热联合系统的微电网运行优化附Matlab代码

2024-02-11 09:59

本文主要是介绍含电热联合系统的微电网运行优化附Matlab代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

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

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

⛄ 内容介绍

在当前能源互联网迅速发展及电热联系日渐紧密的环境下,提出基于电热联合调度的区域并网型微电网运行优化模型.综合网内储能特性,分时电价,电热负荷与分布式电源的时序特征,以包含风机,光伏电池,热电联产系统,电锅炉,燃料电池和储能系统的并网型微电网为例,采用Cplex优化软件求得调度周期内各微电源最佳出力及总运行成本,并与两种常见电热调度方式进行比较.仿真算例表明:联合调度模型能实现电热统一协调调度并降低微电网运行成本.该模型可为电热之间能源互联及规划运营提供参考.

⛄ 部分代码

function f = initialize_variables(N, M, V, min_range, max_range, time, Zall, ComC0)

min = min_range;

max = max_range;

% K is the total number of array elements. For ease of computation decision

% variables and objective functions are concatenated to form a single

% array. For crossover and mutation only the decision variables are used

% while for selection, only the objective variable are utilized.

number_of_decision_variables.c =  V(1,1);

number_of_decision_variables.t =  V(2,1);

K = M + 2 * V(1,1) + 2 * V(2,1);

StepComC = 1; %变量的离散化

StepT1 = 0.025;

StepT2 = 0.025;

%% Initialize each chromosome

% For each chromosome perform the following (N is the population size)

for i = 1 : N

     for j= 1 : number_of_decision_variables.c

              f(i,j) = min.c(j,1) + (max.c(j,1) - min.c(j,1))*rand(1);

              f(i,j + number_of_decision_variables.c) = min.c(j,2) + (max.c(j,2) - min.c(j,2))*rand(1);

           %f(i,j)离散化

              ComCC(j)= f(i,j);

                ComCC1(j) = abs(ComCC(j)) / StepComC;

                %Tap1 = Tap ./ StepTap;

                ComCC2(j) = fix(ComCC1(j)); %商

                ComCC3(j) = abs(ComCC(j)) - ComCC2(j) * StepComC;%余

                ComCC2(j) =  ComCC2(j) *  StepComC;

                %Tap = Tap1 - fix(Tap1);

                if ComCC3(j) > (StepComC / 2)

                  ComCC3(j) = StepComC - ComCC3(j);

                  ComCC2(j) = ComCC2(j) + StepComC;

                end

               if f(i,j)>0

                f(i,j) = ComCC2(j);

               else

                f(i,j) = - ComCC2(j); 

               end

           %检验f(i,j)中无重复    

               pf(1,:) = f(i,1:number_of_decision_variables.c);

               for w = 1 : number_of_decision_variables.c

                   for ww =  (w + 1) : number_of_decision_variables.c

                       while f(i,w) == pf(1,ww)

                             f(i,w) = min.c(j,1) + (max.c(j,1) - min.c(j,1))*rand(1);

                             ComCC(j)= f(i,w);

                             ComCC1(j) = abs(ComCC(j)) / StepComC;

                            %Tap1 = Tap ./ StepTap;

                            ComCC2(j) = fix(ComCC1(j)); %商

                            ComCC3(j) = abs(ComCC(j)) - ComCC2(j) * StepComC;%余

                            ComCC2(j) =  ComCC2(j) *  StepComC;

                            %Tap = Tap1 - fix(Tap1);

                        if ComCC3(j) > (StepComC / 2)

                            ComCC3(j) = StepComC - ComCC3(j);

                            ComCC2(j) = ComCC2(j) + StepComC;

                        end

                         if f(i,w)>0

                          f(i,w) = ComCC2(j);

                         else

                          f(i,w) = - ComCC2(j); 

                         end

                       end

                    end

               end             

               %f(i,j + number_of_decision_variables)离散化

                 ComCC(j)= f(i,j + number_of_decision_variables.c);

                ComCC1(j) = abs(ComCC(j)) / StepComC;

                %Tap1 = Tap ./ StepTap;

                ComCC2(j) = fix(ComCC1(j)); %商

                ComCC3(j) = abs(ComCC(j)) - ComCC2(j) * StepComC;%余

                ComCC2(j) =  ComCC2(j) *  StepComC;

                %Tap = Tap1 - fix(Tap1);

                if ComCC3(j) > (StepComC / 2)

                  ComCC3(j) = StepComC - ComCC3(j);

                  ComCC2(j) = ComCC2(j) + StepComC;

                end

               if f(i,j + number_of_decision_variables.c)>0

                f(i,j + number_of_decision_variables.c) = ComCC2(j);

               else

                f(i,j + number_of_decision_variables.c) = - ComCC2(j); 

               end

     end 

     

    for j= 1 : number_of_decision_variables.t

              f(i,j + 2 * V(1,1)) = min.t(j,1) + (max.t(j,1) - min.t(j,1))*rand(1);

              f(i,j + 2 * V(1,1) + number_of_decision_variables.t) = min.t(j,2) + (max.t(j,2) - min.t(j,2))*rand(1);

           %f(i,j)离散化

              ComCC(j)= f(i,j + 2 * V(1,1));

                ComCC1(j) = abs(ComCC(j)) / StepT1;

                %Tap1 = Tap ./ StepTap;

                ComCC2(j) = fix(ComCC1(j)); %商

                ComCC3(j) = abs(ComCC(j)) - ComCC2(j) * StepT1;%余

                ComCC2(j) =  ComCC2(j) *  StepT1;

                %Tap = Tap1 - fix(Tap1);

                if ComCC3(j) > (StepT1 / 2)

                  ComCC3(j) = StepT1 - ComCC3(j);

                  ComCC2(j) = ComCC2(j) + StepT1;

                end

               if f(i,j)>0

                f(i,j + 2 * V(1,1)) = ComCC2(j);

               else

                f(i,j + 2 * V(1,1)) = - ComCC2(j); 

               end                 

               %f(i,j + 2 * V(1,1) + number_of_decision_variables)离散化

                 ComCC(j)= f(i,j + 2 * V(1,1) + number_of_decision_variables.t);

                ComCC1(j) = abs(ComCC(j)) / StepT2;

                %Tap1 = Tap ./ StepTap;

                ComCC2(j) = fix(ComCC1(j)); %商

                ComCC3(j) = abs(ComCC(j)) - ComCC2(j) * StepT2;%余

                ComCC2(j) =  ComCC2(j) *  StepT2;

                %Tap = Tap1 - fix(Tap1);

                if ComCC3(j) > (StepT2 / 2)

                  ComCC3(j) = StepT2 - ComCC3(j);

                  ComCC2(j) = ComCC2(j) + StepT2;

                end

               if f(i,j + 2 * V(1,1) + number_of_decision_variables.t)>0

                f(i,j + 2 * V(1,1) + number_of_decision_variables.t) = ComCC2(j);

               else

                f(i,j + 2 * V(1,1) + number_of_decision_variables.t) = - ComCC2(j); 

               end              

    end    

         f(i, 2 * V(1,1) + 2 * V(2,1) + 1 : K) = evaluate_objective(f(i,:),M ,V ,time, Zall, ComC0);

end

⛄ 运行结果

⛄ 参考文献

[1]李正茂, 张峰, 梁军,等. 含电热联合系统的微电网运行优化[J]. 中国电机工程学报, 2015, 35(14):3569-3576.

⛄ Matlab代码关注

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

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

这篇关于含电热联合系统的微电网运行优化附Matlab代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/699502

相关文章

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文