首先先用Geatpy写一个没有做自定义初始化的程序,确保能跑通哟,或是直接使用官网的demo也行

自定义初始种群

  1. 自定义初始种群与要求解的问题无关,所以不需要管Myproblem怎么写的。只需要查看Main.py,这是我自己的代码:
# -*- coding: utf-8 -*-
import geatpy as ea  # import geatpy
from Myproblem import MyProblem
import numpy as npif __name__ == '__main__':"""================================实例化问题对象==========================="""problem = MyProblem()  # 生成问题对象"""==================================种群设置=============================="""Encoding = 'RI'  # 编码方式NIND = 50  # 种群规模Field = ea.crtfld(Encoding, problem.varTypes, problem.ranges, problem.borders)  # 创建区域描述器population = ea.Population(Encoding, Field, NIND)  # 实例化种群对象(此时种群还没被初始化,仅仅是完成种群对象的实例化)"""================================算法参数设置============================="""myAlgorithm = ea.soea_DE_currentToBest_1_L_templet(problem, population)  # 实例化一个算法模板对象# myAlgorithm = ea.moea_psy_NSGA2_templet(problem, population)  # 实例化一个算法模板对象myAlgorithm.MAXGEN = 5000  # 最大进化代数myAlgorithm.mutOper.F = 0.5  # 差分进化中的参数FmyAlgorithm.recOper.XOVR = 0.3  # 重组概率myAlgorithm.logTras = 1  # 设置每隔多少代记录日志,若设置成0则表示不记录日志myAlgorithm.verbose = True  # 设置是否打印输出日志信息myAlgorithm.drawing = 1  # 设置绘图方式(0:不绘图;1:绘制结果图;2:绘制目标空间过程动画;3:绘制决策空间过程动画)"""===========================调用算法模板进行种群进化========================"""[BestIndi, population] = myAlgorithm.run()  # 执行算法模板,得到最优个体以及最后一代种群BestIndi.save()  # 把最优个体的信息保存到文件中"""==================================输出结果=============================="""print('评价次数:%s' % myAlgorithm.evalsNum)print('时间已过 %s 秒' % myAlgorithm.passTime)if BestIndi.sizes != 0:print('最优的目标函数值为:%s' % BestIndi.ObjV[0][0])print('最优的控制变量值为:')for i in range(BestIndi.Phen.shape[1]):print(BestIndi.Phen[0, i])else:print('没找到可行解。')
  1. 由于新版的geatpy使用先验知识作为初始化染色体的方法,因此需要在算法参数设置之后添加这些内容:
    """===========================根据先验知识创建先知种群========================"""prophetChrom = np.zeros((NIND,123))  # 我的Problem里有123个未知数,这里将全0值作为先知种群,prophetPop = ea.Population(Encoding, Field, NIND, prophetChrom)  # 实例化种群对象myAlgorithm.call_aimFunc(prophetPop)  # 计算先知种群的目标函数值及约束(假如有约束)
  1. 最后把先知种群传进去,修改调用算法模板进行种群进化的第一行就行:
    [BestIndi, population] = myAlgorithm.run(prophetPop)  # 执行算法模板,得到最优个体以及最后一代种群

注意:prophetChrom这个值的shape需要为(种群规模,x的数量),并且为ndarry格式的数据

全部案例代码

# -*- coding: utf-8 -*-
import geatpy as ea  # import geatpy
from Myproblem import MyProblem
import numpy as npif __name__ == '__main__':"""================================实例化问题对象==========================="""problem = MyProblem()  # 生成问题对象"""==================================种群设置=============================="""Encoding = 'RI'  # 编码方式NIND = 180  # 种群规模Field = ea.crtfld(Encoding, problem.varTypes, problem.ranges, problem.borders)  # 创建区域描述器population = ea.Population(Encoding, Field, NIND)  # 实例化种群对象(此时种群还没被初始化,仅仅是完成种群对象的实例化)"""================================算法参数设置============================="""myAlgorithm = ea.soea_DE_currentToBest_1_L_templet(problem, population)  # 实例化一个算法模板对象# myAlgorithm = ea.moea_psy_NSGA2_templet(problem, population)  # 实例化一个算法模板对象myAlgorithm.MAXGEN = 5000  # 最大进化代数myAlgorithm.mutOper.F = 0.5  # 差分进化中的参数FmyAlgorithm.recOper.XOVR = 0.3  # 重组概率myAlgorithm.logTras = 1  # 设置每隔多少代记录日志,若设置成0则表示不记录日志myAlgorithm.verbose = True  # 设置是否打印输出日志信息myAlgorithm.drawing = 1  # 设置绘图方式(0:不绘图;1:绘制结果图;2:绘制目标空间过程动画;3:绘制决策空间过程动画)"""===========================根据先验知识创建先知种群========================"""prophetChrom = np.zeros((NIND, 123))  # 我的Problem里有123个未知数,这里将全0值作为先知种群,prophetPop = ea.Population(Encoding, Field, NIND, prophetChrom)  # 实例化种群对象myAlgorithm.call_aimFunc(prophetPop)  # 计算先知种群的目标函数值及约束(假如有约束)"""===========================调用算法模板进行种群进化========================"""[BestIndi, population] = myAlgorithm.run(prophetPop)  # 执行算法模板,得到最优个体以及最后一代种群BestIndi.save()  # 把最优个体的信息保存到文件中"""==================================输出结果=============================="""print('评价次数:%s' % myAlgorithm.evalsNum)print('时间已过 %s 秒' % myAlgorithm.passTime)if BestIndi.sizes != 0:print('最优的目标函数值为:%s' % BestIndi.ObjV[0][0])print('最优的控制变量值为:')for i in range(BestIndi.Phen.shape[1]):print(BestIndi.Phen[0, i])else:print('没找到可行解。')

参考资料

官方soea Demo10:https://github.com/geatpy-dev/geatpy/tree/master/geatpy/demo/soea_demo/soea_demo10
是什么原因移除Popuplation,setChrom方法? #130:https://github.com/geatpy-dev/geatpy/issues/130

Geatpy自定义初始种群相关推荐

  1. geatpy自定义初始的x值、自定义初始基因

    声明:非官方解决方法,不一定正规哈 自定义初始值解决方法 以官方的第一个案例:https://github.com/geatpy-dev/geatpy/tree/master/geatpy/demo/ ...

  2. 遗传算法创建初始种群

    遗传算法通常会创建初始种群来开始进化的过程.这个初始种群通常是随机生成的,并且每个个体都代表一组可能的解决方案.然后,遗传算法会通过选择.交叉和变异的过程来模拟自然界中的生物进化,从而不断改进这个种群 ...

  3. 遗传算法创建初始种群的步骤

    遗传算法创建初始种群的步骤包括: 定义种群的规模,也就是种群中个体的数量. 确定每个个体的基因编码方式.这可以是二进制编码.十进制编码或其他方式. 随机生成每个个体的基因.这些基因将决定个体的特征. ...

  4. kmeans python自定义初始聚类中心_机器学习-KMeans聚类 K值以及初始类簇中心点的选取...

    本文主要基于Anand Rajaraman和Jeffrey David Ullman合著,王斌翻译的<大数据-互联网大规模数据挖掘与分布式处理>一书. KMeans算法是最常用的聚类算法, ...

  5. ios mysql注册登录界面_iOS学习2:创建属于自己的页面,自定义初始界面

    二.在项目中按command+N新建文件,命名为MyViewController,下面的勾选项是选择是否生成与其对应的xib文件,选择第二个是生成iPhone视图,选择第一个生成iPad视图. 三.选 ...

  6. python+遗传算法+Geatpy库—初步认识

    重要参考: (48条消息) 遗传算法(geatpy)_hellobigorange的博客-CSDN博客_geatpy 1,安装(Anaconda+geatpy) Anaconda安装遗传和进化算法库函 ...

  7. Python遗传和进化算法框架(二)Geatpy库函数和数据结构

    上一篇讲了Geatpy的快速入门:https://blog.csdn.net/qq_33353186/article/details/82014986 但是光是几个例子是远远不能熟练掌握python遗 ...

  8. Python遗传算法库和进化算法框架(二)Geatpy库函数和数据结构

    (转载自https://blog.csdn.net/qq_33353186/article/details/82020507) 上一篇讲了Geatpy的快速入门:https://blog.csdn.n ...

  9. NSGA-II改进之种群初始化

    NSGA-II改进之种群初始化 1-什么是佳点集 2-佳点集初始化种群的方法 3-佳点集初始化种群与随机初始化种群的对比 4-佳点集初始化种群代码(matlab) 原NSGA-II的算法在初始化种群的 ...

最新文章

  1. okhttp配置缓存策略_网站的缓存控制策略最佳实践及注意事项
  2. 今日头条CEO朱文佳:新一代搜索引擎已经来了
  3. python django 优势_那么多人选择Python,它的优势,缺点有哪些?
  4. 2021-06-04
  5. PHP命名空间(Namespace)的使用详解
  6. Faster-rcnn详解
  7. 如何撬动机器学习的冰山一角?
  8. 洛谷P3338:力(FFT)
  9. bzoj4565 [HAOI2016]字符合并 结论+状压+区间dp
  10. linux命令vi作用,详解Linux常用命令的用法(二)――――文本编辑器命令vi/vim
  11. 基于JAVA+SpringMVC+Mybatis+MYSQL的值班管理系统
  12. [笔记一]Essential JavaScript Design Patterns For Beginners
  13. 深入浅出python机器学习——K最邻近算法(K-Nearest Neighbors,KNN)
  14. 小程序的学习资料收集
  15. PHP为什么是最好的编程语言?
  16. AssertionError: Torch not compiled with CUDA enabled
  17. 改为dns服务器响应的原因,2020年dns服务器异常的原因及解决方法
  18. 基于AD9854个和MSP430的波形发生器
  19. mac多个html合并,如何在Mac上将多页文件扫描合成一个PDF文档
  20. 在matlab中ln10,ln函数(ln在函数中等于多少)

热门文章

  1. python论文摘要_python新玩法:用python进行文章摘要拿取,只需要一行代码
  2. photon mapping学习笔记
  3. iptables第一部分
  4. js 定时器用法详解——setTimeout()、setInterval()、clearTimeout()、clearInterval()
  5. Python单例模式的4种实现方法(转)
  6. 如何修改帝国cms文章点击量默认值和成倍增加
  7. Gartner:克服SIEM部署失败的通病
  8. 一个C/S结构的优秀例子: 延迟补偿在C/S架构游戏协议设计和优化中的应用
  9. linux下oracle中文乱码问题的解决
  10. java 非法线程_JVM中的线程行为