geatpy库模板moea_nsga2_templet求解多目标问题

帕累托前沿个数得到的是目标函数值及对应的关系,变量的最优值没显示出来。

代码(aimfuc.py

import numpy as np


def aimfuc(x, LegV):  # 定义目标函数
	x1 = x[:, 0]
	x2 = x[:, 1]
	fun1 = (x1 - x2) ** 2 + x1
	fun2 = x1 ** 2 - x2
	return [np.vstack([fun1, fun2]).T, LegV]

代码(punishing.py

# -*- coding: utf-8 -*-

import numpy as np


def punishing(LegV, FitnV):
	FitnV[np.where(LegV == 0)[0]] = np.min(FitnV) * 0.1  # 对非可行解严厉惩罚
	return FitnV

代码(main.py

# -*- coding: utf-8 -*-

import geatpy as ga
import numpy as np

# 获取函数接口地址
AIM_M = __import__('aimfuc')
PUN_M = __import__('punishing')
"""============================变量设置============================"""
x1 = [-5, 5]  # 自变量1的范围
x2 = [-5, 5]  # 自变量2的范围
b1 = [1, 1]  # 自变量1是否包含下界
b2 = [1, 1]  # 自变量2是否包含上界
precisions = [1, 1]  # 在二进制/格雷码编码中代表自变量的编码精度,当控制变量是二进制/格雷编码时,该参数可控制编码的精度
ranges = np.vstack([x1, x2]).T  # 生成自变量的范围矩阵
borders = np.vstack([b1, b2]).T  # 生成自变量的边界矩阵
# 生成区域描述器
FieldD = ga.crtfld(ranges, borders, precisions)
"""========================遗传算法参数设置========================="""
NIND = 50  # 种群规模
MAXGEN = 500  # 最大遗传代数
MAXSIZE = 200  # 最大帕累托前沿数
GGAP = 0.8  # 代沟:子代与父代的重复率为(1-GGAP)
selectStyle = 'rws'  # 遗传算法的选择方式设为"rws"——轮盘赌选择
recombinStyle = 'xovdp'  # 遗传算法的重组方式,设为两点交叉
recopt = 0.9  # 交叉概率
pm = 0.1  # 变异概率
SUBPOP = 1  # 设置种群数为1
maxormin = 1  # 设置标记表明这是最小化目标
"""=======================调用编程模板进行种群进化==================="""
# 调用编程模板进行种群进化,得到种群进化和变量的追踪器以及运行时间
[ObjV, NDSet, NDSetObjV, times] = ga.moea_nsga2_templet(AIM_M=AIM_M, AIM_F="aimfuc", PUN_M=PUN_M, PUN_F="punishing",
                                                        FieldDR=FieldD, problem="R", maxormin=1, MAXGEN=MAXGEN,
                                                        MAXSIZE=MAXSIZE, NIND=NIND, SUBPOP=SUBPOP, GGAP=GGAP,
                                                        selectStyle=selectStyle, recombinStyle=recombinStyle,
                                                        recopt=recopt, pm=pm, distribute=True, drawing=1)

测试

用时:39.307276010513306 秒
帕累托前沿点个数:200 个
单位时间找到帕累托前沿点个数:5 个

1

猜你喜欢

转载自blog.csdn.net/weixin_40775077/article/details/85032774