python輪盤賭算法如何使用
說明
1、輪盤賭算法的精髓是可以根據(jù)個(gè)人適應(yīng)度隨機(jī)選擇。
2、適應(yīng)度越大的個(gè)人選擇的概率越高,群體規(guī)模越大,該算法可以比較真實(shí)地模擬自然狀態(tài)的狀況。
實(shí)例
defselect(chromosome_list,fitness_list):
"""
選擇(輪盤賭算法)
:paramchromosome_list:二維列表的種群
:paramfitness_list:適應(yīng)度列表
:return:選擇之后的種群列表
"""
population_fitness=np.array(fitness_list).sum()#種群適應(yīng)度
fit_ratio=[i/population_fitnessforiinfitness_list]#每個(gè)個(gè)體占種群適應(yīng)度的比例
fit_ratio_add=[0]#個(gè)體累計(jì)概率
foriinfit_ratio:
fit_ratio_add.append(fit_ratio_add[len(fit_ratio_add)-1]+i)#計(jì)算每個(gè)個(gè)體的累計(jì)概率,并存放到fit_ratio_add中
fit_ratio_add=fit_ratio_add[1:]#去掉首位的0
rand_list=[random.uniform(0,1)for_inchromosome_list]#生成和種群規(guī)模相等的隨機(jī)值列表,用于輪盤賭選擇個(gè)體
rand_list.sort()
fit_index=0
new_index=0
new_population=chromosome_list.copy()
'''個(gè)體選擇start'''
whilenew_index ifrand_list[new_index] new_population[new_index]=chromosome_list[fit_index] new_index=new_index+1 else: fit_index=fit_index+1 '''個(gè)體選擇end''' returnnew_population 以上就是python輪盤賭算法的使用,希望對(duì)大家有所幫助。更多Python學(xué)習(xí)教程請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。