基于GA遗传优化的新能源充电桩最优布局matlab仿真

本文涉及的产品
全球加速 GA,每月750个小时 15CU
简介: 基于GA遗传优化的新能源充电桩最优布局matlab仿真

1.算法概述

   遗传算法的起源可追溯到20世纪60年代初期。1967年,美国密歇根大学J. Holland教授的学生 Bagley在他的博士论文中首次提出了遗传算法这一术语,并讨论了遗传算法在博弈中的应用,但早期研究缺乏带有指导性的理论和计算工具的开拓。1975年, J. Holland等提出了对遗传算法理论研究极为重要的模式理论,出版了专著《自然系统和人工系统的适配》,在书中系统阐述了遗传算法的基本理论和方法,推动了遗传算法的发展。20世纪80年代后,遗传算法进入兴盛发展时期,被广泛应用于自动控制、生产计划、图像处理、机器人等研究领域。   

   遗传算法的基本运算过程如下: 

(1)初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0)。
(2)个体评价:计算群体P(t)中各个个体的适应度。
(3)选择运算:将选择算子作用于群体。选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的。
(4)交叉运算:将交叉算子作用于群体。遗传算法中起核心作用的就是交叉算子。
(5)变异运算:将变异算子作用于群体。即是对群体中的个体串的某些基因座上的基因值作变动。群体P(t)经过选择、交叉、变异运算之后得到下一代群体P(t+1)。
(6)终止条件判断:若t=T,则以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算。

   遗传操作包括以下三个基本遗传算子(genetic operator):选择(selection);交叉(crossover);变异(mutation)。

1.1选择

   从群体中选择优胜的个体,淘汰劣质个体的操作叫选择。选择算子有时又称为再生算子。选择的目的是把优化的个体(或解)直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的,常用的选择算子有以下几种:适应度比例方法、随机遍历抽样法、局部选择法。  

1.2交叉

   在自然界生物进化过程中起核心作用的是生物遗传基因的重组(加上变异)。同样,遗传算法中起核心作用的是遗传操作的交叉算子。所谓交叉是指把两个父代个体的部分结构加以替换重组而生成新个体的操作。通过交叉,遗传算法的搜索能力得以飞跃提高。

1.3变异

   变异算子的基本内容是对群体中的个体串的某些基因座上的基因值作变动。依据个体编码表示方法的不同,可以有以下的算法: 

a)实值变异。
b)二进制变异。

2.仿真效果预览
MATLAB仿真结果如下图所示:
1.png
2.png

3.核心MATLAB程序

%汽车类型随机划分
II      = randperm(length(Icar));
Car1    = II(1:12);
Car2    = II(13:21);
Car3    = II(22:30);
TYPE    = ones(1,length(Icar));
TYPE(Car1)=1;
TYPE(Car2)=2;
TYPE(Car3)=3;
 
ICDZ    = [1;2;3;4;5;6;7;8;9;10];
XCDZ    = 9.6/700*[1284.40591400000;1162.70564500000;1158.02486600000;857.518817000000;772.328629000000;725.520833000000;574.799731000000;464.333333000000;205.954301000000;920.241263000000];
YCDZ    = 9.6/700*[463.870296000000;593.059812000000;418.934812000000;562.166667000000;343.106183000000;302.851478000000;448.891801000000;377.743952000000;315.021505000000;427.360215000000];
 
%用户路程成本
Myrod   = 1;
%充电站建设使用周期为10年
CDZage  = 10;
MAXGEN = 40;
NIND   = 1000;
Nums   = 10; 
Chrom  = crtbp(NIND,Nums*10);
 
%sh
Areas = [];
for i = 1:Nums
    Areas = [Areas,[0;4]];% 目标范围0到4,如果是0,则表明该位置不安装充电桩
end
 
FieldD = [rep([10],[1,Nums]);Areas;rep([0;0;0;0],[1,Nums])];
 
gen   = 0;
for a=1:1:NIND 
    %计算对应的目标值
    X            = round(4*rand(1,Nums));%初始值
    [epls,f1,f2,Aim] = func_obj(X);
    E            = epls;
    Js(a,1)      = E;
end
 
Objv  = (Js+eps);
gen   = 0; 
 
%%
while gen < MAXGEN;   
      gen
      Pe0 = 0.99;
      pe1 = 0.01; 
 
      FitnV=ranking(Objv);    
      Selch=select('sus',Chrom,FitnV);    
      Selch=recombin('xovsp', Selch,Pe0);   
      Selch=mut( Selch,pe1);   
      phen1=bs2rv(Selch,FieldD);   
 
      for a=1:1:NIND  
          X           = round(phen1(a,:));
          %计算对应的目标值
          [epls,f1,f2,Aim]= func_obj(X);
          E           = epls;
          JJ(a,1)     = E;
      end 
      
      Objvsel=(JJ);    
      [Chrom,Objv]=reins(Chrom,Selch,1,1,Objv,Objvsel);   
      gen=gen+1; 
 
      %保存参数收敛过程和误差收敛过程以及函数值拟合结论
      index1     = isnan(JJ);
      index2     = find(index1 == 1);
      JJ(index2) = [];
      index3     = find(JJ==10000000000000);
      JJ(index3) = [];
      Error(gen) = mean(JJ);
      [VV,II]=min(JJ);
     
end 
 
figure;
plot(Error,'linewidth',2);
grid on
xlabel('迭代次数');
ylabel('遗传算法优化过程');
legend('Average fitness');
 
[V,I] = min(JJ);
X     = round(phen1(I,:))
[epls,f1,f2,Aim]= func_obj(X);
 
%成本输出
epls
f1
f2
 
%显示布局图
ii=find(X==0);
X(ii)=[];
XCDZ(ii)=[];
YCDZ(ii)=[];
figure;
for i = 1:length(X)
    if X(i)==1
       plot(XCDZ(i),YCDZ(i),'bo','LineWidth',2,...
                       'MarkerEdgeColor','k',...
                       'MarkerFaceColor','b',...
                       'MarkerSize',10);
       hold on
       text(XCDZ(i)+0.2,YCDZ(i)+0.2,num2str(X(i)));hold on
    end
    if X(i)==2
       plot(XCDZ(i),YCDZ(i),'rs','LineWidth',2,...
                       'MarkerEdgeColor','k',...
                       'MarkerFaceColor','r',...
                       'MarkerSize',10);
       hold on
       text(XCDZ(i)+0.2,YCDZ(i)+0.2,num2str(X(i))); hold on
    end    
    if X(i)==3
       plot(XCDZ(i),YCDZ(i),'k^','LineWidth',2,...
                       'MarkerEdgeColor','k',...
                       'MarkerFaceColor','c',...
                       'MarkerSize',10);
       hold on
       text(XCDZ(i)+0.2,YCDZ(i)+0.2,num2str(X(i)));hold on
    end
    if X(i)==4
       plot(XCDZ(i),YCDZ(i),'r>','LineWidth',2,...
                       'MarkerEdgeColor','k',...
                       'MarkerFaceColor','g',...
                       'MarkerSize',10);
       hold on
       text(XCDZ(i)+0.2,YCDZ(i)+0.2,num2str(X(i)));hold on
    end
end
hold on
plot(Xcar,Ycar,'gx');
for i = 1:length(Aim)
    plot([Xcar(i),XCDZ(Aim(i))],[Ycar(i),YCDZ(Aim(i))],'b-o','LineWidth',1,...
                       'MarkerEdgeColor','k',...
                       'MarkerFaceColor','y',...
                       'MarkerSize',5);
    hold on
end
 
A003
相关文章
|
18天前
|
算法
基于WOA鲸鱼优化的购售电收益与风险评估算法matlab仿真
本研究提出了一种基于鲸鱼优化算法(WOA)的购售电收益与风险评估算法。通过将售电公司购售电收益风险计算公式作为WOA的目标函数,经过迭代优化计算出最优购电策略。实验结果表明,在迭代次数超过10次后,风险价值收益优化值达到1715.1万元的最大值。WOA还确定了中长期市场、现货市场及可再生能源等不同市场的最优购电量,验证了算法的有效性。核心程序使用MATLAB2022a实现,通过多次迭代优化,实现了售电公司收益最大化和风险最小化的目标。
|
18天前
|
算法
通过matlab对比遗传算法优化前后染色体的变化情况
该程序使用MATLAB2022A实现遗传算法优化染色体的过程,通过迭代选择、交叉和变异操作,提高染色体适应度,优化解的质量,同时保持种群多样性,避免局部最优。代码展示了算法的核心流程,包括适应度计算、选择、交叉、变异等步骤,并通过图表直观展示了优化前后染色体的变化情况。
|
20天前
|
算法 决策智能
基于遗传优化算法的TSP问题求解matlab仿真
本项目使用遗传算法解决旅行商问题(TSP),目标是在四个城市间找到最短路径。算法通过编码、选择、交叉、变异等步骤,在MATLAB2022A上实现路径优化,最终输出最优路径及距离。
|
4月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
224 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
4月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
141 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
4月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
110 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
7月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
7月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
7月前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)