| 查看: 773 | 回复: 3 | |||
[求助]
求程序指导 已有2人参与
|
|
题目如下: minf(1) = ((7240.6*x(1)+11.3)*sqrt(9.81*x(2)*cos(x(3))))/(300.91*pi*sqrt(x(1))*x(3)*(1+22*tan(x(3))*sqrt(tan(x(3))))); minf(2) = ((12908.88*x(1)+11.1877)*sqrt(10.791*x(2)*cos(0.87*x(3))))/(290.89*pi*sqrt(1.8*x(1))*x(3)*(1+22*tan(0.87*x(3))*sqrt(tan(0.87*x(3))))); 两个函数差不多 0.004《x1《0.006 4《x2《5 22《x3《25 x3表示角度 我想用遗传求两个函数同时取最小值时的x1,x2,x3的值并给出程序 求大神们指教,谢谢! 根据一个题目编的的简单程序: f1=inline('((7240.6*x(1)+11.3)*sqrt(9.81*x(2)*cos(x(3))))/(300.91*pi*sqrt(x(1))*x(3)*(1+22*tan(x(3))*sqrt(tan(x(3)))))'); f2=@(x) ((12908.88*x(1)+11.1877)*sqrt(10.791*x(2)*cos(0.87*x(3))))/(290.89*pi*sqrt(1.8*x(1))*x(3)*(1+22*tan(0.87*x(3))*sqrt(tan(0.87*x(3))))); fun=@(x) [f1(x),f2(x)]; Lb=[0.004,4,22]; ub=[0.006,5,25]; options=gaoptimset('TolFun',le-4); [x,fval]=gamultiobj(fun,3,[],[],[],Lb,ub) x,fval; 这个程序运行提示:Error using <= Not enough input arguments. 另外一个程序: 将下属两个目标函数分别保存在两个m文件中 function f1=func1(x) %第一目标函数 f1=x(:,1).*x(:,1)./4+x(:,2).*x(:,2)./4; function f2=func2(x) %第二目标函数 f2=x(:,1).*(1-x(:,2))+10; function GA() clear;clc;close all NIND=100; %个体数目 MAXGEN=50; %最大遗传代数 NVAR=2; %变量个数 PRECI=20; %变量的二进制位数 GGAP=0.9; %代沟 trace1=[];trace2=[];trace3=[]; %性能跟踪 %建立区域描述器 % rep([PRECI],[1,NVAR]) FieldD=[rep([PRECI],[1,NVAR]) ;rep([1;2],[1,NVAR]) ;rep([1;0;1;1],[1,NVAR])]; Chrom=crtbp(NIND,NVAR*PRECI) ; %初始种群 v=bs2rv(Chrom,FieldD) ; %初始种群十进制转换 gen=1; while gen<MAXGEN, [NIND,N]=size(Chrom) ; M=fix(NIND/2) ; ObjV1=func1(v(1:M,: )) ; %分组后第一目标函数值 FitnV1=ranking(ObjV1) ; %分配适应度值 SelCh1=select('sus',Chrom(1:M,: ),FitnV1,GGAP) ; %选择 ObjV2=func2(v(M+1:NIND,: )) ; %分组后第二目标函数值 FitnV2=ranking(ObjV2) ; %分配适应度值 SelCh2=select('sus',Chrom(M+1:NIND,: ),FitnV2,GGAP) ; %选择 SelCh=[SelCh1;SelCh2]; %合并 SelCh=recombin('xovsp',SelCh,0.7) ; %重组 Chrom=mut(SelCh) ; %变异 v=bs2rv(Chrom,FieldD) ; trace1(gen,1)=min(func1(v)) ; trace1(gen,2)=sum(func1(v))/length(func1(v)) ; trace2(gen,1)=min(func2(v)) ; trace2(gen,2)=sum(func2(v))/length(func2(v)) ; trace3(gen,1)=min(func1(v)+func2(v)) ; trace3(gen,2)=sum(func1(v))/length(func1(v))+sum(func2(v))/length(func2(v)) ; gen=gen+1; end figure(1) ;clf; plot(trace1(:,1)) ;hold on; plot(trace1(:,2),'-.') ; plot(trace1(:,1),'.') ; plot(trace1(:,2),'.') ;grid on;l egend('解的变化','种群均值的变化') xlabel('迭代次数') ;ylabel('目标函数值') ; figure(2);clf;plot(trace2(:,1)) ;hold on; plot(trace2(:,2),'-.') ; plot(trace2(:,1),'.') ; plot(trace2(:,2),'.') ;grid; legend('解的变化','种群均值的变化') ; xlabel('迭代次数') ;ylabel('目标函数值') ; figure(3) ;clf; plot(trace3(:,1)) ;hold on; plot(trace3(:,2),'-.') ; plot(trace3(:,1),'.') ; plot(trace3(:,2),'.') ;grid; legend('解的变化','种群均值的变化') ; xlabel('迭代次数');ylabel('目标函数值') ; figure(4);clf; plot(func1(v));hold on; plot(func2(v),'r-.');grid; 这个程序中我不明白:rep([1;0;1;1],[1,NVAR])]; 括号中的数字怎么定义的? [ Last edited by jjdg on 2014-8-5 at 07:20 ] |
» 猜你喜欢
假如你的研究生提出不合理要求
已经有12人回复
实验室接单子
已经有7人回复
全日制(定向)博士
已经有5人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
参与限项
已经有3人回复
对氯苯硼酸纯化
已经有3人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
北核录用
已经有3人回复
elastic
金虫 (小有名气)
- 应助: 43 (小学生)
- 金币: 1426.4
- 红花: 4
- 帖子: 207
- 在线: 54.1小时
- 虫号: 3006535
- 注册: 2014-03-01
- 性别: GG
- 专业: 计算机硬件技术

2楼2014-08-03 17:54:10
3楼2014-08-04 22:36:17
4楼2014-08-11 02:49:13












回复此楼