使用遗传算法求二元函数的最小值

  

<强>二元函数为y=x1 ^ 2 + x2 ^ 2, x∈(5, 5)

        宁德=121;%初始种群的个数(个人)   据NVAR=2;%一个染色体(个体)有多少基因   PRECI=20;%变量的二进制位数(精度变量)   MAXGEN=200;%最大遗传代数(一代又一代的最大数量)   GGAP=0.8;%代沟(代沟),以一定概率选择父代遗传到下一代   跟踪=0 (MAXGEN, 2);%寻优结果的初始值      铬=crtbp(宁德,PRECI *据NVAR);%初始种群      %区域描述器(构建字段描述符)   %确定每个变量的二进制位数,取值范围,及取值范围是否包括边界等。   FieldD=[代表([PRECI],[1,据NVAR]);代表([5;5],[1,据NVAR]);代表([1,0,1,1],[1,据NVAR]));   Objv=objfun (bs2rv(铬、FieldD))   创=1;%代计数器   而gen<=MAXGEN   Fitv=排名(Objv);%分配适应度值(分配健身值)   选择通道=选择(“嫌疑犯”,铬、Fitv GGAP);%选择   选择通道=recombin (“xovsp”,选择通道,1);%重组   选择通道=傻瓜(选择通道);%变异   ObjVSel=objfun (bs2rv(选择通道,FieldD)); %子代个体的十进制转换   %重插入子代的新种群   (铬,Objv)=缰绳(铬,选择通道,1,1,Objv ObjVSel);   跟踪(创1)=min (Objv);%遗传算法性能跟踪   跟踪(gen 2)=(Objv)/长度总和(Objv);   创=创+ 1;%代计数器增加   结束   情节(跟踪(:1));   按住alt键="使用遗传算法求二元函数的最小值">

  

根据上面的求解模型,可以写出模型的m文件如下,即适应度函数

        % OBJFUN.M   %的语法:ObjVal=objfun1(铬、rtn_type)   %   %输入参数:   %色矩阵包含当前的染色体   %的人口。每一行对应于一个人的   %字符串表示。   %如果铬==[],那么将返回特殊值   % rtn_type——如果铬==[]   % rtn_type==1(或[])返回边界   % rtn_type==2返回标题   % rtn_type==3全球最低的返回值   %   %输出参数:   % ObjVal——包含的客观值列向量   %的人在当前的人口。   %如果称为铬==[],然后ObjVal包含   % rtn_type==1,矩阵函数的边界   % rtn_type==2,标题的文本的图形输出   % rtn_type==3,全球最低的价值   %作者:YQ_younger      函数ObjVal=objfun(铬、rtn_type);      %的目标函数   昏暗的=2;   %计算总体参数   [宁德,据Nvar]=大小(铬);   %检查大小的铬和做适当的事情   %如果铬[],然后定义boundary-matrix和值的大小   如果宁德==0   %的返回文本标题图形输出   如果rtn_type==2   ObjVal=['德容函数1 - ' int2str(暗)];   %全球最低的返回值   elseif rtn_type==3   ObjVal=0;   %定义boundary-matrix和值的大小   其他的   对所有n %降低和上界,相同的变量   ObjVal=1 * [5;5);   ObjVal=ObjVal(1:2(暗,1));   结束   %如果模糊变量,计算值的函数   elseif据Nvar==渺茫   %函数1,i=1笔ξ^ 2:暗(暗=30)   % n=昏暗,5 & lt;=xi & lt;=5   全球最低% (xi)=(0);fmin=0   ObjVal=总和((铬。*铬)')';   % ObjVal=诊断接头(铬*铬”);%都产生相同的行   铬的%否则错误,错误的格式   其他的   错误(矩阵铬的大小是不正确的评价函数的);   结束   %的函数   之前      

<强>注释:
  种群表示和初始化函数bs2rv:
  二进制串到实值的转换
  苯酚的=bs2rv(铬,FieldD) FieldD=(len、磅、乌兰巴托、代码、规模、lbin, ubin]
  代码(我)=1为标准的二进制编码,代码(我)=0为格雷编码
  规模(i)=0为算术刻度、规模(i)=1为对数刻度
  函数crtbp:
  创建初始种群
  (铬,林德,BaseV]=crtbp(宁德,林德)

  

[铬,林德,BaseV]=crtbp(宁德BaseV)
  (铬,林德,BaseV]=crtbp(宁德,林德,BaseV)

  

宁德指定种群中个体的数量,林德指定个体的长度
  函数crtrp:
  创建实值原始种群
  FieldDR铬=crtrp(宁德)

  

适应度计算函数排名:
  基于排序的适应度分配(此函数是从最小化方向对个体进行排序的)
  FitV=排名(ObjV)
  FitV=排名(ObjV RFun)
  FitV=排名(ObjV RFun SUBPOP)
  Rfun(1)线性排序标量在[1 - 2]间为,非线性排序在[1长度(ObjV) 2]
  Rfun(2)指定排序方法,0为线性排序,1为非线性排序
  SUBPOP指明ObjV中子种群的数量,默认为1

  

选择高级函数选择:
  从种群中选择个体
  选择通道=选择(铬,SEL_F FitnV)
  选择通道=选择(SEL_F,铬、FitnV GGAP)

使用遗传算法求二元函数的最小值