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

DEAP库文档教程二-----创建类型

本节将展示如何通过creator创建类型以及如何使用toolbox进行初始化。

1、Fitness

已经提供的Fitness类是一个抽象类,它需要weight来使得它成为一个函数。一个最小化的适应度是通过负权重构建的,而一个最大化适应度则需要正权重。

creator.create("FitnessMin",base.Fitness,weights=(-1.0,))

creat()函数至少需要两个元素,一个是别名,另一个是它基于的类(在上例中为“FitnessMin”和“base.Fitness”)。任何序列元素都会对类的属性产生影响。在具体的Fitness文档中,weights属性一定是一个元组,这样才可以使得多目标和单目标适应度可以保持一致。

2、Individual

主要说明如何使用creator创建一些个体并且使用Toolbox对它们进行初始化

2.1、 List of Floats

我们要创建的第一个个体将是一个简单的包含float的list。为了去产生这种个体,我们需要创建一个Individual class,使用creator将会与标准list类型建立联系,并且将会与fitness建立联系(每个individual对应其fitness)。

下面介绍一个新的register对象,它用于将deap包中所带方法与要编写的演化算法进行“固定”(包括初始化、操作方法以及适应度函数的计算)。register存在于base.Toolbox中。因此在使用时首先要调用base.Toolbox(),然后再对register进行调用。

register()至少需要两个参数,一个alias和一个分配到alias的函数。任何的序列参数会被叫做functools.partial()进行传递到函数当中。在toolbox中创造了两个alias,第一个重定向到random.random()函数,第二个是一个initRepeat()函数,将它容器中的元素填充到creator.Individual class中,它对toolbox.attr_float()函数的func参数根据IND_SIZE(这里的n)进行重复。

        穿插介绍initRepeat()         重复调用函数func n次,并在容器类型的容器中返回结果

deap.tools.initRepeat(container, func, n)

Parameters:
  • container – The type to put in the data from func.
  • func – The function that will be called n times to fill the container.
  • n – The number of times to repeat func.
Returns:

An instance of the container filled with data from func.

   穿插介绍initIterate()  调用函数容器,将可迭代项作为其唯一参数。迭代必须由方法或对象生成器返回。

Parameters:
  • container – The type to put in the data from func.
  • generator – A function returning an iterable (list, tuple, …), the content of this iterable will fill the container.
Returns:

An instance of the container filled with data from the generator.

2.2、Permutation(排列)

排列表示的个体几乎类似于一般列表个体。事实上,它们都继承自基本列表类型。唯一的区别是,我们需要生成一个随机排列,并将该排列提供给个体,而不是用一系列浮点来填充列表。

解释说明:random.sample随机采样函数,距离,random.sample([1,2,4,6,7],1)就是从列表中随机采1个样本出来。那这里的列表本身为【0,1,2...IND_SIZE】共计IND_SIZE个数,这里需要一次性随机采样取出IND_SIZE个,意味着是列表中的所有元素需要全部取出,故而形成随机打乱的一个排序。

注解:register的individual其中,individual为别名,tools.initIterate为分配到individual的函数,其中tools.initIterate为种群初始化函数,已在上述介绍,这个函数同样可以有2个参数,一个为容器container,一个为生成器generator。刚好对应上。

以下的类型还有很多,大家可以自行学习。

http://www.lryc.cn/news/149787.html

相关文章:

  • Axure RP美容美妆医美行业上门服务交互原型图模板源文件
  • 【SpringBoot】用SpringBoot代码详细解释<List>的用法
  • HRS--人力资源系统(Springboot+vue)--打基础升级--(六)分页查询 + 重置按钮
  • JavaScript设计模式(二)——简单工厂模式、抽象工厂模式、建造者模式
  • DEAP库文档教程五----计算统计
  • 新型安卓恶意软件使用Protobuf协议窃取用户数据
  • 【AI数字人】如何基于DINet+Openface自训练AI数字人
  • Stable Diffusion 多视图实践
  • 【实操干货】如何开始用Qt Widgets编程?(四)
  • 解决window安装docker报错问题
  • 茄子科技面试题
  • postgis数据库导出csv表再导入postgis
  • MySQL 特殊字符
  • Chrome自动升级了,找不到最新版本的webdriver怎么办?
  • 网络编程套接字(3): 简单的TCP网络程序
  • springMVC之拦截器
  • docker搭建个人网盘和私有仓库Harbor
  • 智慧排水监测系统,科技助力城市排水治理
  • 部署java程序的服务器cpu过高如何排查和解决
  • 合宙Air724UG LuatOS-Air LVGL API控件--按钮 (Button)
  • new/delete与malloc/free的区别
  • QT listWidget 中实现元素的自由拖拽
  • ChatGPT AIGC 完成二八分析柏拉图的制作案例
  • Python 分析HTTP的可靠性
  • 数据库连接报错CannotGetJdbcConnectionException: Failed to obtain JDBC Connection
  • 【Linux系列】vmware虚拟机网络配置详解
  • AUTOSAR规范与ECU软件开发(实践篇)7.8 MCAL模块配置方法及常用接口函数介绍之Icu的配置
  • 2023-9-2 Prim算法求最小生成树
  • 骨传导耳机会影响听力吗?这是真的吗?
  • 【华为OD机试python】 阿里巴巴找黄金宝箱(Ⅱ)【2023 B卷|100分】