提问者:小点点

遗传算法:基因值的总和应为1


我想实现一个遗传算法(我还不确定语言/框架,可能是Watchmaker)来优化某些流体的混合比。

每个混合物由多达5种成分组成,我将其建模为具有变化值的基因。由于染色体代表混合比,因此(至少)还有两个附加条件:

(1) a + b + c + d + e = 1
(2)    a, b, c, d, e >= 0

我还在计划我的项目的阶段,因此我不能给出任何示例代码,但是我想知道这些条件是否以及如何在遗传算法框架中实现,比如Watchmaker。

[编辑]
因为这似乎不是直接的澄清:

问题在于条件(1)-如果每个基因a、b、c、d、e是随机独立选择的,则发生这种情况的概率约为0。因此,我需要以一种方式来实现变异,其中,a,b,c,d,e是根据彼此选择的(参见添加到100的随机数:Matlab作为示例)。

然而,我不知道这是否可能,也不知道这是否符合一般的进化算法。


共1个答案

匿名用户

第一个条件(a b c d e=1)可以通过具有较短的染色体来满足,只有a, b, c, de值可以用e:=1-a-b-c-d表示(在适应度函数中或供以后使用)。

编辑:
满足第一个条件的另一种方法是规范化值:

sum:= a+b+c+d+e
a:= a/sum;
b:= b/sum;
c:= c/sum;
d:= d/sum;
e:= e/sum;

新的总和将是1。

对于第二种情况(a,b,c,d,e