最小化関数でフィットネス/関数共有を使用しようとしています。ここで見つかった共有関数の標準的な定義を使用しています。これは、適合度をニッチ カウントで割ったものです。これにより、そのニッチ内の個人の量に比例して適合度が低下します。ただし、私の場合、フィットネスが低いほど、個人のフィット感は高くなります。フィットネス共有機能で、ニッチ内の個人の数に比例してフィットネスを増加させるにはどうすればよいですか?
コードは次のとおりです。
def evalTSPsharing(individual, radius, pop):
individualFitness = evalTSP(individual)[0]
nicheCount = 0
for ind in pop:
distance = abs(individualFitness - evalTSP(ind)[0])
if distance < radius:
nicheCount += (1-(distance/radius))
return (individualFitness/nicheCount,)
PDF 以外の論文は見つかりませんでしたが、関連する部分の写真を次に示します。繰り返しますが、これは上記のリンクからのものです。