【分布式能源的选址与定容】基于非支配排序多目标粒子群优化算法求解分布式能源的选址与定容附Matlab代码

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

个人主页:Matlab科研工作室

个人信条:格物致知。

更多Matlab仿真内容点击

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

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

⛄ 内容介绍

综合能源系统具有提高能源利用率,消纳不稳定新能源等显著优势,随着分布式能源的发展,综合能源系统已成为解决能源问题的重要举措.基于粒子群算法配电网分布式能源选址定容问题,求解以网损、电压偏差、投资运行费用最小为目标。

⛄ 部分代码

function f  = replace_chromosome(intermediate_chromosome, M, V,pop)

%% function f  = replace_chromosome(intermediate_chromosome,pro,pop)

% This function replaces the chromosomes based on rank and crowding

% distance. Initially until the population size is reached each front is

% added one by one until addition of a complete front which results in

% exceeding the population size. At this point the chromosomes in that

% front is added subsequently to the population based on crowding distance.

%  Copyright (c) 2009, Aravind Seshadri

%  All rights reserved.

%

%  Redistribution and use in source and binary forms, with or without 

%  modification, are permitted provided that the following conditions are 

%  met:

%

%     * Redistributions of source code must retain the above copyright 

%       notice, this list of conditions and the following disclaimer.

%     * Redistributions in binary form must reproduce the above copyright 

%       notice, this list of conditions and the following disclaimer in 

%       the documentation and/or other materials provided with the distribution

%      

%  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 

%  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 

%  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 

%  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 

%  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 

%  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 

%  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 

%  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 

%  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 

%  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 

%  POSSIBILITY OF SUCH DAMAGE.

[N, m] = size(intermediate_chromosome);

% Get the index for the population sort based on the rank

[temp,index] = sort(intermediate_chromosome(:,M + V + 1));

clear temp m

% Now sort the individuals based on the index

for i = 1 : N

    sorted_chromosome(i,:) = intermediate_chromosome(index(i),:);

end

% Find the maximum rank in the current population

max_rank = max(intermediate_chromosome(:,M + V + 1));

% Start adding each front based on rank and crowing distance until the

% whole population is filled.

previous_index = 0;

for i = 1 : max_rank

    % Get the index for current rank i.e the last the last element in the

    % sorted_chromosome with rank i. 

    current_index = max(find(sorted_chromosome(:,M + V + 1) == i));

    % Check to see if the population is filled if all the individuals with

    % rank i is added to the population. 

    if current_index > pop

        % If so then find the number of individuals with in with current

        % rank i.

        remaining = pop - previous_index;

        % Get information about the individuals in the current rank i.

        temp_pop = ...

            sorted_chromosome(previous_index + 1 : current_index, :);

        % Sort the individuals with rank i in the descending order based on

        % the crowding distance.

        [temp_sort,temp_sort_index] = ...

            sort(temp_pop(:, M + V + 2),'descend');

        % Start filling individuals into the population in descending order

        % until the population is filled.

        for j = 1 : remaining

            f(previous_index + j,:) = temp_pop(temp_sort_index(j),:);

        end

        return;

    elseif current_index < pop

        % Add all the individuals with rank i into the population.

        f(previous_index + 1 : current_index, :) = ...

            sorted_chromosome(previous_index + 1 : current_index, :);

    else

        % Add all the individuals with rank i into the population.

        f(previous_index + 1 : current_index, :) = ...

            sorted_chromosome(previous_index + 1 : current_index, :);

        return;

    end

    % Get the index for the last added individual.

    previous_index = current_index;

end

⛄ 运行结果

【分布式能源的选址与定容】基于非支配排序多目标粒子群优化算法求解分布式能源的选址与定容附Matlab代码_第1张图片

⛄ 参考文献

[1]黄帅, 龙燕, 易斌,等. 基于改进粒子群优化算法的微电网孤岛选址定容[J]. 后勤工程学院学报, 2015, 31(2):5.

[2]李兆北, 王印松, 苏杰. 基于非支配排序遗传算法和多目标粒子群算法的脱硫系统运行策略优化[J]. 热力发电, 2022, 51(7):7.

⛄ Matlab代码关注

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

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

 

你可能感兴趣的:(电力系统,能源,算法,matlab)