# -*- coding: utf-8 -*-
import numpy as np
import geatpy as ga # 导入 geatpy 库
import time
def moea_nsga2_templet(AIM_M, AIM_F, PUN_M, PUN_F, FieldDR, problem, maxormin,
MAXGEN, MAXSIZE, NIND, SUBPOP, GGAP, selectStyle, recombinStyle, recopt, pm, distribute,
drawing = 1):
"""
moea_nsga2_templet.py - 基于改进 NSGA-Ⅱ算法求解多目标优化问题的进化算法模板
语法:
该函数除参数 drawing 外,不设置可缺省参数。当某个参数需要缺省时,在调用函数时
传入 None 即可。
比如当没有罚函数时,则在调用编程模板时将第 3、4 个参数设置为 None 即可,如:
moea_nsga2_templet(AIM_M, 'aimfuc', None, None, ..., maxormin,...)
输入参数:
AIM_M - 目标函数的地址,由 AIM_M = __import__('目标函数所在文件名')语句得到
目标函数规范定义:[f,LegV] = aimfuc(Phen,LegV)
其中 Phen 是种群的表现型矩阵, LegV 为种群的可行性列向量,f 为种群的目标
函数值矩阵
AIM_F : str - 目标函数名
PUN_M - 罚函数的地址,由 PUN_M = __import__('罚函数所在文件名')语句得到
罚函数规范定义: newFitnV = punishing(LegV, FitnV)
其中 LegV 为种群的可行性列向量, FitnV 为种群个体适应度列向量
一般在罚函数中对 LegV 为 0 的个体进行适应度惩罚,返回修改后的适应度列
向量 newFitnV
评论5