栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

粒子群算法求解电力系统环境经济调度(Python代码实现)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

粒子群算法求解电力系统环境经济调度(Python代码实现)

目录

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

2 改进粒子群算法解决 (Python代码实现)

2.1 知识回顾

2.2 案例数据

2.3 Python代码

2.4 结果 

3 展望


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

 

 


 

2 改进粒子群算法解决 (Python代码实现)

2.1 知识回顾

很多粉丝私聊我,让我电气论文的写点简单能入门的,所有今天这个比较简单,我们先回顾一下相关知识点:

*智能优化算法(持续更新中......)

智能优化算法——粒子群算法(Matlab实现)

粒子群算法——Python实现

2.2 案例数据

我弄成了一个文档,对应起来:

 

2.3 Python代码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# ~~~~~~~~~~~~~导入相关库~~~~~~~~~~·
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl

mpl.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
import matplotlib

matplotlib.use('TkAgg')
from tqdm import tqdm  # 进度条设置

# ~~~~~~~~~~~~~~~~~~~~~读取文件~~~~~~~~~~~~~~~~~~~~~~
file=pd.read_csv('IEEE6.csv')#机组参数
P_max = file['b']  #机组上限
P_min = file['c']  # #机组下限


# ~~~~~~~~~~~~~~~~~机组特性系数~~~~~~~~~~~~~~~~~~~~~~~~·
ai = file['d']
bi=file['e']
ci=file['f']

# ~~~~~~~排放特性系数~~~~~~~~~~~~~~~~·
ali=file['g']
beti=file['h']
gari=file['i']

# ~~~~~~~~~~~~~~~~~~~~~~~粒子群算法~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·
class Liqun:
    def __init__(self, Pload1,  P_max,P_min,ai,bi,ci,ali,beti,gari):
        self.Pload1 = Pload1  # 负荷
        self.P_max = P_max  #机组上限
        self.P_min = P_min  #机组下限
        self.ai=ai
        self.bi=bi
        self.ci=ci
        self.ali=ali
        self.beti=beti
        self.gari=gari

        # ~~~~~~~~PSO的参数~~~~~~~~~~~~~~~·
        self.w = 1  # 惯性因子,一般取1
        self.c1 = 2  # 学习因子1,一般取2
        self.c2 = 2  # 学习因子2,一般取2
        self.m = 100  # 种群大小,即种群中小鸟的个数
        self.iter_num = 100  # 算法最大迭代次数
        self.max_vel = 0.5  # 限制粒子的最大速度为0.5
        self.min_vel = -0.5  # 限制粒子的最小速度为-0.5
        self.a1= 0.6  # 总燃料约束权重
        self.a2= 0.4  # 污染排放量权重

    # ~~~~~~~~~~~~~初始化群群体~~~~~~~~~~~~~~~·
    def InitializeX(self):
        """
    :return: 群体[G1,G2,G3,G4,G5,G6]
    """
        X = np.zeros((self.m, 6))  # 初始化群体,6代表 个机组出力
        for n in range(self.m):  # 遍历每一个粒子
            X[n, 0] = np.random.uniform(10, 125, 1)[0]  # G1
            X[n, 1] = np.random.uniform(10, 150, 1)[0]  # G2
            X[n, 2] = np.random.uniform(35, 225, 1)[0]  # G3
            X[n, 3] = np.random.uniform(35, 210, 1)[0]  # G4
            X[n, 4] = np.random.uniform(130,325, 1)[0]  # G5
            X[n, 5] = np.random.uniform(125,315, 1)[0]  # G6
        return X

    # ~~~~~~~~~~~~~~~~~~~定义目标函数、和对应的惩罚项~~~~~~~~~~~~~~~~~~~·
    # ~~~~~1 目标函数:系统运行成本~~~~~

    def function1(self, X1):
        """
        个体目标函数
        :param X1:  (个体[G1,G2,G3,G4,G5,G6]
        :return: 函数1目标函数值
        """
        SUMCOST = []  # 存储总的成本
        for i in range (5):  # 遍历每一台机组
            cost = self.ci[i] * X1[i] * X1[i] + self.bi[i]* X1[i] +self.ai[i] #
            SUMCOST.append(cost)
        return np.sum(SUMCOST)

    #~~~~~~~~~~~~~~总污染排放量~~~~~~~~~~~~··
    def function2(self, X1):
        """
        个体目标函数
        :param X1:  (个体[G1,G2,G3,G4,G5,G6]
        :return: 函数2目标函数值
        """
        emission=[] #储存总的污染排放量
        for i in range(5):
            e=ali[i]+beti[i]*X1[i]+gari[i]*X1[i]*X1[i]
            emission.append(e)
        return np.sum(emission)


    # ~~~~平衡约束~~~~~~·
    def calc_e1(self, X1):
        """
    函数1 对应的个体惩罚项
    :param X1: (个体[G1,G2,G3,G4,G5,G6]
    :return:
    """
        X2 = []  # 存储总的
        for i in range(5):
            X2.append(X1[i])
            """~~~【发电机-负荷】~~~"""
        cost=(np.sum(X2)-self.Pload1)
        return cost

    # ~~~~~~~~~~~~~~~~粒子群速度更新公式~~~~~~~~~~~~~~~~~~~·
    def velocity_update(self, V, X, pbestX, gbestX):
        """
    :param V: 群体速度
    :param X: 群体位置[G1,G2,G3,G4,G5,G6]
    :param pbestX: 种群历史最优位置
    :param gbestX: 全局最优位置
    :return:
    """
        r1 = np.random.random((self.m, 6))
        r2 = np.random.random((self.m, 6))
        V = self.w * V + self.c1 * r1 * (pbestX - X) + self.c2 * r2 * (gbestX - X)  # 直接对照公式写就好了
        # 防止越界处理
        V[V > self.max_vel] = self.max_vel
        V[V < self.min_vel] = self.min_vel
        return V

   

2.4 结果 
100%|██████████| 100/100 [00:01<00:00, 51.48it/s]
迭代最优变量是: [ 22.90408567  12.02717925 138.07640382  37.94844146 151.6501717
 235.88406557]
迭代最优目标函数1(总燃料成本):20304.89493
迭代最优目标函数2(总污染排放量):237.17202

Process finished with exit code 0

完整代码——请博主喝杯奶茶吧 :粒子群算法求解环境经济调度(Python代码实现)

3 展望

后期将在此基础上加大难度,10机组有阀点效应的,有网损的。最后再来40机组的,难度慢慢加大。下集预告:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/883056.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号