当前位置:编程学习 > Matlab >>

matlab遗传算法工具箱函数的参数问题

function f=hanshu(x) %hanshu g1=1.5+x(1)*x(2)-x(1)-x(2); g2=-x(1)*x(2); if(g1>0|g2>0) f=100; else f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1); end 这个100可不可以改啊,是什么东西?怎么改? clear all options=gaoptimset('Generations',500,'StallGenLimit',50,'PlotFcns',@gaplotbestf); [x,f]=ga(@hanshu,2,options) 还有就是InitialPopulation的值应该怎么取?
答案:这个100在这里是起到限定条件的作用。如果g1>0或者g2>0这种情况,就不进行计算了,直接给出误差值100,这样,g1>0或者g2>0这种情况基本上就排除了,因为误差值非常高。这个数值可以改,改的比较大就可以了。目的是把结果中的g1>0和g2>0情况去掉。
initialPopulation是第一代种群的意思,这个数值就是遗传算法起点的位置。这个值怎么取没有固定的说法,如果你想手动赋值而不是让计算机自己生成, 那么你需要创建一个矩阵,行数等于populationSize,就是种群数量,列数等于输入变量的数量,在你的例子中是2。
初始值的作用很大,越复杂的模型,对于初值的要求就越高。

上一个:matlab 子函数与局部函数的调用。
下一个:matlab是不是所有函数都做出图形

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,