資源簡介
遺傳算法求sinx最大值
代碼片段和文件信息
#?-*-?coding:?utf-8?-*-
import?numpy?as?np
import?matplotlib.pyplot?as?plt
#?適應度函數
def?fitness(x):
????return?np.sin(?x)
#?個體類
class?indivdual:
????def?__init__(self):
????????self.x?=?0??#?染色體編碼
????????self.fitness?=?0??#?適應度值
????def?__eq__(self?other):
????????self.x?=?other.x
????????self.fitness?=?other.fitness
#?初始化種群
def?initPopulation(pop?N):
????for?i?in?range(N):
????????ind?=?indivdual()
????????ind.x?=?np.random.uniform(-10?10)
????????ind.fitness?=?fitness(ind.x)
????????pop.append(ind)
#?選擇過程
def?selection(N):
????#?種群中隨機選擇2個個體進行變異(這里沒有用輪盤賭,直接用的隨機選擇)
????return?np.random.choice(N?2)
#?結合/交叉過程
def?crossover(parent1?parent2):
????child1?child2?=?indivdual()?indivdual()
????child1.x?=?0.9?*?parent1.x?+?0.1?*?parent2.x
????child2.x?=?0.1?*?parent1.x?+?0.9?*?parent2.x
????child1.fitness?=?fitness(child1.x)
????child2.fitness?=?fitness(child2.x)
????return?child1?child2
#?變異過程
def?mutation(pop):
????#?種群中隨機選擇一個進行變異
- 上一篇:數據挖掘基礎之聚類算法
- 下一篇:python比丘特之箭(基于turtle)
評論
共有 條評論