2022华数杯ABC题思路模型分析

本次华数杯会为大家提供ABC题的参考资料和思路!大家可以收藏本帖,6点后开始实时更新!

点击获取华数杯思路https://jq.qq.com/?_wv=1027&k=eFIPd3nl

华数杯A题思路:

A题是一个典型的优化类问题,需要我们解决芯片中的振荡器设计结构问题,首先我们根据题中所给的指标来给出约束条件,本题中需要考虑的指标:速度、面积、功率,我们可以考虑使用线性规划模型,构建变量之间的数学关系,设立目标函数,并进一步对该模型进行优化,而后进行求解,具体的思路之后进行详细分析!

 

华数杯B题思路:

B题为机器人组装问题,工厂每次生产计划的计划期为一周,在总成本最小的情况下,需要我们制定7天的生产计划,我们把它看做一个动态规划类问题就比较容易解决了。

  • 将多阶段决策过程划分阶段,恰当地选择状态变量、决策变量以定义最优指标函数,从而把问题化成一族同类型的子问题,然后逐个求解;

  • 求解时从边界条件开始,逆序过程行进,逐段递推寻优.在每一个子问题求解时,都要使用它前面已求出的子问题的最优结果.最后一个子问题的最优解,就是整个问题的最优解;

  • 动态规划方法是既将当前一段与未来各段分开,又把当前效益和未来效益结合起来考虑的一种最优化方法,因此每段的最优决策选取是从全局考虑的,与该段的最优选择一般是不同的;

机器人在组装过程中,由于需求是随时间变化的,因此企业为了获得最佳生产效益,就要在整个生产过程中逐日地根据库存和需求决定生产计划。对于这个问题,我们只需要把多阶段决策问题转化为一系列单阶段最优化问题,从而逐个求解即可。

点击获取华数杯思路

华数杯C题思路:

问题一:请研究插层后结构变量、产品性能的变化规律,并分析插层率对于这些变化是否有影响?

C题为材料性能研究问题,需要我们研究插层后结构变量、产品性能的变化规律,来分析插层率对于这些变化是否 有影响,我们首先需要对数据进行清理,并且对数据进行描述性的统计,我们考虑使用因子分析模型,还可以使用灰色关联分析(将插层率作为母序列,其余变量作为子序列),或者是单因素方差分析,需要注意的是,如果使用单因素方差分析,需要将插层率转化为定类数据进行讨论(将插层率划分一个分类标准即可)。

问题二:请研究工艺参数与结构变量之间的关系。表1给了8个工艺参数组合,请将预测的结构变量数据填入表1中。

问题二是一个预测类的问题,我们考虑使用神经网络算法/时间序列算法来进行预测,为提高模型的准确性,本部分增加了更多的考量变量,同时采用精度更高的,基于遗传算法的神经网络模型,将整理后的数据集中,80%的数据用于模型求解,以确定变量指标的权值与阈值,将剩余的20%的数据通过残差计算用于模型精度检验。为进一步提高模型精度与计算效率,本文提出采用基于Levenberg-Marquardt算法求解。最后我们进行一个仿真,将表中的数据进行数据,将仿真结果填入表中。

 

问题三:请研究结构变量与产品性能的关系,以及结构变量之间、产品性能之间的关系。结合第二问,研究当工艺参数为多少时,产品的过滤效率将会达到最高?

当工艺参数为多少时,产品的过滤效率将会达到最高,将过滤效率作为一个因变量,其他指标作为自变量进行一个回归分析,构建判别函数,同问题二相关机器学习方法即可,也可以使用线性SVM(支持向量机)等

下面给出一些参考代码:

神经网络代码

% I. 清空环境变量
clear all
clc

% II. 训练集/测试集产生
% 1. 导入数据集,可以替换为自己的数据集
load spectra_data.mat

% 2. 随机产生训练集和测试集
temp = randperm(size(NIR,1));
% 训练集——50个样本,P为输入数据,T为对应输入数据的输出结果
P_train = NIR(temp(1:50),:)';
T_train = octane(temp(1:50),:)';
% 测试集——10个样本
P_test = NIR(temp(51:end),:)';
T_test = octane(temp(51:end),:)';
N = size(P_test,2);

% III. 数据归一化
[p_train, ps_input] = mapminmax(P_train,0,1);
p_test = mapminmax('apply',P_test,ps_input);

[t_train, ps_output] = mapminmax(T_train,0,1);

% IV. BP神经网络创建、训练及仿真测试
% 1. 创建网络,[9,9]意思为网络含有两个隐藏层,每层有9个单元
net = newff(p_train,t_train,[9,9]);

% 2. 设置训练参数
net.trainParam.epochs = 1000;%训练批次
net.trainParam.goal = 1e-12;%训练目标,误差小于1e-12即结束训练
net.trainParam.lr = 0.01;%设置学习率
%另外也可以设置其他训练参数,可看newff()函数介绍手册

% 3. 训练网络
net = train(net,p_train,t_train);

% 4. 仿真测试
t_sim = sim(net,p_test);

% 5. 数据反归一化
T_sim = mapminmax('reverse',t_sim,ps_output);

% V. 性能评价
% 1. 相对误差error
error = abs(T_sim - T_test)./T_test;

% 2. 决定系数R^2
R2 = (N * sum(T_sim .* T_test) - sum(T_sim) * sum(T_test))^2 / ((N * sum((T_sim).^2) - (sum(T_sim))^2) * (N * sum((T_test).^2) - (sum(T_test))^2)); 

% 3. 结果对比
result = [T_test' T_sim' error']

% VI. 绘图
figure
plot(1:N,T_test,'b:*',1:N,T_sim,'r-o')
legend('真实值','预测值')
xlabel('预测样本')
ylabel('xxxx')
string = {'xxxxxx预测结果对比';['R^2=' num2str(R2)]};
title(string)

后面持续更新思路模型,请大家关注我!点击获取资料思路icon-default.png?t=M666http://link.zhihu.com/?target=https%3A//jq.qq.com/%3F_wv%3D1027%26k%3DYAKxRkVN

 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>