改进的多目标差分进化算法在电力系统环境经济调度中的应用(Python代码实现)【电气期刊论文复现】
创始人
2024-02-25 14:20:54
0

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

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

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

 🎁专栏目录链接:

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

目录

 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-8import 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()) - 1for 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 = 0emis = 0for 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.834model = 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 axiscolor = '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()

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...