• 基于GA优化算法的磁性贴片位置布置优化算法matlab仿真


    目录

    一、理论基础

    二、案例背景

    1.问题描述

    2.思路流程

    三、部分MATLAB仿真

    四、仿真结论分析

    五、参考文献


    一、理论基础

    二、案例背景

    1.问题描述

    2.思路流程

    首先来分析一下这个最优计算公式:

     

    一、A矩阵为对圆筒内表面上的132个点进行贴片,进而对匀场球体表面上132个测量点的贡献矩阵系数。 以上数据构成MATLAB大数据矩阵,其中大矩阵中的数据按照从-5至+5的顺序进行周期排列填充,其中行数为12*11=132行。           

            其中12为重复的周期数,11为每个周期中所含有的行数=-5+5,一共为11行,每行中的元素按照表格中的角度从小到大进行填充,          

            每个角度中的列数据按照由上至下的顺序填充,每行中含有的数据为11*12=132个数据,也即构成大矩阵的132列。所以,大

            矩阵中一共含有的填充数据位(12*11)(总行数)*132(总列数)=17424个数据。(此矩阵也即算法中的贡献因子矩阵A)

    二、每个位置上的贴片数量构成的矩阵X,贴片位置数一共为12*11=132个,其中12代表沿着圆筒圆周方向将360°等分12份,11代表每一等分位置处,沿着轴向位置从坐标-5至+5的11个位置(即11个位置处的贴片数量可表示为:-x5、-x4、-x3、-x2、-x1、x0、+x1、+x2、+x3、+x4、+x5),所以矩阵X中的元素数为12*11=132个,可表示成132*1的矩阵。

    三、B矩阵为初始磁场分布数值列矩阵(需要填充的数据详见上表-1)

    四、D矩阵为目标磁场分布数值列矩阵(需要填充的数据详见上表-3),各点目标场值的偏差量控制在-2000Hz~2000Hz。

    三、部分MATLAB仿真

    1. clc;
    2. clear;
    3. close all;
    4. warning off;
    5. addpath 'GA_toolbox\'
    6. %初始矩阵读取
    7. [Ini_c,B,B0,D,D0,A0,A1,A2,A3,A4,A5,A6,A7,A8,A_1,A_2,A_3,A_4,A_5,A_6,A_7,A_8]=func_ini_matrix();
    8. %获得A,插值,变为相同维度
    9. A8 = A8.*[B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0];
    10. A7 = A7.*[B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0];
    11. A6 = A6.*[B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0];
    12. A5 = A5.*[B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0];
    13. A4 = A4.*[B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0];
    14. A3 = A3.*[B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0];
    15. A2 = A2.*[B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0];
    16. A1 = A1.*[B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0];
    17. A0 = A0.*[B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0];
    18. A_1 = A_1.*[B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0];
    19. A_2 = A_2.*[B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0];
    20. A_3 = A_3.*[B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0];
    21. A_4 = A_4.*[B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0];
    22. A_5 = A_5.*[B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0];
    23. A_6 = A_6.*[B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0];
    24. A_7 = A_7.*[B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0];
    25. A_8 = A_8.*[B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0];
    26. A = [A_8,A_7,A_6,A_5,A_4,A_3,A_2,A_1,A0,A1,A2,A3,A4,A5,A6,A7,A8];
    27. Ax = [A;A;A;A;A;A;A;A;A;A;A;A]; %这个位置就是之前说的数据A太小导致
    28. Ax = imresize(Ax,[132,132]);
    29. [R,C] = size(B);
    30. %[-x5、-x4、-x3、-x2、-x1、x0、+x1、+x2、+x3、+x4、+x5]'
    31. X = zeros(R*C,1);
    32. %矩阵预先处理,即维度变换
    33. B = B/1e6+[B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0];
    34. D = D/1e6+[D0,D0,D0,D0,D0,D0,D0,D0,D0,D0,D0,D0];
    35. Bx = reshape(B,[R*C,1]);
    36. Dx = reshape(D,[R*C,1]);
    37. %约束条件
    38. Cmax = 20;
    39. %下面开始使用遗传优化算法
    40. %根据遗传算法进行参数的拟合
    41. MAXGEN = 500;
    42. NIND = 1000;
    43. Nums = length(Dx);
    44. Chrom = crtbp(NIND,Nums*10);
    45. Sm = 0;
    46. Areas = [];
    47. for i = 1:Nums
    48. Areas = [Areas,[0;Cmax]];
    49. end
    50. FieldD = [rep([10],[1,Nums]);Areas;rep([0;0;0;0],[1,Nums])];
    51. gen = 0;
    52. for a=1:1:NIND
    53. %计算对应的目标值
    54. Xx = round(Cmax*rand(1,Nums));
    55. [epls] = func_obj(Ax,Xx,Bx,Dx);
    56. E = epls;
    57. Js(a,1) = E;
    58. end
    59. Objv = (Js+eps);
    60. gen = 0;
    61. ERR=zeros(1,MAXGEN);
    62. while gen < MAXGEN;
    63. gen
    64. Pe0 = 0.995;
    65. pe1 = 0.005;
    66. FitnV=ranking(Objv);
    67. Selch=select('sus',Chrom,FitnV);
    68. Selch=recombin('xovsp', Selch,Pe0);
    69. Selch=mut( Selch,pe1);
    70. phen1=bs2rv(Selch,FieldD);
    71. for a=1:1:NIND
    72. Xx = phen1(a,:);
    73. for jj = 1:Nums
    74. if Xx(jj) < 1
    75. Xx(jj) = 0;
    76. end
    77. if Xx(jj) > Cmax
    78. Xx(jj) = Cmax;
    79. end
    80. end
    81. Xx = round(Xx);
    82. %计算对应的目标值
    83. epls = func_obj(Ax,Xx,Bx,Dx);
    84. E = epls;
    85. JJ(a,1) = E;
    86. Xx2{a} = Xx;
    87. end
    88. Objvsel=(JJ);
    89. [Chrom,Objv]=reins(Chrom,Selch,1,1,Objv,Objvsel);
    90. gen=gen+1;
    91. %保存参数收敛过程和误差收敛过程以及函数值拟合结论
    92. index1 = isnan(JJ);
    93. index2 = find(index1 == 1);
    94. JJ(index2) = [];
    95. ERR(gen)=mean(JJ);
    96. end
    97. figure;plot(ERR)
    98. xlabel('优化迭代次数');
    99. ylabel('误差(Mhz)');
    100. grid on
    101. [V,I] = min(JJ);
    102. Xx_best = Xx2{I};
    103. X = reshape(Xx_best,[11,12])
    104. y = Ax*Xx_best'+Bx;
    105. Y = (reshape(y,[11,12]) - ([B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0]));
    106. round(1e6*max(max(Y)))

    四、仿真结论分析

    优化后的X位置信息

    GA优化迭代过程。

    五、参考文献

    [1]董健腾, 龙绪明, 曹宏耀,等. 贴片机贴装路径优化的改进遗传算法[J]. 电子工业专用设备, 2015(12):6.A10-45

  • 相关阅读:
    语义分割算法及在无人驾驶的应用
    图形学-几何-网格操作
    Allegro在板内添加器件限高区操作指导
    开启智慧之旅,AI与机器学习驱动的微服务设计模式探索
    面试必备(背)--Redis八股文系列
    ElasticSearch - DSL查询文档语法,以及深度分页问题、解决方案
    Mysql调优你不得不考虑的事
    什么是ETL?
    java基于BS结构的中俄师生学术交流平台
    成都某公司笔试题sql
  • 原文地址:https://blog.csdn.net/ccsss22/article/details/126273004