2024年第五届“华数杯”全国大学生数学建模竞赛 A题详细思路+详细matlab代码+优秀论文范例

2024年华数杯数学建模 2024-08-23 17:35:02 阅读 95

没有更新完之前,专栏价格为59,更新完毕之后恢复到99. 专栏内包含2024年所有数学建模比赛思路和代码,有些重要比赛着重更新(华数杯、国赛、美赛),小比赛可能会有chatgpt4更新,只需订阅一次。有些文章没有完整代码,请到专栏内查找最新代码和思路。如果比赛结束后没有更新代码(可能会有事情来不及更新)赛后我会统一退款。

2024年第五届“华数杯”专栏地址:https://blog.csdn.net/m0_52343631/c

https://blog.csdn.net/m0_52343631/c

目录

2024年第五届“华数杯”专栏地址:https://blog.csdn.net/m0_52343631/category_12482955.html?spm=1001.2014.3001.5482

摘要

1 问题重述

2 问题分析

3 模型假设

4 主要符号说明

5.模型建立与求解

六、总结

参考文献

附录


2021年优秀论文

摘要

为了对电动汽车进行安全,快速、便捷的电能,无线电能逐渐成为电动汽车发展的新

方向。本文建立了在电动汽车无线充电过程中无线电能传输效率的数学模型,并给出了优

化操作提升无线电能传输效率的可行建议,同时在

MATLAB/Simulink

仿真和

Ansoft

磁仿

真中加以验证。

针对问题一,建立了串联

-

串联补偿结构(

PSSS

)无线电能传输系统的二端口等效数

学模型。

通过计算了电压与电流传输函数,从而得到电动汽车无线电能系统发射频率、匹

配阻抗与无线电能传输效率的数学模型。之后,基于该模型计算

10

次实验无线充电的电能

传输效率,同时通过

MATLAB/Simulink

仿真和

Ansoft

磁仿真验证了数学模型的准确性,

并得到随着线圈距离的增加,线圈互感下降,无线电能电能传输效率降低的结论。

针对问题二,在

Neumann

公式分析了传输距离与线圈互感相互关系的基础上,基于

支持向量机和粒子群算法建立了传输距离与线圈的互感之间的数学模型。

进而通过问题一

模型,获取了电动汽车无线电能系统发射频率、匹配阻抗和传输距离与无线电能传输效率

的数学模型。基于改进后的数学模型,计算第

1

次实验中两线圈在不同距离的无线电能传

输效率。改进后模型结果与问题一模型对比验证了问题二关于传输距离数学模型无线电能

传输效率计算的准确性。

针对问题三,利用问题一的数学模型,针对一般遗传算法容易出现早熟的问题,采用

改进的遗传退火算法,在要求约束下进行无线电能传输效率全局最大寻优。

在发射频率、

匹配阻抗的约束操作下,对样本

1

的无线电能传输效率进行全局最大寻优,记录样本在无

线电能传输效率最大的情况下,各优化后操作变量的值。结果发现提高发射频率和匹配阻

抗有利于无线电能传输效率增加。最终计算得到的无线电能效率最大值为

67.96%

,相比于

优化前效率提升约为

50%

针对问题四,通过物理建模发现偏移距离与线圈互感线性相关,因此问题二中关于无

线电能传输效率模型可以被转化为在无线电能传输效率约束下发射频率、匹配阻抗与线圈

互感的数学模型。

基于问题三中改进的遗传退火算法进行线圈互感全局最小寻优,即对偏

移距离的全局最大寻优。此时线圈互感最小的值对应无线充电系统对偏移距离容许的最大

值。计算得出,在满足所设效率要求下,互感最小需要大于

27.869μH

,进一步可知最大偏

离应小于

24cm

关键词:

串联

-

串联补偿结构(

PSSS

);无线电能传输效率;支持向量机;粒子群算法;

改进遗传退火算法

1 问题重述

1.1

问题背景

电动汽车相对传统汽车效率高,排放少,发展电动汽车产业已然成为我国汽车产业

转型发展先机的战略选择,也成为应对日益严峻的能源和环境问题的必由之路。并且电

动汽车存在着噪音小、维修方便等优势,也受到消费者的青睐。电动汽车的迅速发展也

带来一系列问题,为了对电动汽车进行安全,快速、便捷的电能,无线电能成为发展的

方向。但现阶段由于电动汽车厂家众多,无线电能设备与不同生产厂家的电动汽车并不

能互联互通,

专车专用

的原则造成了电力资源的极大浪费。因此有必要建立线圈参数

与无线电能电能效率的模型,从而对无线电能的非车载部分进行优化,使得无线电能设

备与不同生产厂家的电动汽车之间互联互通。

1.2

问题提出

鉴于以上背景,本文需要建立数学模型解决以下问题

问题一:

在发射与接收线圈完全谐振的条件下,建立电动汽车无线电能系统

发射频

匹配阻抗

无线电能传输效率

的数学模型。同时结合附件的相关数据,计算

10

实验无线电能的电能传输效率。

问题二:

不同电动汽车因自身的设计不同,其无线电能车载部分与地面距离可以自

主设计,导致两线圈之间的距离发生变化。基于问题一的数学模型,建立

发射频率

配阻抗

两线圈距离

无线电能传输效率

的数学模型。在第

1

次实验中两线圈的距离

100mm

变化为

150mm

200mm

250mm

时,比较分析问题一和问题二所建立模型所计

算的计算无线电能的电能传输效率。

问题三:

通过改变

发射频率

匹配阻抗

可以提升传输效率。需给出在第

1

次实验(两

线圈距离固定为

100mm

)情况下,通过调整

发射频率

匹配阻抗

使得传输效率达到最大,

同时计算传输效率最大值。

问题四:

当电动汽车停车进行无线电能时,很难保证发射线圈和接收线圈完全垂直

射影重合,总会出现或多或少的偏离,其中线圈半径为

r

,接收线圈(距离发射线圈高

h

)圆心向

X

轴正方向偏离了

a

mm

)。基于问题二模型,建立考虑两线圈偏移影响的无

限电能传输效率模型。基于重新建立的模型,计算距地面垂直距离

h

100mm

时,在

最高传输效率大于

80%

前提下计算

a

的最大值。

2 问题分析

2.1

问题一分析

为了建立电动汽车无线电能系统无线电能传输效率的数学模型,我们需要计算无限

电能过程中输入与输出功率。首先,计算在谐振条件下系统的输入阻抗,从而计算系统

的输入功率。其次,计算在谐振条件下无线系统输出功率。基于以上的物理关系建立发

射频率、匹配阻抗、两线圈距离与无线电能传输效率的数学模型,以此来评估附件中

10

次实验无线电能的电能传输效率。与此同时,建立相关的仿真模验证无线电能电能传输

效率的准确性。

2.2

问题二分析

因电动汽车的设计不同,导致无线电能系统两线圈距离发生变化,进而影响两线圈

之前的传输效率。耦合线圈的物理机制揭示了两线圈距离将极大的影响耦合线圈之间的

互感,而在问题一发现互感是影响传输效率的关键因素之一。因此需要建立两线圈距离

与耦合线圈互感之间的关系,从而在不需要互感条件下,建立发射频率、匹配阻抗、两

线圈距离与无线电能传输效率的数学模型。

2.3

问题三分析

无线电能系统的电能传输效率可以通过改变发射频率和匹配阻抗而提升。基于问题

2

所建立的数学模型通过寻优算法探究在可控发射频率和匹配阻抗范围内最大的无线电

能传输效率。

2.4

问题四分析

当发射线圈和接收线圈不重合将影响发射线圈和接收线圈之间的互感,从而影响无

线电能传输效率。因此需要刻画两线圈偏移量与互感之间的数学模型,从而建立偏移量

与无限电能传输效率之间的数学模型。基于此,探究在最低限度的传输效率的前提下,

计算两线圈最大的偏移量。

3 模型假设

根据电动汽车无线电能实际情况,针对本题,做出如下假设:

1

)发射线圈和接收线圈线路阻抗相同;

2

)电源为大电网,电源内阻为

0

3

)忽略整流电路所带来的损耗;

4 主要符号说明

5.模型建立与求解

5.1

问题一模型建立与求解

5.1.1

模型建立

1

RLC

串联谐振电路分析

谐振系统是电动汽车无线电能的核心。由题干可知无线电能系统是由车载部分与非

车载部分组成。车载部分由一个

RLC

电路与负载组成,非车载部分由电源和另一个 RLC

电路组成。根据题干无线电能系统结构等效图可以看出,所述

RLC

电路为

RLC

串联谐

振电路。

RLC

串联谐振电路如下图所示:

六、总结

本文的工作建立了串联

-

串联补偿结构(

PSSS

)无线电能充电装置输入变量与无线

电能传输效率的数学模型,并给出了增加无线电能传输效率的优化操作的建议。

1.

针对无线电能传输效率的数学模型,本文建立了针对该

PSSS

无线电能充电的二

端口等效模型,计算对应的电压和电流传输函数,准确建立了无线电能传输效率的数学

模型。最后利用

MATLAB/Simulink

仿真验证了数学模型的合理性。

2.

针对传输距离与线圈互感的潜在非线性,采用支持向量机建立传输距离和线圈互

感之间的联系,为了最优的使用支持向量机方法,粒子群算法被使用来寻找最优支持向

量机参数。通过比较模型一和模型二的误差变化,验证了模型二中改进的数学模型的准

确性。

3.

针对无线电能效率的优化选择,采用遗传算法对问题一中目标函数进行寻优。在

建模过程中,罚函数会导致传统遗传算法“早熟”,因此本文对传统的遗传算法进行了改

进,采用了动态确定变异概率,择优交叉,适当增加种群数量等方法,减小了函数陷入

局部最优解的可能。最后,筛选出无线电能传输效率的涨幅最大的样本及其优化后的操

作变量。最终计算得到的无线电能效率最大值为

67.96%

,相比于优化前效率提升约为

50%

4.

针对偏移距离对无线电能传输效率的约束可以转化为在无线电能传输效率约束下

偏移距离的极大值,即探究互感的极小值。同时采用改进的遗传退火算法进行线圈互感

全局最小寻优。增加发射频率和提高匹配阻抗有助于降低对线圈互感的要求,即可以增

加满足效率的前提下容许的最大偏移距离。

参考文献

[1]

张献

.

基于电磁—机械同步共振的无线电能传输与转换方法研究

[D].

河北工业大学

,2012.

[2]

朱勇

.

电动汽车无线充电系统建模与电磁安全性研究

[D].

重庆大学

,2016.

[3]

吕新明

,

孙汉旭

.

基于函数链神经网络的磁化曲线拟合方法

[J].

机电产品开发与创新

,2007(02):3-5.

[4]Stephan R. Sain. The Nature of Statistical Learning Theory[J]. Technometrics,2012,38(4).

[5]J.A.K. Suykens,J. Vandewalle. Least Squares Support Vector Machine Classifiers.[J]. Neural Processing

Letters,1999,9(3)

附录

<code>from numpy import *

import pandas as pd

import xlrd

import matplotlib.pyplot as plt

def loadDataSet(fileName):

dataMat = [ ]

fr = xlrd.open_workbook(fileName)

sheet = fr.sheets()[0]

cols = sheet.ncols

for i in range(cols):

#curLine = line.strip().split('\t')

fltcol = list(sheet.col_values(i))

'''

if i <= 3:

print(fltcol)

'''

dataMat.append(fltcol)

return dataMat

def distEclud(vecA, vecB):

return sqrt(sum(power(vecA-vecB, 2)))

def randCent(dataSet,k):

n = shape(dataSet)[1]

centroids = mat(zeros((k,n)))

for j in range (n):

minJ = min(dataSet[:,j])

rangeJ = float(max(dataSet[:,j]) - minJ)

centroids[:,j] = minJ + rangeJ * random.rand(k, 1)

return centroids

def kMeans(dataSet, k, distMeas=distEclud, createCent=randCent):

m = shape(dataSet)[0]

clusterAssment = mat(zeros((m,2)))

centroids = createCent(dataSet, k)

clusterChanged = True

while clusterChanged:

clusterChanged = False

for i in range(m):

minDist = inf; minIndex = -1

for j in range(k):

distJI = distMeas(centroids[j,:],dataSet[i,:])

if distJI < minDist:

minDist = distJI; minIndex = j

if clusterAssment[i,0] != minIndex: clusterChanged = True

clusterAssment[i,:] = minIndex,minDist**2

#print(centroids)

for cent in range(k):

ptsInClust = dataSet[nonzero(clusterAssment[:,0].A==cent)[0]]

if len(ptsInClust)!= 0:

centroids[cent,:] = mean(ptsInClust, axis=0)

#centroids[cent,:] = mean(ptsInClust, axis=0)

return centroids, clusterAssment

'''

def kMeans(dataset, tezhengshu, jisuan_distance = distEclud, readdata = randCent):

dataset_lie_shu=shape(dataset)[1]

dataset_hang_shu=shape(dataset)[0]

tongji_juzhen=array(ones([dataset_hang_shu,2]))

#ll=numpy.ones([dataset_hang_shu, 1])

#print(type(ll))

#print_date(dataset,numpy.array(numpy.ones([dataset_hang_shu,1])).flatten())

creat_random_juzhen= creat_cluter (dataset,dataset_lie_shu,4)

clu_change=True

lun_index=1

while clu_change:

clu_change=False

for i in range(dataset_hang_shu):

juli_juzhen=[(jisuan_distance(creat_random_juzhen[j,:],dataset[i,:])) for j in range(4)]

zhi_min_juli_juzhen=min(juli_juzhen)

index_min_juli_juzhen=juli_juzhen.index(zhi_min_juli_juzhen)

if tongji_juzhen[i,0] != index_min_juli_juzhen:

clu_change=True

tongji_juzhen[i,:]=index_min_juli_juzhen,zhi_min_juli_juzhen

for i in range(4):

belong_juzhen=nonzero(tongji_juzhen[:,0] == i)[0]

#print(belong_juzhen)

belong_dataset=dataset[belong_juzhen]

if len(belong_juzhen) != 0:

creat_random_juzhen[i,]=mean(belong_dataset,axis=0)

print("第%d 轮第%d 个簇点改变:"%(lun_index,i))

print(creat_random_juzhen)

lun_index+=1

return creat_random_juzhen,tongji_juzhen

def creat_cluter(dataset,dataset_lie_shu,tezhengshu):

temp_cluter=array(zeros([tezhengshu,dataset_lie_shu]))

for i in range(dataset_lie_shu):

min_lie=min(dataset[:,i])

max_lie=max(dataset[:,i])

kuadu_lie=max_lie-min_lie

ran_lie=kuadu_lie*(random.rand())+min_lie

temp_cluter[:,i]=ran_lie

return array(temp_cluter)

'''

#########################################################

def dist(vec1, vec2):

return sqrt(sum(square(vec1 - vec2)))

def main():

datMat = mat(loadDataSet('shuju_nom.xlsx'))

myCentriods, clustAssing = kMeans(datMat, 30)

print(myCentriods)

#print(clustAssing)

index = 0

dis = []

for i in clustAssing[:,0]:

dis.append(dist(array(datMat[index]), myCentriods[int(i)].view()))

print(dist(array(datMat[index]), myCentriods[int(i)].view()))

data1 = pd.DataFrame(myCentriods.T)

data2 = pd.DataFrame(clustAssing[:,0].T)

data3 = pd.DataFrame(array(dis).T)

writer = pd.ExcelWriter('output.xlsx')

data1.to_excel(writer, 'page_1', float_format='%.5f')code>

data2.to_excel(writer, 'page_2', float_format='%d')code>

data3.to_excel(writer, 'page_3', float_format='%.5f')code>

writer.save()

writer.close()

if __name__ == '__main__':

main()



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。