24小时热门版块排行榜    

查看: 857  |  回复: 3

木凡_123

银虫 (正式写手)

[求助] 求程序指导 已有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 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

elastic

金虫 (小有名气)

【答案】应助回帖


jjdg: 金币+1, 感谢参与 2014-08-05 07:21:03
这个程序中我不明白:rep([1;0;1;1],[1,NVAR])];该命令可以参考雷英杰编的《MATLAB遗传算法工具箱及应用(第二版)》第五章相关命令的解释。
衣带渐宽终不悔,为伊消得人憔悴
2楼2014-08-03 17:54:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xajdwangpeng

新虫 (初入文坛)

【答案】应助回帖

不知道报错的是哪一句?报的错误是说你的输入参数不够。。
3楼2014-08-04 22:36:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

木凡_123

银虫 (正式写手)

引用回帖:
2楼: Originally posted by elastic at 2014-08-03 17:54:10
这个程序中我不明白:rep(,)];该命令可以参考雷英杰编的《MATLAB遗传算法工具箱及应用(第二版)》第五章相关命令的解释。

谢谢
4楼2014-08-11 02:49:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 木凡_123 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 不应该看fileCode +5 且听虎啸 2026-08-12 6/300 2026-08-12 16:26 by Tide man
[基金申请] 2019年青年基金涵评意见,大家看看几个A,几个B? +7 Tide man 2026-08-11 7/350 2026-08-12 16:15 by 风逸1991
[基金申请] 好奇怪的filecode +5 布布和一二 2026-08-08 6/300 2026-08-12 16:11 by 云上清扬
[基金申请] FileCode能看出啥? +8 要乐观耀哥 2026-08-10 21/1050 2026-08-12 16:08 by 云上清扬
[基金申请] 长年满屏的广告,版主太不责任了。基金也等的急 +4 gltch 2026-08-12 4/200 2026-08-12 16:08 by eulota
[基金申请] 应该是93bebmhtak前后十一个字符比较关键 +22 Lanmanbaby 2026-08-09 35/1750 2026-08-12 14:38 by sdfapple719
[论文投稿] 职称评审,求友友推荐见刊最快的期刊 +4 工厂打螺丝 2026-08-08 4/200 2026-08-12 09:18 by hansi2025
[基金申请] 小木虫上这么多卖论文的,真有人买论文么?感觉没必要啊 +8 Tide man 2026-08-10 9/450 2026-08-11 20:39 by beefly
[基金申请] 听说今天filecode变了 +26 布布和一二 2026-08-06 49/2450 2026-08-11 13:18 by WH3796
[基金申请] 我的国基提前知道中了,可是同事的操作让我实在接受不了,怎么会有这样的人 +8 家与远方 2026-08-10 13/650 2026-08-11 09:49 by 家与远方
[基金申请] 确定了,国自然21号放榜 +6 布布和一二 2026-08-10 7/350 2026-08-10 19:15 by 2000zf36392
[基金申请] 静等基金结果 +5 gjjjzhong 2026-08-10 16/800 2026-08-10 17:19 by Tide man
[基金申请] 2026国自然放榜时间 +9 布布和一二 2026-08-08 9/450 2026-08-10 11:22 by xxxx2020
[基金申请] 面上项目filecode邪修 +5 西山十月 2026-08-09 7/350 2026-08-10 07:32 by 仁砚薪传
[基金申请] fileCode有新解读? +10 Tide man 2026-08-08 18/900 2026-08-09 12:55 by 仁砚薪传
[基金申请] 关于filecode,很负责任的告诉大家 +6 爱看书的可乐 2026-08-08 7/350 2026-08-08 22:13 by a_niu
[基金申请] 国基金的申报应该改成非等额制,评价高的钱多评价低的钱少,但是增加资助率 +7 a089 2026-08-07 7/350 2026-08-08 18:05 by gltch
[基金申请] 化学口download_prp&amp;fileCode的固定段好像这几天一直没变,有变的大神么? +3 Tide man 2026-08-07 4/200 2026-08-07 22:39 by Tide man
[基金申请] 固定端突然变了,今天 +6 archvillain 2026-08-06 10/500 2026-08-07 16:03 by 医学老男孩
[基金申请] filecode +8 布布和一二 2026-08-06 11/550 2026-08-06 20:41 by tangpu318
信息提示
请填处理意见