改进的多目标差分进化算法在电力系统环境经济调度中的应用(Python代码实现)【电气期刊论文复现】

news2025/5/14 20:06:40

🎉🎉🎉🎉欢迎您的到来😊😊😊

🥬博客主页博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

📝床头铭将来的我一定会感谢现在奋斗的自己!

 🎁专栏目录链接:

🌈🌈🌈🌟🌟🌟
电气代码智能算法及其应用
路径规划神经网络预测
优化调度图像处理
车间调度信号处理
浪漫的她我的哲思
数学建模

目录

 1 电力系统环境经济调度数学模型

2  改进的多目标差分进化算法

3 Python代码实现

3.1 结果

3.2 Python代码 


 

   改进的多目标差分进化算法不仅可以应用在电力系统环境经济调度,换其他多目标函数和约束条件依然适用。主要是把这个工具用好,用在其他多目标经典问题上,然后就可以写一篇期刊论文。

下面是运行结果:

迭代一千次: 

 1 电力系统环境经济调度数学模型

 

2  改进的多目标差分进化算法

   

        

3 Python代码实现

3.1 结果

迭代500次: 

                      

                 

迭代一千次: 

                          

               

                     

3.2 Python代码 

 (1)数据

                               

(2)读取数据然后书写目标函数和约束条件

#!/usr/bin/env python
# coding:utf-8

import numpy as np
import math
# from DE.initial import create_child, initialize
from constraint import constraints


"""=============读取data.txt数据==================="""
def inital_model(file):  #file:data.txt这个文件
    data = open(file, 'r').readlines()   #读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素
    num = int(data[0].split()[-1])    #切割字符串,结果返回由字符串元素组成的一个列表,得到num=6(机组个数)
    C = np.zeros([num, 5])   #存放煤耗特性系数
    E = np.zeros([num, 5])  #存放排放特性系数
    P = np.zeros([num, 2])  #存放机组最大出力与最小出力
    B = np.zeros([num, num])  #存放B矩阵
    parameters = len(data[3].split()) - 3  #第3行开始,到3+6=9行(Python从0开始计数)
    for i in range(2, 2 + num):
        raw_data = data[i].split()[1:]
        for j in range(parameters):
            C[i - 2][j] = float(raw_data[j])    #读取煤耗特性系数
        P[i - 2][0] = float(raw_data[-2])    #读取机组下限
        P[i - 2][1] = float(raw_data[-1])    #读取机组上限
    length = len(data[2 + num].split()) - 1
    for i in range(3 + num, 3 + 2 * num):    #读取排放特性系数
        raw_data = data[i].split()[1:]
        for j in range(length):
            E[i - 3 - num][j] = float(raw_data[j])  #排放特性系数
    for i in range(4 + 2 * num, 4 + 3 * num):   #读取B矩阵
        raw_data = data[i].split()
        B[i - 4 - 2 * num] = np.array(list(map(float, raw_data)))
    B_0 = np.array(list(map(float, data[5 + 3 * num].split())))
    B_00 = float(data[7 + 3 * num])
    return num, C, E, P, B, B_0, B_00

"""=====总燃料成本==========="""
def costfun(uid, load, C, P=None):
    if P is not None:  #如果满足机组上下限
        return load * (C[uid][2] * load + C[uid][1]) + C[uid][0] + math.fabs(C[uid][3] *
                                                                             math.sin(C[uid][4] * (P[uid][0] - load)))
    return load * (C[uid][2] * load + C[uid][1]) + C[uid][0]

"""======总污染排放量=========="""
def emission(uid, load, E, flag=True):
    if E[0][3] != 0 and flag:
        return (E[uid][0] + (E[uid][1] + E[uid][2] * load) * load) + E[uid][3] * math.exp(E[uid][4] * load)
    else:
        return load * (E[uid][2] * load + E[uid][1]) + E[uid][0]


class Model:
    def __init__(self, file):
        self.nGen, self.C, self.E, self.P, self.B, self.B_0, self.B_00 = inital_model(file)

    def constraint(self):
        return constraints

""'======运行===================='
if __name__ == '__main__':
    demand = 2.834   #负荷需求
    model = Model('../data.txt')
    print("===============排放系数===============")
    print(model.E)
    exit(0)
    pop = np.array([0.1917, 0.3804, 0.5603, 0.7154, 0.6009, 0.3804])  #六个机组出力
    fuel = 0
    emis = 0
    for i in range(len(pop)):   #遍历六个机组
        fuel += costfun(i, pop[i], model.C, model.P)
        emis += emission(i, pop[i], model.E, flag=True)
    print(fuel, emis)
    print(constraints(pop, model, demand))
    exit(0)

(3)主函数,运行 

"""========开始运行============="""
if __name__ == '__main__':
    demand = 2.834
    model = Model('../data.txt')
    arguments = {'nIter': 1000, 'nPop': 200, 'nArc': 100, 'nGen': 6, 'F': 0.6, 'CR': 0, 'init': 1, 'mutation': 0}
    DE = MMODE(model=model, **arguments)
    DE.solve(demand)
    print(DE.finalY.shape)
    n = range(DE.nIter)
    fig, ax1 = plt.subplots()
    color = 'tab:red'
    ax1.set_xlabel('迭代次数')
    ax1.set_ylabel('最佳燃料成本($/h)', color=color)
    ax1.plot(n, DE.bestC, color=color)
    ax1.tick_params(axis='y', labelcolor=color)
    ax2 = ax1.twinx()  # second y axis
    color = 'tab:blue'
    ax2.set_ylabel('最佳污染排放量(t/h)', color=color)
    ax2.plot(n, DE.bestE, color=color)
    ax2.tick_params(axis='y', labelcolor=color)
    plt.title('最佳成本和排放')
    fig.tight_layout()
    plt.show()

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

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

相关文章

[附源码]计算机毕业设计springbootSwitch交流平台

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

Android 插件化

demo 如果要加载插件模块编译的apk插件包中的Activity类,需要执行如下流程: 1)加载类对象:使用DexClassLoader加载Activity对应的Class字节码类对象; 2)管理生命周期:处理加载进来的Activity…

【算法自由之路】前缀树 桶排序之计数排序和基数排序

【算法自由之路】前缀树 & 桶排序之计数排序和基数排序 前缀树(字典树) 首先是前缀树,前缀树是由字符构成的树结构,它记录有多少前缀字符通过,以及有多少个同样的字符串,其找这类信息的时间复杂度是极…

minigui编译移植

minigui编译移植 一:文件系统依赖支持二:交叉编译libminigui-1.6.10三:交叉编译mg-samples-1.6.10四:资源minigui-res-1.6.10四:开发板拷贝资源五:/etc/MiniGUI.cfg配置文件修改六:系统环境变量设置一:文件系统依赖支持 zlib libpng libjpeg 二:交叉编译libminigui-1.6.10 conf…

第五届安洵杯网络挑战赛WP

Crypto Cry1 crypto签到题,就是先对SHA256的哈希值进行爆破,然后猜数字 用hashcat一条命令秒穿 hashcat --custom-charset1 ?d?l?u -a 3 -m 1400 3075696ea46516c3a0a43930fab5a0f1c68ea4b315dd87a9cd123dac7f20f3a6 ?1?1?1?1GJWVMYlh5ApWLbF…

MySQL源码分析之SQL函数执行

1.MySQL中执行一条SQL的总体流程 一条包含函数的SQL语句,在MySQL中会经过: 客户端发送,服务器连接,语法解析,语句执行的过程。 调试源码,分析函数的具体执行过程,在客户端,执行select to_char…

【数据结构与算法】初识时间空间复杂度

文章目录1.数据结构与算法概念2.时间复杂度3.大O计数法表示时间复杂度4.线性结构与非线性结构1.数据结构与算法概念 (1)什么是数据结构 数据结构指的是相互之间有一种或者多种特定的关系数据元素集合。数据结构可以分成逻辑结构和物理结构。逻辑结构&a…

全网首发克莱斯勒东南大捷龙jeep道奇DIY数码碟盒增加USB和蓝牙播放音乐功能使用原车接口无损改装

文章目录前言碟盒功能1、设计指标3、外观设计4、PCB设计5、程序设计6、调试7、大捷龙车机尾插接口定义公头东南大捷龙车机白色插头模块与白色插头连接方法8、安装方法9、 使用方法9.1 CD车机按钮功能定义11、 联系我前言 ​ 之前写过四篇关于车机增加音频输入的方法。 1、07宝…

[数据结构] 并查集

并查集相关概念并查集的模拟实现1)实现基本框架2)实现基础操作findRoot查找元素属于哪个集合Union合并两个集合IsOneSet判断两个元素是否属于同一集合SetSize集合个数相关概念 初始时,每个数据的下标都为-1,表示10棵树&#xff1…

【EDA365电子论坛】RISC-V 能否超越 x86、Arm,成为新一代计算机系统架构?

前言 指令集架构(Instruction Set Architecture,缩写为ISA),是一组指令的集合,指令是指处理器进行操作的最小单元(譬如加减乘除操作或者读/写存储器数据)。指令集架构,有时简称为“架…

[附源码]SSM计算机毕业设计小超市进销存管理系统JAVA

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

【js】日期控件的实现

需求:通过日期控件实现只显示年月 效果如下图: 日期控件使用的是My97DatePicker: 可以从官网下载:http://www.my97.net/,或者: 链接:https://pan.baidu.com/s/1KRXSjfqpyguZ67vBrOWM8g 提取码…

Python创建增量目录的代码实例

目录1、需求很简单2、代码3、使用方法1、需求很简单 比如我在做机器学习实验的时候,实验结果的保存路径是’runs/exp’。 这样就会出现一个问题:当我第二次运行程序的时候,如果我忘记更改代码中的路径名或者清除上次实验结果,这…

BurpSuite官方实验室之逻辑漏洞

BurpSuite官方实验室之逻辑漏洞 这是BurpSuit官方的实验室靶场,以下将记录个人逻辑漏洞共11个Lab的通关过程 Web Security Academy: Free Online Training from PortSwigger lab1: Excessive trust in client-side controls 过度信任客户端控件 目…

PyTorch学习笔记-Convolution Layers与Pooling Layers

1. Convolution Layers 由于图像是二维的,因此基本上最常用到的就是二维的卷积类:torch.nn.Conv2d,官方文档:torch.nn.Conv2d。 Conv2d 的主要参数有以下几个: in_channels:输入图像的通道数&#xff0c…

IDEA关于数据库报错SQL dialect is not configured或Unable to resolve table ‘表名‘

目录一、SQL dialect is not configured1.1 报错场景展示1.2 方式一,万能altenter1.3 方式二,在setting中设置二、Unable to resolve table 表名2.1 报错场景展示2.2 方式一,万能altenter2.3 方式二,在setting中设置一、SQL diale…

vscode开发STM32(三)---调试篇

vscode开发STM32(三)—调试篇 文章目录vscode开发STM32(三)---调试篇前提条件配置调试配置JLink使用JLinkGDB进行调试配置stlink使用openOCD进行调试完整的launch文件内容前提条件 安装Cortex-Debug插件 安装OpenOCD 安装JLink驱…

LeetCode HOT 100 —— 48.旋转图像

题目 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 思路 方法一:使用辅助数组 可以得出规律,将图像旋…

集合框架----源码解读HashMap篇(一)

1.HashMap官方介绍 基于哈希表的Map接口实现。该实现提供了所有可选的映射操作,并允许空值和空键。(HashMap类大致相当于Hashtable,除了它是非同步的,并且允许为空值。)这个类不保证映射的顺序;特别是,它不能保证顺序随时间的推移…

Nodejs -- Express托管静态资源

文章目录托管静态资源1 expess.static()2 托管多个静态资源目录3 挂载路径前缀托管静态资源 1 expess.static() express提供了一个非常好用的函数,叫做express.static(),通过它,我们可以非常方便地创建一个静态资源服务器,例如&…