我有一个优化问题,我试图用遗传算法解决。基本上,有一个包含10个实值变量的列表(-1 < = x < = 1),我需要最大化该列表的某个函数。值得注意的是,列表中最多只有4个变量可能是!= 0(子集条件)。背包问题上的遗传算法optiproblem
数学上讲: 对于一些函数f:[-1,1]^10 - >ř 分钟F(X) S.T. | {var in X with var!= 0} | < = 4
f上的一些背景:该函数不像任何类型的背包目标函数,如Sum x * weight或类似的东西。
我迄今为止尝试:
只是一个基本的遗传算法是基因组[-1,1]^10 1点交叉和对变量的一些高斯变异。我试图通过仅使用前4个非零(在附近为0,)值来使用适应度函数对子集条件进行编码。这种方法并不能很好地工作,并且该算法卡在4个第一变量中,并且从不使用超出该值的值。我看到了一种适用于01背包问题的遗传算法,这种方法运行良好,但显然这只适用于二元变量。
你会推荐我下次尝试什么?
我不知道遗传算法的想法,但你可以尝试不同的编码问题:选择范围0-9 4个实际值和4个不同的整数。 – Patrick
解决方案总数少于10^4,为什么不使用枚举?这是功课吗? – willem