24小时热门版块排行榜    

查看: 1205  |  回复: 0

qiaoye32803

新虫 (初入文坛)

[求助] 大家帮我看下我的结果,遗传算法的

function f4=paper_lq(x1,x2,x3,x4)
theta=0;
mu_ra=0.0645;
mu_rb=0.0889;
mu_rc=0.043;
sigma_ra=0.008;
sigma_rb=0.07;
sigma_rc=0.004;
i=1;
M=384;
sum_f=0;

while i<100                        
f_1=cos(theta)*(x1+x3*normrnd(0,1)+normrnd(mu_rb,sigma_rb)*cos(unifrnd(0,2*pi))-normrnd(mu_ra,sigma_ra)*cos(unifrnd(0,2*pi)))+sqrt((x2+x4*normrnd(0,1)+normrnd(mu_rc,sigma_rc)*cos(unifrnd(0,2*pi))).^2-(x1+x3*normrnd(0,1)+normrnd(mu_rb,sigma_rb)*cos(unifrnd(0,2*pi))-normrnd(mu_ra,sigma_ra)*sin(theta)).^2);
f_2=cos(theta+0.0063)*(x1+x3*normrnd(0,1)+normrnd(mu_rb,sigma_rb)*cos(unifrnd(0,2*pi))-normrnd(mu_ra,sigma_ra)*cos(unifrnd(0,2*pi)))+sqrt((x2+x4*normrnd(0,1)+normrnd(mu_rc,sigma_rc)*cos(unifrnd(0,2*pi))).^2-(x1+x3*normrnd(0,1)+normrnd(mu_rb,sigma_rb)*cos(unifrnd(0,2*pi))-normrnd(mu_ra,sigma_ra)*sin(theta+0.0063)).^2);
f3=abs(f_1-f_2);
g1=(M*sqrt(M^2+f3.^2)-M)/(2*sqrt(M^2+f3.^2))-0.05;
g2=f3.*M/(2*sqrt(M^2+f3.^2))-0.5;
  if(g1<=0)&(g2<=0)
     f3=abs(f_1-f_2);
  else
     f3=abs(f_1-f_2)+10000;
  end
sum_f=sum_f+f3;
i=i+1;
end

f4=sum_f/i;
大家帮我看下惩罚函数处 f3=abs(f_1-f_2)+10000;这样取对不对呢
下面的是遗传算法程序
tic
theta=0;
%定义遗传算法参数
NIND=500;               %个体数目(Number of individuals)
MAXGEN=500;             %最大遗传代数(Maximum number of generations)
NVAR=4;                %变量数目
PRECI=25;              %变量的二进制位数(Precision of variables)
GGAP=0.9;              %代沟(Generation gap)
%建立区域描述器(Build field descriptor)
FieldD=[rep([PRECI],[1,NVAR]);rep([45 330 0.002 0.007;55 340 0.02 0.07],[1,1]);rep([1;0;1;1],[1,NVAR])];
Chrom=crtbp(NIND, NVAR*PRECI);                         %创建初始种群
gen=0;                                                
trace=zeros(MAXGEN, 4);                                %遗传算法性能跟踪初始值
x=bs2rv(Chrom, FieldD);                                %初始种群十进制转换
ObjV=paper_lq(x(:,1),x(:,2),x(:,3),x(:,4));            %计算初始种群的目标函数值
while gen     FitnV=ranking(ObjV);                               %分配适应度值(Assign fitness values)
    SelCh=select('sus',Chrom,FitnV,GGAP);              %选择
    SelCh=recombin('xovsp',SelCh,0.7);                 %重组
    SelCh=mut(SelCh);                                  %变异
    x=bs2rv(SelCh,FieldD);                             %子代十进制转换
    ObjVSel=paper_lq(x(:,1),x(:,2),x(:,3),x(:,4));  
    [Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);  %重插入
    gen=gen+1;
    [Y, I]=min(ObjV);
    Y,bs2rv(Chrom(I,,FieldD)                         %输出每一次的最优解及其对应的自变量值
    trace(gen,1)=min(ObjV);                            %遗传算法性能跟踪
    trace(gen,2)=sum(ObjV)/length(ObjV);
    if(gen==MAXGEN)                                        %迭代数为MAXGEN时画出目标函数值分布图
        figure(1);
        plot(ObjV);hold on;
        plot(ObjV,'b*');grid;
    end
end
figure(2);clf;
plot(trace(:,1));hold on;
plot(trace(:,2),'-.');grid
legend('解的变化','种群均值的变化')
toc
大家帮我看下优化后的结果怎么样,这样的结果怎么样呢

171342vgfkc9frwwv5wcwv.jpg.thumb.jpg



迭代后结果
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

找到一些相关的精华帖子,希望有用哦~

科研从小木虫开始,人人为我,我为人人
相关版块跳转 我要订阅楼主 qiaoye32803 的主题更新
信息提示
请填处理意见