|
|
fitnessFunction=@minf_5;nvars=5;3 S) g0 |! `/ P/ _; E" v1 w7 {
options=gaoptimset;8 `4 C% _) _8 L
options=gaoptimset(options,'PopInitRange',[0;1]);" }4 x9 C# C! G, x* j# s' g
options = gaoptimset(options,'PopulationSize',100);5 y+ o3 h, C) A% s7 }5 A
options=gaoptimset(options,'CrossoverFraction',0.9);( f* d5 i+ K3 f3 L: I
options=gaoptimset(options,'Generations',1000);( J7 T' E2 g7 [& }( [3 `2 ^
options=gaoptimset(options,'CrossoverFcn',{@crossoverheuristic,0.9});
3 `% a" |2 n7 v6 h% voptions=gaoptimset(options,'MutationFcn',{@mutationuniform,0.02});: ?' K B. V3 a
[x fval reason output population scores]=ga(@minf_5,nvars,options). U ^; w& |* ~+ j
Optimization terminated: average change in the fitness value less than options.TolFun.
7 \% ]! \2 M& |+ T3 n l9 ?( n7 p$ [! c- x- Q
x =/ q f( m* @% A) y
5 J% G$ \! j& n, v$ V; C) \& Y
0.6026 0.0979 0.2421 0.9712 0.9449
7 U4 v7 r" Z3 S0 D! y u& K% m# r4 t+ _$ L8 |- ^
# O% Y9 n2 U7 ]7 ^fval =
6 w1 G( t( O8 n- b; q3 B1 @
( Y! m' o) H0 A* o+ m" ^ -1.6983e+03 - 1.4575e+01i4 h G2 R0 f* X! M
f$ u. X* N; J% ]0 U4 T附上我自己的遗传算法编程,首先是第三行的自变量范围,只能定义一个区间,不知道怎么分开定义五个自变量的范围,再就是这样计算结果竟然是个复数,还都是负号,跟我想要的正实数实在是相去甚远, |
|