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

确定遗传

在元素个体,遗传得到的个体和变异个体中选取最好的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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 命令之 ulimit 命令-控制shell程序的资源

文章目录介绍常用选项参考示例介绍 用来限制系统用户对 shell 资源的访问。如果不懂什么意思&#xff0c;下面一段内容可以帮助你理解&#xff1a; 假设有这样一种情况&#xff0c;当一台 Linux 主机上同时登陆了 10 个人&#xff0c;在系统资源无限制的情况下&#xff0c;这…

java jvm虚拟机_Java虚拟机(JVM)简介

java jvm虚拟机什么是JVM Java虚拟机&#xff08;JVM&#xff09;是使计算机能够运行Java程序的抽象计算机。 JVM有三个概念&#xff1a; 1.规格 2.实施 3.实例。 该规范是正式描述JVM实现要求的文档。 具有单一规范可确保所有实现都可互操作。 JVM实现是满足JVM规范要求的…

linux qt应用程序全屏,QT在ubuntu下实现界面全屏,侧边栏隐藏,上边栏隐藏【实例】...

最近做一个Qt项目(ubuntu 14.04)&#xff0c;需要将界面全屏&#xff0c;全屏之后&#xff0c;ubuntu侧边栏隐藏&#xff0c;上边栏也隐藏&#xff0c;只显示Qt的界面。那么先介绍几个函数&#xff1a;Qt全屏显示函数&#xff1a;showFullScreen()Qt最大化显示函数&#xff1a;…

copyof java_JDK10——copyOf方法

package com.common.learn;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Set;/*** author 30378** JDK10中新增73个新功能API类库* 在java.util.List java.util.Set java.util…

Linux 命令之 w 命令-显示目前登入系统的用户信息

文章目录介绍常用选项参考示例显示目前登入系统的用户信息不打印头信息显示用户从哪登录使用短输出格式介绍 w 命令用于显示已经登陆系统的用户列表&#xff0c;并显示用户正在执行的指令。执行这个命令可得知目前登入系统的用户有那些人&#xff0c;以及他们正在执行的程序。…

linux系统引导分区,揭秘Linux(二)——操作系统引导与硬盘分区

通过前面的介绍想必大家对Linux有了个基础的了解&#xff0c;那么各位肯定该说是不是要装操作系统了&#xff0c;对不起让各位失望了&#xff0c;这次所讲解的是Linux运行原理与硬盘分区&#xff0c;这是重中之重啊&#xff01;请一定要细细品读。为了更好地了解Linux系统的运行…

jax-rs/jersey_JAX-RS 2.1的Jersey客户端依赖性

jax-rs/jersey泽西岛是JAX-RS 2.1的参考实现。 为了在企业容器外部运行具有JSON-P和JSON-B映射的JAX-RS 2.1客户端&#xff0c;需要以下Jersey依赖项。 Jersey客户端2.6版实现了JAX-RS 2.1 API。 以下依赖性将客户端运行时添加到项目中&#xff1a; <dependency><gr…

get占位符传多个参数_mybatis多个参数(不使用@param注解情况下),sql参数占位符正确写法...

useActualParamName配置useActualParamName允许使用方法签名中的名称作为语句参数名称。 为了使用该特性&#xff0c;你的工程必须采用Java 8编译&#xff0c;并且加上-parameters选项。(从3.4.1开始)true | falsetruemybatis的全局配置useActualParamName决定了mapper中参数的…

HTTP协议简介_请求消息/请求数据包/请求报文_响应消息/响应数据包/响应报文

文章目录HTTP 介绍请求数据包/请求消息/请求报文请求数据包解析响应数据包/响应消息/响应报文HTTP 介绍 概念&#xff1a;Hyper Text Transfer Protocol 超文本传输协议 传输协议&#xff1a;定义了客户端和服务器端通信时发送数据的格式 特点: 1.基于TCP/IP的高级协议 2.默认…

Linux的open函数的调用过程,Linux 中open系统调用实现原理

用户空间的函数在内核里面的入口函数是sys_open通过grep open /usr/include/asm/unistd_64.h查找到的#define __NR_open2__SYSCALL(__NR_open, sys_open)观察unistd_64.h&#xff0c;我们可以猜测用户空间open函数最终调用的系统调用号是2来发起的sys_open系统调用(毕竟glibc一…

java登录界面命令_Java命令行界面(第29部分):自己动手

java登录界面命令本系列有关从Java解析命令行参数的系列简要介绍了28个开源库&#xff0c;这些库可用于处理Java代码中的命令行参数。 即使涵盖了这28个库&#xff0c;该系列也没有涵盖用于解析Java命令行选项的所有可用开源库。 例如&#xff0c;本系列文章未涉及docopt &…

log nginx 客户端请求大小_nginx

博主会将与Nginx有关的知识点总结到"nginx短篇系列"文章中&#xff0c;如果你对nginx不是特别了解&#xff0c;请按照顺序阅读"nginx短篇系列"&#xff0c;以便站在前文的基础上理解新的知识点。当我们访问nginx服务时&#xff0c;nginx会记录日志&#xf…

Linux 下如何查询 tomcat 的安装目录

在命令终端输入如下命令&#xff1a; [roothtlwk0001host ~]# sudo find / -name *tomcat*

rxjava 背压_背压加载文件– RxJava常见问题解答

rxjava 背压事实证明&#xff0c;将文件作为流进行处理非常有效且方便。 许多人似乎忘记了&#xff0c;自Java 8&#xff08;3年以上&#xff01;&#xff09;以来&#xff0c;我们可以很容易地将任何文件变成一行代码&#xff1a; String filePath "foobar.txt"; …

linux 卸载nfs device is busy,umount.nfs: device is busy解决办法

&period;NET Core全新的配置管理&lbrack;共9篇&rsqb;提到“配置”二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化的配置信息定义在这两 ...Windows无法安装到G…

php 时间加法函数_php 时间加减

date_default_timezone_set(PRC); //默认时区echo"今天:",date("Y-m-d",time()),"";echo "今天:",date("Y-m-d",strtotime("18 june2008")),"";echo "昨天:",date("Y-m-d",strtoti…

如何用xapmm测试php_如何在Xampp中运行PHP程序?

成为经过认证的专业PHP是最流行的web后端编程语言。PHP代码将作为web服务器模块或命令行界面运行。要运行PHP for the web&#xff0c;您需要安装像Apache这样的web服务器&#xff0c;还需要像MyS成为经过认证的专业PHP是最流行的web后端编程语言。PHP代码将作为web服务器模块或…

中文标点符号大全

文章目录常见的中文标点符号标点符号的位置中文的标点符号包括句号&#xff0c;逗号&#xff0c;感叹号&#xff0c;问号&#xff0c;引号&#xff0c;冒号等等&#xff0c;接下来分享常见的中文标点符号名称。常见的中文标点符号 句号 。 用于句子末尾&#xff0c;表示陈述语气…

linux 查看链接最终目标,linux学习笔记7-链接

hard link and soft link硬链接&#xff1a;一个文件两个不同的进入&#xff0c;相当于一个教室两个门&#xff0c;从哪个门进都进到同一个教室硬链接特征&#xff1a;1、拥有相同的 i节点 和相同的存储block快&#xff0c;可以看做是同一个文件2、可通过i节点识别&#xff0c;…

apache.camel_Apache Camel 2.20发布–新增功能

apache.camelApache Camel 2.20已于今天发布&#xff0c;并且像往常一样&#xff0c;我受命撰写有关此出色新版本及其亮点的博客。 该版本具有以下重点。 1&#xff09;Java 9技术预览支持 我们已经开始支持Java 9的工作&#xff0c;此版本称为技术预览。 源代码在Java 9上…