"""===============================实例化问题对象============================""" problem = MyProblem() # 生成问题对象 """==================================种群设置==============================""" NIND = 30 # 种群规模 # 创建区域描述器,这里需要创建两个,前1个变量用RI编码,剩余变量用排列编码 Encodings = ['RI', 'P'] # 编码方式列表 Field1 = ea.crtfld(Encodings[0], problem.varTypes[:1], problem.ranges[:, :1], problem.borders[:, :1]) # 创建区域描述器 Field2 = ea.crtfld(Encodings[1], problem.varTypes[1:], problem.ranges[:, 1:], problem.borders[:, 1:]) Fields = [Field1, Field2] population = ea.PsyPopulation(Encodings, Fields, NIND) # 实例化种群对象(此时种群还没被初始化,仅仅是完成种群对象的实例化) """================================算法参数设置============================""" myAlgorithm = ea.moea_psy_NSGA2_templet(problem, population) # 实例化一个算法模板对象 myAlgorithm.MAXGEN = 200 # 最大进化代数 myAlgorithm.logTras = 0 # 设置每多少代记录日志,若设置成0则表示不记录日志 myAlgorithm.verbose = False # 设置是否打印输出日志信息 myAlgorithm.drawing = 1 # 设置绘图方式(0:不绘图;1:绘制结果图;2:绘制目标空间过程动画;3:绘制决策空间过程动画) """==========================调用算法模板进行种群进化========================= 调用run执行算法模板,得到帕累托最优解集NDSet以及最后一代种群。NDSet是一个种群类Population的对象。 NDSet.ObjV为最优解个体的目标函数值;NDSet.Phen为对应的决策变量值。 详见Population.py中关于种群类的定义。 """ [NDSet, population] = myAlgorithm.run() # 执行算法模板,得到非支配种群以及最后一代种群 NDSet.save() # 把非支配种群的信息保存到文件中 """==================================输出结果==============================""" print('用时:%s 秒' % myAlgorithm.passTime) print('非支配个体数:%d 个' % NDSet.sizes) if NDSet.sizes != 0 else print('没有找到可行解!')
# -*- coding: utf-8 -*- from MyProblem import MyProblem # 导入自定义问题接口 import geatpy as ea # import geatpy if __name__ == '__main__': # 实例化问题对象 problem = MyProblem() # 构建算法 algorithm = ea.moea_psy_NSGA2_templet(problem, ea.PsyPopulation(Encodings=['RI', 'P'], NIND=30, EncoIdxs=[[0], [1,2,3,4]]), MAXGEN=200, # 最大进化代数 logTras=0) # 表示每隔多少代记录一次日志信息,0表示不记录。 # 求解 res = ea.optimize(algorithm, verbose=False, drawing=1, outputMsg=True, drawLog=False, saveFlag=True) print(res)