EDA365电子论坛网

标题: 多维函数 [打印本页]

作者: 大小的小    时间: 2020-7-8 13:36
标题: 多维函数
函数如下:y=(0.0206*x(2)^2/(2*9.81*x(1))+(0.5*(1-(x(2)/(4*x(3)*9.81*(x(4)-1040)/(3*0.43*1040))^0.5*(1-(x(3)/x(1))^2)*2.7183^(-(2.65*x(5)-3.32*x(5)^2.2))))+((0.25*(x(2)/(4*x(3)*9.81*(x(4)-1040)/(3*0.43*1040))^0.5*(1-(x(3)/x(1))^2)*2.7183^(-(2.65*x(5)-3.32*x(5)^2.2)))-1)^2+x(5)*x(2)/(4*x(3)*9.81*(x(4)-1040)/(3*0.43*1040))^0.5*(1-(x(3)/x(1))^2)*2.7183^(-(2.65*x(5)-3.32*x(5)^2.2)))^0.5)*(x(4)/1040-1)+1.8413*(x(2)/(9.81*x(1)))^2.7736*(0.5*(1-(x(2)/(4*x(3)*9.81*(x(4)-1040)/(3*0.43*1040))^0.5*(1-(x(3)/x(1))^2)*2.7183^(-(2.65*x(5)-3.32*x(5)^2.2))))+((0.25*(x(2)/(4*x(3)*9.81*(x(4)-1040)/(3*0.43*1040))^0.5*(1-(x(3)/x(1))^2)*2.7183^(-(2.65*x(5)-3.32*x(5)^2.2)))-1)^2+x(5)*x(2)/(4*x(3)*9.81*(x(4)-1040)/(3*0.43*1040))^0.5*(1-(x(3)/x(1))^2)*2.7183^(-(2.65*x(5)-3.32*x(5)^2.2)))^0.5)*0.43*x(3)/x(1)*(x(4)/1040-1))/(x(4)*x(5)/1040);
  t# s: A; f4 J  T  Z5 W/ A. p# T3 J1 L3 t" ?7 W9 {$ T; l( X5 e& C
函数中有五个自变量,自变量之间没有任何的约束关系,但是自变量有范围,x(1)=[0.2,0.4],x(2)=[1.234,3],x(3)=[0.01,0.04],x(4)=[1190,1398],x(5)=[0.15,0.4], 劳烦大神指点看怎么编程,能求出自变量范围内的结果 ,谢谢
0 Z' M0 y. R9 {, I* k/ a6 d! K
0 @7 x  S" u9 J5 v6 G0 A: \9 b; m; k, }1 E9 Z# @

作者: 大小的小    时间: 2020-7-8 13:57
fitnessFunction=@minf_5;nvars=5;0 W+ w, g+ F" F! u# d
options=gaoptimset;
) z. y5 T8 r- j2 d2 B7 \8 Z2 v3 _options=gaoptimset(options,'PopInitRange',[0;1]);
2 }7 h3 E9 R5 `! Y7 _options = gaoptimset(options,'PopulationSize',100);
# ~# q( t+ k) xoptions=gaoptimset(options,'CrossoverFraction',0.9);) m- h6 m/ ~. \1 P. i: N' x
options=gaoptimset(options,'Generations',1000);0 q6 m* Y. F/ U. {$ _4 Q5 K5 j
options=gaoptimset(options,'CrossoverFcn',{@crossoverheuristic,0.9});- h: D. w$ L$ c
options=gaoptimset(options,'MutationFcn',{@mutationuniform,0.02});) p  \/ F9 G2 b3 Z0 Y2 f/ a
[x fval reason output population scores]=ga(@minf_5,nvars,options)8 N6 J6 q2 O/ S2 L! P* Z( U! V
Optimization terminated: average change in the fitness value less than options.TolFun.0 R, i8 }5 Z# q6 `: ^

: C+ N9 T3 R: k& mx =
/ p$ D/ W5 [) i  \5 U6 x
7 _5 C0 V$ Q  u- m7 }7 }( B    0.6026    0.0979    0.2421    0.9712    0.94495 [4 n& U1 r5 S: ]* g
  I7 C* w+ E2 ~! I

9 L2 b( H9 L! _; y9 @6 q( }fval =
# n$ K4 z4 y7 j# C: O8 }4 D8 G1 q, f. F% L
  -1.6983e+03 - 1.4575e+01i
7 N' x4 ^$ A" u3 s7 l8 l6 S' l9 Y+ j# F9 N
附上我自己的遗传算法编程,首先是第三行的自变量范围,只能定义一个区间,不知道怎么分开定义五个自变量的范围,再就是这样计算结果竟然是个复数,还都是负号,跟我想要的正实数实在是相去甚远,
作者: llbnmo    时间: 2020-7-8 14:02
帮你顶一下
作者: zaiyiaaaa    时间: 2020-7-9 10:50

1 K- n6 @9 U, ?, s- H% K7 U3 J理论上最小值就是-2.83599462789046,如果非要为正,那就是0了。
作者: 大小的小    时间: 2020-7-9 14:14
zaiyiaaaa 发表于 2020-7-9 10:50
: ~; b& I3 Q6 t' ]& a7 Y理论上最小值就是-2.83599462789046,如果非要为正,那就是0了。
! p6 Z/ W0 C  N
好吧,我再看看5 v) E# |" w- v( _' G# w





欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2