资源简介
本代码为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\运行结果\
评论
共有 条评论