对于炉温曲线的优化主要是通过牛顿冷却定律来对回焊炉的温度以及过炉速度的控制研究最适的炉温曲线.

主要使用牛顿冷却定律的差分格式,其中Ta(t)T_a(t)Ta​(t)为t时刻的环境温度
T(t+Δt)−T(t)Δt=k[Ta(t)−T(t)]\frac{T(t+\Delta t )-T(t)}{\Delta t} = k[T_a(t)-T(t)] ΔtT(t+Δt)−T(t)​=k[Ta​(t)−T(t)]

环境温度

想要使用牛顿冷却定律首先要确定好环境温度的变化情况,本文对温区间的影响做简化处理,认为再小温区中前一温区最后5cm到后一温区5cm环境温度随空间距离线性变化
u(t,x)=kx+bu(t,x) = kx+b u(t,x)=kx+b
这其中k=Ti+1−Ti15k=\frac{T_{i+1}-T_i}{15}k=15Ti+1​−Ti​​ b=Tib=T_ib=Ti​

通过模拟得到的环境温度如下

参数拟合

将K设定为关于位置的分段函数,分段通过最小二乘法拟合最优值. 通过对时间的差分,通过递推的方式从开始的25℃,不断向后计算每个0.5s的温度值,再将该值与附件中对应时间的温度值通过最小二乘法计算目标函数值.最小化该目标函数,不断修改k值大小.最终得到结果再整个模拟计算温度变化与 实验数据进行对比.计算R2来作为拟合度优劣的评判.

start = 0  #21 174 204 234 295
end = round(x0/V)  #xk 温区边界点Start = [0]*6End = [x0,x1_5,x6,x7,x8_9,x10_]
for i in range(5):Start[i+1] =round(End[i]/V)
K  = []
Ylast = 25
# print(end)
for i in range(6):start = Start[i]end = round(End[i]/V)X = np.linspace(start,end,(end-start)*2,endpoint=False)# print(X[:-1])y_true = data.loc[(data['时间']>=start) & (data['时间']<end),:]['温度']delta_score =float('inf')pre_score = float('inf')i = 100k = 0.3bestk = 0bestscore = float('inf')bestkypred = Nonewhile delta_score>1e-5 and i<10000:ypred = Newton(X,k,Ylast,V)score = np.sum((y_true-ypred[(X>=19).argmax():])**2,axis=0)delta_score = abs(score-pre_score)if score < bestscore:bestscore = scorebestk = kbestkypred=ypredpre_score = scorei+=1k = k - 1.0 / (i +1e3)print(bestkypred[(X>=19).argmax():(X>=19).argmax()+10])print(y_true.head(10))print(bestscore)print(bestk)Ylast = bestkypred[-1]K.append(bestk)print(K)

得到的最终结果 计算R2>99.6%.

温区 炉前 温区1-5 温区6 温区7 温区8-9 温区10至炉后
K 0.01972, 0.01767 0.01836 0.02386 0.02110 0.007446

结果求解

根据上述求出的k值,带入温度以及过炉速度计算出温度走势

#对比附件实验数据 计算R^2
# 问题一求解类似
K =[0.01972, 0.01767, 0.01836, 0.02386, 0.02110, 0.007446]
Start = [0]*6End = [x0,x1_5,x6,x7,x8_9,x10_]
for i in range(5):Start[i+1] =round(End[i]/V)last = 25
Y_pred = []
Xlist = []
for i in range(6):k = K[i]start = Start[i]end = round(End[i]/V)X = np.linspace(start, end, (end - start) * 2 ,endpoint=False)if i == 5:X= np.append(X,np.array([X[-1]+0.5]))ypred = Newton(X, k, last,V)last = ypred[-1]Y_pred.extend(ypred)Xlist.extend(X)
Xlist = np.array(Xlist)
Y_pred = np.array(Y_pred)# print(r2_score(data['温度'],Y_pred[(Xlist>=19).argmax():]))plt.plot(Xlist,Y_pred,label='模拟温度')
plt.legend()
plt.show()

最优过炉速度确定

由于题目中的制程限制,通过代入各个小温区的温度参数进行对问题二的求解。在此过程中,我们对所要求的传送带速度进行了离散化处理,通过坐标下降计算各个速度值最终得到了传送带的最大的可行速度值。

从最大速度不断下降,只要不满足制程条件就继续继续下降计算,直到满足条件的第一个速度值即为所求

flag = -1
V = 100/60
for k in range(100,60,-1):flag = -1V = k/60K =[0.01972, 0.01767, 0.01836, 0.02386, 0.02110, 0.007446]Start = [0]*6End = [x0,x1_5,x6,x7,x8_9,x10_]for i in range(5):Start[i+1] =round(End[i]/V)last = 25Y_pred = []Xlist = []for i in range(6):k = K[i]start = Start[i]end = round(End[i]/V)X = np.linspace(start, end, (end - start) * 2 ,endpoint=False)if i == 5:X= np.append(X,np.array([X[-1]+0.5]))ypred = Newton(X, k, last,V)if  ypred.any()==False :flag = 0continuelast = ypred[-1]Y_pred.extend(ypred)Xlist.extend(X)# if   Y_pred == False:#     flag = 0#     continueXlist = np.array(Xlist)Y_pred = np.array(Y_pred)Y_pred_S = pd.Series(Y_pred)Up_time = Y_pred_S[:Y_pred_S.argmax()].loc[(Y_pred_S >= 150) & (Y_pred_S <= 190)].shape[0] / 2High_time = Y_pred_S.loc[Y_pred_S > 217].shape[0] / 2Max_heat = Y_pred_S.max()if Up_time>120 or Up_time<60:flag = 0continueelif High_time>90 or High_time<40:flag = 0continueelif Max_heat>250 or Max_heat<240:flag = 0continueif flag == -1:break
print(V*60)
问题三

通过单目标规划求解理想的炉温曲线

应使超过217ºC到峰值温度所覆盖的面积最小,

决策参数分别由过炉速度以及每个温区的温度值

约束条件为回焊炉的制程范围。

在满足该制程范围的条件下,使用粒子群算法(当然可以是其他的启发式搜索算法),

1.求解最优由于温度的范围为65-100cm/min,以及每个温区的温度变化范围为10℃,从而限制出搜索空间.

  1. 随机初始化100个粒子,迭代次数200次,.

  2. 在粒子群算法中, 由于温度的范围为65-100cm/min,以及每个温区的温度变化范围为10℃,从而限制出搜索空间.

  3. 随机初始化粒子数,经过若干次的迭代搜索求解出最合适的过炉速度以及每个可设定的温区值.

最终结果

参数 过炉速度 温区1-5 温区6 温区7 温区8-9
94cm/min 185℃ 185℃ 234℃ 265℃

第四问使用多目标规划模型,然后将两个目标结合起来处理成单目标

最终也可以同样使用启发式算法进行搜索,但时间有限并没有算出最终答案

2020数学建模国赛A题思路与代码(全)相关推荐

  1. 2020数学建模国赛C题思路

    C题已有思路和方法 题(1)步骤 ①企业风险离散量化评价 ②以最大化年利息为目标函数,考虑额度.利率.期限和流失率关系建立线性规划模型求解,得到信贷策略 题(2)步骤 ①建立监督学习模型,以表1数据为 ...

  2. 2022数学建模国赛ABC题思路

    2022年数学建模国赛ABC题思路 a题:添加链接描述 b题: 添加链接描述 c题: 基础版+进阶版 c题:进阶版 e题: 添加链接描述

  3. 详解2020数学建模国赛A题炉温曲线

    详解2020数学建模国赛A题炉温曲线 问题描述 在集成电路板等电子产品生产中,需要将安装有各种电子元件的印刷电路板放置在回焊炉中,通过加热,将电子元件自动焊接到电路板上.在这个生产过程中,让回焊炉的各 ...

  4. 2019 数学建模国赛 C 题思路

    我最后一次数学建模国赛结束了. 今年选的C题,在这里讲一些关于我们的解题思路之类的东西. 今年看到题目以后果断选了C,但是中途想过要换B,因为找了一晚上C的数据,几乎找不到什么有用的,但最后还是继续做 ...

  5. 2020数学建模国赛(B题)总结

    简单说一下我们队的情况,一个电子,一个数学,我计算机,团队分工我是负责编程和画图部分,建模主要由两个队友负责,今年的建模题居然有一道很特别的题,这对于爱打游戏的我来说简直就像猫看见了毛球,哦不,是猫看 ...

  6. 2021年数学建模国赛C题思路

    2021年高教社杯数学建模竞赛C题思路 小编曾获得建模国二,虽然今年没能获得国奖,但是想把自己的思路分享给各位建模友友 一.问题重述 1.1 问题背景 在工业生产上,生产企业的原材料订购和运输问题非常 ...

  7. 2020数学建模国赛B题穿越沙漠个人解析

    前言 博主发这篇文章的时候国赛早就结束了,仅仅是出于给自己留个纪念以及交流讨论的目的写的博客.所以如果你对我不在比赛那几天发的行为感到不满,请直接退出就好,我也没觉得自己的想法多么优秀,能够断言自己是 ...

  8. 2022年高教社杯全国大学生数学建模国赛B题思路详解

    1.比赛报名与思路解析(持续更新750967193) 2.比赛时间:2022年9月15日18点到2022年9月18日20点 如下为B题思路: 先贴题目: 如下是初步分析: 无人机的问题属于近年来的热点 ...

  9. 2022高教社杯数学建模国赛C题思路代码实现

    1.比赛报名与思路解析(持续更新750967193) 2.比赛时间:2022年9月15日18点到2022年9月18日20点 如下为C题思路的配套代码: 首先导入表单: import pandas as ...

  10. 2022年高教社杯全国大学生数学建模国赛B题思路

    1.比赛报名与思路解析(持续更新750967193) 2.比赛时间:2022年9月15日18点到2022年9月18日20点 如下为B题思路: 先贴题目: 如下是初步分析: 无人机的问题属于近年来的热点 ...

最新文章

  1. 顺序表应用6:有序顺序表查询
  2. 简单使用SpringCloud的fegin和熔断hystrix
  3. linux新用户登陆密码,如何强制Linux用户在第一次登录时更改初始密码?
  4. VS2010不能断点/下断的问题
  5. Lync 2013就地升级到Skype for Business 2015-01
  6. 简述html语音的概念,语音共振的概念和特点简述
  7. python线程安全的单例_详解python实现线程安全的单例模式
  8. linux命令-eq是什么意思,linux查看系统信息命令
  9. java开源springboot项目_使用Spring Boot的10多个免费开源项目
  10. Google C++ unit test 在ARM Android 2.3 上的编译与使用
  11. 给最后一个li增加样式
  12. 【车间调度】基于matlab遗传算法求解混合流水车间调度最优问题【含Matlab源码 901期】
  13. Android PDF阅读
  14. Qt UDP Socket丢包问题(实现百兆级速率无丢包)
  15. vue传值给子页面html,vue.js如何父传子?
  16. 编写程序计算交错序列_求给定精度的简单交错序列部分和
  17. ThinkPHP 笔记
  18. MDUKEY创始人兼CEO韩元桢明确将通过“价格保障机制”确保MDU投资人的长久利益
  19. AVL树(平衡二叉搜索树)详解及C++代码实现
  20. 12- STM32模数转换器(ADC)

热门文章

  1. 【面经】五面阿里巴巴达摩院
  2. PTA题目 : 用指针实现将一个3*3的整型矩阵转置
  3. Tent-Logistic-Cosine混沌映射(提供参考文献及Matlab代码)
  4. <i> vs <em> vs <cite>
  5. QuerySet,本质上是一个给定的模型的对象列表
  6. strut2的学习笔记
  7. 计算机怎么不读u盘,老司机告诉你电脑不读U盘的解决方法
  8. 如何设置普通网页的微信分享图标
  9. 60帧究级豪华观影体验!potplayer通过bluesky补帧!
  10. congestion解决方案