資源簡介
遺傳算法的python實(shí)現(xiàn)(二進(jìn)制編碼),適用于python3.x環(huán)境,有詳細(xì)的注釋和兩個給出的測試函數(shù)。
代碼片段和文件信息
import?numpy?as?np
import?matplotlib.pyplot?as?plt
from?math?import?sincospiceillog
from?mpl_toolkits.mplot3d?import?axes3d
from?functools?import?reduce
from?itertools?import?accumulate
from?bisect?import?bisect_right
from?copy?import?deepcopy
import?warnings
warnings.filterwarnings(‘error‘)
def?select_fun_lunpan(individuals):
????‘‘‘
????選出雙親,根據(jù)適應(yīng)度值,每次只選出一對。
????父系為選擇較優(yōu)個體,母系可以認(rèn)為是隨機(jī)選擇
????‘‘‘
????‘‘‘
????初始化賭輪
????‘‘‘
????#歸一化每個個體的適應(yīng)度值
????fitness?=[indv.fitness?for?indv?in?individuals]
????min_fitness?=?min(fitness)
????fitness?=?[(f?-?min_fitness)?for?f?in?fitness]
????#創(chuàng)建賭輪
????sum_fitness?=?sum(fitness)
????if?sum_fitness?==?0:
????????wheel?=?list(accumulate([1/len(fitness)?for?f?in?range(len(fitness))]))
????else:
????????wheel?=?list(accumulate([f/sum_fitness?for?f?in?fitness]))
????
????#選擇合適的雙親
????father_idx?=?bisect_right(wheel?np.random.uniform(0wheel[-1]))
????father?=?individuals[father_idx]
????rand_idx?=?np.random.randint(
- 上一篇:DSP2812 SCI通信例程
- 下一篇:易語言:批量生成隨機(jī)姓名源碼
評論
共有 條評論