資源簡介
遺傳算法的python實現(二進制編碼),適用于python3.x環境,有詳細的注釋和兩個給出的測試函數。
代碼片段和文件信息
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):
????‘‘‘
????選出雙親,根據適應度值,每次只選出一對。
????父系為選擇較優個體,母系可以認為是隨機選擇
????‘‘‘
????‘‘‘
????初始化賭輪
????‘‘‘
????#歸一化每個個體的適應度值
????fitness?=[indv.fitness?for?indv?in?individuals]
????min_fitness?=?min(fitness)
????fitness?=?[(f?-?min_fitness)?for?f?in?fitness]
????#創建賭輪
????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通信例程
- 下一篇:易語言:批量生成隨機姓名源碼
評論
共有 條評論