91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

解決的例子y=10*sin(5x)+7*cos(4x) 代碼用python3.6可以運行

資源截圖

代碼片段和文件信息

#?-*-?coding:?utf-8?-*-
“““
Created?on?Sat?Mar?30?17:01:13?2019

@author:?Administrator
“““


import?random

import?math

import?numpy?as?np

import?matplotlib.pyplot?as?plt

?

population_size?=?500??#?種群數量

generations?=?200??#?迭代次數

chrom_length?=?10???#?染色體長度

pc?=?0.6??#?交配概率

pm?=?0.01??#?變異概率

genetic_population?=?[]??#?種群的基因編碼(二進制)

population?=?[]??#?種群對應的十進制數值并標準化范圍到[0?10]

fitness?=?[]??#?適應度

fitness_mean?=?[]

optimum_solution?=?[]??#?每次迭代的所獲得的最優解

?

?

#?為染色體進行01編碼,生成初始種群

def?chrom_encoding():

????for?i?in?range(population_size):

????????population_i?=?[]

????????for?j?in?range(chrom_length):

????????????population_i.append(random.randint(0?1))

????????genetic_population.append(population_i)

?

?

#?對染色體進行解碼,將二進制轉化為十進制

def?chrom_decoding():

????population.clear()

????for?i?in?range(population_size):

????????value?=?0

????????for?j?in?range(chrom_length):

????????????value?+=?genetic_population[i][j]?*?(2?**?(chrom_length?-?1?-?j))

????????population.append(value?*?10?/?(2?**?(chrom_length)?-?1))

?

?

#?計算每個染色體的適應度

def?calculate_fitness():

????sum?=?0.0

????fitness.clear()

????for?i?in?range(population_size):

????????function_value?=?10?*?math.sin(5?*?population[i])?+?7?*?math.cos(4?*?population[i])

????????if?function_value?>?0.0:

????????????sum?+=?function_value

????????????fitness.append(function_value)

????????else:

????????????fitness.append(0.0)

????#?返回群體的平均適應度

????return?sum?/?population_size

?

?

#?獲取最大適應度的個體和對應的編號

def?best_value():

????max_fitness?=?fitness[0]

????max_chrom?=?0

????for?i?in?range(population_size):

????????if?fitness[i]?>?max_fitness:

????????????max_fitness?=?fitness[i]

????????????max_chrom?=?i

????return?max_chrom?max_fitness

?

?

#?采用輪盤賭算法進行選擇過程,重新選擇與種群數量相等的新種群

def?selection():

????fitness_proportion?=?[]

????fitness_sum?=?0

????for?i?in?range(population_size):

????????fitness_sum?+=?fitness[i]

????#?計算生存率

????for?i?in?range(population_size):

????????fitness_proportion.append(fitness[i]?/?fitness_sum)

????pie_fitness?=?[]

????cumsum?=?0.0

????for?i?in?range(population_size):

????????pie_fitness.append(cumsum?+?fitness_proportion[i])

????????cumsum?+=?fitness_proportion[i]

????pie_fitness[-1]?=?1

????#?生成隨機數在輪盤上選點[0?1)

????random_selection?=?[]

????for?i?in?range(population_size):

????????random_selection.append(random.random())

????random_selection.sort()

????#?選擇新種群

????new_genetic_population?=?[]

????random_sel

評論

共有 條評論