遗传算法求二元函数极值怎么编码_用遗传算法求复杂函数的极值点
确定遗传
在元素个体,遗传得到的个体和变异个体中选取最好的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
遗传算法求二元函数极值怎么编码_用遗传算法求复杂函数的极值点相关推荐
- 遗传算法求二元函数极值怎么编码_使用遗传算法求二元函数的最小值
二元函数为y=x1^2+x2^2,x∈[-5,5] NIND=121; %初始种群的个数(Number of individuals) NVAR=2; %一个染色体(个体)有多少基因 PRECI=20 ...
- 遗传算法求二元函数极值怎么编码_遗传算法求解一元函数二元函数最值
##--------------------------施工中----------------------------## import random import math import numpy ...
- 遗传算法求二元函数极值怎么编码_遗传算法求解二元函数极值源码
网上看到了一个比较不错的讲解遗传算法的帖子,链接如下 http://blog.csdn.net/b2b160/article/details/4680853 但是却没有贴源代码,正好最近闲来无事,就尝 ...
- correl函数相关系数大小意义_在EXCEL中用“CORREL”函数求 两列的相关系数为什么是等于1?...
展开全部 因为正负号表示的e5a48de588b662616964757a686964616f31333365646235是正相关还是负相关,数值表示的是相关程度. 一.相关表和相关图可反映两个变量之 ...
- python函数模块关键代码_从零开始学Python(六):函数,模块和类的使用
从这章开始,我们不在使用sublime文本编译器进行编码了,主要是我们每次运行的使用还得去命令行执行pyhon ***.py命令查看结果,操作比较麻烦.推荐大家使用Pycharm(具体安装使用教程大家 ...
- python 函数作用于矩阵_图解NumPy:常用函数的内在机制
原标题:图解NumPy:常用函数的内在机制 来源: 机器之心 支持大量多维数组和矩阵运算的 NumPy 软件库是许多机器学习开发者和研究者的必备工具,本文将通过直观易懂的图示解析常用的 NumPy 功 ...
- python中高阶函数和装饰器_三.Python高阶函数和装饰器
1高阶函数 1.1 数学概念回顾下数学知识: y=f(x) 这是最开始接触的普通函数 y=g(f(x)) 这个就是我们接触到的高阶函数 在数学和计算机科学中,高阶函数至少应当是满足下面一个条件的函数: ...
- mysql 聚合函数内比较运算符_关于常用 MYSQL 聚合函数,其他函数 ,类型转换,运算符 总结...
/* 关于MYSQL 聚合函数,其他函数 ,类型转换,运算符 总结,*/ -- 1 运算符优先级 /* 12.1.1. 操作符优先级 以下列表显示了操作符优先级的由低到高的顺序.排列在同一行的操作符 ...
- python函数的使用方法_百度资讯搜索_python函数的使用方法
金生水起程序猿 2020年11月22日 11:23函数语法格式及调用参数:默认值.元组和字典可变参数的使用全局变量和局部变量作用域,局部变量如何升级为全局变量函数是可重复使用的,实现单一功能的代码块. ...
最新文章
- 黑色星期五c语言,求黑色星期五问题~
- Kubernetes Deployment与Replica Set
- Python知识:关于map
- “混合”成为IBM Cognos新法宝
- dapperpoco mysql_Dapper-master
- JMeter: org.apache.http.NoHttpResponseException
- android adb shell常用命令(四)
- 使用Unoconv和LibreOffice进行格式转换实现在线预览 doc,doxc,xls,xlsx,ppt,pptx 文件
- 银行卡注销快捷支付协议
- 奈飞文化手册_奈飞文化手册,如何塑造企业文化
- Teamcenter开发问题之-- relation 无法创建 and 无法check in
- Ubuntu 18.04下Couldn't connect to Docker daemon at http+docker://localunixsocket解决办法
- PHP 数组拼接成字符串
- 【NLP】XLNet详解
- Linux开发环境——SSH工具
- PDF删除页面免费的方法有什么?PDF怎么删除页面的技巧你不能错过
- java2048移动算法_2048游戏通关算法
- 消除无法用内置管理账户打开sticky notes
- IDEA Alt+Insert键打开的是命令行
- 程序员高手和程序员菜鸟的区别是什么?
热门文章
- 小程序可不可以汉字命名_不可将您的方法命名为“等于”
- Spring Data Redis:Sentinel的高可用性
- php cdi_教程:编写自己的CDI扩展
- 初学者指南:如何为Red Hat Process Automation Manager配置电子邮件服务任务
- Java:GraalVM数据库流性能
- jwt-cli:一个用于解码JSON Web令牌(JWT令牌)的Shell库
- lambdas for_Lambdas:来到您附近的Java 8!
- Spring JPA数据+Hibernate+ MySQL + Maven
- 登录样式:log4j 2,上下文,自动清理…全部不附带任何字符串!
- REST服务的自动化测试