项目介绍 MATLAB实现基于HHO-LSBoost哈里斯鹰优化算法(HHO)结合最小二乘提升(LSBoost)进行多输入回归预测(含模型描述及部分示例代码)专栏近期有大量优惠 还请多多点一下关注 加
MATLAB实现基于HHO-LSBoost哈里斯鹰优化算法(HHO)结合最小二乘提升(LSBoost)进行多输入回归预测的详细项目实例
请注意此篇内容只是一个项目介绍 更多详细内容可直接联系博主本人
或者访问对应标题的完整博客或者文档下载页面(含完整的程序,GUI设计和代码详解)
多输入回归预测任务在现代工程系统、工业过程控制、能源管理、环境监测、金融风控与设备健康评估中具有极高的应用价值。所谓多输入回归预测,是指同时利用多个相关特征变量作为输入,建立输入与连续型输出之间的映射关系,从而对目标量进行数值预测。与单输入问题相比,多输入场景通常包含更复杂的变量耦合关系、非线性映射关系、噪声干扰以及样本分布不均衡等问题,因此对建模方法的泛化能力、鲁棒性和参数寻优能力提出了更高要求。
在实际应用中,很多回归对象都不是由单一因素决定,而是多个工况变量、环境变量、状态变量和时序特征共同作用的结果。例如,工业设备的能耗受负载、温度、振动、转速、材料批次等因素影响;建筑能耗受室外气象、室内设定、人员密度、空调工况等因素共同决定;材料性能预测则常常涉及配比、加工温度、压力、时间等多种变量。传统线性回归方法虽然结构简单、可解释性较强,但面对高度非线性的输入输出关系时,往往难以刻画复杂映射,预测精度容易受到限制。单纯依赖树模型或核方法虽然可以增强非线性拟合能力,但在高维、强噪声、多峰值数据场景下,也可能出现过拟合、稳定性不足或参数敏感等问题。
最小二乘提升 LSBoost 是一种基于 boosting 思想的集成回归方法,其核心思想是按序训练多个弱学习器,通过不断拟合前一轮模型的残差来逐步提升整体预测能力。LSBoost 通常以回归树作为基学习器,能够较好地处理非线性关系和变量交互效应,在中小规模结构化数据上表现稳定。然而,LSBoost 的性能高度依赖一系列关键超参数,如学习率、树深度、最小叶节点样本数、弱学习器数量等。如果参数设置不合理,模型可能欠拟合、过拟合,或者训练时间过长、泛化能力不足。对于不同数据集,最佳参数组合往往差异明显,人工调参效率低且结果不稳定。
哈里斯鹰优化算法 HHO 是一种受群体协同捕猎行为启发的智能优化算法,具备较强的全局搜索与局部开发能力。该算法通过模拟鹰群在侦察、包围、突袭和协同进攻过程中的动态行为,逐步逼近最优解。HHO 的优势在于结构清晰、适应连续优化问题能力较强、全局探索能力突出,尤其适合用于求解多参数联合优化问题。对于 LSBoost 而言,HHO 可以作为超参数优化器,在给定搜索空间内自动寻找更优的学习率、树复杂度和弱学习器数量,使模型从“经验调参”转向“智能寻优”。这种组合方式既保留了 LSBoost 对非线性回归的强拟合能力,又通过 HHO 提高参数选择的科学性与自动化程度。
HHO-LSBoost 的多输入回归预测方案适用于具有大量特征、复杂耦合和强噪声干扰的数据场景。该方案通常先进行数据清洗、异常值处理、缺失值填补、特征标准化或归一化,再通过 HHO 搜索最优 LSBoost 超参数组合,最后利用最优参数训练最终回归模型并完成测试集预测。由于多输入数据常常存在特征尺度不一致、冗余信息较多、相关性复杂等问题,因此该组合模型需要在模型设计阶段同时关注数据预处理、特征选择、参数优化、模型验证与误差分析等多个环节。只有在完整流程中进行细致设计,才能充分发挥 HHO 与 LSBoost 的协同优势。
从项目实践角度看,该类模型不仅可用于静态回归预测,还可扩展到批量质量评估、设备性能估计、过程控制软测量、故障状态量预测等任务。对于 MATLAB 平台而言,LSBoost 可借助内置回归树集成接口快速实现,而 HHO 则可通过自定义目标函数与种群迭代机制进行编码实现。结合 MATLAB R2025b 的语法与接口规范,可以构建一套较为完整的多输入回归预测项目流程,包括数据导入、训练测试划分、目标函数设计、HHO 参数搜索、模型训练、性能评估与结果可视化。该项目具备较强的工程落地价值,也适合作为智能优化与集成学习融合建模的典型案例。
该项目的首要目标,是通过 HHO 对 LSBoost 的关键超参数进行自动寻优,使多输入回归模型在复杂样本上获得更高的预测精度。多输入数据的特征空间通常具有非线性、耦合性和噪声干扰等特点,人工经验设置参数往往难以兼顾泛化能力与拟合能力。通过 HHO 搜索最优树数、学习率、树深度等参数,可以让 LSBoost 在不同数据集上自动找到更合适的偏差方差平衡点,降低系统误差和随机误差。对于工业场景中的软测量和质量预测,这种精度提升往往意味着更稳定的控制效果、更低的误判率以及更高的资源利用效率。项目的价值不仅在于提高单次预测指标,还在于形成一套可复用的优化建模框架,适配不同规模、不同分布的数据任务。
第二个目标,是提升模型对不同数据分布和不同工况变化的自适应能力。现实数据经常表现出批次差异、时段漂移和噪声扰动,如果模型参数固定且缺少自适应优化机制,预测性能会随着数据环境变化而下降。HHO 具备较强的全局搜索能力,可以在多峰值目标空间中不断更新候选解,从而更稳健地适配不同样本特征。LSBoost 则能通过集成多个弱学习器逐步修正偏差,对局部复杂映射具有较强表达能力。两者结合后,模型不仅能在训练集上表现良好,也更有机会在测试集和新样本上保持稳定输出。这种自适应能力对于长期运行的工业系统尤为重要,因为系统状态与环境变量并非静态不变,必须依靠更灵活的参数策略维持性能。
第三个目标,是显著降低人工调参带来的时间成本与不确定性。在传统机器学习建模中,超参数通常依赖反复试验、网格搜索或随机搜索,过程耗时较长,且面对参数空间较大时效率不高。LSBoost 的超参数较多,不同参数之间还存在耦合影响,手工调参往往需要多轮实验才能得到较满意结果。HHO 可以把调参过程转化为标准化优化任务,通过适应度函数统一评价每一组参数的预测误差,从而减少人为经验依赖。这样不仅提升了建模流程的自动化程度,也提升了项目的可迁移性。对于需要频繁重训模型的业务系统而言,自动化寻优能够明显减少开发周期,让建模人员将精力更多投入到数据质量、特征工程和业务解释上。
第四个目标,是构建一套可扩展、可迁移的智能回归框架,为后续研究和工程部署提供通用思路。HHO-LSBoost 并不局限于某一类数据集,而是可以适配多种结构化连续预测任务。通过统一的数据预处理流程、统一的适应度评估标准和统一的模型验证机制,能够形成标准化的工程实现模板。该框架还可以进一步扩展到其他集成回归器、其他元启发式优化算法,甚至可用于特征选择与参数联合优化。其意义不仅在于单一模型效果提升,更在于提供一种“优化算法驱动建模”的方法论,使回归预测任务从经验导向转向数据驱动与算法驱动并重,从而提高整个建模链路的规范性、可复现性和可维护性。
多输入回归任务中最常见的难点之一,是特征之间存在复杂耦合、冗余相关和噪声扰动。某些输入变量之间可能高度相关,某些变量对输出的影响具有滞后性或条件依赖性,还有部分变量只是间接作用于目标值。若直接将原始特征输入模型,可能导致学习器被噪声误导,或者学习到不稳定的映射关系。解决这一问题的核心思路,是先进行标准化处理、缺失值填补、异常值检测,并结合特征重要性分析筛除低贡献变量。LSBoost 由于采用树模型作为基学习器,天然能处理部分非线性和变量交互,但若输入质量较差,效果仍会受限。通过 HHO 优化参数后,模型在一定程度上能够缓解过拟合,但前提仍是数据预处理足够充分。因而整个方案必须将数据清洗和模型优化并重,不能只依赖智能算法本身。
LSBoost 的性能受多个超参数共同影响,例如学习率、树数量、树深度、分裂最小样本数等。这些参数并非独立变化,而是存在明显耦合关系。比如,学习率较小时通常需要更大的树数量来补偿模型表达能力;树深度过大时虽然拟合能力增强,但也可能带来过拟合风险;最小叶节点样本数过小时则容易增加模型方差。若使用手工搜索或简单网格搜索,往往无法高效找到全局较优组合。对此,HHO 提供了一种统一的连续优化框架,将超参数寻优转化为最小化验证误差的问题。通过设定合理的上下界、适应度函数和迭代终止条件,可以在较短时间内探索更优参数区域。为提升稳定性,还可引入交叉验证或重复划分验证,降低单次划分带来的偶然性,使优化结果更具代表性。
回归模型常用的评价指标包括均方误差、平均绝对误差、决定系数和相对误差等。若仅依赖单一指标进行优化,可能会出现某一指标较优但整体表现不稳定的情况。比如,某些参数组合在训练集上误差很低,但在测试集上表现不佳,说明存在过拟合;还有些组合虽然 RMSE 较小,但在极端样本上的误差偏大。解决方式是建立多指标综合评价体系,在 HHO 适应度设计中以验证集误差为主,同时辅以 R2、MAE 等辅助分析。若需要更严格,还可采用 K 折交叉验证输出平均性能,并记录标准差,用于衡量模型稳定性。这样设计后,优化目标更接近实际应用需求,而不是单纯追求某个指标的极端最优。对于工程部署而言,稳定性往往与精度同等重要,因此评价体系必须覆盖多维度性能。
整体模型架构的第一层是数据层,负责多输入样本的收集、整理、清洗和组织。多输入回归任务的数据通常以表格形式存储,每一行代表一个样本,每一列对应一个输入特征或目标变量。数据层的核心任务是确保输入输出结构清晰、样本顺序一致、无严重缺失和异常干扰。若存在时间序列属性,还需避免未来信息泄露,并按时间顺序划分训练与测试样本。对于 HHO-LSBoost 项目,数据层不仅决定模型能否训练成功,也决定结果是否具有可解释性。数据组织时通常需要将特征矩阵 X 与响应向量 y 分离,并进行训练集、验证集和测试集划分。若特征尺度差异明显,建议先做标准化处理,使不同量纲变量在模型优化过程中具有可比性。这个层次的设计看似基础,却直接影响后续寻优的稳定性与模型泛化能力,是整个架构中最先需要打牢的一环。
HHO 超参数优化层
第二层是 HHO 超参数优化层,其职责是为 LSBoost 搜索更优的参数组合。HHO 的基本思想来源于鹰群围猎行为:在搜索阶段进行大范围探索,在攻击阶段进行局部开发。算法通常通过种群初始化生成一组候选参数,随后根据猎物逃逸能量、随机扰动和位置更新策略不断迭代,逐步逼近最优参数。对于 LSBoost 而言,HHO 搜索的对象可以包括学习率、树数量、树深度、叶节点最小样本数等。适应度函数一般由验证集均方误差或交叉验证误差构成,误差越小表示参数越优。该层的本质是一个连续或半连续的全局优化器,它使回归模型的参数选择不再依赖人工经验,而变为可计算、可重复、可比较的自动过程。通过合理设置上界和下界,HHO 可在较大搜索空间中平衡探索与利用,从而提升最终模型的性能上限。
LSBoost 回归建模层
第三层是 LSBoost 回归建模层。LSBoost 本质上是一种梯度提升框架下的回归集成方法,通过不断拟合残差来累积多个弱学习器的预测结果。每轮迭代中,当前模型会根据上一轮的残差修正预测偏差,因此能够逐步逼近复杂的非线性关系。若基学习器选用回归树,LSBoost 对变量交互、非线性边界和局部突变具有较强建模能力。与单棵树相比,LSBoost 的优势在于通过集成降低方差,通过逐步逼近提升拟合度。与神经网络相比,其训练过程相对直观,调参后稳定性较高,适合结构化数据任务。该层和 HHO 层紧密耦合,因为 LSBoost 的最终表现取决于超参数,而 HHO 的目标就是帮助 LSBoost 找到更优配置。二者结合后,模型兼具精度、鲁棒性与工程可实施性,形成核心预测引擎。
第四层是性能评估层,负责从多个角度检验模型效果。回归任务中通常需要评估 RMSE、MAE、MSE、R2、MAPE 等指标,其中 RMSE 反映误差的整体尺度,MAE 更能体现平均偏差,R2 则衡量解释方差能力。若模型在测试集上 RMSE 较低且 R2 较高,通常说明拟合效果较好。但仅靠数值指标仍不够,还应分析预测值与真实值的散点分布、残差分布、误差随样本变化趋势等。若误差在某些区间明显偏大,可能说明模型对局部区间学习不足。HHO-LSBoost 架构中,性能评估层既用于最终验收,也用于优化过程中的适应度反馈。也就是说,评价指标不是事后统计,而是主动参与参数搜索的核心依据。只有评估机制设计合理,优化算法才能朝着真正有价值的方向更新。
第五层是可视化与部署层,负责把模型结果转化为可解释、可展示、可落地的输出。可视化内容通常包括真实值与预测值对比图、误差曲线、残差分布图、重要性排序图等。通过这些图形,可以快速判断模型是否存在系统偏差、异常点影响或局部失配。若用于工程系统,还需进一步将训练好的参数、特征处理流程和预测接口封装为可复用模块,以便在新样本到来时直接输出预测结果。MATLAB 环境中可以将训练好的模型对象、标准化参数和最优超参数一并保存,后续直接加载即可进行在线推断。该层的意义在于连接研究与应用,使 HHO-LSBoost 不仅停留在实验结果层面,还能够进入实际部署阶段。对于需要持续预测和周期更新的业务,该层尤其关键,因为它决定了模型的长期可维护性与扩展性。
数据读取与基础划分
clc; % 清空命令行窗口中的历史输出,便于查看当前运行结果
clear; % 清除工作区变量,避免旧变量干扰本次实验
close all; % 关闭所有图窗,保证绘图环境干净
rng(2025); % 固定随机种子,确保实验结果可复现
data = readmatrix('data.xlsx'); % 从Excel文件读取原始多输入回归数据
X = data(:,1:end-1); % 提取前若干列作为输入特征矩阵
Y = data(:,end); % 提取最后一列作为连续型输出目标
n = size(X,1); % 获取样本总数,便于后续划分
idx = randperm(n); % 生成随机样本顺序,用于打乱数据
trainRatio = 0.7; % 设置训练集比例为70%
nTrain = round(trainRatio*n); % 计算训练样本数量
XTrain = X(idx(1:nTrain),:); % 生成训练集输入矩阵
YTrain = Y(idx(1:nTrain),:); % 生成训练集输出向量
XTest = X(idx(nTrain+1:end),:); % 生成测试集输入矩阵
YTest = Y(idx(nTrain+1:end),:); % 生成测试集输出向量
这段代码完成数据导入、特征与目标分离、随机打乱以及训练测试集划分。随机种子固定后,后续 HHO 搜索过程和模型评估都可以稳定复现。使用 readmatrix 适合直接读取数值型表格数据,若原始文件中包含文本字段,则需先进行清洗或单独编码。随机划分训练测试集能够初步检验模型泛化能力,避免仅在顺序样本上训练导致的偏差。对于时间序列型数据,需根据时间顺序划分,不能直接随机打乱,否则会引入信息泄露。
标准化处理
muX = mean(XTrain,1); % 计算训练集每个特征的均值
sigmaX = std(XTrain,0,1); % 计算训练集每个特征的标准差
sigmaX(sigmaX==0) = 1; % 防止某些常数特征出现除零错误
XTrainN = (XTrain - muX)./sigmaX; % 对训练集特征进行标准化
XTestN = (XTest - muX)./sigmaX; % 使用训练集参数标准化测试集特征
muY = mean(YTrain); % 计算训练集目标值均值
sigmaY = std(YTrain); % 计算训练集目标值标准差
if sigmaY == 0, sigmaY = 1; end % 若目标值方差为零,则将标准差置为1
YTrainN = (YTrain - muY)./sigmaY; % 标准化训练集目标值
YTestN = (YTest - muY)./sigmaY; % 标准化测试集目标值
这段代码对输入和输出同时做标准化处理,能够显著提升数值稳定性。虽然树模型对特征尺度不如线性模型敏感,但在联合优化、指标计算和跨样本比较中,标准化仍然有助于统一量纲。训练集统计量必须用于测试集变换,这样才能避免泄露测试信息。目标值标准化不是必须,但在部分数据波动较大时可以帮助更平稳地进行误差计算。若后续需要恢复到原始物理量,预测结果再执行反标准化即可。
HHO 目标函数设置
lb = [0.01, 50, 2, 1]; % 设置学习率、树数量、树深度、叶节点最小样本数下界
ub = [0.30, 300, 20, 20]; % 设置对应参数上界
dim = numel(lb); % 设定优化维度,等于待优化参数个数
objFun = @(x) hho_lsboost_obj(x, XTrainN, YTrainN, XTestN, YTestN); % 定义适应度函数句柄
这段代码给出 HHO 的搜索空间和适应度函数入口。每个维度对应一个 LSBoost 超参数,连续变量和离散变量会在目标函数内部进行取整或约束转换。下界与上界需要结合数据规模和任务复杂度设定,范围过窄会限制最优解搜索,范围过宽则会增加搜索难度和训练成本。适应度函数通常返回测试误差或验证误差,这里通过函数句柄把数据传入目标函数,便于 HHO 主体迭代调用。
HHO 主体迭代
searchAgentsNo = 10; % 设置鹰群个体数量
maxIter = 20; % 设置最大迭代次数
Xpos = zeros(searchAgentsNo, dim); % 初始化所有个体位置矩阵
for i = 1:searchAgentsNo % 对每个搜索个体逐一初始化
Xpos(i,:) = lb + rand(1,dim).*(ub-lb); % 在上下界之间随机生成初始参数
end % 初始化循环结束
rabbitPos = zeros(1,dim); % 记录当前最优解位置
rabbitEnergy = inf; % 记录当前最优适应度值
curve = zeros(maxIter,1); % 记录每次迭代的最优适应度变化
for t = 1:maxIter % 开始主迭代循环
for i = 1:searchAgentsNo % 遍历每只鹰
Xpos(i,:) = max(Xpos(i,:), lb); % 保证当前解不低于下界
Xpos(i,:) = min(Xpos(i,:), ub); % 保证当前解不高于上界
fitness = objFun(Xpos(i,:)); % 计算当前参数组合的适应度
if fitness < rabbitEnergy % 若当前适应度更优
rabbitEnergy = fitness; % 更新最优适应度
rabbitPos = Xpos(i,:); % 更新最优位置
end % 最优解更新结束
end % 个体评价结束
E1 = 2*(1 - t/maxIter); % 计算逃逸能量初始项
for i = 1:searchAgentsNo % 再次遍历所有个体
E0 = 2*rand() - 1; % 生成随机初始能量
Escaping_Energy = E1 * E0; % 计算逃逸能量
q = rand(); % 生成随机切换参数
r = rand(); % 生成另一随机参数
if abs(Escaping_Energy) >= 1 % 进入探索阶段
if q < 0.5 % 采用不同探索机制之一
randIdx = randi(searchAgentsNo); % 随机选取参考个体
Xpos(i,:) = Xpos(randIdx,:) - rand().*abs(Xpos(randIdx,:) - 2*rand().*Xpos(i,:)); % 位置更新策略一
else % 采用另一种探索机制
Xmean = mean(Xpos,1); % 计算群体平均位置
Xpos(i,:) = (rabbitPos - Xmean) - rand().*(lb + rand(1,dim).*(ub-lb)); % 位置更新策略二
end % 探索分支结束
else % 进入开发阶段
if r < 0.5 % 软围捕或快速逼近的一类策略
Xpos(i,:) = rabbitPos - Escaping_Energy*abs(rabbitPos - Xpos(i,:)); % 位置向最优解收缩
else % 强围捕或增强开发策略
Xpos(i,:) = rabbitPos - Escaping_Energy*abs(rabbitPos - Xpos(i,:)) + randn(1,dim).*0.01; % 引入微扰增强跳出局部最优能力
end % 开发分支结束
end % 探索开发判断结束
end % 个体更新结束
curve(t) = rabbitEnergy; % 记录当前代最优适应度
end % 主循环结束
bestPos = rabbitPos; % 保存最终最优参数组合
bestFitness = rabbitEnergy; % 保存最终最优误差值
这段代码是 HHO 参数搜索的核心。先用随机方式初始化多个候选解,再根据适应度筛选全局最优个体。随着迭代推进,逃逸能量逐渐降低,算法由全局探索转向局部开发。这里的更新形式经过简化,便于与 MATLAB 代码直接对应。真实项目中还可以补充更完整的软包围、硬包围、渐进快速潜袭等机制。每次更新后都需要把参数限制在边界内,以防 LSBoost 参数非法。curve 用于观察优化过程是否收敛。
LSBoost 训练与测试
bestLR = bestPos(1); % 提取最优学习率
bestTrees = round(bestPos(2)); % 提取最优树数量并取整
bestDepth = round(bestPos(3)); % 提取最优树深度并取整
bestLeaf = round(bestPos(4)); % 提取最优叶节点最小样本数并取整
tTree = templateTree('MaxNumSplits',2^bestDepth-1,'MinLeafSize',bestLeaf); % 构造回归树模板
mdl = fitrensemble(XTrainN, YTrainN, 'Method','LSBoost', 'NumLearningCycles',bestTrees, 'LearnRate',bestLR, 'Learners',tTree); % 训练LSBoost回归模型
YPredN = predict(mdl, XTestN); % 预测标准化测试集输出
YPred = YPredN*sigmaY + muY; % 将预测结果反标准化到原始尺度
YTestReal = YTestN*sigmaY + muY; % 将真实值恢复到原始尺度
rmse = sqrt(mean((YPred - YTestReal).^2)); % 计算均方根误差
mae = mean(abs(YPred - YTestReal)); % 计算平均绝对误差
r2 = 1 - sum((YPred - YTestReal).^2)/sum((YTestReal - mean(YTestReal)).^2); % 计算决定系数
这段代码利用 HHO 找到的最优参数训练最终 LSBoost 模型,并在测试集上完成预测和评估。templateTree 用于指定弱学习器结构,树的复杂度与叶节点大小对结果影响很大。fitrensemble 是 MATLAB 中构建 LSBoost 的标准接口,训练完成后即可直接预测。反标准化后计算 RMSE、MAE 与 R2,能够在实际量纲下评估模型表现,更便于工程解释。若需要更严格验证,还可增加交叉验证和残差分析。
结果可视化
fig1 = figure('Color','w'); % 新建白色背景图窗
plot(curve,'LineWidth',1.8); % 绘制HHO迭代收敛曲线
xlabel('迭代次数'); % 设置横轴标签
ylabel('适应度值'); % 设置纵轴标签
title('HHO-LSBoost优化收敛曲线'); % 设置图形标题
grid on; % 显示网格
fig2 = figure('Color','w'); % 新建预测对比图窗
plot(YTestReal,'k-o','LineWidth',1.2); % 绘制真实值曲线
hold on; % 保持当前图形
plot(YPred,'r-*','LineWidth',1.2); % 绘制预测值曲线
legend('真实值','预测值'); % 添加图例
xlabel('样本序号'); % 设置横轴标签
ylabel('目标值'); % 设置纵轴标签
title('测试集真实值与预测值对比'); % 设置图形标题
grid on; % 显示网格
fig3 = figure('Color','w'); % 新建散点对比图窗
scatter(YTestReal, YPred, 36, 'filled'); % 绘制真实值与预测值散点
xlabel('真实值'); % 设置横轴标签
ylabel('预测值'); % 设置纵轴标签
title('预测效果散点图'); % 设置图形标题
grid on; % 显示网格
axis tight; % 紧凑显示坐标范围
这段代码展示优化过程和预测结果的可视化分析。收敛曲线可以反映 HHO 是否逐渐逼近最优解,若曲线后期趋于平稳,通常说明搜索已收敛。真实值与预测值的曲线对比能直观看出模型是否跟随样本变化趋势。散点图中点越接近对角线,说明预测越准确。MATLAB R2025b 中绘图时以 figure 和 axes 为主即可,避免依赖不必要的新界面控件,保证兼容性更好。




更多详细内容请访问
http://人工智能MATLAB实现基于HHO-LSBoost哈里斯鹰优化算法(HHO)结合最小二乘提升(LSBoost)进行多输入回归预测的详细项目实例(含完整的程序,GUI设计和代码详解)资源-CSDN下载 https://download.csdn.net/download/xiaoxingkongyuxi/92846644
https://download.csdn.net/download/xiaoxingkongyuxi/92846644
http:// https://download.csdn.net/download/xiaoxingkongyuxi/92846644
更多推荐



所有评论(0)