Matlab实现|多元宇宙算法求解电力系统多目标优化问题(期刊论文复现)

news2025/1/12 15:52:13

 结果和这几种算法进行比较: 

目录

1 概述

2 Matlab完整代码实现

3 结果 


1 概述

提出了一种求解电力系统环境经济调度的新方法,该方法利用宇宙空间在随机创建过程中高膨胀率的物体随虫洞在空间移动物体的规律,通过对白洞和黑洞间随机传送物体来实现最优搜索.
算法具有运算速度快,收敛性强,适用于高维计算等特点.以总燃料费用最低和总污染排放最少为多目标建立环境经济调度模型,最后,通过发电厂传统10机组算例进行仿真.结果表明:本文所提算法具有经济性和有效性.
 

2 Matlab代码实现

clc;
clear;
close all;
tStart=tic;
% global costdata emissiondata B B0 B00 Pd VarMin VarMax nVar
global data B B0 B00 Pd VarMin VarMax nVar
Pd=2000;
data=xlsread('IEEE10.xls');

B1=xlsread('B10.xls');
B=B1(1:10,1:10);
B0=[0 0 0 0 0 0 0 0 0 0];
B00=0;
%  B=B1(1:3,1:3);
%  B0=[0 0 0 0 0 0 0 0 0 0];
%  B00=0;


%%

Max_time=600; %迭代次数
N=100;
ArchiveMaxSize=100;
% max_iter=Max_time;
 nVar=10;             % 机组个数

VarSize=[1 nVar];   % 决策变量矩阵的大小
VarMin=data(:,2);          %机组出力下限
VarMax= data(:,3);          % 机组出力上限

fobj=@(x) IEEE3aobj(x);
dim=nVar;
lb=VarMin';
ub=VarMax';
obj_no=2;

Best_universe=zeros(1,dim);
Best_universe_Inflation_rate=inf*ones(1,obj_no);

Archive_X=zeros(ArchiveMaxSize,dim);
Archive_F=ones(ArchiveMaxSize,obj_no)*inf;
Archive_member_no=0;

WEP_Max=1;
WEP_Min=0.2;

for i=1:N
   Universes(i,:)=lcheck3; 
end

Time=1;

while Time<Max_time+1
    WEP=WEP_Min+Time*((WEP_Max-WEP_Min)/Max_time);
    TDR=1-((Time)^(1/6)/(Max_time)^(1/6));
    for i=1:size(Universes,1)
        
        %边界检查(如果宇宙超出边界,则将它们带回搜索空间内)
        Flag4ub=Universes(i,:)>ub;
        Flag4lb=Universes(i,:)<lb;
        Universes(i,:)=(Universes(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;
        Universes(i,:)=lbcoff3bus(Universes(i,:));
        %计算宇宙的通货膨胀率(适合度)
        Inflation_rates(i,:)=fobj(Universes(i,:));
        
        %精英主义
        if dominates(Inflation_rates(i,:),Best_universe_Inflation_rate)
            Best_universe_Inflation_rate=Inflation_rates(i,:);
            Best_universe=Universes(i,:);
        end
        
    end
    
    [sorted_Inflation_rates,sorted_indexes]=sort(Inflation_rates);
    
    for newindex=1:N
        Sorted_universes(newindex,:)=Universes(sorted_indexes(newindex),:);
    end
    
    %原始MVO论文中的标准化通货膨胀率
    normalized_sorted_Inflation_rates=normr(sorted_Inflation_rates);
    
    Universes(1,:)= Sorted_universes(1,:);
%     Universes(1,:)=lchecktf1(Universes(1,:));
    [Archive_X, Archive_F, Archive_member_no]=UpdateArchive(Archive_X, Archive_F, Universes, Inflation_rates, Archive_member_no);
    if Archive_member_no>ArchiveMaxSize
        Archive_mem_ranks=RankingProcess(Archive_F, ArchiveMaxSize, obj_no);
        [Archive_X, Archive_F, Archive_mem_ranks, Archive_member_no]=HandleFullArchive(Archive_X, Archive_F, Archive_member_no, Archive_mem_ranks, ArchiveMaxSize);
    else
        Archive_mem_ranks=RankingProcess(Archive_F, ArchiveMaxSize, obj_no);
    end
    Archive_mem_ranks=RankingProcess(Archive_F, ArchiveMaxSize, obj_no);
    % 提高复盖率
    index=RouletteWheelSelection(1./Archive_mem_ranks);
    if index==-1
        index=1;
    end
   Best_universe_Inflation_rate=Archive_F(index,:);
   Best_universe=Archive_X(index,:); 
   
  
    
    %更新宇宙的位置
    for i=2:size(Universes,1)%从2开始,因为第1位是精英
        Back_hole_index=i;
        for j=1:size(Universes,2)
            r1=rand();
            if r1<normalized_sorted_Inflation_rates(i)
                White_hole_index=RouletteWheelSelection(-sorted_Inflation_rates);% 对于最大化问题,排序的通货膨胀率应该写成排序的通货膨胀率
                if White_hole_index==-1
                    White_hole_index=1;
                end
                %Eq. (3.1) 
                Universes(Back_hole_index,j)=Sorted_universes(White_hole_index,j);
%                 Universes(Back_hole_index,j)=lchecktf1(Universes(Back_hole_index,j));
            end
            
            if (size(lb',1)==1)
                %如果边界都是一样的,那么原MVO论文中的公式(3.2)就会出现
                r2=rand();
                if r2<WEP
                    r3=rand();
                    if r3<0.5
                        Universes(i,j)=Best_universe(1,j)+TDR*((ub-lb)*rand+lb);
                        
                    end
                    if r3>0.5
                        Universes(i,j)=Best_universe(1,j)-TDR*((ub-lb)*rand+lb);
                    end
                end
            end
            
            if (size(lb',1)~=1)
            %公式( 3.2 )在原始MVO论文中,如果对每个变量的上下界不同
                r2=rand();
                if r2<WEP
                    r3=rand();
                    if r3<0.5
                        Universes(i,j)=Best_universe(1,j)+TDR*((ub(j)-lb(j))*rand+lb(j));
                    end
                    if r3>0.5
                        Universes(i,j)=Best_universe(1,j)-TDR*((ub(j)-lb(j))*rand+lb(j));
                    end
                end
            end
            
        end
        Universes(i,:)=lbcoff3bus(Universes(i,:));
    end
    display(['At the iteration ', num2str(Time), ' there are ', num2str(Archive_member_no), ' non-dominated solutions in the archive']);
    Time=Time+1;
%
end
plot(Archive_F(:,1),Archive_F(:,2),'Ro','LineWidth',2,...
        'MarkerEdgeColor','r',...
        'MarkerFaceColor','r',...
        'MarkerSize',2);
xlabel('污染排放量')
ylabel('煤耗量')
title('Pareto最前沿')
% Universes
Archive_F(:,1)
Archive_F(:,2)
Best_universe

clc;
clear;
close all;
tStart=tic;
% global costdata emissiondata B B0 B00 Pd VarMin VarMax nVar
global data B B0 B00 Pd VarMin VarMax nVar
Pd=2000;
data=xlsread('IEEE10.xls');

B1=xlsread('B10.xls');
B=B1(1:10,1:10);
B0=[0 0 0 0 0 0 0 0 0 0];
B00=0;
%  B=B1(1:3,1:3);
%  B0=[0 0 0 0 0 0 0 0 0 0];
%  B00=0;


%%

Max_time=600; %迭代次数
N=100;
ArchiveMaxSize=100;
% max_iter=Max_time;
 nVar=10;             % 机组个数

VarSize=[1 nVar];   % 决策变量矩阵的大小
VarMin=data(:,2);          %机组出力下限
VarMax= data(:,3);          % 机组出力上限

fobj=@(x) IEEE3aobj(x);
dim=nVar;
lb=VarMin';
ub=VarMax';
obj_no=2;

Best_universe=zeros(1,dim);
Best_universe_Inflation_rate=inf*ones(1,obj_no);

Archive_X=zeros(ArchiveMaxSize,dim);
Archive_F=ones(ArchiveMaxSize,obj_no)*inf;
Archive_member_no=0;

WEP_Max=1;
WEP_Min=0.2;

for i=1:N
   Universes(i,:)=lcheck3; 
end

Time=1;

while Time<Max_time+1
    WEP=WEP_Min+Time*((WEP_Max-WEP_Min)/Max_time);
    TDR=1-((Time)^(1/6)/(Max_time)^(1/6));
    for i=1:size(Universes,1)
        
        %边界检查(如果宇宙超出边界,则将它们带回搜索空间内)
        Flag4ub=Universes(i,:)>ub;
        Flag4lb=Universes(i,:)<lb;
        Universes(i,:)=(Universes(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;
        Universes(i,:)=lbcoff3bus(Universes(i,:));
        %计算宇宙的通货膨胀率(适合度)
        Inflation_rates(i,:)=fobj(Universes(i,:));
        
        %精英主义
        if dominates(Inflation_rates(i,:),Best_universe_Inflation_rate)
            Best_universe_Inflation_rate=Inflation_rates(i,:);
            Best_universe=Universes(i,:);
        end
        
    end
    
    [sorted_Inflation_rates,sorted_indexes]=sort(Inflation_rates);
    
    for newindex=1:N
        Sorted_universes(newindex,:)=Universes(sorted_indexes(newindex),:);
    end
    
    %原始MVO论文中的标准化通货膨胀率
    normalized_sorted_Inflation_rates=normr(sorted_Inflation_rates);
    
    Universes(1,:)= Sorted_universes(1,:);
%     Universes(1,:)=lchecktf1(Universes(1,:));
    [Archive_X, Archive_F, Archive_member_no]=UpdateArchive(Archive_X, Archive_F, Universes, Inflation_rates, Archive_member_no);
    if Archive_member_no>ArchiveMaxSize
        Archive_mem_ranks=RankingProcess(Archive_F, ArchiveMaxSize, obj_no);
        [Archive_X, Archive_F, Archive_mem_ranks, Archive_member_no]=HandleFullArchive(Archive_X, Archive_F, Archive_member_no, Archive_mem_ranks, ArchiveMaxSize);
    else
        Archive_mem_ranks=RankingProcess(Archive_F, ArchiveMaxSize, obj_no);
    end
    Archive_mem_ranks=RankingProcess(Archive_F, ArchiveMaxSize, obj_no);
    % 提高复盖率
    index=RouletteWheelSelection(1./Archive_mem_ranks);
    if index==-1
        index=1;
    end
   Best_universe_Inflation_rate=Archive_F(index,:);
   Best_universe=Archive_X(index,:); 
   
  
    
    %更新宇宙的位置
    for i=2:size(Universes,1)%从2开始,因为第1位是精英
        Back_hole_index=i;
        for j=1:size(Universes,2)
            r1=rand();
            if r1<normalized_sorted_Inflation_rates(i)
                White_hole_index=RouletteWheelSelection(-sorted_Inflation_rates);% 对于最大化问题,排序的通货膨胀率应该写成排序的通货膨胀率
                if White_hole_index==-1
                    White_hole_index=1;
                end
                %Eq. (3.1) 
                Universes(Back_hole_index,j)=Sorted_universes(White_hole_index,j);
%                 Universes(Back_hole_index,j)=lchecktf1(Universes(Back_hole_index,j));
            end
            
            if (size(lb',1)==1)
                %如果边界都是一样的,那么原MVO论文中的公式(3.2)就会出现
                r2=rand();
                if r2<WEP
                    r3=rand();
                    if r3<0.5
                        Universes(i,j)=Best_universe(1,j)+TDR*((ub-lb)*rand+lb);
                        
                    end
                    if r3>0.5
                        Universes(i,j)=Best_universe(1,j)-TDR*((ub-lb)*rand+lb);
                    end
                end
            end
            
            if (size(lb',1)~=1)
            %公式( 3.2 )在原始MVO论文中,如果对每个变量的上下界不同
                r2=rand();
                if r2<WEP
                    r3=rand();
                    if r3<0.5
                        Universes(i,j)=Best_universe(1,j)+TDR*((ub(j)-lb(j))*rand+lb(j));
                    end
                    if r3>0.5
                        Universes(i,j)=Best_universe(1,j)-TDR*((ub(j)-lb(j))*rand+lb(j));
                    end
                end
            end
            
        end
        Universes(i,:)=lbcoff3bus(Universes(i,:));
    end
    display(['At the iteration ', num2str(Time), ' there are ', num2str(Archive_member_no), ' non-dominated solutions in the archive']);
    Time=Time+1;
%
end
plot(Archive_F(:,1),Archive_F(:,2),'Ro','LineWidth',2,...
        'MarkerEdgeColor','r',...
        'MarkerFaceColor','r',...
        'MarkerSize',2);
xlabel('污染排放量')
ylabel('煤耗量')
title('Pareto最前沿')
% Universes
Archive_F(:,1)
Archive_F(:,2)
Best_universe

3 结果 

现代这种“探索、征服”的心态,从世界地图的演变可以看得一目了然。早在历史进到现代之前,许多文化就已经有了自己的世界地图。当然,当时并没有人真正知道全世界是什么样子,在亚非大陆上的人对美洲一无所知,美洲文化也不知道亚非大陆上的情形。但碰到不熟悉的地区,地图上不是一笔未提,就是画上了想象出来的怪物和奇景。这些地图上并没有空白的空间,让人觉得全世界就在自己的掌握之中。

在15、16世纪,欧洲人的世界地图开始出现大片空白。从这点可以看出科学心态的发展,以及欧洲帝国主义的动机。地图上的空白可以说是在心理及思想上的一大突破,清楚表明欧洲人愿意承认自己对于一大部分的世界还一无所知。

图1 1459年欧洲人的世界地图。可以看到地图上似乎巨细靡遗,就算是当时欧洲人根
                                  本一无所知的南非地区,都有密密麻麻的信息。
1492年,哥伦布从西班牙出发向西航行,希望能找到一条前往东亚的新航线。哥伦布当时相信的仍然是旧的世界地图,以为全世界在地图上一览无遗。哥伦布从旧地图推算,日本应该位于西班牙以西大约7000公里远。但事实上,从西班牙到东亚的距离要超过两万公里,而且中间还隔着个他不知道的美洲大陆。1492年10月12日大约凌晨2点,哥伦布一行人与这片未知大陆有了第一次接触。皮塔号(Pinta)的瞭望手胡安·罗德里格斯·贝尔梅霍(Juan Rodriguez Berme jo)从桅杆上看到了现在的巴哈马群岛,高呼着:“有陆地!有陆地!”

哥伦布当时相信这个小岛就位于东亚海外,属于“Indies”(印度地方,包含今日印度、中南半岛及东印度群岛等地),所以他把当地人称为“Indians”(这正是美国原住民也被称为“印第安人”的原因)。一直到他过世,哥伦布都不认为自己犯了一个大错。不论是对他还是许多当代的人来说,说他发现了一个完全未知的大陆,这根本难以想象。毕竟千百年来,不管是那些伟大的思想家和学者甚至是不可能犯错的《圣经》,都只知道有欧洲、非洲和亚洲。怎么有可能他们全错了呢?难道《圣经》居然漏了大半个世界,只字未提?这种情况,就好像是说在1969年阿波罗11号要前往月球的途中,居然撞到了另一个从来没人看到的月亮。而正因为哥伦布不愿意接受自己的无知,我们可以说他仍然是个中世纪的人,深信着自己已经知道了全世界,所以就算已经有了如此重大的发现,也无法说服他。
 

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

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

相关文章

5.1 自然语言处理综述

文章目录致命密码&#xff1a;一场关于语言的较量一、自然语言处理的发展历程1.1 兴起时期1.2 符号主义时期1.3 连接主义时期1.4 深度学习时期二、自然语言处理技术面临的挑战2.1 语言学角度2.1.1 同义词问题2.1.2 情感倾向问题2.1.3 歧义性问题2.1.4 对话/篇章等长文本处理问题…

猿如意中【ndm】助你轻松管理你的 NPM包

目录 一、ndm 简介 1.1、下载 ndm-1.exe 版本&#xff08;v1.2.0&#xff09; 1.2、安装 1.3、版本迭代更新记录 1.3.1、ndm v0.1.4 已发布https://github.com/720kb/ndm/releases/tag/v0.1.4 1.3.2、ndm v1.0.0 发布&#xff0c;现已完全跨平台Windows、Mac、Linux 1.3.3、…

cad 怎么取消绘图界限?cad怎么调整图形界限

1、在CAD中&#xff0c;如何设置图形界限&#xff1f; 1、电脑打开CAD&#xff0c;输入limits命令&#xff0c;空格键确定。 2、确定命令后&#xff0c;选择格式中的图形界限。 3、点击图形界限后&#xff0c;会出现重新设置模型空间界限&#xff0c;接着再点击键盘上的回车键…

gcexcel:GrapeCity Documents for Excel v6/NET/Crack

高速 .NET 6 Excel 电子表格 API 库 使用此快速电子表格 API&#xff0c;以编程方式在 .Net 6、.Net 5、.NET Core、.NET Framework 和 Xamarin 跨平台应用程序中创建、编辑、导入和导出 Excel 电子表格。 创建、加载、编辑和保存 Excel .xlsx 电子表格 保存为 .XLSX、PDF、HTM…

C#基于ASP.NET的人事薪资管理系统

ASP.NET20003人事薪资管理系统,SQL数据库&#xff1a;VS2010开发环境,包含员工管理,部门管理,工资管理,绩效管理等功能,并且包含五险一金的计算 3.3 功能需求 3.3.1 员工部分 1&#xff1a;查看工资&#xff1a;以列表的形式查看系统现存的员工工资信息。 2&#xff1a;查看个…

SpringBoot自定义banner—卡塔尔世界杯吉祥物

自定义banner文件 SpringBoot项目在启动的时候&#xff0c;会有一个大大的Spring首先展示出来 . ____ _ __ _ _/\\ / ____ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | _ | _| | _ \/ _ | \ \ \ \\\/ ___)| |_)| | | | | || (_| | ) ) ) ) |____| .__|…

好书推荐:《Python编程:从入门到实践(第2版)》——写给Python入门者的最好教程

缘起 这段时间把图灵社区的《Python编程&#xff1a;从入门到实践&#xff08;第2版&#xff09;》看完了&#xff0c;在此做一个记录&#xff0c;先谈一下自己最直观的感受&#xff0c;这本书的定位是入门&#xff0c;在我看来&#xff0c;这个目的确实是达到了的&#xff0c…

98.(leaflet之家)leaflet态势标绘-分队战斗行动采集

听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <!DOCTYPE html> <html>

Cantor表——洛谷(Java)

题目描述 现代数学的著名证明之一是 Georg Cantor 证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的&#xff1a; 1/11/1 , 1/21/2 , 1/31/3 , 1/41/4, 1/51/5, … 2/12/1, 2/22/2 , 2/32/3, 2/42/4, … 3/13/1 , 3/23/2, 3/33/3, … 4/14/1, 4/24/2, … 5/1…

04. XSS漏洞原理

04. XSS漏洞原理 XSS漏洞原理&#xff08;上&#xff09; 弹窗是怎么实现的&#xff1f; 案例 攻击利用 什么是XSS&#xff1f; XSS&#xff08;Cross Site Scripting&#xff09;&#xff1a;跨站脚本攻击&#xff0c;为了不和层叠样式表&#xff08;Cascading Style Shee…

tensorflow 歌曲题材分类

librosa音频处理 Librosa是一个用于音频、音乐分析、处理的python工具包&#xff0c;一些常见的时频处理、特征提取、绘制声音图形等功能应有尽有&#xff0c;功能十分强大. 加载音频 import librosa x , sr librosa.load(music.au) #歌曲的时长 d librosa.get_duration(…

【Matlab】论文各种图例配色Matlab绘制

1. Matlab 绘图 1.1. Plot 函数 x-pi:pi/10:pi; %以pi/10为步长 ytan(sin(x))-sin(tan(x)); %求出各点上的函数值 plot(x,y,--rs,... %绘制红色的虚线&#xff0c;且每个转折点上用正方形表示。LineWidth,2,... % 设置线宽为2Marke…

Web(十)JavaScript知识训练-JS分支与循环

1、执行下面语句后c的值是&#xff08;D &#xff09;。 var a2,b1,c3; if(a<b){ c0; } else{ c&#xff1b; } A、 1 B、 2 C、 3 D、 4 2、var afalse; var x a?"A":"B"; 在上面的程序片段中&#xff0c;x的值是&#xff08;B &#xff09; A、 A …

XXL-Job分布式任务调度框架-- 介绍和服务搭建

一 xxl-job介绍 1.1 xxl-job介绍 xxl-job是轻量级的分布式任务调度框架&#xff0c;目标是开发迅速、简单、清理、易扩展; 老版本是依赖quartz的定时任务触发&#xff0c;在v2.1.0版本开始 移除quartz依 。 分布式任务调度平台XXL-JOB/ 二 xxl-job的服务搭建 2.1 软件包获…

【数据结构-JAVA】ArrayList

目录 1. 线性表 2. 顺序表(ArrayList) 2.1 什么是顺序表&#xff1f; 2.2 顺序表的使用 2.2.1 ArrayList 的构造方法 2.2.2 ArrayList 的常规操作 2.2.3 ArrayList 的遍历 2.3 顺序表的优缺点 3. 练习题 3.1 练习1 一道面试题 3.2 练习2 杨辉三角形 3.3 练习3 洗牌算法 3.4 …

第十四届蓝桥杯集训——switch——配套用法示例

第十四届蓝桥杯集训——switch——配套用法示例 示例题目&#xff1a; 计算某年某月某日有多少天&#xff1f; 输入三个变量&#xff0c;变量year代表年份&#xff0c;变量month代表月份&#xff0c;变量day代表当月的天数。 取值范围&#xff1a;1853>year<2050;0>…

高比例风电电力系统储能运行及配置分析(Matlab实现)

目录 0 概述 1 案例及分析及分析 2 Matlab实现 3 结论 运行结果 目录 0 概述 1 案例及分析及分析 2 Matlab实现 3 结论 0 概述 高比例风电电力系统储能运行及配置分析 1 案例及分析及分析 针对附件2所示的十五天负荷功率&#xff08;最大值1200MW&#xff09;、风电功…

基于java+springmvc+mybatis+vue+mysql的数据学院教务管理系统

项目介绍 管理员后台管理页面&#xff1a; 功能&#xff1a;首页、个人中心、学生管理、教师管理、专业管理、班级管理、课程信息管理、选课信息管理、课程成绩管理、学生申请管理、学生咨询管理、咨询回复管理、课程作业管理 学生后台管理页面功能&#xff1a;首页、注册、登…

RocketMQ的TAG过滤和SQL过滤机制

写作目的 项目中各个中台都使用同一个DB。而DB下会使用中间件监听binlog转换成MQ消息&#xff0c;而下游的各个中台去MQ去拿自己感兴趣的消息。 TAG 如果使用TAG去获取自己感兴趣的消息&#xff0c;那么对于一条学生表变更binlog&#xff0c;最少要插入三条消息&#xff0c;比…

微服务框架 SpringCloud微服务架构 多级缓存 47 Lua 语法入门 47.1 初识Lua

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 多级缓存 文章目录微服务框架多级缓存47 Lua 语法入门47.1 初识Lua47.1.1 初识Lua47.1.2 HelloWorld47 Lua 语法入门 47.1 初识Lua 47.1.1…