💥1 概述

遗传算法是一种基于选择搜索的全局寻优算法,模拟了遗传和选择过程中的繁殖、杂交和突变现象。在遗传算法开始的时候会随机产生一

个体,根据在GA算法里自定义的适应度函数分别对每一个个体进行计算评估,给出一个适应度值。基于此适应度值,选择一些个体用来产生下一代,然后选择出来的个体再经过交叉和变异进行再组合从而生成新的一代,以此类推朝着最优解的方向进化。全局寻优算法GA的模型流程如图1所示。

LSTM在深度强化学习的应用 lstm优化算法_python

 循环神经网络RNN只能存储短期记忆,会遗忘长期记忆信息,为了记住有用的长期信息,后面引入了长短时记忆神经网络模型LSTM ,该模型是RNN的拓展网络结构l8]。该模型可以有效地同时利用短期记忆信息和长期记忆信息,从而可以有效的避免梯度消失导致某些信息丢失的问
题[9I,在处理较长间隔的时间序列方面具有很大的优势。LSTM模型是在RNN基础上增加了记忆细胞,使得该模型可以记住长期序列中的有用信息[10]通过已有的激活函数Relu、Sigmoid、Tanh 与
soft-max来控制输出值的范围,激活函数是在输入数据前已经确定好的,连接层是通过不同大小的权重相连接11].

LSTM在深度强化学习的应用 lstm优化算法_python_02

LSTM在深度强化学习的应用 lstm优化算法_python_03

引入GA遗传算法的双向长短时记忆神经网络LSTM模型,是指利用GA算法对预测模型LSTM进行全局参数寻优,模型结构如图3所示。

LSTM在深度强化学习的应用 lstm优化算法_遗传算法_04

📚2 运行结果

LSTM在深度强化学习的应用 lstm优化算法_sklearn_05

LSTM在深度强化学习的应用 lstm优化算法_机器学习_06

 

LSTM在深度强化学习的应用 lstm优化算法_机器学习_07

LSTM在深度强化学习的应用 lstm优化算法_sklearn_08

LSTM在深度强化学习的应用 lstm优化算法_python_09

 

LSTM在深度强化学习的应用 lstm优化算法_python_10

部分代码:


# Compute macro-average ROC curve and ROC areafrom sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt
from scipy import interp
from itertools import cycle

# First aggregate all false positive rates
all_fpr = np.unique(np.concatenate([fpr[i] for i in range(n_classes)]))

# Then interpolate all ROC curves at this points
mean_tpr = np.zeros_like(all_fpr)
for i in range(n_classes):
    mean_tpr += interp(all_fpr, fpr[i], tpr[i])

# Finally average it and compute AUC
mean_tpr /= n_classes

fpr["macro"] = all_fpr
tpr["macro"] = mean_tpr
roc_auc["macro"] = auc(fpr["macro"], tpr["macro"])

# Plot all ROC curves
plt.figure(figsize=(10,6))
plt.plot(fpr["micro"], tpr["micro"],
         label='micro-average ROC curve (area = {0:0.2f})'
               ''.format(roc_auc["micro"]),
         color='deeppink', linestyle=':', linewidth=4)

plt.plot(fpr["macro"], tpr["macro"],
         label='macro-average ROC curve (area = {0:0.2f})'
               ''.format(roc_auc["macro"]),
         color='navy', linestyle=':', linewidth=4)

colors = cycle(['aqua', 'darkorange', 'cornflowerblue', 'blue','green','red','cyan','orange','yellow','olive'])
for i, color in zip(range(n_classes), colors):
    plt.plot(fpr[i], tpr[i], color=color, lw=lw,
             label='ROC curve of class {0} (area = {1:0.2f})'
             ''.format(i, roc_auc[i]))

plt.plot([0, 1], [0, 1], 'k--', lw=lw)
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC curve for driver behaviour analysis')
plt.legend(loc="lower right")
plt.show()


🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]王德忠,朱国宏,王禹,王神虎.基于GA-LSTM的综采面瓦斯浓度预测模型[J].煤炭技术,2023,42(01):219-221.DOI:10.13301/j.cnki.ct.2023.01.046.

[2]杨语蒙,李兴东.基于GA-LSTM组合模型的股票价格预测[J].现代计算机,2021,27(33):1-7.

[3]满建峰,侯磊,杨凯,刘珈铨,张鑫儒,伍星光,贺思宸.基于PSO-LSTM混合模型的天然气管道多用气节点负荷预测研究[J].油气与新能源,2022,34(06):91-100.

🌈4 Python代码实现