• 【经济调度】基于蝙蝠算法实现电力系统经济调度附Matlab代码


     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

    🍎个人主页:Matlab科研工作室

    🍊个人信条:格物致知。

    更多Matlab仿真内容点击👇

    智能优化算法  神经网络预测 雷达通信  无线传感器

    信号处理 图像处理 路径规划 元胞自动机 无人机  电力系统

    ⛄ 内容介绍

    随着科学技术的日益进步,各行各业的发展几乎都要依赖电力的支持,电力系统稳定安全运行已经关系到国家经济的发展.在电力系统运行和控制中,经济调度计算问题研究占有重要地位,在满足可靠供电和电能质量前提下,对电力系统运行的经济性进行优化,使系统获得巨大的经济效益,因此,电力系统经济调度研究具有极大的实际应用价值.

    ⛄ 部分代码

    %

    % ======================================================== %    

    % -------------------------------------------------------- %

    % -------------------------------------------------------------------

    % This is a simple demo version only implemented the basic          %

    % idea of the bat algorithm without fine-tuning(微调)the parameters,     % 

    % Then, though this demo works very well, it is expected that       %

    % this demo is much less efficient than the work reported in        % 

    % the following papers:                                             %

    % (Citation details):                                               %

    % 1) Yang X.-S., A new metaheuristic bat-inspired algorithm,        %

    %    in: Nature Inspired Cooperative Strategies for Optimization    %

    %    (NISCO 2010) (Eds. J. R. Gonzalez et al.), Studies in          %

    %    Computational Intelligence, Springer, vol. 284, 65-74 (2010).  %

    % 2) Yang X.-S., Nature-Inspired Metaheuristic Algorithms,          %

    %    Second Edition, Luniver Presss, Frome, UK. (2010).             %

    % 3) Yang X.-S. and Gandomi A. H., Bat algorithm: A novel           %

    %    approach for global engineering optimization,                  %

    %    Engineering Computations, Vol. 29, No. 5, pp. 464-483 (2012).  %

    % -------------------------------------------------------------------

    % Main programs starts here

    function [best,fmin,N_iter]=bat_algorithm(para)

    % Display help

     help bat_algorithm.m

    % Default parameters 默认参数

    if nargin<1,  para=[20 1000 0.5 0.5];  end

    n=para(1);      % Population size, typically10 to 40

    N_gen=para(2);  % Number of generations

    A=para(3);      % Loudness  (constant or decreasing)

    r=para(4);      % Pulse rate (constant or decreasing)

    % This frequency range determines the scalings

    % You should change these values if necessary

    Qmin=0;         % Frequency minimum

    Qmax=2;         % Frequency maximum

    % Iteration parameters

    N_iter=0;       % Total number of function evaluations   %这是什么意思???

    % Dimension of the search variables

    d=10;           % Number of dimensions 

    % Lower limit/bounds/ a vector

    Lb=-2*ones(1,d);

    % Upper limit/bounds/ a vector

    Ub=2*ones(1,d);   

    % Initializing arrays

    Q=zeros(n,1);   % Frequency

    v=zeros(n,d);   % Velocities

    % Initialize the population/solutions

    for i=1:n,

      Sol(i,:)=Lb+(Ub-Lb).*rand(1,d);

      Fitness(i)=Fun(Sol(i,:));

    end

    % Find the initial best solution

    [fmin,I]=min(Fitness);   %返回多个参数的时候用[ ],fmin接受第一个参数,I接受第二个参数

    %这里fmin是最小值,I是最小值的索引,也就是第几个

    best=Sol(I,:);

    % ======================================================  %

    % Note: As this is a demo, here we did not implement the  %

    % reduction of loudness and increase of emission rates.   %

    % Interested readers can do some parametric studies       %

    % and also implementation various changes of A and r etc  %

    % ======================================================  %

    % Start the iterations -- Bat Algorithm (essential part)  %

    for t=1:N_gen, 

    % Loop over all bats/solutions

            for i=1:n,

              Q(i)=Qmin+(Qmin-Qmax)*rand;%其中rand产生一个0到1的随机数

              v(i,:)=v(i,:)+(Sol(i,:)-best)*Q(i);

              S(i,:)=Sol(i,:)+v(i,:);

              % Apply simple bounds/limits

              Sol(i,:)=simplebounds(Sol(i,:),Lb,Ub);

              % Pulse rate

              if rand>r

              % The factor 0.001 limits the step sizes of random walks 

                  S(i,:)=best+0.001*randn(1,d);

              end

         % Evaluate new solutions

               Fnew=Fun(S(i,:));

         % Update if the solution improves, or not too loud

               if (Fnew<=Fitness(i)) & (rand

                    Sol(i,:)=S(i,:);

                    Fitness(i)=Fnew;

               end

              % Update the current best solution

              if Fnew<=fmin,

                    best=S(i,:);

                    fmin=Fnew;

              end

            end

            N_iter=N_iter+n;

             

    end

    % Output/display

    disp(['Number of evaluations: ',num2str(N_iter)]);

    disp(['Best =',num2str(best),' fmin=',num2str(fmin)]);

    % Application of simple limits/bounds

    function s=simplebounds(s,Lb,Ub)

      % Apply the lower bound vector

      ns_tmp=s;

      I=ns_tmp

      ns_tmp(I)=Lb(I);

      

      % Apply the upper bound vector 

      J=ns_tmp>Ub;

      ns_tmp(J)=Ub(J);

      % Update this new move 

      s=ns_tmp;

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    % Objective function: your own objective function can be written here

    % Note: When you use your own function, please remember to 

    %       change limits/bounds Lb and Ub (see lines 52 to 55) 

    %       and the number of dimension d (see line 51). 

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    function z=Fun(u)

    % Sphere function with fmin=0 at (0,0,...,0)

    z=sum(u.^2);

    %%%%% ============ end ====================================

    ⛄ 运行结果

    见主页链接

    ⛄ 参考文献

    [1]陈相吾. 基于改进蝙蝠算法的多能互补微电网优化调度研究[D]. 西安理工大学, 2019.

    ⛄ Matlab代码关注

    ❤️部分理论引用网络文献,若有侵权联系博主删除

    ❤️ 关注我领取海量matlab电子书和数学建模资料

  • 相关阅读:
    HTTP缓存协议实战
    SpringBoot3自动配置流程及原理、SpringBootApplication注解详解
    9.Flink实时项目之订单宽表
    【详细学习SpringBoot源码之自定义监听器实战演练-6(自定义监听器、自定义监听事件、指定监听事件)】
    计算机毕设(附源码)JAVA-SSM基于技术的高校学生勤工俭学管理系统的设计与开发
    3.21 小红书薯条改版了,都改了些什么呢?【玩赚小红书】
    软信天成:物料主数据的标准管理
    11.23二叉树
    训练营第三十五天动态规划(基础题part1)
    字符串函数(一)之常见用法
  • 原文地址:https://blog.csdn.net/qq_59747472/article/details/128062847