请问怎么应用matlab遗传算法工具箱解决离散变量的问题?
比如函数以=x+10*sin(5*x)+7*cos(4*x);如果x是区间(0,9)之间的连续变量,则
%编写目标函数
function=fitness(sol,options)
x=sol(1);
eval=x+10*sin(5*x)+7*cos(4*x);
%把上述函数存储为fitness.m文件并放在工作目录下
initPop=initializega(10,,'fitness');%生成初始种群,大小为10
=ga(,'fitness',[],initPop,,'maxGenTerm',25,'normGeomSelect',...
,['arithXover'],,'nonUnifMutation',) %25次遗传迭代
运算结果为:x =
7.8562 24.8553(当x为7.8562时,f(x)取最大值24.8553)
但是如果x是离散变量,比如x的取值只能是0到9之间的整数,那么该怎样用遗传算法来解决呢?
最近在研究中,但对此很困惑,望懂者帮忙解决,深表感谢! 1stOpt可以很简单实现。 到底怎样可以简单实现,不明白,望指教
[ 本帖最后由 ChaChing 于 2010-3-8 22:57 编辑 ]
大家好
我也存在上面的问题,希望知道的尽快回一下,万分感激! 我也遇到啊,望跟帖指教啊 以1楼例子为例,1stOpt代码如下:IntParameter x=;
Function x+10*sin(5*x)+7*cos(4*x);
结果:
目标函数值(最小): 0.830036135388804
x: 6
页:
[1]