我正在尝试使用遗传算法解决优化问题。基本上,有一个由10个实数值变量(-1<=x<=1)组成的列表,并且我需要使其中某些函数最大化。但是有一个限制条件,列表中只能有4个变量!= 0(子集条件)。
数学上讲:
对于一些函数f:[-1,1] ^ 10-> R
min f(X)
s.t. | {var在X中,有var!= 0} | <= 4
关于f的一些背景:该函数与任何背包目标函数(如Sum x * weight等)都不相似。
我迄今为止尝试过的内容:
仅使用1点交叉和一些高斯突变在[-1,1]^10范围内进行基本的遗传算法。我试图通过仅使用前4个非零(零值“足够接近于0”)值来将子集条件编码到适应度函数中。这种方法效果不佳,算法会卡在前4个变量上,永远不会使用超出这个范围的值。我看到了一个针对01背包问题的GA,其中这种方法运行良好,但显然仅适用于二进制变量。
下一步你建议我尝试什么?
数学上讲:
对于一些函数f:[-1,1] ^ 10-> R
min f(X)
s.t. | {var在X中,有var!= 0} | <= 4
关于f的一些背景:该函数与任何背包目标函数(如Sum x * weight等)都不相似。
我迄今为止尝试过的内容:
仅使用1点交叉和一些高斯突变在[-1,1]^10范围内进行基本的遗传算法。我试图通过仅使用前4个非零(零值“足够接近于0”)值来将子集条件编码到适应度函数中。这种方法效果不佳,算法会卡在前4个变量上,永远不会使用超出这个范围的值。我看到了一个针对01背包问题的GA,其中这种方法运行良好,但显然仅适用于二进制变量。
下一步你建议我尝试什么?