Geatpy框架使用基于NSGA-II算法的多染色体多目标进化算法案例(moea_psy_NSGA2_templet)
在Geatpy的官方文档中并没有多目标+多染色体进化算法的demo,在我实际写代码时也出现了一些问题。本篇博客补充一个调用moea_psy_NSGA2_templet的demo:
目标函数:
max f1 = x1 * x2 + x3
min f2 = x1 + x2 - x3s.t.
2*x1 + x2 - 1 <= 0
x1 + 2*x3 - 2 <= 0
x1 + x2 + x3 - 1 == 01 <= x1 <= 4
-10 <= x2 <= 1
0 < x3 < 2
Myproblem.py:
# -*- coding: utf-8 -*-
import numpy as np
import geatpy as ea"""max f1 = x1 * x2 + x3min f2 = x1 + x2 - x3s.t.2*x1 + x2 - 1 <= 0x1 + 2*x3 - 2 <= 0x1 + x2 + x3 - 1 == 01 <= x1 <= 4-10 <= x2 <= 10 < x3 < 2
"""class MyProblem(ea.Problem): # 继承Problem父类def __init__(self):name = "MyProblem"M = 2 # f的数量maxormins = [-1, 1] # (目标最小最大化标记列表,1:最小化该目标;-1:最大化该目标)Dim = 3 # x的个数# x的上下界与定义边界是开区间还是闭区间var_types = [0] * Dim # 元素为0表示对应的变量是连续的;1表示是离散的lb = [1, -10, 0] # 决策变量下界ub = [4, 1, 2] # 决策变量上界lbin = [1, 1, 0] # 决策变量下边界(0表示不包含该变量的下边界,1表示包含)ubin = [1, 1, 0] # 决策变量上边界(0表示不包含该变量的上边界,1表示包含)ea.Problem.__init__(self, name, M, maxormins, Dim, var_types, lb, ub, lbin, ubin)def aimFunc(self, pop): # 目标函数Vars = pop.Phen # 得到决策变量矩阵x1 = Vars[:, [0]]x2 = Vars[:, [1]]x3 = Vars[:, [2]]# 目标函数:f1 = x1 * x2 + x3f2 = x1 + x2 - x3pop.ObjV = np.hstack([f1, f2])# 约束条件:(要全部化为 <= )c1 = 2 * x1 + x2 - 1c2 = x1 + 2 * x3 - 2 # 约束条件 <= 0c3 = np.abs(x1 + x2 + x3 - 1) # 约束条件 = 0pop.CV = np.hstack([c1, c2, c3])
Main函数中:
注意Encoding与Field都要是数组的结构,否则报错
# -*- coding: utf-8 -*-
import numpy as np
import geatpy as ea # import geatpy
from MyProblem import MyProblem # 导入自定义问题接口if __name__ == '__main__':"""================================实例化问题对象==========================="""problem = MyProblem() # 生成问题对象"""==================================种群设置==============================="""NIND = 50 # 种群规模Encoding = ['RI']Field = [ea.crtfld(Encoding[0], problem.varTypes, problem.ranges, problem.borders)] # 创建区域描述器population = ea.PsyPopulation(Encoding, Field, NIND) # 实例化种群对象(此时种群还没被初始化,仅仅是完成种群对象的实例化)"""================================算法参数设置============================="""myAlgorithm = ea.moea_psy_NSGA2_templet(problem, population) # 实例化一个算法模板对象myAlgorithm.MAXGEN = 5 # 最大进化代数"""===========================调用算法模板进行种群进化======================="""ndset = myAlgorithm.run()ndset.save()print('用时:%s 秒' % (myAlgorithm.passTime))print('非支配个体数:%s 个' % (ndset.sizes))print('单位时间找到帕累托前沿点个数:%s 个' % (int(ndset.sizes // myAlgorithm.passTime)))
其他问题:
因为我是在deepin系统中编程,在使用Geapy框架时导出图像时会调用matplotlib,而常见的中文方块会出现,还会有“黑体”字体找不到报错,在代码中添加matplotlib的配置也会被覆盖,希望新版能修正这个问题。
Geatpy框架使用基于NSGA-II算法的多染色体多目标进化算法案例(moea_psy_NSGA2_templet)相关推荐
- platEMO里多目标进化算法对应的参考文献
1.AGE-II M. Wagner and F. Neumann, A fast approximation-guided evolutionary multi-objective algorith ...
- 论文研读-基于决策变量分析的大规模多目标进化算法
论文研读-基于决策变量分析的大规模多目标进化算法 Multiobjective Evolutionary Algorithm Based on Decision Variable Analyses f ...
- 动态多目标优化--基于决策变量分类的动态多目标进化算法 笔记
阅读论文:A Dynamic Multiobjective Evolutionary Algorithm Based on Decision Variable Classification (Zhen ...
- 多目标优化算法_【实验室论文】基于多种群协同演化的约束多目标优化算法
欢迎关注智能优化与学习实验室 在很多实际问题中,例如科学.工程设计等领域,衡量一个方案的好坏难以用一个指标来判断,需要用多个目标来刻画,且实际问题通常带有约束条件,这类问题被称为约束多目标优化问题,高 ...
- IGD+-EMOA:基于IGD+的多目标进化算法
IGD±EMOA:基于IGD+的多目标进化算法 参考文献 <IGD±EMOA:A Multi-Objective Evolutionary Algorithm based on IGD+> ...
- 【IEEE CIM 2023】基于多目标进化算法的抗菌肽设计方法
Evolutionary Multi Objective Optimization in Searching for Various Antimicrobial Peptides 小生境共享(Nich ...
- MaOEA-IBP:带有边界保护的基于指标的多目标进化算法
MaOEA-IBP:带有边界保护的基于指标的多目标进化算法 参考文献 <An Indicator-Based Many-Objective Evolutionary Algorithm With ...
- 基于指标的约束多目标进化算法
基于指标的约束多目标进化算法 [注:个人博客地址转移至:点此跳转] [注:个人博客地址转移至:点此跳转] [注:个人博客地址转移至:点此跳转] 参考文献 <Zhi-Zhong Liu , Yon ...
- 基于高通SNPE推理引擎的yolov5目标检测算法
上图源自Snapdragon Neural Processing Engine SDK Reference Guide,它展示了一个Deep Learning Neural Network在SNPE环 ...
最新文章
- android命令行工具 混淆,Android 混淆代码学习以及Android加密工具--APKProtect的使用ZZ...
- 你还在为怎么查看字节码指令而担忧吗?
- 【译】码农生涯十六条不要
- Ext.menu.Menu菜单栏
- python——logging模块
- 应用系统怎么开启审计功能_win10系统开启分屏功能的设置方法
- Spark SQL读数据库时不支持某些数据类型的问题(Timestamp with local Timezone)
- memcached安装和php扩展memcache安装
- 最幸福的事就是吃饺子
- MSE和Cross-entropy梯度更新比较
- 阿里云数据库开源发布:PolarDB三节点高可用的功能特性和关键技术
- 为什么本地硬盘无法启动计算机,win10专业版系统本地磁盘打不开怎么办?
- 如何使用JavaScript获取客户端的IP地址?
- Python中新式类和经典类的区别,钻石继承
- IBM/ORACLE/EMC在银行业的重要性
- Php打印连续纸,针式打印机打印241*297MM连续纸时总按A4纸长度多走一部分白纸?
- pythonidle怎么设置_Python IDLE基本设置
- 诺基亚7plus支持html,【诺基亚7Plus评测】诺基亚7Plus评测:三蔡司镜头“全面”来袭(全文)_诺基亚 7 Plus(4GB RAM/全网通)_手机评测-中关村在线...
- 每台计算机的ip地址解析,ip地址是什么?【详解】
- User Browsing Model简介
热门文章
- Websocket服务器响应包,服务器websocket c++发送二进制类型包,客户端没有任何事件响应...
- mysql约束类型 A P_sql数据类型与约束总结
- python交换两个值原理_python 两数交换新写法原理
- Metal:对 iOS 中 GPU 编程的高度优化的框架
- Easy-mock让团队协作效率提高不止一点点
- Java并发编程之线程安全
- 政企联手打造智慧城市产业
- centos编译安装LNMP
- 利用DEDE正则批量查找替换数据库的自定义内容
- C++11 Lambda表达汇总总结