• 大小: 63KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-28
  • 语言: Python
  • 标签: nsga2  

资源简介

本代码为NSGA2的python版,论文原文复现结果,实验文档和matlab见之前的资源。

资源截图

代码片段和文件信息

# -*- coding: utf-8 -*-
“““
程序功能:实现nsga2算法,测试函数为ZDT1ZDT2ZDT3ZDT4ZDT6DTLZ1DTLZ2
说明:遗传算子为二进制竞赛选择,模拟二进制交叉和多项式变异
作者:(晓风)
email: 18821709267@163.com 
最初建立时间:2018.10.10
最近修改时间:2018.10.10
参考论文:
A fast and Elitist Multiobjective Genetic Algorithm:NSGA-Ⅱ
Kalyanmoy DebAssociate Member IEEE Amrit Pratap Sameer Agarwal and T.Meyarivan
IEEE TRANSACTIONS ON EVOLUTIONARY COMPUTATION
“““

import numpy as np
import math
import random
import matplotlib.pyplot as plt
import time
from mpl_toolkits.mplot3d import Axes3D
start=time.time()#开始计时

def funfun(fun):
    if fun==‘ZDT1‘:
        f_num=2;#目标函数个数
        x_num=30;#决策变量个数
        x_min=np.zeros((1x_num))#决策变量的最小值
        x_max=np.ones((1x_num))#决策变量的最大值
        zdt1=np.loadtxt(‘ZDT1.txt‘)
        plt.scatter(zdt1[:0]zdt1[:1]marker=‘o‘color=‘green‘s=40)
        PP=zdt1
    elif fun==‘ZDT2‘:
        f_num=2;#目标函数个数
        x_num=30;#决策变量个数
        x_min=np.zeros((1x_num))#决策变量的最小值
        x_max=np.ones((1x_num))#决策变量的最大值
        zdt2=np.loadtxt(‘ZDT2.txt‘)
        plt.scatter(zdt2[:0]zdt2[:1]marker=‘o‘color=‘green‘s=40)
        PP=zdt2       
    elif fun==‘ZDT3‘:
        f_num=2;#目标函数个数
        x_num=30;#决策变量个数
        x_min=np.zeros((1x_num))#决策变量的最小值
        x_max=np.ones((1x_num))#决策变量的最大值
        zdt3=np.loadtxt(‘ZDT3.txt‘)
        plt.scatter(zdt3[:0]zdt3[:1]marker=‘o‘color=‘green‘s=40)
        PP=zdt3
    elif fun==‘ZDT4‘:
        f_num=2;#目标函数个数
        x_num=10;#决策变量个数
        x_min=np.array([[0-5-5-5-5-5-5-5-5-5]]dtype=float)#决策变量的最小值
        x_max=np.array([[1555555555]]dtype=float)#决策变量的最大值
        zdt4=np.loadtxt(‘ZDT4.txt‘)
        plt.scatter(zdt4[:0]zdt4[:1]marker=‘o‘color=‘green‘s=40)
        PP=zdt4
    elif fun==‘ZDT6‘:
        f_num=2;#目标函数个数
        x_num=10;#决策变量个数
        x_min=np.zeros((1x_num))#决策变量的最小值
        x_max=np.ones((1x_num))#决策变量的最大值
        zdt6=np.loadtxt(‘ZDT6.txt‘)
        plt.scatter(zdt6[:0]zdt6[:1]marker=‘o‘color=‘green‘s=40)
        PP=zdt6
    elif fun==‘DTLZ1‘:
        f_num=3;#目标函数个数
        x_num=10;#决策变量个数
        x_min=np.zeros((1x_num))#决策变量的最小值
        x_max=np.ones((1x_num))#决策变量的最大值
        dtlz1=np.loadtxt(‘DTLZ1.txt‘)
        fig = plt.figure()
        ax = Axes3D(fig)
        ax.scatter(dtlz1[:0]dtlz1[:1]dtlz1[:2]c=‘g‘)
        PP=dtlz1       
    elif fun==‘DTLZ2‘:
        f_num=3;#目标函数个数
        x_num=10;#决策变量个数
        x_min=np.zeros((1x_num))#决策变量的最小值
        x_max=np.ones((1x_num))#决策变量的最大值
        dtlz2=np.loadtxt(‘DTLZ2.txt‘)
        fig = plt.figure()
        ax = Axes3D(fig)
        ax.scatter(dtlz2[:0]dtlz2[:1]dtlz2[:2]c=‘g‘)
        PP=dtlz2
    return f_numx_numx_minx_maxPP



class Individual():
    def __init__(selfx):
        self.x=x
        self.nnd=0
        self.paretorank=0
        if (fun==‘ZDT1‘):
            f1=float(x[0])
            sum1=0.0
          

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-10-12 21:15  nsga2\
     目录           0  2018-10-09 21:42  nsga2\DTLZ1\
     文件       49599  2018-10-03 17:19  nsga2\DTLZ1.txt
     目录           0  2018-10-09 21:42  nsga2\DTLZ2\
     文件       50910  2018-10-03 17:19  nsga2\DTLZ2.txt
     文件       21077  2018-10-12 09:20  nsga2\nsga2.py
     目录           0  2018-10-09 21:41  nsga2\ZDT1\
     文件       17998  2018-09-23 13:00  nsga2\ZDT1.txt
     目录           0  2018-10-09 21:41  nsga2\ZDT2\
     文件       17998  2018-09-23 13:00  nsga2\ZDT2.txt
     目录           0  2018-10-09 21:41  nsga2\ZDT3\
     文件        5166  2018-09-23 13:01  nsga2\ZDT3.txt
     目录           0  2018-10-09 21:41  nsga2\ZDT4\
     文件        4007  2018-09-21 22:12  nsga2\ZDT4.txt
     目录           0  2018-10-09 21:41  nsga2\ZDT6\
     文件       57182  2018-09-23 13:02  nsga2\ZDT6.txt
     目录           0  2018-10-09 21:41  nsga2\运行结果\

评论

共有 条评论