优化选址基于matlab改进的粒子群算法求解充电桩选址优化问题含Matlab源码 1964期

Posted 海神之光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优化选址基于matlab改进的粒子群算法求解充电桩选址优化问题含Matlab源码 1964期相关的知识,希望对你有一定的参考价值。

一、粒子群算法简介

1 粒子群算法的概念
粒子群优化算法(PSO:Particle swarm optimization) 是一种进化计算技术(evolutionary computation)。源于对鸟群捕食的行为研究。粒子群优化算法的基本思想:是通过群体中个体之间的协作和信息共享来寻找最优解.
PSO的优势:在于简单容易实现并且没有许多参数的调节。目前已被广泛应用于函数优化、神经网络训练、模糊系统控制以及其他遗传算法的应用领域。

2 粒子群算法分析
2.1基本思想
粒子群算法通过设计一种无质量的粒子来模拟鸟群中的鸟,粒子仅具有两个属性:速度和位置,速度代表移动的快慢,位置代表移动的方向。每个粒子在搜索空间中单独的搜寻最优解,并将其记为当前个体极值,并将个体极值与整个粒子群里的其他粒子共享,找到最优的那个个体极值作为整个粒子群的当前全局最优解,粒子群中的所有粒子根据自己找到的当前个体极值和整个粒子群共享的当前全局最优解来调整自己的速度和位置。下面的动图很形象地展示了PSO算法的过程:

2 更新规则
PSO初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次的迭代中,粒子通过跟踪两个“极值”(pbest,gbest)来更新自己。在找到这两个最优值后,粒子通过下面的公式来更新自己的速度和位置。

公式(1)的第一部分称为【记忆项】,表示上次速度大小和方向的影响;公式(1)的第二部分称为【自身认知项】,是从当前点指向粒子自身最好点的一个矢量,表示粒子的动作来源于自己经验的部分;公式(1)的第三部分称为【群体认知项】,是一个从当前点指向种群最好点的矢量,反映了粒子间的协同合作和知识共享。粒子就是通过自己的经验和同伴中最好的经验来决定下一步的运动。以上面两个公式为基础,形成了PSO的标准形式。

公式(2)和 公式(3)被视为标准PSO算法。
3 PSO算法的流程和伪代码

二、部分源代码

clear all;
clc;
close all
tic;
%速度更新参数
load city_data.mat;
load cars_data.mat;
global cars_data;
global city_data;
global congDianZhan_shuliang;
congDianZhan_shuliang=5;%充电站的数量

radui=2;%服务半径的值
c1=1.2;
c2=1.2;
maxgen=200;
w=zeros(1,maxgen);%惯性权重的生成
w(1)=1;
sizepop=50;%种群规模
%% 种群初始化
for i=1:sizepop
    %随机产生一个种群
    pop(i,:)=randperm(10,congDianZhan_shuliang);
    v(i,:)=0.5*rands(1,congDianZhan_shuliang);
    fitness(i)=fun(pop(i,:));
end
%% 寻找初始值
[bestfitness,bestindex]=min(fitness);
zbest=pop(bestindex,:);%群体极值位置
gbest=pop;%个体极值位置
fitnessgbest=fitness;%个体极值适应度值
fitnesszbest=bestfitness;%群体极值适应度值
%% 迭代寻优
for i=1:maxgen
    %粒子位置和速度更新
    for j=1:sizepop
        a=rand;
        v(j,:)=w(i)*v(j,:)+c1*a*rand*(gbest(j,:)-pop(j,:))+c2*rand*(zbest-pop(j,:))+c1*(1-a)*rand*(min(gbest(j,:))-pop(j,:));%pnd当代种群粒子的最优值,a为可变权重值
        %粒子更新
        pop(j,:)=pop(j,:)+v(j,:);
        r=rand;%交叉随机权重
        pop(j,:)=r*gbest(j,:)+(1-r)*zbest;
        %新粒子适应度值
        pop(j,:)=fix(pop(j,:));
        for m=1:4
            for g=m+1:5
                if pop(j,m)==pop(j,g)
                    pop(j,m)=randperm(10,1);
                    for h=1:4
                      for z=h+1:5
                           if pop(j,h)==pop(j,z)
                                 pop(j,h)=randperm(10,1);
                                 for g=1:4
                                        for f=g+1:5
                                            if pop(j,g)==pop(j,f)
                                                pop(j,g)=randperm(10,1);
                                            end
                                        end
                                 end
                           end
                      end
                    end
                end
            end
        end
        fitness(j)=fun(pop(j,:));
    end

三、运行结果

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

以上是关于优化选址基于matlab改进的粒子群算法求解充电桩选址优化问题含Matlab源码 1964期的主要内容,如果未能解决你的问题,请参考以下文章

优化选址基于matlab蚁群算法求解电动汽车充电站与换电站选址优化问题含Matlab源码 1182期

物流选址基于matlab粒子群算法求解物流选址问题含Matlab源码 410期

物流选址基于matlab粒子群算法求解多物流中心选址问题含Matlab源码 1458期

布局优化基于粒子群算法实现充电布点优化matlab源码

布局优化基于粒子群算法实现充电布点优化matlab源码

优化求解基于惯性权值非线性递减的改进粒子群算法(IMPSO)matlab源码