确定遗传

在元素个体,遗传得到的个体和变异个体中选取最好的30个个体(对应的函数值最大的30个个体)作为下一次迭代的父样本。

from random import randint

from numpy import sin

def decode(g):

return [((g&0xfff) - 2048) * 0.001, ((g>>12) - 2048) * 0.001]

def function_g(g):

x = decode(g)

return function(x[0], x[1])

def function(x, y):

return 100 * (sin(x) ** 2 - sin(y)) ** 2 + (1 - sin(x)) ** 2

def cmp(g1, g2):

key = function_g(g1) - function_g(g2)

if key > 0: return 1

elif key < 0: return -1

else: return 0

def GA(num = 30, round = 10):

gene = [randint(0, (1<<24) - 1) for i in range(num)]

rnd = 0

while rnd < round:

rnd += 1

gene_c = [g ^ (1<

gene_h = []

for g1 in gene:

for g2 in gene:

mask = (1<

gene_h.append(g2 & ~mask | g1 & mask)

gene_h.append(g1 & ~mask | g2 & mask)

gene_tot = gene + gene_h + gene_c

gene_tot.sort(cmp = cmp, reverse = True)

gene = gene_tot[:num]

print "round", rnd, ":", decode(gene[0]), function_g(gene[0])

return decode(gene[0]) + [function_g(gene[0])]

if __name__ == '__main__':

print GA(30, 10),

结果

经过10得到如下结果, 每一行的三个数字分别对应x, y, f(x, y)

round 1 : [1.571, -1.464] 397.724305554

round 2 : [1.571, -1.539] 399.797824716

round 3 : [-1.605, -1.548] 403.426161017

round 4 : [-1.605, -1.556] 403.486264841

round 5 : [-1.541, -1.591] 403.561685598

round 6 : [-1.541, -1.575] 403.639747518

round 7 : [-1.573, -1.579] 403.984587994

round 8 : [-1.573, -1.571] 403.998039526

round 9 : [-1.569, -1.571] 403.998694536

round 10 : [-1.569, -1.571] 403.998694536

遗传算法求二元函数极值怎么编码_用遗传算法求复杂函数的极值点相关推荐

  1. 遗传算法求二元函数极值怎么编码_使用遗传算法求二元函数的最小值

    二元函数为y=x1^2+x2^2,x∈[-5,5] NIND=121; %初始种群的个数(Number of individuals) NVAR=2; %一个染色体(个体)有多少基因 PRECI=20 ...

  2. 遗传算法求二元函数极值怎么编码_遗传算法求解一元函数二元函数最值

    ##--------------------------施工中----------------------------## import random import math import numpy ...

  3. 遗传算法求二元函数极值怎么编码_遗传算法求解二元函数极值源码

    网上看到了一个比较不错的讲解遗传算法的帖子,链接如下 http://blog.csdn.net/b2b160/article/details/4680853 但是却没有贴源代码,正好最近闲来无事,就尝 ...

  4. correl函数相关系数大小意义_在EXCEL中用“CORREL”函数求 两列的相关系数为什么是等于1?...

    展开全部 因为正负号表示的e5a48de588b662616964757a686964616f31333365646235是正相关还是负相关,数值表示的是相关程度. 一.相关表和相关图可反映两个变量之 ...

  5. python函数模块关键代码_从零开始学Python(六):函数,模块和类的使用

    从这章开始,我们不在使用sublime文本编译器进行编码了,主要是我们每次运行的使用还得去命令行执行pyhon ***.py命令查看结果,操作比较麻烦.推荐大家使用Pycharm(具体安装使用教程大家 ...

  6. python 函数作用于矩阵_图解NumPy:常用函数的内在机制

    原标题:图解NumPy:常用函数的内在机制 来源: 机器之心 支持大量多维数组和矩阵运算的 NumPy 软件库是许多机器学习开发者和研究者的必备工具,本文将通过直观易懂的图示解析常用的 NumPy 功 ...

  7. python中高阶函数和装饰器_三.Python高阶函数和装饰器

    1高阶函数 1.1 数学概念回顾下数学知识: y=f(x) 这是最开始接触的普通函数 y=g(f(x)) 这个就是我们接触到的高阶函数 在数学和计算机科学中,高阶函数至少应当是满足下面一个条件的函数: ...

  8. mysql 聚合函数内比较运算符_关于常用 MYSQL 聚合函数,其他函数 ,类型转换,运算符 总结...

    /* 关于MYSQL 聚合函数,其他函数 ,类型转换,运算符 总结,*/ -- 1 运算符优先级  /* 12.1.1. 操作符优先级 以下列表显示了操作符优先级的由低到高的顺序.排列在同一行的操作符 ...

  9. python函数的使用方法_百度资讯搜索_python函数的使用方法

    金生水起程序猿 2020年11月22日 11:23函数语法格式及调用参数:默认值.元组和字典可变参数的使用全局变量和局部变量作用域,局部变量如何升级为全局变量函数是可重复使用的,实现单一功能的代码块. ...

最新文章

  1. 黑色星期五c语言,求黑色星期五问题~
  2. Kubernetes Deployment与Replica Set
  3. Python知识:关于map
  4. “混合”成为IBM Cognos新法宝
  5. dapperpoco mysql_Dapper-master
  6. JMeter: org.apache.http.NoHttpResponseException
  7. android adb shell常用命令(四)
  8. 使用Unoconv和LibreOffice进行格式转换实现在线预览 doc,doxc,xls,xlsx,ppt,pptx 文件
  9. 银行卡注销快捷支付协议
  10. 奈飞文化手册_奈飞文化手册,如何塑造企业文化
  11. Teamcenter开发问题之-- relation 无法创建 and 无法check in
  12. Ubuntu 18.04下Couldn't connect to Docker daemon at http+docker://localunixsocket解决办法
  13. PHP 数组拼接成字符串
  14. 【NLP】XLNet详解
  15. Linux开发环境——SSH工具
  16. PDF删除页面免费的方法有什么?PDF怎么删除页面的技巧你不能错过
  17. java2048移动算法_2048游戏通关算法
  18. 消除无法用内置管理账户打开sticky notes
  19. IDEA Alt+Insert键打开的是命令行
  20. 程序员高手和程序员菜鸟的区别是什么?

热门文章

  1. 小程序可不可以汉字命名_不可将您的方法命名为“等于”
  2. Spring Data Redis:Sentinel的高可用性
  3. php cdi_教程:编写自己的CDI扩展
  4. 初学者指南:如何为Red Hat Process Automation Manager配置电子邮件服务任务
  5. Java:GraalVM数据库流性能
  6. jwt-cli:一个用于解码JSON Web令牌(JWT令牌)的Shell库
  7. lambdas for_Lambdas:来到您附近的Java 8!
  8. Spring JPA数据+Hibernate+ MySQL + Maven
  9. 登录样式:log4j 2,上下文,自动清理…全部不附带任何字符串!
  10. REST服务的自动化测试