当前位置: 首页 > news >正文

alex网站建设做网站用com还是cn好

alex网站建设,做网站用com还是cn好,wordpress导出数据库重装,江苏建设造价信息网站一、定义 遗传算法就像是在模拟“优胜劣汰”的进化过程#xff0c;通过选择最优秀的个体#xff0c;交配产生下一代#xff0c;并引入一定的变异#xff0c;逐步优化解决问题。 二、具体步骤 初始化种群(Initialization)#xff1a; 假设你要找到一个迷宫的最佳出口路径。…一、定义 遗传算法就像是在模拟“优胜劣汰”的进化过程通过选择最优秀的个体交配产生下一代并引入一定的变异逐步优化解决问题。 二、具体步骤 初始化种群(Initialization) 假设你要找到一个迷宫的最佳出口路径。首先你随机生成一群“路径”作为初始种群就像是一群随机的迷宫探险者。      生成初始种群 P(0)其中 P(0){x1​,x2​,…,xN​}。每个个体是一个解的候选向量随机生成。 计算适应度(Fitness Calculation) 每条路径都有一个“适应度”代表了它的好坏。比如走的距离短、碰到的墙少的路径适应度更高。 对种群中的每个个体计算其适应度值 适应度函数 f 用于评估个体的优劣。 选择 (Selection) 根据适应度选择一些表现最好的路径。适应度高的路径被选中的概率更大就像在自然界中适应环境的生物更容易生存。 根据适应度值选择个体以组建下一代。常用的方法包括轮盘赌选择、排序选择等。假设用轮盘赌选择每个个体被选择的概率为 交叉交配(Crossover) 选择出来的好路径进行“交配”生成新的路径下一代。交配的过程类似于把两条路径的不同部分组合在一起形成新的路径。 从选出的个体中随机配对进行交叉生成新的子代。假设单点交叉两个个体 x1​ 和 x2​ 在位置  k 进行交叉生成新个体 变异 (Mutation) 在新生成的路径中随机改变一些部分变异。比如某条路径的某一步骤突然改变方向。这就像是自然界中的基因突变。 对新个体进行变异操作即随机改变个体的某些基因。假设变异在第 j 个位置对 xi​ 变异后得到 xi′​ 其中  是变异后的值。 重复(Iteration) 重复上述过程多次每次都选择最好的路径进行交配和变异。经过若干代的进化路径会越来越接近理想的解决方案。 重复步骤2到5直到满足终止条件如达到最大迭代次数或适应度满足某个阈值。 三、例子 想象你在一个迷宫里找出口你和一群朋友决定用遗传算法来找最快的路。 第一步每个人随便走一条路大家都出发了。第二步回来后大家比较谁走的路最短谁碰到的障碍最少。第三步选出几个走得最好的朋友让他们把自己的路线告诉大家。第四步大家根据好朋友的路线进行一些组合和调整再次出发。第五步有时候你们会决定“赌一把”随便改变下路线中的某个部分希望能找到更好的路。第六步重复这个过程经过多次尝试你们最终找到了迷宫的最佳出口路径。 四、Python示例 举一个简单的例子我们不妨用遗传算法优化一个一维二次函数 。这个函数在数学上是一个凸函数其最小值为 0出现在 x0 处。尽管简单但它展示了遗传算法的基本原理和步骤包括种群初始化、适应度评估、选择、交叉和变异等。可以直观地理解遗传算法是如何通过迭代逐步逼近最优解的。我已将详细的注释写在了代码中。 import numpy as np import matplotlib.pyplot as plt# 定义目标函数 # 最小化的函数是 x^2 def fitness(x):return x ** 2# 初始化种群 # 生成一个大小为 size 的种群每个个体的值在 bounds 范围内。生成的是一个二维数组每个个体是一个一维数组 def initialize_population(size, bounds):return np.random.uniform(bounds[0], bounds[1], (size, 1))# 选择个体轮盘赌选择 # 基于个体的适应度值进行选择。适应度值越低的个体被选择的概率越高因为我们在最小化函数 def selection(pop, fitness_values):total_fitness np.sum(fitness_values) # 所有个体的总适应度值probabilities fitness_values / total_fitness # 每个个体被选择的概率indices np.random.choice(len(pop), sizelen(pop), pprobabilities.flatten()) # 根据这些概率随机选择个体生成新的种群return pop[indices]# 交叉操作单点交叉 def crossover(pop, crossover_rate0.7):offspring []for i in range(0, len(pop), 2): # 以步长为2遍历种群parent1, parent2 pop[i], pop[i 1] # 随机选择两个父代if np.random.rand() crossover_rate and parent1.size 1: # 如果随机数小于交叉概率且父代长度大于1cross_point np.random.randint(1, parent1.size) # 选择一个交叉点child1 np.concatenate([parent1[:cross_point], parent2[cross_point:]]) # 在该点进行单点交叉生成两个子代child2 np.concatenate([parent2[:cross_point], parent1[cross_point:]])else: # 如果不满足交叉条件直接复制父代作为子代。child1, child2 parent1, parent2offspring.append(child1)offspring.append(child2)return np.array(offspring)# 变异操作简单变异 def mutation(pop, mutation_rate0.01, bounds(-10, 10)):for i in range(len(pop)):if np.random.rand() mutation_rate: # 如果随机数小于变异概率mut_point np.random.randint(0, pop[i].size) # 随机选择该个体中的一个基因位置pop[i][mut_point] np.random.uniform(bounds[0], bounds[1])return pop# 主遗传算法流程 def genetic_algorithm(pop_size, bounds, num_generations, crossover_rate, mutation_rate):# 初始化种群pop initialize_population(pop_size, bounds)best_solutions []for gen in range(num_generations):# 计算适应度fitness_values fitness(pop)# 选择selected_pop selection(pop, fitness_values)# 交叉offspring crossover(selected_pop, crossover_rate)# 变异pop mutation(offspring, mutation_rate, bounds)# 保存当前代的最佳个体best_solutions.append(np.min(fitness_values))return pop, best_solutions# 参数设置 pop_size 5000 # 种群大小 增大种群规模: 5000-100000 bounds (-10, 10) # 每个个体的取值范围 num_generations 200 # 遗传算法运行的代数 增加迭代次数: 100-200 crossover_rate 0.7 # 交叉概率 mutation_rate 0.01 # 变异概率 增加变异率以增加多样性: 0.01-0.05# 运行遗传算法 final_pop, best_solutions genetic_algorithm(pop_size, bounds, num_generations, crossover_rate, mutation_rate)# 绘制结果 plt.plot(best_solutions) plt.xlabel(Generation) plt.ylabel(Fitness (Minimized Value of x^2)) plt.title(Genetic Algorithm Optimization) plt.show()# 输出最终的最佳解 best_individual final_pop[np.argmin(fitness(final_pop))] print(Best solution found:, best_individual) print(Fitness of the best solution:, fitness(best_individual)) 结果如下 Best solution found: [0.09278514] Fitness of the best solution: [0.00860908] 该结果已经找到了一个较精确的解接近全局最优解即 x0。我们不妨将 pop_size 增大到 10000以覆盖更大的搜索空间;将 num_generations 增加到 400让算法有更多时间收敛;将 mutation_rate 增加到 0.05以增加种群的多样性经过漫长的等待会得到一个更加精确的结果。 Best solution found: [-0.01888039] Fitness of the best solution: [0.00035647]若要进一步提高算法的表现我们还可以尝试以下几种改进方法 调整选择策略使用锦标赛选择等替代选择策略。增加种群多样性引入精英保留策略将最优个体直接保留到下一代。检查适应度函数确保适应度函数正确计算。调整初始化种群范围可能初始化范围太大导致搜索空间过于分散。
http://www.w-s-a.com/news/813086/

相关文章:

  • 门户网站怎么做seo玩具外贸好做吗
  • 网页设计模板的网站黄埔营销型网站建设
  • 企业为什么要建立网站江苏高校品牌专业建设工程网站
  • 网站建设公司需要交税么福建省城乡建设厅网站
  • dedecms网站首页网站正在建设中 源码下载
  • 论坛网站有哪些怎么wordpress主题
  • 网站搭建中企动力第一返利的网站怎么做
  • 在哪网站可以做农信社模拟试卷优衣库网站建设的目的
  • 杭州网站建设ttmwl网络平台推广公司
  • 工作室网站技能培训班
  • 东丰网站建设万盛网站制作
  • 安徽黄山网站建设wordpress 公众号 获取密码
  • 自己电脑做网站模板腾讯网站建设分析
  • 如何增加网站反链虚拟主机 2个网站
  • 手机网站调用分享wordpress.org移除
  • 工业和信息化部网站备案系统查询市场调研表模板
  • 网站流量转化线下推广活动有哪些
  • 030159网站建设与维护宝安网站公司
  • 个人网站备案网站内容做gif表情包网站
  • 湖南省建设厅城乡建设网站怎么建立一个网站网址
  • 图书馆网站建设的规章制度免费个人主页注册
  • 表格网站源码wordpress更换网站域名
  • 芜湖做网站多少钱做公司的网站的需求有哪些
  • 玉溪网站建设制作凌风wordpress百度云
  • 专业建网站价格门户网站建设 请示
  • 安徽省省博物馆网站建设佛山公司网站设计
  • 温州专业营销网站公司网络建设规划
  • 做模型常说的d站是什么网站wordpress 繁體
  • 给网站做h5缓存机制获取小程序api
  • 网站开发文档东莞市建设网站首页