NSGAII算法中染色体双层编码代码(基于PYTHON)

 

通过染色体数量来替代种群数量

from copy import deepcopy
import math
import random
import matplotlib.pyplot as plt
import pandas as pd
from platypus import *

# 定义一个染色体类
class Chromosome:
    def __init__(self, num_vars, upper_bounds, lower_bounds):
        self.num_vars = num_vars  # 变量个数
        self.upper_bounds = upper_bounds  # 变量上界
        self.lower_bounds = lower_bounds  # 变量下界
        self.x = [None] * num_vars  # 变量值
        self.fitness = [0] * 2  # 适应度值

    # 初始化染色体
    def initialize(self):
        for i in range(self.num_vars):
            self.x[i] = random.uniform(self.lower_bounds[i], self.upper_bounds[i])

    # 计算适应度值
    def evaluate(self, objectives):
        self.fitness[0] = objectives[0](self.x)
        self.fitness[1] = objectives[1](self.x)

    # 获取变量值
    def get_x(self):
        return self.x

    # 获取适应度值
    def get_fitness(self):
        return self.fitness


# 定义一个种群类
class Population:
    def __init__(self, num_chroms, num_vars, upper_bounds, lower_bounds):
        self.num_chroms = num_chroms  # 染色体个数
        self.num_vars = num_vars  # 变量个数
        self.upper_bounds = upper_bounds  # 变量上界
        self.lower_bounds = lower_bounds  # 变量下界
        self.chroms = [None] * num_chroms  # 染
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值