【算法】第二代遗传算法NSGA

编程入门 行业动态 更新时间:2024-10-25 04:26:06

【<a href=https://www.elefans.com/category/jswz/34/1770096.html style=算法】第二代遗传算法NSGA"/>

【算法】第二代遗传算法NSGA

NSGA-II介绍

NSGA-II(Non-dominated Sorting Genetic Algorithm II)是一种多目标优化算法,用于解决具有多个冲突目标的优化问题。它通过模拟进化过程中的自然选择和遗传操作,逐步改进种群中的解,以找到一组尽可能好的解,这些解在多个目标下都是非支配的(Pareto优解)。

建模目的

用NSGA-II实现对SVR超参数的寻优,找到SVR最优的超参数C和对应的评价指标RMSE,超参数C范围(0.01, 10),迭代次数5,种群大小5。
ps:超参数范围、迭代次数、种群大小可自定义

模型源码

import random
from sklearn.model_selection import train_test_split
import pandas as pd
import numpy as np
from sklearn.svm import SVRfrom sklearn.metrics import mean_squared_error
# 设置参数
pop_size = 5  # 种群大小
gen_size = 5  # 进化代数
pc = 1  # 交叉概率
pm = 0.3  # 变异概率
num_obj = 1  # 目标函数个数
x_range = (0.01, 10)  # 自变量取值范围
data = pd.read_excel('C:/Users/孙海涛/Desktop/x.xlsx', sheet_name='Sheet1')  # 读取数据
target = pd.read_excel('C:/Users/孙海涛/Desktop/y.xlsx', sheet_name='Sheet1')  # 读取数据
x_train, x_test, y_train, y_test = train_test_split(data, target, random_state=22, test_size=0.25)# 定义自变量的类
class Individual:def __init__(self, x):self.x = xself.objs = [None] * num_objself.rank = Noneself.distance = 0.0# 计算目标函数的值def evaluate(self):c = self.xmodel_svr = SVR(C=c)model_svr.fit(x_train, y_train)predict_results = model_svr.predict(x_test)

更多推荐

【算法】第二代遗传算法NSGA

本文发布于:2023-11-15 22:33:30,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1607686.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:算法   NSGA

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!