栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

遗传算法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

遗传算法

for _index in range(len(input_Data)): # 遍历查找优选的值 sum_value sum_value input_Data[_index] if random_value sum_value: out_data_index.append(_index) break else: continue return out_data_index def cross_variation(self,init_groups, opt_chose): opt_chose_data [] # 优选的后的结果 for opt_flag in opt_chose: opt_chose_data.append(init_groups[opt_flag,:]) cross_Data copy.deepcopy(opt_chose_data) # 分组 index_groups list(range(0,len(init_groups))) np.random.shuffle(index_groups) #分组是随机的 按顺序排完之后 再次打乱 # 染色体 交叉 # 1. 交叉的位置是随机的 for index in range(0,int(len(index_groups)/2)): index index*2 variation_site np.random.choice(list(range(0,np.shape(init_groups)[-1]))[1:]) # 变异的起始位置 是随机的 try: variation_data opt_chose_data[index_groups[index]][variation_site:] # 保存 中间变量 except: a 10 cross_Data[index_groups[index]][variation_site:] opt_chose_data[index_groups[index 1]][variation_site:] cross_Data[index_groups[index 1]][variation_site:] variation_data # 染色体 变异 # 1. 变异的位置是随机的 # 2. 变异是否 发生是随机的 variation_Data copy.deepcopy(cross_Data) variation_value 1/np.shape(init_groups)[-1] for index in range(len(variation_Data)): variation_random_value np.random.rand(1) if variation_random_value variation_value: variation_site np.random.choice(list(range(0, np.shape(init_groups)[-1]))[1:]) #变异发生的位置 variation_Data[index][variation_site] 1 - variation_Data[index][variation_site] return np.array(variation_Data) def run(self): init_groups self._groups data_collect [] for epochs in range(100): y_group [] # 转十进制 for Binary in init_groups: y_group.append(self.Binary2Decimal(Binary,True)) if y_group[0] nan : a 10 y_suit self.calculate_suitability(y_group) opt_chose self.optimize_choose(y_suit) cross_variation_data self.cross_variation(init_groups, opt_chose) init_groups copy.deepcopy(cross_variation_data) y_get list(map(lambda x: f(self.Binary2Decimal(x,True)), init_groups)) data_collect.append(np.max(y_get)) print( epoch: %d 当前最优值为%f %(epochs,np.max(data_collect))) # print( epoch: %d 当前最优值为%f %(epochs,np.max(y_get))) # if __name__ __mian__ : obj genetic_algorithms(N 4,Bit_num 9) obj.run()

四、可提供算法的讲解 加我微信

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/266644.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号