python 遺傳演算法精簡版

2021-09-08 03:51:01 字數 1375 閱讀 6825

精簡版遺傳演算法,演算法中僅採用變異運算元而沒有使用交叉運算元,但是進化依然很有效

'''精簡版遺傳演算法,演算法中僅採用變異運算元而沒有使用交叉運算元,但是進化依然很有效

'''target = list("

welcome to ")

charset = ascii_lowercase + '

.:/'

parent = [choice(charset) for _ in

range(len(target))]

minmutaterate = .09c = range(100)

perfectfitness =len(target)

deffitness(trial):

return sum(t==h for t,h in

zip(trial, target))

defmutaterate(parent):

return 1.0-(1.0*(perfectfitness - fitness(parent)) / perfectfitness * (1.0 -minmutaterate))

defmutate(parent, rate):

return [(ch if random() <= rate else choice(charset)) for ch in

parent]

deflog(iterations,rate,parent):

print("

#%-4i, rate: %4.3f, fitness: %4.1f%%, '%s'

" %(iterations, rate, fitness(parent)*100./perfectfitness, ''

.join(parent)))

iterations =0

while parent !=target:

rate =mutaterate(parent)

iterations += 1

if iterations % 10 ==0: log(iterations,rate,parent)

copies = [ mutate(parent, rate) for _ in c ] +[parent]

parent = max(copies, key=fitness)

print

()log(iterations, rate, parent)

python遺傳演算法 Python 遺傳演算法實現

關於遺傳演算法 遺傳演算法是仿照自然界中生物進化而產生的一類優化演算法。個人感覺遺傳演算法簡單粗暴,適應性廣。關於遺傳演算法的介紹網上有很多了,這裡按照我自己的理解簡單概括一下。編碼解碼,將待優化的引數編碼為dna序列,最簡單直接的為二進位制編碼 即有兩種鹼基的dna鏈 生成隨機初代 選擇,適應度 ...

猴王演算法精簡版 Python實現

乙個猴王演算法,網上所列太過繁瑣,問題很簡單描述如下,猴王演算法 一群猴子圍成一圈,從某乙隻開始數,數到m只剔除之,後面的接著從一開始數,數到m剔除之,依次類推,剩下的最後乙隻為猴王 因為剛學習了python,所以用她來編碼,很優秀的程式語言哦 usr bin python coding utf 8...

遺傳演算法 python 簡書 遺傳演算法

優化的演算法有很多種,從最基本的梯度下降法到現在的一些啟發式演算法,如遺傳演算法 ga 差分演化演算法 de 粒子群演算法 pso 和人工蜂群演算法 abc 舉乙個例子,遺傳演算法和梯度下降 梯度下降和遺傳演算法都是優化演算法,而梯度下降只是其中最基礎的那乙個,它依靠梯度與方向導數的關係計算出最優值...