随便 张赞宇 2020-08-16 16:44 采纳率: 0%
浏览 521

matlab上如何编写三元适应度函数的遗传算法?。

新手学习遗传算法过程中,三元的遗传算法不会建立。求一个可以方便改动的算例。
下面是网上的三元遗传算法程序,但是我不知道在哪里改适应度函数。。。。

clear all;close all; %释放所有变量,关闭图形窗口,清除命令窗口
%定义遗传算法参数
NIND=150;               %个体数目(Numbe of individuals)
MAXGEN=200;            %最大遗传代数(Maximum number of generations)
NVAR=3;               %变量的维数
PRECI=20;              %变量的二进制位数(Precision of variables)
GGAP=0.9;              %代沟(Generation gap)
trace=zeros(MAXGEN, 2);
%建立区域描述器(Build field descriptor)
FieldD=[rep([PRECI],[1,NVAR]);rep([-5.12;5.12],[1, NVAR]);rep([1;0;1;1],[1,NVAR])];
Chrom=crtbp(NIND, NVAR*PRECI);                       %创建初始种群
gen=0;                                               %代计数器
ObjV= objfun1(bs2rv(Chrom,FieldD));                  %计算初始种群个体的目标函数值
while gen<MAXGEN                                     %迭代
    FitnV=ranking(ObjV);                             %分配适应度值(Assign fitness values)
    SelCh=select('sus', Chrom, FitnV, GGAP);         %选择
    SelCh=recombin('xovsp', SelCh, 0.9);             %重组
    SelCh=mut(SelCh);                                %变异
    ObjVSel=objfun1(bs2rv(SelCh, FieldD));           %计算子代目标函数值 
    [Chrom ObjV]=reins(Chrom, SelCh, 1, 1, ObjV, ObjVSel);     %重插入
    gen=gen+1;                                                 %代计数器增加
    trace(gen, 1)=min(ObjV);                                   %遗传算法性能跟踪
    trace(gen, 2)=sum(ObjV)/length(ObjV);
end
plot(trace(:,1),'r');hold on;
plot(trace(:,2),'-.');grid;
title('最小值/均值 变化趋势');xlabel('Generations');ylabel('最小值/均值');
legend('最小值的变化','种群函数值均值的变化')
%输出最优解及其对应的20个自变量的十进制值,Y为最优解,I为种群的序号
%[A, I]=min(ObjV)
% X=bs2rv(Chrom, FieldD);
% X(I,:)
disp(sprintf('种群数目:%d',NIND));
disp(sprintf('遗传代数:%d',MAXGEN));
disp(sprintf('代沟:%d',GGAP));
[Y,I]=min(trace(:,1));
disp(sprintf('最小值:'));Y
y1=trace(I:size(trace,1),1); %全局最小值之后的每代最小值
length1=length(y1);
y2=find(y1==Y);
length2=length(y2);
if length2==length(y2)&&length2>=10
    disp(sprintf('收敛次数:%d,占总迭代次数比例:%4f',I,I/MAXGEN));
else
    disp(sprintf('最小值所在代数:%d',I));
    disp(sprintf('暂未收敛'));
end
  • 写回答

1条回答 默认 最新

  • threenewbee 2020-08-16 17:26
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 有偿求码,CNN+LSTM实现单通道脑电信号EEG的睡眠分期评估
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路