m基于GA遗传算法的高载能负荷响应优化控制模型matlab仿真

news2024/9/21 12:27:10

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

       高载能企业执行子站接收负荷调整指令后,需将有功功率、无功功率调整总量合理分配给各用能设备/系统。研究高载能负荷响应优化控制模型,建立以高载能企业响应效益最优为目标,以各用能设备/系统在不同时间尺度下有功、无功响应容量为变量,以各用能设备/系统在不同时间尺度下响应潜力、无功补偿容量、用电重要等级、生产工艺环节协调配合、有功功率及无功功率调整总量等为约束,提出寻优求解方法。

       对于铝电解厂来说,风电引入到铝电解厂,但是铝电解厂有自备电厂,正常情况下是自备电厂恒定地供给铝电解厂,铝电解厂的功率主要可分为两种设备,一个是主要设备铝电解槽(占总功率的95%),其余是辅助设备消耗的功率(约占总功率的5%)。正常工作条件下,铝电解槽和辅助系统24小时的功率如下面两图所示,基本上处于稳定状态,此时P铝电解槽+P辅助= P自备电厂。

        现在如果把风电引入到铝电解厂了,则原来的自备电厂供电的功率会发生变化,同时铝电解厂消耗的总功率也会发生变化。现在:

P铝电解槽+P辅助=P风电+P自备电厂

       如果现在预先给定了引入铝电解厂风电24小时的曲线,如下图所示,现在在这24小时期间,如何调整自备电厂的发电、以及如何将自备电厂和风电的总功率分配给主要设备铝电解槽和辅助系统。才能使在引入风电的情况下电解厂获得的效益(赚的钱)最高,这时,最好使电解槽的功率得以调高,多增加铝的产量,会多带来效益。假设风电的价格是0.2/kWh,自备电厂的价格是0.3/kWh,铝的价格是13000/吨。

 一些约束条件可以设置如下:

主要设备电解槽电解槽的额定功率是700MW,调整时不能低于730MW,不能高于770MW;

辅助设备的额定功率是 50MW,调整时不能低于45 MW,不能高于55MW;

自备电厂的额定输出功率为750MW,每次调整不能低于600MW,不能高于780MW。

根据上面这幅图给出的风电出力曲线,经过对铝电解厂和发电厂负荷的调整,使得这24小时中盈利最大。并求出发电厂、每种负荷(铝电解槽和辅助设备)24小时的调整曲线。

2.仿真效果预览

matlab2022a仿真如下:

 

 

 

3.MATLAB核心程序


%输入风电变换情况
Times = [0.25:0.25:24];
Pfd0  = [3*ones(1,20),5*ones(1,12),10*ones(1,20),12*ones(1,8),8*ones(1,24),4*ones(1,12)]*1e6;
figure;
plot(Times,Pfd0/1e6,'r','linewidth',2);
xlabel('Time(h)');
ylabel('MW');
axis([0,24,0,15]);

Timesdelay = 2*4;%2小时后参与调解

Pdc21  = [];
Pfl21  = [];
Pdzl21 = [];
Pdc22  = [];
Pfl22  = [];
Pdzl22 = [];


for t = 1:length(Times)

%定义初始值,初始值
Pdc   = 40e6;%电厂调节功率
Pfl   = 15e6;%辅助设备调节功率
Pdzl  = 25e6;%电炉调节功率
Pfd   = Pfd0(t);

%风电价格波动
Pricefd = BD(t); 

%%
%下面开始使用遗传优化算法
%根据遗传算法进行参数的拟合
MAXGEN = 80;
NIND   = 200;
Nums   = 2;

Chrom  = crtbp(NIND,Nums*10);
%各个变量的约束条件,这几个参数稍微改了下,否则加入众多约束后,收敛非常慢
A1     = 20e6;
B1     = 60e6;

A2     = 12e6;
B2     = 20e6;

A3     = 30e6;
B3     = 35e6;
Areas  = [A2, A3;
          B2, B3];

FieldD = [rep([10],[1,Nums]);Areas;rep([0;0;0;0],[1,Nums])];

gen    = 0;
for a=1:1:NIND 
    %计算对应的目标值
    Moneys  = func_obj(Pdc,Pfl,Pdzl,Pfd,t,Pricefd);
    Js(a,1) = Moneys;
end

Objv  = (Js+eps);
gen   = 0; 
Pdc2  = [];
Pfl2  = [];
Pdzl2 = [];
%%
while gen < MAXGEN;   
      gen
      t
      
      flag=0;
      while flag == 0
      Pe0 = 0.8;
      pe1 = 0.001; 
      FitnV=ranking(Objv);    
      Selch=select('sus',Chrom,FitnV);    
      Selch=recombin('xovsp', Selch,Pe0);   
      Selch=mut( Selch,pe1);   
      phen1=bs2rv(Selch,FieldD);   
      NS=0;
          for aa=1:NIND
              if phen1(a,1) +  phen1(a,2) - Pfd <= B1 & phen1(a,1) +  phen1(a,2) - Pfd >= A1
                 NS=NS+1;
              end
          end
          if NS > NIND/2
             flag = 1;
          else
             flag = 0; 
          end
      end
      Pdc   = [];
      Pfl   = [];
      Pdzl  = [];
      for a=1:1:NIND  
          Pfl(a)   = phen1(a,1);
          %满足分配功率等式约束
          Pdzl(a)  = phen1(a,2);
          Pdc(a)   = phen1(a,1) +  phen1(a,2) - Pfd;
          
          
          %约束条件,重复约束条件
          if Pdc(a) <= A1;Pdc(a)=A1;end;
          if Pdc(a) >= B1;Pdc(a)=B1;end;
          
          if Pfl(a) <= A2;Pfl(a)=A2;end;
          if Pfl(a) >= B2;Pfl(a)=B2;end;   
          
          if Pdzl(a) <= A3;Pdzl(a)=A3;end;
          if Pdzl(a) >= B3;Pdzl(a)=B3;end; 
          
          
          
          %计算对应的目标值
          Moneys   = func_obj(Pdc(a),Pfl(a),Pdzl(a),Pfd,t,Pricefd);
          JJ(a,1)  = Moneys;
      end 
      Objvsel     = JJ ;    
      [Chrom,Objv]= reins(Chrom,Selch,1,1,Objv,Objvsel);   
      gen         = gen+1; 
      [VS,IS]     = min(Objv);
      Best(gen)   = 1/min(Objv);
      fit(gen)    = min(Objv);
      Pdc2(gen)   = Pdc(IS);
      Pfl2(gen)   = Pfl(IS);
      Pdzl2(gen)  = Pdzl(IS);
end 
     if t == 1
        figure;
        plot(Best,'b','linewidth',2);
        xlabel('迭代次数');
        ylabel('优化后的收益');
        grid on
        figure;
        plot(fit,'b','linewidth',2);
        xlabel('迭代次数');
        ylabel('适应度函数收敛情况');
        grid on
     end
     
     Timesdelay
     
    Pdc21  = [Pdc21,Pdc2(end)];
    Pfl21  = [Pfl21,Pfl2(end)];
    Pdzl21 = [Pdzl21,Pdzl2(end)];   

    if t <= Timesdelay
        Pdc22  = [Pdc22,mean(Pdc21(1:t))];
        Pfl22  = [Pfl22,mean(Pfl21(1:t))];
        Pdzl22 = [Pdzl22,mean(Pdzl21(1:t))]; 
    else
        Pdc22  = [Pdc22,mean(Pdc21(t-Timesdelay:t))];
        Pfl22  = [Pfl22,mean(Pfl21(t-Timesdelay:t))];
        Pdzl22 = [Pdzl22,mean(Pdzl21(t-Timesdelay:t))]; 
    end
end
02_043m

4.完整MATLAB

V

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

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

相关文章

ccf序列查询新解python满分_纯数学规律(学霸怎么想到的啊......)

题目 思路和代码 这题我也就看了好几个小时吧。终于&#xff01;有点懂了&#xff01; 上午看懂了用双指针写《下一个排序》后就在看这题。70分的代码很好写也很好想&#xff0c;就是模拟fx和gx&#xff0c;然后遍历一趟&#xff0c;得到最终的结果。 看了学霸的代码&#x…

使用桥梁振动自动识别车辆(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

Qt在线安装教程(详细图文)

Qt在线安装教程&#xff08;详细图文一、前言二、QT账号的注册三、QT的安装的镜像四、安装的过程一、前言 个人主页: ζ小菜鸡大家好我是ζ小菜鸡&#xff0c;小伙伴们&#xff0c;让我们一起来学习Qt在线安装。如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连) 二、QT账号…

js-mark新时代的网页标记容器

js-mark &#x1f58d;️️ ✨ 它提供了一组可交互操作的工具来注释网页内容 ✨&#x1f58d;️ js-mark是一个JavaScript库&#xff0c;用于在浏览器。他是一个可以在任何网页做标记的前端库, 它提供了一组可交互操作的工具来注释网页内容。 支持标记文本和 持久化存储与还原…

LSTM和双向LSTM讲解及实践

目录&#xff1a; RNN的长期依赖问题LSTM原理讲解双向LSTM原理讲解keras实现LSTM和双向LSTM RNN 的长期依赖问题 在上篇文章中介绍的循环神经网络RNN在训练的过程中会有长期依赖的问题&#xff0c;这是由于RNN模型在训练时会遇到梯度消失(大部分情况)或者梯度爆炸(很少&…

网络1323的分类行为

( A, B )---2*30*2---( 1, 0 )( 0, 1 ) 用网络分类A和B&#xff0c;让A是&#xff08;0&#xff0c;1&#xff09;&#xff08;1&#xff0c;1&#xff09;&#xff0c;让B是&#xff08;1&#xff0c;0&#xff09;&#xff08;1&#xff0c;1&#xff09;。测试集为&#xf…

[附源码]计算机毕业设计springboot学生在线考试系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

408 考研《操作系统》第一章第三节:中断和异常、系统调用

文章目录教程1.中断和异常1.1 中断的作用1.2 中断的类型1.2.1 外中断的处理过程1.2.1 内中断的处理过程1.3 中断机制的基本原理1.4 总结2. 系统调用2.1 什么是系统调用&#xff1f;2.2 小例子&#xff1a;为什么系统调用是必须的&#xff1f;2.3 什么功能要用系统调用实现&…

m基于随机接入代价的异构网络速率分配算法matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 无线接入技术发展迅速&#xff0c;异构网络并存的现象普遍存在&#xff1b;同时&#xff0c;随着终端用户数量的剧增、业务类型的多样化和高服务质量多媒体数据业务需求的增加&#xff0c;通过异…

磨金石教育插画技能干货分享|插画怎么配色才好看?

在绘画界&#xff0c;配色是非常重要的步骤&#xff0c;一幅作品能够展现出什么样的品质&#xff0c;配色起着举足轻重的作用。颜色配的好会给作品晋商添花&#xff0c;配的不好&#xff0c;就会让作品失去水准&#xff0c;缺少神韵。 所以想学好插画&#xff0c;就要在在配色上…

python离线环境下安装第三方模块的方法

一.背景 1.背景&#xff1a; 在实际开发中&#xff0c;我们自己电脑上方便上网可以随时安装自己需要的包文件&#xff0c;但是有的项目现场不能联网或者现场是“内网”不具备联网条件&#xff0c;所以必须解决在“离线电脑上”安装需要的软件包的问题。 2.环境说明以及实现步…

SpringCloud微服务项目实战 - 项目搭建

面对大河我无限惭愧 我年华虚度空有一身疲倦 系列文章目录 项目搭建app登录 一、项目介绍 1. 项目背景 项目概述&#xff1a; 类似于新闻头条&#xff0c;是一个新闻资讯类项目 &#xff08;这里之后放项目APP端的截图&#xff09; 技术架构&#xff1a; 项目术语&…

Ubuntu18.04安装ROS、Gazebo、Mavros、PX4、QGC教程

修改国内源 修改apt sudo cp /etc/apt/source.list /etc/apt/source.list.old sudo gedit /etc/apt/source.list输入如下进行保存 deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic m…

转行|什么是游戏建模??小本本记下来

今天来说一下游戏建模…小本本记下来 &#x1f440;3D手绘建模 3D美术设计师根据原画设计师的构思&#xff0c;将二维的东西在3D软件里面制作出来&#xff0c;最终得到的东西是模型( 3Dmax )和贴图&#xff08;软件PS、Bodypaint ) &#xff0c;模型是物体的主要构架&#xff…

Kaggle Feedback Prize 3比赛总结:两种模型设计思路

比赛的目标&#xff1a;本次竞赛的目标是评估8-12年级英语学习者&#xff08;ELLs&#xff09;的语言能力。利用英语学习者所写的论文数据集开发出能更好地支持所有学生的能力模型&#xff0c;帮助ELL学生在语言发展方面得到更准确的反馈&#xff0c;并加快教师的评分周期。 方…

RestTemplate使用InputStreamResource上传文件

背景 1. 我们应用服务是Spring boot项目&#xff0c;预览服务是我们另一个团队提供的用.net写的&#xff0c;最终使用的是office online来实现文件预览的功能。 2. 我们文件在阿里云OSS存储&#xff0c;我们需要预览文件需要将文件上传至预览服务器。 3. 计划使用RestTemplate…

线程池自查注意点

文章目录线程池自查注意点1、线程池的标准创建方式2、线程池的任务调度流程3、避免使用Executors快捷创建线程池3.1、newSingleThreadExecutor()3.2、newCachedThreadPool()3.3、ScheduledThreadPool()4、避免在方法中创建线程池5、不要盲目使用同步队列6、使用线程池&#xff…

MySQL库的操作

文章目录MySQL库的操作创建数据库创建数据库案例字符集和校验规则查看系统默认字符集以及校验规则查看数据库支持的字符集查看数据库支持的字符集校验规则校验规则对数据库的影响操纵数据库查看数据库显示创建语句修改数据库删除数据库备份和恢复数据库的备份和恢复表的备份和恢…

Cracking the Safes之Linux系统下gdb调试

Cracking Safe是什么 挑战是找出四个保险箱中每个保险箱预期的正确的5个输入集。在运行二进制安全程序时,您需要一次输入一个猜测,如下所示: 其实,就是输入5次,程序会对输入内容进行判断,只有符合程序要求才能成功,任务就是逆向找到正确的字符串!!! 解题思路 反汇…