qingtianzhushi 发表于 2006-10-11 22:08

请问怎么应用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之间的整数,那么该怎样用遗传算法来解决呢?
最近在研究中,但对此很困惑,望懂者帮忙解决,深表感谢!

dingd 发表于 2006-10-12 09:04

1stOpt可以很简单实现。

qingtianzhushi 发表于 2006-10-12 10:36

到底怎样可以简单实现,不明白,望指教

[ 本帖最后由 ChaChing 于 2010-3-8 22:57 编辑 ]

jueduishagua 发表于 2010-3-8 20:32

大家好

我也存在上面的问题,希望知道的尽快回一下,万分感激!

lanse527 发表于 2010-3-28 21:14

我也遇到啊,望跟帖指教啊

dingd 发表于 2010-3-29 08:33

以1楼例子为例,1stOpt代码如下:

IntParameter x=;
Function x+10*sin(5*x)+7*cos(4*x);

结果:
目标函数值(最小): 0.830036135388804
x: 6
页: [1]
查看完整版本: 请问怎么应用matlab遗传算法工具箱解决离散变量的问题?