• 【优化布局】基于遗传算法实现风电场集电系统优化附matlab代码


    1 内容介绍

    为了使风电场并网结构性能提高且经济损耗在可行范围内,将阻抗最小、经济最优相结合对风电场集电线路进行优化,建立目标函数求解.针对本文目标函数的求解,提出了基于遗传算法风电场集电线路结构的优化方法.仿真数据表明,通过遗传算法优化出的数据结果具有较好地准确性和参考性,且遗传算法的目标函数能被运用于多种风机台数的场合,所得的优化算法具有较好地实用性.​

    2 部分代码

    clear

    clc

    tic

    InitDATA;    %读入初始数据

    %%%%%%%%%%%%%%基本参数设定%%%%%%%%%%%%

    global Cable_Data %定义一个全局变量,电缆数据

    global Turbine_Data %定义一个全局变量,风机数据(S,IN etc.)

    global WT_XY %定义一个全局变量,风机坐标数据

    global onshoresubxy%岸上变电站数据

    WT_XY_SUB=[WT_XY;onshoresubxy]

    minTour=8;

    WT_num=length(WT_XY);%风机数量 8的倍数

    WT_XY(:,3)=1:1:WT_num;%给风机标序号

    WT_XY_SUB(:,3)=1:1:WT_num+1;

    nclusters=round(WT_num/8);%8个风机为一串,得分串数

    nbreaks=nclusters-1;%断点数

    WT_cap=Turbine_Data(1,1);%风机容量

    distance=[];%岸上变电站与各个风机距离向量

    poproute=[];%分区内风机路径向量

    poproute_break=[];%断点位置行向量

    rte=[];

    for i=1:WT_num

        distance(i)=sqrt((WT_XY (i,1)-onshoresubxy(1))^2+(WT_XY(i,2)-onshoresubxy(2))^2);

    end

    [~,disind]=sort(distance);%sort从小到大排列,disind保存距离远近序号

    poproute=disind;%风机序列行向量,按距离远近排列

    poproute_break=brk_pos(minTour,nbreaks,WT_num);

    rng = [[1 poproute_break+1];[poproute_break WT_num]]'; %nclusters行2列矩阵,存储每个分串的风机在poproute中的起、止位置

           

     clr = [1 0 0; 0 0 1; 0.67 0 1; 0 1 0; 1 0.5 0;0.5 0 0;0 0.53 0;1 0.2 0];

    if nclusters > 7

            clr= hsv(nclusters);

    end

     for s = 1:nclusters

      rte = poproute([rng(s,1):rng(s,2) rng(s,1)]); %rte指向分串s内所有风机的序号

      plot(WT_XY(rte,1),WT_XY(rte,2),'.','Color',clr(s,:)); 

        hold on

     end

        hold off

    poproute1=[];

    poproute2=[];

    for j=1:nclusters %选取不同分串内的风机

        if j==1 %第一个分串的风机

            poproute1(j,:)=poproute(1:poproute_break(j));

        elseif j1 %第二个至倒数第二个分串的风机

            poproute1(j,:)=poproute(poproute_break(j-1)+1:poproute_break(j));

        else %最后一个分串的风机

            poproute1(j,:)=poproute(poproute_break(j-1)+1:length(poproute));

        end

    end

    poproute2=poproute1;

    %以上正确

    for h=1:nclusters       

    a=WT_XY(poproute1(h,:),1)-onshoresubxy(1,1);%x坐标差

    b=WT_XY(poproute1(h,:),2)-onshoresubxy(1,2);%y坐标差

    wt_sub_ang=atan2(b,a);%角度列向量

    [~,angind]=sort(wt_sub_ang);%按角度大小排列,angind为1,2,3,4,5,6,7,8

    for k=1:minTour

      poproute1(h,k)=poproute2(h,angind(k,1));%每个分串风机路径按角度排列

      end

    end

      for hh = 1:nclusters

          for ll = 1:minTour-1

          sege=[poproute1(hh,ll),poproute1(hh,ll+1)];%每段海缆的起、止风机序号

          plot(WT_XY(sege,1),WT_XY(sege,2),'*-','Color',clr(hh,:));%连接每串风机

          hold on  

          end 

      end

      

      for hhh=1:nclusters-1

       sege1=[poproute1(hhh,1),poproute1(hhh+1,1)];%每串首端相连

       sege2=[poproute1(hhh,minTour),poproute1(hhh+1,minTour)];%每串尾端相连

       plot(WT_XY(sege1,1),WT_XY(sege1,2),'*-','Color',clr(hhh,:));

        hold on

       plot(WT_XY(sege2,1),WT_XY(sege2,2),'*-','Color',clr(hhh,:));

        hold on

       plot(WT_XY(poproute1(1,1),1),WT_XY(poproute1(1,minTour),2),'*-','Color',clr(hhh,:));

        hold on

      

       plot(onshoresubxy(1,1),onshoresubxy(1,2),'o','Color',clr(hhh,:))

        hold on

      end

       sege3=[poproute1(1,1),57];%每段海缆的起、止风机序号

        plot(WT_XY_SUB(sege3,1),WT_XY_SUB(sege3,2),'*-','Color',clr(hhh,:));

        hold on

      sege4=[poproute1(1,minTour),57];%每段海缆的起、止风机序号

        plot(WT_XY_SUB(sege4,1),WT_XY_SUB(sege4,2),'*-','Color',clr(hhh,:));

        hold on

        hold off

      

      toc

      

        

    3 运行结果

    4 参考文献

    [1]汪惟源, 乔颖, 窦飞,等. 基于改进遗传算法的海上风电场集电系统拓扑优化[J]. 中国电力, 2019, 52(1):6.

    博主简介:擅长智能优化算法神经网络预测信号处理元胞自动机图像处理路径规划无人机雷达通信无线传感器等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

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

     

  • 相关阅读:
    Ubuntu20.04安装gRPC-go
    P2678 [NOIP2015 提高组] 跳石头
    springboot项目创建5种方式
    操作系统面试知识点
    NVIDIA 7th SkyHackathon(八)使用 Flask 与 Vue 开发 Web
    Rust常用特型之TryFrom和TryInto特型
    架构设计技术之分布式数据存储
    图计算中的世界观?推荐一本值得反复阅读的书籍
    光热发电的能量汇聚111
    Redis 用户管理手册
  • 原文地址:https://blog.csdn.net/matlab_dingdang/article/details/126733049