shibtom 发表于 2008-1-19 18:02

gads工具箱种群类型bitstring如何使用

我由于做遗传算法在数字图像分割方面的应用的论文,现正在使用matlab的gads工具箱做实验。因为现在在赶时间,所以来不及细心钻研了,只好求助于各位热心人以解燃眉之急,实在不好意思……
具体问题是这样的:我在对256灰度级的图像进行实验,种群中的个体就是各个灰度级,十进制来说就是这个范围。对于这个问题,个体的取值应该是0~255之间的整数。所以我觉得应该用8位二进制数进行个体的编码。但是参考了一些书,没有发现任何一本书举例说明如何进行类似的设置……所以希望有热心人告诉我如何设置种群参数中的各项,包括Population type(这个我想应该是bit string吧)、Initial range(这个是我急切想知道的),以及各个需要注意和特别设置的地方,谢谢!请知道的高手指教!万分感谢!

[ 本帖最后由 eight 于 2008-1-22 19:54 编辑 ]

sigma665 发表于 2008-1-19 19:06

回复 楼主 的帖子

你再来不及,别人也不可能特地为你写个程序,除非刚好有人有

建议你自己动手,有问题再来讨论

shibtom 发表于 2008-1-19 22:46

我已经把适应度函数的程序写好了,用double vector的Population type运行ga,结果基本正确。只是我真正需要的是把个体取为0~255之间的离散值,这样才符合题意。我希望您告诉我的是,对于Initial range,当Population type是double vector情况下自然是填,而当Population type设置为bitstring时,这个地方应该怎么填?而适应度函数里又是不是要进行解码之类的操作?
可以把我的适应度函数代码贴出来:

function z = my_th(x)
I = imread('cameraman.tif');
L = 256;
=size(I);
N = m*n;
p=imhist(I);
p=p/N;
ip = p;
for i = 0:L-1
    ip(i+1) = i * ip(i+1);
end
uT = sum(ip);
w0 = sum(p(1:x+1));
wt = w0;
w1 = 1 - wt;
ut = sum(ip(1:x+1));
u0 = ut/(wt+eps);
u1 = (uT-ut)/(1-wt+eps);
z = -(w0*w1*(u1-u0)^2);

这个函数使用otsu方法(最大类间方差法)求图像分割的阈值,x是目前取的灰度级(也就是随机产生的个体),这个x应该在之间取离散值,可是我应该如何设置相应的ga选项,和修改我的适应度函数(如果需要的话),来使用八位二进制位串表示个体?

[ 本帖最后由 shibtom 于 2008-1-19 22:57 编辑 ]

tatu 发表于 2008-3-4 15:26

我也遇到了同样的问题。用bitstring适应度函数是一定要修改的

lichunyang 发表于 2008-3-27 23:23

我也遇到整数变量的问题,到底应该如何设置?:@(
页: [1]
查看完整版本: gads工具箱种群类型bitstring如何使用