声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3763|回复: 5

[工具箱] 请问怎么应用matlab遗传算法工具箱解决离散变量的问题?

[复制链接]
发表于 2006-10-11 22:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
比如函数以=x+10*sin(5*x)+7*cos(4*x);
如果x是区间(0,9)之间的连续变量,则
%编写目标函数
      function[sol,eval]=fitness(sol,options)
        x=sol(1);
        eval=x+10*sin(5*x)+7*cos(4*x);
%把上述函数存储为fitness.m文件并放在工作目录下
initPop=initializega(10,[0 9],'fitness');%生成初始种群,大小为10
    [x endPop,bPop,trace]=ga([0 9],'fitness',[],initPop,[1e-6 1 1],'maxGenTerm',25,'normGeomSelect',...
      [0.08],['arithXover'],[2],'nonUnifMutation',[2 25 3]) %25次遗传迭代
  
运算结果为:x =
    7.8562   24.8553(当x为7.8562时,f(x)取最大值24.8553)
  
但是如果x是离散变量,比如x的取值只能是0到9之间的整数,那么该怎样用遗传算法来解决呢?
最近在研究中,但对此很困惑,望懂者帮忙解决,深表感谢!
回复
分享到:

使用道具 举报

发表于 2006-10-12 09:04 | 显示全部楼层
1stOpt可以很简单实现。
 楼主| 发表于 2006-10-12 10:36 | 显示全部楼层
到底怎样可以简单实现,不明白,望指教

[ 本帖最后由 ChaChing 于 2010-3-8 22:57 编辑 ]
发表于 2010-3-8 20:32 | 显示全部楼层

大家好

我也存在上面的问题,希望知道的尽快回一下,万分感激!
发表于 2010-3-28 21:14 | 显示全部楼层
我也遇到啊,望跟帖指教啊
发表于 2010-3-29 08:33 | 显示全部楼层
以1楼例子为例,1stOpt代码如下:

IntParameter x=[0,9];
Function x+10*sin(5*x)+7*cos(4*x);

结果:
目标函数值(最小): 0.830036135388804
x: 6
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-29 17:32 , Processed in 0.057595 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表